docs: add ADRs for dynamic call resolution and interprocedural dataflow by carlos-alm · Pull Request #1675 · optave/ops-codegraph-tool · GitHub
Skip to content

docs: add ADRs for dynamic call resolution and interprocedural dataflow#1675

Merged
carlos-alm merged 1 commit into
mainfrom
docs/adr-dynamic-call-and-dataflow
Jun 21, 2026
Merged

docs: add ADRs for dynamic call resolution and interprocedural dataflow#1675
carlos-alm merged 1 commit into
mainfrom
docs/adr-dynamic-call-and-dataflow

Conversation

@carlos-alm

Copy link
Copy Markdown
Contributor

Summary

  • ADR-002 — Dynamic Call Resolution: documents the DynamicKind taxonomy replacing the boolean Call.dynamic, the sink-edge design that reuses kind='calls' + a new dynamic_kind column (avoiding a new edge kind and its blast radius), the Track A (resolve) / Track B (flag) split, and the per-language-family delivery sequence across all 34 languages.

  • ADR-003 — Interprocedural Dataflow: documents the variable-level vertex model (dataflow_vertices table kept separate from nodes to avoid polluting graph analytics), function summaries for bounded interprocedural stitching, stitching on resolved calls edges (replacing ambiguous name-based matching), the backward-compatible dataflow_fn view, and the DP-1 approval gate that controls whether variable-level output becomes the default.

Both ADRs follow the structure established in ADR-001 (Decision → Context → Trade-offs → Key Decisions → Delivery → Alternatives → Outcome).

Source

Transformed from local plan files (DYNAMIC_CALL_RESOLUTION_PLAN.md and INTERPROCEDURAL_DATAFLOW_PLAN.md) that captured approved architecture decisions but had not been committed or PR'd. The plan files can be deleted locally once this merges.

Closes #N/A — documentation only, no code changes.

ADR-002 captures the DynamicKind taxonomy, sink-edge design (reusing
kind='calls' + dynamic_kind column), Track A/B split, and per-family
delivery sequence for dynamic call resolution across all 34 languages.

ADR-003 captures the variable-level vertex model (dataflow_vertices
table separate from nodes), function summaries, interprocedural
stitching on resolved calls edges, the backward-compatible dataflow_fn
view, and the DP-1 approval gate for the breaking-change lever.
@greptile-apps

greptile-apps Bot commented Jun 21, 2026

Copy link
Copy Markdown
Contributor

Comment on lines +63 to +65

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Language count and arithmetic are inconsistent

The section states "8 languages have dataflow rules today" but the parenthetical list contains 10 — JavaScript, TypeScript, TSX, Python, Go, Rust, Java, C#, PHP, Ruby. Because the total supported languages is 34, the follow-on figure "The other 26 have no DATAFLOW_RULES" is also wrong (should be 24). Teams tracking Phase B batches against the 26-language backlog will mis-scope the remaining work by two languages, likely missing C# or Rust from a batch plan.

Fix in Claude Code

@carlos-alm carlos-alm merged commit 932af1c into main Jun 21, 2026
28 checks passed
@carlos-alm carlos-alm deleted the docs/adr-dynamic-call-and-dataflow branch June 21, 2026 09:29
@github-actions github-actions Bot locked and limited conversation to collaborators Jun 21, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant