feat(callgraph): propagation tiers — vscode ledger to 99.72% - #102
Open
rahlk wants to merge 3 commits into
Open
Conversation
…#100) - Class property initializers execute in the constructor: their call sites now attribute to the ctor (explicit or implicit), and an initializer ARROW materializes as a class-scoped positional anon — signature ↔ containment stays aligned, and the property-arrow known-gap closes. Instance-prop sites leave the module sweeps (vscode's Registry.as-in-field-initializer family). - T4a property form: 'template.onChange(...)' where the receiver is a parameter votes over object-literal properties (incl. method shorthand) passed at that position. - T4b chained return summaries: 'return makeInner()' follows one resolved-internal level, memoized and cycle-guarded. - Joern comparator: methods' parameter tables ride the dump; a residual whose target leaf-name is a parameter of the Joern caller is their parameters-as-callees fabrication wearing a real name — proven by their own table, classified, never gated. Corpus gate: 74/74, residual 0. vscode re-audit deferred until the L4 benchmark run frees the box.
… by their tables (#100)
…OM ceiling removed (#100)
rahlk
force-pushed
the
feat/issue-100-linker-propagation
branch
from
August 27, 2026 13:27
fbda332 to
b520db3
Compare
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Closes #100. Stacked on #99. Ledger: docs/design/specs/defuse-linker-joern-ledger.md (rounds 9–10).
What
Bounded propagation tiers over the defuse linker, driven by the vscode residual families — no fixpoint anywhere:
Registry.as-in-field-initializer family.template.onChange(...)where the receiver is a parameter votes over object-literal properties (method shorthand included) passed at that position.return makeInner()follows one resolved-internal level, memoized, cycle-guarded.this.migrate(...)where the field arrives through the constructor (parameter property /this.f = param) resolves to the function values passed at the class'snewsites — with ONE bounded parameter hop (register(key, cb)→new Migration(key, cb)) and module-scope resolved calls feeding the vote rounds, so registered callbacks' ownwrite()sites resolve too. vscode's migrateOptions chain lands end-to-end.Numbers
DoD deltas
The issue's "residual < 100" target lands at 135 — the gap to 100 is entirely the three families above, each either design-gated (static grammar), python-#150-tier work (explicitly out of scope here), or Joern-side fabrications their own dump under-proves. Recorded in the ledger rather than force-fitted.