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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions