Repository navigation
Round 9: harden MCP outputs, runtime recovery, and graph text privacy - #132
Merged
Merged
Conversation
… in async context manager
… unknown catalog IDs aiosqlite raises a plain ValueError for a closed connection, so a storage failure became a 404 'unknown document'. The route now catches CatalogIdentityNotFoundError only. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…oked like a wrapper; always wrap Stored text that starts with the open tag and ends with the close tag was returned unescaped and without the trust header, so a document could place instructions outside the untrusted boundary (invariant 6). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…k bytes (owner accepts for v0.9) The offline rebuild reads assertion pages from SQLite, and Kùzu can write reused process memory into unused file bytes, so a later purge may not remove that text from the graph file. Owner decision: accept and document for v0.9; a graph-off switch follows in Round 10. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The GitHub dependency scan flags msgpack 1.2.1 through the existing loadtest extra. Update only that locked package to the patched version; retain all other dependency versions.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Round 9 fixes MCP error propagation and unknown-document responses, removes superseded evidence from context mutations, skips adaptive LLM planning when extraction is disabled, and recovers interrupted projection and dispatch work on restart. Direct stdio tools execute without a local control-plane database; MCP outputs wrap stored evidence and include the recommended answering-LLM prompt.
Graph assertion text now stays in SQLite, with graph ranking reading evidence from the authorized SQLite map. The documented v0.9 limitation is accepted by the owner: offline rebuilds can leave live document fragments in Kùzu file slack; after a purge requiring complete removal, rebuild again and retire old generations.
Validation at be496cd: final full R9-opus-final gate PASS (lock, dependency sync, Ruff, mypy, layer imports, local suite: 1671 passed / 1 skipped / 48 deselected; MCP suite: 10 passed / 1 skipped). Final checker verdict: READY.
Pre-merge security fix: e435fba updates only the existing transitive msgpack lock from 1.2.1 to 1.2.3 for CVE-2026-114613 (GHSA-j586-36cw-2gc2). All other locked packages and lock metadata are unchanged. Patched C-extension roundtrip, strict-map rejection with bounded memory, existing Locust load-test import, dependency compatibility and the R9-msgpack quick gate pass. Final R9-premerge full gate PASS at e435fba: lane (36 files), lock, sync, Ruff, mypy, layer imports, 1671 local tests and 10 MCP tests. GitHub: all 23 active checks PASS; legacy-static-baseline conditionally skipped.