Skip to content

v2 Stage 3: L3 intraprocedural CFG/CDG/DDG#79

Open
rahlk wants to merge 10 commits into
feat/v2-stage2-l2from
feat/v2-stage3-l3
Open

v2 Stage 3: L3 intraprocedural CFG/CDG/DDG#79
rahlk wants to merge 10 commits into
feat/v2-stage2-l2from
feat/v2-stage3-l3

Conversation

@rahlk

@rahlk rahlk commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Part of #69. Stacked on feat/v2-stage2-l2.

Stage 3 — L3 intraprocedural dataflow:

  • Identity map (internal int node id ↔ local ordinal "2:4"/"@entry"; + global_id <callable-id>@<local> for Neo4j).
  • SyntacticOracle (may_alias=identity) + factored build_function_pdgs (intraprocedural; the L4 SDG path in build_program_graphs is preserved).
  • emit_l3_body populates each callable's body (statements + @entry/@exit) and cfg/cdg/ddg (syntactic, prov:["ssa"]) at -a 3; L1 call nodes preserved (L1 ⊆ L3).
  • --graphs gating (sdg requires -a 4); Neo4j CPG overlay re-enabled (PyCFGNode keyed by global ordinal); cross-level cache-leak fix.
  • Migrated sample_graph_app fixture + un-skipped the CPG suite; L3 backward-slice gate + L2 ⊆ L3 superset + conformance for max_level 3.

74/74 (v2 + intraprocedural dataflow suites).

Closes #73.

rahlk added 10 commits July 7, 2026 16:30
Rewrite _project_program_graphs to project each callable's v2 body/cfg/cdg/ddg
(populated at L3 by emit_l3_body) instead of the deleted app.program_graphs.
PyCFGNode merge keys are the global ordinal <callable can:// id>@<local body key>
(agreeing with IdentityMap.global_id), so the JSON and Neo4j projections land on
one node identity. Delete the dead _cfg_node_ref/_signature_modules and re-add the
_project_program_graphs call in project().
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant