Repository navigation
Release 0.8.0: retire wrong facts precisely and make the MCP contract explicit - #11
Merged
Merged
Conversation
… explicit kg retire files one reviewable item that names fact edges; the drain marks exactly those invalid. kg duplicates --facts reports repeated facts. The review queue survives U+2028, U+2029 and U+0085 in a fact. MCP tools are annotated read-only, refuse undeclared arguments and report the groups they searched. The OpenAI reranker defaults to a model that is still served, and kg doctor checks the workspace KG_WORKSPACE_DIR names.
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.
Release 0.8.0: retire wrong facts precisely, keep the review queue readable whatever a fact contains, and make the MCP server's read-only contract explicit.
Added
kg retire GROUP --edge UUID [--edge UUID] --reason "..."files one reviewable item that retires the named facts. Once approved,kg-workspace drain --applymarks exactly those edges invalid as of--valid-at(or the drain time), with no replacement fact and no model call. If one named edge is not found in the group, nothing is retired and the item stays approved. The edge list is part of the approved digest.kg duplicates --factsreports current facts repeated between the same two entities, oldest copy first, so the extra copies can be retired.search_nodes,search_memory_factsandget_episodesreport thegroupsthey searched, so an empty result can be told apart from a wrong scope.Changed
group_idread the default groups.reranker.provider: openaiand noreranker.model, the reranker usesgpt-4.1-mini. graphiti-core's default,gpt-4.1-nano, is retired on 2026-10-23.kg doctorchecks the workspace named byKG_WORKSPACE_DIRwhen it is set, the same directory the queue and ledgers use.Fixed
propose,pending,approveanddrain, and the same characters in an ingest ledger entry hid it from resume.kg-workspace list,rejected,approveandrejectreport an unreadable queue as a JSON error with exit1instead of a traceback.Verification
uv run ruff check .: pass.uv run pytest: 196 passed (23 new). The tests for the line-separator fix, thekg-workspaceerrors, the MCP annotations, unknown-argument refusal and scope report, the reranker default and the doctor workspace fail onmainand pass here.release_audit.py --allow-remote --identity-base origin/main: pass.docker build+scripts/mcp_smoke.py): pass,get_statusanswersok.kg duplicates --factsfinds a repeated fact;kg retire→kg-workspace approve→drain --applyretires the extra copy with no model call;kg edgeshows itsinvalid_at;kg ask --keywordsuppresses it; the six tools are read-only; a misspelledgroup_idis refused by name;get_episodesreports its groups. 8/8.--helpfor every entry point and subcommand and all six MCP tool schemas are unchanged except for the additions above.Reviewing
mainata98f7b6. Version 0.8.0 inpyproject.toml,server.jsonanduv.lock; theUnreleasedCHANGELOG section becomes0.8.0.workspace.py(retire_facts, the shared filing helpers,_planned, the retire branch ofdrain),ingest.py(retire_edges, the ledger reader),server.py(StrictFastMCP,READ_ONLY, thegroupsfield), thencli.py,duplicates.py,runtime.py,doctor.py.