chore: reconcile upstream through a5184ed5

Merged
BO
20d ago
+1544-82

Merges upstream main through a5184ed5 (#2286, #2287, #2288, #2289) into fork/consolidated. This is batch 2a of the reconcile through 9d4e805b. Batch 2b (#2290–#2296) needs ports of upstream's TS name-matcher and C++ macro changes and comes separately.

Land by fast-forward push of the merge commit (git push origin reconcile/upstream-2289:fork/consolidated) so upstream ancestry is kept.

Conflict resolutions

  • #2286, PHP class names written with a namespace. Upstream added resolvePhpQualifiedClassRef to the TS resolver, which the fork no longer has. It is ported to the kernel as resolve_php_qualified_class (codegraph-kernel/src/resolve/pipeline.rs). It runs in the non-bare path after the CFML component-path arm and before the prefilter, matching upstream's placement. It applies the same gates upstream's resolveOne wraps around it. src/resolution/index.ts and import-resolver.ts keep the fork's side.
  • #2287, a nested repository the parent index leaves out. hasFilesUnder goes into src/codegraph.ts; src/index.ts stays the fork's shim.
  • #2288, same-named symbols keep their callers across a sync. Taken. The one-transaction re-store keeps the fork's bindings field. queries.ts adds only getNodeIdentitiesByFile; the fork had already removed the other two statements in that conflict.
  • #2289, Pascal .inc files. Detection happens in TS, and the kernel parses whatever language TS passes, so the kernel needs no change. scripts/kernel-parity.mjs stays deleted.
  • CHANGELOG. The merge=union driver duplicated about 60 reworded entries again. The file is rebuilt from the fork's text plus the four new upstream entries.

Fork adaptations: mcp-nested-repo-projectpath.test drops WASM_RUNTIME_FLAGS. The idle-release test's timeline comments are off by 10 ms, and the scheduleIdleRelease comment overstates when trims re-arm; both are corrected (found in review of the upstream draft for the same fix).

Checks

  • Upstream's php-namespace-alias-instantiation.test.ts: 8/8 with the port. With the new call disabled, 6 fail.
  • Kernel golden dumps: unchanged, since the fixture corpus has no namespace-qualified PHP class names.
  • eval:precision slim: 1/1 held. cargo clippy --release on the lib target: clean.
  • Base-vs-branch edge dumps on koel (30,277 edges) and firefly-iii (29,020): identical. Neither app writes class names through a namespace alias, so the port changes nothing there.
  • tsc clean. Targeted set (the four new upstream tests, sync, readme-sync, windowsHide guard, idle release, projectPath lifecycle, goldens): pass. Full suite: 7,126 passed, 34 skipped, 565 files.
  • Astra xhigh review: PASS in round 2. Round 1 found no code defects and one P3: the README and site language tables didn't mention .inc. Both now do.

README rows checked

Line 55 (upstream merge point) updated to a5184ed5. The PHP and Pascal rows of the language table (README and site/src/content/docs/reference/languages.md) now list .inc. "Inferred links kept current on sync" and "Name resolution" rows checked and unchanged. The Drupal .inc row in README and site/.../framework-routes.md stays correct, because a .inc with a <?php tag is still PHP.