Skip to content

fix(extract): isolate member-call resolvers and import edges from cross-language interference - #2503

Closed
filipechagas wants to merge 6 commits into
Graphify-Labs:v8from
lawnstarter:upstream-fix/member-call-resolver-ownership
Closed

fix(extract): isolate member-call resolvers and import edges from cross-language interference#2503
filipechagas wants to merge 6 commits into
Graphify-Labs:v8from
lawnstarter:upstream-fix/member-call-resolver-ownership

Merge upstream 'v8' (v0.9.39) into upstream-fix/member-call-resolver-…

9a92cfe
Select commit
Loading
Failed to load commit list.
graphify-labs-staging / Graphify succeeded Aug 10, 2026 in 0s

Graphify — worth a look

Worth a look — the grounded gate found no coupling regressions or blocking issues, but 1 advisory finding(s) below merit a look before merge.

Details

Graphify reviewed this change.

Worth a look — the grounded gate found no coupling regressions or blocking issues, but 1 advisory finding(s) below merit a look before merge.


Graphify review — findings

This pull request modifies the member-call resolvers and import-edge handling in graphify/extract.py, adding per-language scoping so that resolvers consume only raw calls and receiver-type indices from source files they own rather than across all languages. It introduces new helpers (_hint_import_targets, _file_nids_by_path) and an _IMPORT_STEM_LANGUAGES table to stamp target_file hints on stem-named import edges before id-disambiguation runs, and defines per-resolver suffix constants. The changes also include corresponding CHANGELOG entries and new/updated tests in the mixed-corpus member-call and import-alias-disambiguation suites. Surface area spans import target resolution (Python, Rust, Zig, Elixir, PowerShell, Pascal, Bash), member-call resolution across multiple languages, and their associated tests.

Worth a look

  • imports_from edges may name target differently than a bare stem id, mis-stamping target_filegraphify/extract.py · Escalate · medium
    • agreed by 2 of 2 members but NOT verified (no proof, no reproducing execution) — consensus is not a verdict; needs human review
Analysis details — impact, health, verification

Impact & health

Graphify review

Impact — 1720 functions depend on the 486 functions this change touches.

Health — this change adds coupling hotspots:

  • worse: extract() — 428 callers, 41 callees

Verification — 1720 functions in the blast radius were not formally verified this run (proofs are advisory here).

Gate & verification

graphify gate

PASS — objectively clean (no health regressions, tests not run — proofs not run this pass (advisory)). Grounded, not self-assessed.

Advisory (not blocking):

  • verification_scope: 1580 function(s) in the blast radius were not formally verified this run