Is your feature request related to a problem? Please describe.
Not stated in the original issue.
Describe the solution you'd like
Not stated in the original issue.
Describe alternatives you've considered
Not stated in the original issue.
Additional context
cldk-forge compliance: contract-correctness cluster
Tracking epic: bring codeanalyzer-typescript's emitted contract (both the analysis.json and Neo4j projections) into compliance with the cldk-forge skillset (codeanalyzer-backend), and make the additive L1 ⊆ L2 ⊆ L3 ⊆ L4 invariant CI-enforced.
Audit verdict: MOSTLY COMPLIANT. The v2 migration substance is faithful — schema keystone, symbol table, call graph, dataflow L3/L4, Neo4j projection, and packaging all land close to spec. This epic closes the contract-correctness gaps: the ones that change what the SDK and Neo4j actually consume.
Child issues
Delivered as a stacked PR chain merging bottom-up into feat/issue-2-program-graphs (the v2 base is not yet on main). Each PR shows exactly one issue's diff. Order: the monotonicity gate lands first (it is the regression net for the rest); the Neo4j inheritance edges land last (most involved).
Status: all six shipping issues implemented (TDD, per-task review + a final whole-branch review → READY TO MERGE); suite 95 pass / 0 fail, typecheck clean, schema.neo4j.json in lockstep; validated end-to-end on OWASP Juice Shop (5.7 MB analysis.json, correct analyzer manifest).
Out of scope (separate epics)
- Theme A — modularity (the skillset's named anti-example): a pluggable
analysis/ pass + registry layer and a frameworks/ finder layer, plus splitting the ~998-line flat src/syntactic_analysis/builders.ts. Real, but touches no emitted output.
- Theme G — breaking-release hygiene:
CHANGELOG.md + curated breaking-change notes for the v1→v2 break; a caching test gate (second-run-reuse / eager-rebuild); release-workflow wheel smoke-test, per-artifact checksums, and a musllinux/Alpine decision.
Follow-ups surfaced during implementation (filed)
Is your feature request related to a problem? Please describe.
Not stated in the original issue.
Describe the solution you'd like
Not stated in the original issue.
Describe alternatives you've considered
Not stated in the original issue.
Additional context
cldk-forge compliance: contract-correctness cluster
Tracking epic: bring
codeanalyzer-typescript's emitted contract (both theanalysis.jsonand Neo4j projections) into compliance with thecldk-forgeskillset (codeanalyzer-backend), and make the additiveL1 ⊆ L2 ⊆ L3 ⊆ L4invariant CI-enforced.Audit verdict: MOSTLY COMPLIANT. The v2 migration substance is faithful — schema keystone, symbol table, call graph, dataflow L3/L4, Neo4j projection, and packaging all land close to spec. This epic closes the contract-correctness gaps: the ones that change what the SDK and Neo4j actually consume.
Child issues
L1⊆L2⊆L3⊆L4+ neo4j↔json parity) — PR RealL1⊆L2⊆L3⊆L4monotonicity gate + neo4j↔json count parity #35analyzer{name,version}schema envelope #37feat: -f/--format flag with strict msgpack rejection #30 —— dropped (msgpack has no consumers; json is the sole/default output, so the flag is vestigial)-f/--formatflag-a 1— PR Level-gate the call-graph solve at-a 1#39reaching-defsprov token — PR Formalize the reaching-defs DDGprovtoken #40EXTENDS/IMPLEMENTSinheritance edges — PR Neo4jEXTENDS/IMPLEMENTSinheritance edges #41Delivered as a stacked PR chain merging bottom-up into
feat/issue-2-program-graphs(the v2 base is not yet onmain). Each PR shows exactly one issue's diff. Order: the monotonicity gate lands first (it is the regression net for the rest); the Neo4j inheritance edges land last (most involved).Status: all six shipping issues implemented (TDD, per-task review + a final whole-branch review → READY TO MERGE); suite 95 pass / 0 fail, typecheck clean,
schema.neo4j.jsonin lockstep; validated end-to-end on OWASP Juice Shop (5.7 MBanalysis.json, correctanalyzermanifest).Out of scope (separate epics)
analysis/pass + registry layer and aframeworks/finder layer, plus splitting the ~998-line flatsrc/syntactic_analysis/builders.ts. Real, but touches no emitted output.CHANGELOG.md+ curated breaking-change notes for the v1→v2 break; a caching test gate (second-run-reuse / eager-rebuild); release-workflow wheel smoke-test, per-artifact checksums, and a musllinux/Alpine decision.Follow-ups surfaced during implementation (filed)
:Applicationnode has no version (JSON↔Neo4j analyzer-identity divergence).NULseparators with\0escape inrows.ts/dataflow.ts(restore text-diffability; byte-identical).EXTENDS+ entry/exit/param byte-slice fidelity.:Symbolexpectations in the Docker-gatedtest/neo4j-bolt.test.ts..claude/SCHEMA_DECISIONS.md(un-ignore the schema-decisions doc) #47 — track.claude/SCHEMA_DECISIONS.md(un-ignore the schema-decisions doc).reaching-defsprov literal in the SDK model.