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
This commit was created on GitHub.com and signed with GitHub’s verified signature.
What's Changed
New Features
feat(kg): structural knowledge graph module in aptu-coder-core (#1367): Adds a graph/ directory module with StructuralGraph (backed by petgraph::DiGraph), GraphDiskStore (postcard-encoded with FORMAT_VERSION header, fs2 file locking, atomic tempfile writes), and BFS blast-radius traversal. The builder consumes existing SemanticAnalysis data with no second tree-sitter parse pass. Wired into analyze_focused so graphs are built and persisted on cold miss, loaded on warm hit. Adds petgraph and postcard as justified new dependencies.
feat(kg): MCP Resource surface for the knowledge graph (#1368): Implements resources/list, resources/templates/list, and resources/read backed by the structural graph store. Three URI templates are exposed: aptu-coder://graph/{repo_hash}/blast-radius/{symbol}?depth={depth}, .../import-closure/{module}, and .../subgraph/{symbol}. Results are paginated at 50 nodes per page with opaque base64url cursors. Cold-cache reads return a prompt to warm the graph via analyze_symbol first. Stale or unknown {repo_hash} values degrade gracefully.
Bug Fixes
fix(cache): preserve FocusedAnalysisOutput chain fields in L2 disk cache (#1366): Six fields on FocusedAnalysisOutput (prod_chains, test_chains, outgoing_chains, def_count, unfiltered_caller_count, impl_trait_caller_count) carried #[serde(skip)] because InternalCallChain lacked serde derives. On L2 cache reload these fields silently deserialized as empty or zero, producing empty chain results for all paginated analyze_symbol requests that hit the disk cache. Fix: add Serialize, Deserialize, PartialEq to InternalCallChain, remove the six #[serde(skip)] attributes (replacing with #[serde(default)] for backward-compat), and keep #[cfg_attr(feature = "schemars", schemars(skip))] so the public MCP output schema is unchanged. The secondary propagation vector (L2 hit writing degraded value into L1) is resolved as a consequence.
Maintenance
docs: update documentation for knowledge graph MCP resources and fix stale references (#1369). Removes stale lang-* Cargo feature flag column and non-existent env vars from README; adds APTU_CODER_BEARER_TOKEN and a MCP Resources section. Updates ARCHITECTURE.md, ROADMAP.md, DESIGN-GUIDE.md, and ASSURANCE.md to reflect the graph module layout, resource URI scheme, warm-up requirement, and corrected trust boundary claims.