Skip to content

chore: formalize reaching-defs ddg prov token (+ python-sdk lockstep) #32

Description

@rahlk

Type: chore · Branch:chore/issue-32-formalize-reaching-defs · Part of epic #26

Problem

L3 ddg edges are tagged ["reaching-defs"] (src/schema/v2/dataflow.ts:113-117, asserted at test/schema-v2.test.ts:328) with a code-documented rationale. The canonical schema's shared vocabulary names the L3 syntactic-DDG token ssa (canonical-schema.md:139, schema-reference.md:95); parity is a hard rule. Today the divergence is silent — an SDK filtering prov == "ssa" misses every TS edge.

Decision (locked)

Keep reaching-defs — it is semantically accurate (forward may-reaching-definitions over k-limited access paths, flow-insensitive copy/field-alias substrate; not SSA form, not points-to-backed). Make the divergence sanctioned + lockstepped, not silent.

Change

  • Record reaching-defs as a sanctioned additive prov value in .claude/SCHEMA_DECISIONS.md (parity-additions ledger), with the rationale.
  • Verify the Neo4j schema catalog accepts the token (src/build/neo4j/schema.ts; conformance test stays green).
  • Cross-repo (python-sdk): add reaching-defs to the SDK Pydantic model's prov literal + an SDK validation test. This is a coordinated PR in codellm-devkit/python-sdk and must merge in lockstep so the SDK never rejects valid output.

Acceptance

  • reaching-defs documented as sanctioned; SDK validates an analysis.json carrying it; Neo4j conformance green.

Files:.claude/SCHEMA_DECISIONS.md; verify src/build/neo4j/schema.ts; coordinated codellm-devkit/python-sdk PR.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions