chore: reconcile upstream through a5184ed5
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
resolvePhpQualifiedClassRefto the TS resolver, which the fork no longer has. It is ported to the kernel asresolve_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'sresolveOnewraps around it.src/resolution/index.tsandimport-resolver.tskeep the fork's side. - #2287, a nested repository the parent index leaves out.
hasFilesUndergoes intosrc/codegraph.ts;src/index.tsstays the fork's shim. - #2288, same-named symbols keep their callers across a sync. Taken. The one-transaction re-store keeps the fork's
bindingsfield.queries.tsadds onlygetNodeIdentitiesByFile; the fork had already removed the other two statements in that conflict. - #2289, Pascal
.incfiles. Detection happens in TS, and the kernel parses whatever language TS passes, so the kernel needs no change.scripts/kernel-parity.mjsstays deleted. - CHANGELOG. The
merge=uniondriver 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 --releaseon 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.
tscclean. 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.