Skip to content

v2 Stage 2: L2 (callee backfill + call_graph re-identity) #72

Closed

Description

@rahlk

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).

Activity

  1. rahlk commented on Jul 7, 2026

    @rahlk
    ContributorAuthor

    Deferred from Stage 1 (Task 1.9 Neo4j L1 re-key): now that PySymbol/PyModule nodes key on the can:// id, the rows.py::edge_to_symbol deferred edges resolve targets by signature and therefore drop silently at finish() for in-project targets. Stage 2 must re-route them to can:// ids (thread sig_to_id through edge_to_symbol: declared → ("PySymbol", id), else external):

    • PY_RESOLVES_TO (callsite → callee) — partly shadowed by the callable-level PY_CALLS twin.
    • PY_EXTENDS (class → base) — no twin; pure L1 hierarchy data loss — must be handled explicitly.

    Also reconcile test/test_neo4j_schema.py: 6 stale 2-arg project() calls, and test_all_catalog_node_kinds_and_relationships_are_exercised will go red on the missing edges once its pre-existing PyCFG import error is repaired.

  2. rahlk commented on Jul 15, 2026

    @rahlk
    ContributorAuthor

    Landed on main via the stacked v2 chain (PR #88 → merge d477207) and released as v1.0.0 (schema_version 2.0.0).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions