Plan
docs/design/specs/defuse-linker-call-graph.md (the staged follow-up it names) + the audited tail in docs/design/specs/defuse-linker-joern-ledger.md. Python precedent: codeanalyzer-python #150 (whole-program propagation, capped and deterministic).
Problem
The vscode Joern audit (#98) plateaued at 99.66% with a 189-pair classified residual. The families with mechanical closes: object-literal callback properties invoked through parameters (settingsTree onChange), chained factory returns, Registry-pattern generics, getter-returned function invocation — plus Promise-executor name-shadows that are Joern fabrications needing parameter-name proof in the comparator rather than analyzer work.
Scope boundary
L2 recall only; no schema shape, prov vocabulary, id, or CLI change. NOT in scope: the static/instance same-name signature collision (id-grammar change — design mode) and unbounded whole-program fixpoints (bounded rounds only, python #150 style).
Goals
Caveats and known risks
- Bounded tiers may widen edges (votes over literals are may-call); every new tier stays deterministic (sorted iteration) and is measured against the corpus gate before vscode.
- The static-collision family (11) remains open by design — tracked for a design-mode session, not silently absorbed here.
Definition of done
Plan
docs/design/specs/defuse-linker-call-graph.md (the staged follow-up it names) + the audited tail in docs/design/specs/defuse-linker-joern-ledger.md. Python precedent: codeanalyzer-python #150 (whole-program propagation, capped and deterministic).
Problem
The vscode Joern audit (#98) plateaued at 99.66% with a 189-pair classified residual. The families with mechanical closes: object-literal callback properties invoked through parameters (settingsTree
onChange), chained factory returns, Registry-pattern generics, getter-returned function invocation — plus Promise-executor name-shadows that are Joern fabrications needing parameter-name proof in the comparator rather than analyzer work.Scope boundary
L2 recall only; no schema shape, prov vocabulary, id, or CLI change. NOT in scope: the static/instance same-name signature collision (id-grammar change — design mode) and unbounded whole-program fixpoints (bounded rounds only, python #150 style).
Goals
template.onChange(...)wheretemplateis a parameter) vote over object-literal properties passed at that positionCaveats and known risks
Definition of done