Skip to content

Tracking: PHP fork fixes — upstream PR status and the not-yet-opened queue #56

Description

@filipechagas

Umbrella tracker for the PHP work this fork exists for: what started it, what we found on the way, what is already proposed upstream, and what is still waiting on a dependency before it can be proposed.

Fork is at 0.9.39 (v8 @ 93657ef, fork PR #57 merged 2026-08-07). Everything in sections 1, 2 and 3a–3b has landed on the fork. Nothing has merged upstream yet — all seven upstream PRs are OPEN with no review decision (checked 2026-08-07).


1. The original issue and its fix

What Where State
Original upstream bug — PHP member/instance calls never resolve to calls edges; only ClassName::method() works Graphify-Labs#1682 (filed by distribuidornexvia, 2026-07-05) OPEN upstream
Fork tracking issue + slices #1 (parent), #2 #3 #4 #5 #6 #7 (implementation slices), #11 #12 #13 #14 (defects found while building it) all CLOSED
Fork PR #17 feat/php-member-calls-1682 MERGED
Upstream PR Graphify-Labs#2492fix(php): resolve instance-method calls edges from typed receivers (#1682) OPEN

2. Everything else we found, and where it is upstream

Each row: fork issues → fork PR(s) that landed it → the upstream PR carrying it.

Fork issues Fork PR(s) Upstream PR Upstream issue Stacking
#19 (capture use FQN/alias metadata), #26 (group-form use function/use const leak) #29, #30 2502 independent
#8, #10, #24, #33 (cross-language leakage: receiver-type indexes, raw-call ownership, import edges) #28, #34 2503 independent
#15 (first-class callables → indirect_call), #9 (union/intersection receivers), #20 (qualified receiver types), #16/#21 (use-claim refusal) #27, #25, #31, #32 2505 stacked on 2492 + 2502
#18 (spec), #22 (declared-FQN positive binding), #23 (incremental parity marker) #35 2506 stacked on 2505
#37 (relational verbs hijack seed selection), #40, #41, #42, #43 #44, #45 2516 2507we filed it; maintainer CLOSED it 2026-08-07 after landing the relational-verb demotion in upstream 0.9.35. 2516 carries the two failure modes that survived that fix. independent
#46 (node identity / stub shadowing) → #47 (mint interface/trait/enum nodes), #49 (find_node_ambiguity sourceless rivals), #39 (relative-scope callees) #51 2536 independent (based on v8 @ 9f25a3a)

So: one upstream issue we filed (2507, closed), one pre-existing upstream issue we're fixing (1682, open), and seven upstream PRs open. The rest of the ~35 fork issues are our own decomposition and never needed an upstream ticket.

Suggested merge order for the maintainer, if asked: 2492 → 2502 → 2505 → 2506 (that chain must go in order); 2503, 2516, 2536 are independent and can go any time.


3. Fixes that have NOT been proposed upstream yet

3a. Landed on the fork (PR #51 / 0.9.38), deliberately held back — dependency-blocked

Both are named in 2536's body as "two sibling fixes deliberately not in this PR".

3b. Landed on the fork (PR #57 / 0.9.39, MERGED 2026-08-07), not yet proposed upstream

All three issues CLOSED on the fork with acceptance + corpus-grading evidence (−1,341 fabricated calls edges, +2,398 legitimate, on the 46.6k-node api rebuild).

3c. Investigated and written off — no code change anywhere

3d. Triaged ready-for-agent on the fork, not implemented anywhere yet


Definition of done for this tracker

Close when: 2492, 2502, 2503, 2505, 2506, 2516 and 2536 have all merged (or been declined) upstream, and every checkbox in section 3 is either merged upstream or explicitly written off as fork-only (#55 already is).

Next concrete action, unblocked today: open #52 upstream standalone — it is the only unshipped item in section 3 with no upstream dependency. (The fork PR for 0.9.39 is done: #57, merged.)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions