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.
Type: chore · Branch:
chore/issue-32-formalize-reaching-defs· Part of epic #26Problem
L3
ddgedges are tagged["reaching-defs"](src/schema/v2/dataflow.ts:113-117, asserted attest/schema-v2.test.ts:328) with a code-documented rationale. The canonical schema's shared vocabulary names the L3 syntactic-DDG tokenssa(canonical-schema.md:139,schema-reference.md:95); parity is a hard rule. Today the divergence is silent — an SDK filteringprov == "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
reaching-defsas a sanctioned additiveprovvalue in.claude/SCHEMA_DECISIONS.md(parity-additions ledger), with the rationale.src/build/neo4j/schema.ts; conformance test stays green).reaching-defsto the SDK Pydantic model'sprovliteral + an SDK validation test. This is a coordinated PR incodellm-devkit/python-sdkand must merge in lockstep so the SDK never rejects valid output.Acceptance
reaching-defsdocumented as sanctioned; SDK validates ananalysis.jsoncarrying it; Neo4j conformance green.Files:
.claude/SCHEMA_DECISIONS.md; verifysrc/build/neo4j/schema.ts; coordinatedcodellm-devkit/python-sdkPR.