Part of #69.
Stage 2 — L2 (callee backfill + call_graph re-identity)
Branch: feat/v2-stage2-l2
Deliverables:
backfill_callees(app, sig_to_id) — at -a 2, set each call body node's callee to the resolved can:// id (the one sanctioned null→id refinement).
- Re-identify
call_graph edge src/dst to can:// ids; externals keep their external ids.
- Neo4j
PY_CALLS endpoints re-keyed via sig_to_id.
- Superset test
L1 ⊆ L2.
Files: core.py, neo4j/project.py, test/test_v2_l2.py, extend test/test_v2_conformance.py.
Gate: no dangling call_graph endpoints (every endpoint resolves to a callable/external id); assert_conformant(..., 2); L1 ⊆ L2 holds.
Expand into full bite-sized tasks with superpowers:writing-plans at stage start (against the realized Stage 1 APIs).
Part of #69.
Stage 2 — L2 (callee backfill + call_graph re-identity)
Branch:
feat/v2-stage2-l2Deliverables:
backfill_callees(app, sig_to_id)— at-a 2, set eachcallbody node'scalleeto the resolvedcan://id (the one sanctionednull→idrefinement).call_graphedgesrc/dsttocan://ids; externals keep their external ids.PY_CALLSendpoints re-keyed viasig_to_id.L1 ⊆ L2.Files:
core.py,neo4j/project.py,test/test_v2_l2.py, extendtest/test_v2_conformance.py.Gate: no dangling
call_graphendpoints (every endpoint resolves to a callable/external id);assert_conformant(..., 2);L1 ⊆ L2holds.