Summary
Follow-up from #162 and the NEIGHBORS-DOT-KEY-TRAVERSAL-PROPOSE.md proposal.
The proposal adds DECLARES.* dot-key support to neighbors (2-hop traversals using the composed keys that edge_summary already surfaces). This follow-up covers the OVERRIDDEN_BY.* family:
OVERRIDDEN_BY — virtual override-axis key
OVERRIDDEN_BY.DECLARES_CLIENT
OVERRIDDEN_BY.DECLARES_PRODUCER
OVERRIDDEN_BY.EXPOSES
Why separate
OVERRIDDEN_BY is not a stored graph relationship — it is computed at describe-time via IMPLEMENTS/EXTENDS + Symbol.signature matching (see override_axis_rollup_for in kuzu_queries.py). Making it navigable in neighbors requires embedding the same signature-matching logic in the neighbors query path, which is significantly more complex than the DECLARES.* family (simple 2-hop Cypher over stored edges).
Desired behavior
When a method edge_summary shows OVERRIDDEN_BY.DECLARES_CLIENT: {"out": 2}, the agent should be able to call neighbors(method_id, 'out', ['OVERRIDDEN_BY.DECLARES_CLIENT']) and get the Client nodes declared by overriding methods — in one tool call instead of manually discovering overrides and traversing each.
Dependencies
Depends on the DECLARES.* dot-key implementation landing first (establishes the composed edge_type pattern, ComposedEdgeType, via_id in attrs, etc.).
Summary
Follow-up from #162 and the
NEIGHBORS-DOT-KEY-TRAVERSAL-PROPOSE.mdproposal.The proposal adds
DECLARES.*dot-key support toneighbors(2-hop traversals using the composed keys thatedge_summaryalready surfaces). This follow-up covers theOVERRIDDEN_BY.*family:OVERRIDDEN_BY— virtual override-axis keyOVERRIDDEN_BY.DECLARES_CLIENTOVERRIDDEN_BY.DECLARES_PRODUCEROVERRIDDEN_BY.EXPOSESWhy separate
OVERRIDDEN_BYis not a stored graph relationship — it is computed at describe-time viaIMPLEMENTS/EXTENDS+Symbol.signaturematching (seeoverride_axis_rollup_forinkuzu_queries.py). Making it navigable inneighborsrequires embedding the same signature-matching logic in the neighbors query path, which is significantly more complex than theDECLARES.*family (simple 2-hop Cypher over stored edges).Desired behavior
When a method
edge_summaryshowsOVERRIDDEN_BY.DECLARES_CLIENT: {"out": 2}, the agent should be able to callneighbors(method_id, 'out', ['OVERRIDDEN_BY.DECLARES_CLIENT'])and get the Client nodes declared by overriding methods — in one tool call instead of manually discovering overrides and traversing each.Dependencies
Depends on the
DECLARES.*dot-key implementation landing first (establishes the composed edge_type pattern,ComposedEdgeType,via_idin attrs, etc.).