{{ message }}
docs: add ADRs for dynamic call resolution and interprocedural dataflow#1675
Merged
Conversation
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.
Contributor
Comment on lines
+63
to
+65
Contributor
There was a problem hiding this comment.
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Summary
ADR-002 — Dynamic Call Resolution: documents the
DynamicKindtaxonomy replacing the booleanCall.dynamic, the sink-edge design that reuseskind='calls'+ a newdynamic_kindcolumn (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_verticestable kept separate fromnodesto avoid polluting graph analytics), function summaries for bounded interprocedural stitching, stitching on resolvedcallsedges (replacing ambiguous name-based matching), the backward-compatibledataflow_fnview, 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.mdandINTERPROCEDURAL_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.