You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
QueryAgent now speaks the Managed MCP Server's current contract. The server scopes each session to a cluster via an mcp-cluster-id header and requires a database argument per query; without them every call failed (401 Unauthorized unauthenticated, cluster_id not provided once a key was configured). New settings COCKROACH_MCP_CLUSTER_ID / COCKROACH_MCP_DATABASE; constructor args passed as explicit blanks stay blank so unit tests remain hermetic whatever the local .env holds. Verified end to end against the live server (auth, session negotiation, query dispatch)
.env.example realigned with .env after significant drift: adds the Managed MCP service-account block (endpoint, cluster id, database, API key — with the console steps for creating the key), replaces the now-false "eu-west-1 has full default quota" Bedrock claim with probe-first guidance (2026-07-07: eu-west-1, eu-central-1 and us-east-1 all throttle Titan on this account; eu-north-1 works at a low per-minute rate), and warns that Bedrock retires old model versions (eu.anthropic.claude-3-5-sonnet-20241022-v2:0 — found pinned in a stale .env — now returns "invalid model identifier")
Added
.mcp.json — project-scoped CockroachDB Cloud MCP server config for Claude Code (streamable HTTP, cluster-scoped via the mcp-cluster-id header, Bearer auth via ${COCKROACH_MCP_API_KEY} environment expansion, so no secret lives in the committed file)
Lambda deploy runbook in docs/DEPLOY.md
Bedrock-free seeding so the demo Space can be populated without the throttled Bedrock account (ADR 008): make seed-data-offline / .\scripts\migrate_and_seed.ps1 -Offline seed deterministic synthetic vectors (scripts/synthetic_vectors.py) with no AWS call, and scripts/capture_seed_embeddings.py + seed_memory.py --from-fixture load real Titan vectors captured once where Bedrock is reachable
Recovery sequence diagram and a typical-vs-Continuum comparison table in docs/ARCHITECTURE.md, making the two-cold-invocation handoff through durable CockroachDB state visible at a glance
Changed
Sharpened the hero positioning across the README, the Hugging Face Space (ui/app.py), and the DEVPOST elevator pitch to lead with the concrete payoff — resumes the exact step it was killed on, because its memory lives in CockroachDB, not the process — instead of the more abstract earlier tagline
Repo-wide documentation alignment pass. Synced stale version fields (api/main.py, pyproject.toml → 0.4.0); corrected the integration-test count (2 → 3) and surfaced the real-SIGKILLtest_chaos_kill_e2e.py in the README and DEVPOST test-integrity claims; fixed the docs/ARCHITECTURE.md §4.1 vector-index DDL to match infra/schema.sql (always service-prefixed, embedding_model column, service-only filter); standardized the judging criterion name to Production Readiness; aligned the schema.sql recovery-query comment with the actual latest-step query; and removed cross-project references from docs/SUBMISSION.md
Latency benchmarks (scripts/benchmark.py, make benchmark, docs/BENCHMARKS.md): p50/p95/p99 for recovery read, per-step transaction commits, C-SPANN vector search, and the full cold-resume path — against a live cluster, no Bedrock dependency
Real-kill chaos integration test (tests/integration/test_chaos_kill_e2e.py): spawns the orchestrator as a uvicorn subprocess, hard-kills it mid-step with scripts/chaos_kill.py (real SIGKILL/TerminateProcess), and asserts a cold restart resumes the interrupted step exactly-once from CockroachDB — the literal process-kill path that test_recovery_e2e.py only simulated with a SQL UPDATE. Shared integration fixtures moved to tests/integration/conftest.py