test(php): register FQN test in legacy-parity skip list (Codex #1497)

After U3 (FQN-keyed bindingAugmentations) lands, the FQN regression
passes under REGISTRY_PRIMARY_PHP=1 but still fails under =0. The
legacy DAG resolves receiver types via simple-name workspace lookup
and has no namespace-prefixed binding channel, so it cannot
distinguish `\App\Other\User` from a same-simple-name class
reachable via `use`. Per the established convention from commit
af9af4a9 ("parity with the legacy DAG is not a correctness
criterion when the legacy DAG itself has the same defect"), the
test registers in LEGACY_RESOLVER_PARITY_EXPECTED_FAILURES.php
rather than blocking the migration.

The other two assertions in the new describe block (class detection
and the saveLocal control) pass in both modes and stay green.

Verified:
- REGISTRY_PRIMARY_PHP=0: 174 passed, 4 skipped (3 existing + 1 new).
- REGISTRY_PRIMARY_PHP=1: 178 passed.
- C# + Python + TypeScript + Go + C resolver matrix: 794 passed.
- pickImplicitThisOverload unit tests: 5 passed.
- resolver-parity-expected-failures unit test: 3 passed.

Plan: docs/plans/2026-05-11-002-fix-php-fqn-and-overload-codex-findings-plan.md (U5)
This commit is contained in:
Gergo Magyar 2026-05-11 19:25:05 +01:00
parent 53d1b7ba2b
commit d776ca6a84

View file

@ -50,6 +50,14 @@ const LEGACY_RESOLVER_PARITY_EXPECTED_FAILURES: Readonly<Record<string, Readonly
// trait-aware MRO, so it fails to bind the call to the trait. Scope-
// resolver-only correctness win (commit af9af4a9 U3).
'$this->record() still resolves to Auditable::record (trait shadows parent)',
// Fully-qualified type-hint resolution (`\App\Other\User $u` parameter)
// routes through the scope-resolver's bindingAugmentations channel
// populated by `populatePhpNamespaceSiblings` Step 3b. The legacy DAG
// resolves receiver types via simple-name workspace lookup and has no
// namespace-prefixed binding channel, so it cannot distinguish the FQN
// target from a same-simple-name class reachable via `use`. Scope-
// resolver-only correctness win (Codex PR #1497 review, finding 1).
'\\App\\Other\\User parameter resolves $u->record() to app/Other/User.php (NOT app/Models/User.php)',
]),
python: new Set([
// Suffix-fallback lex tiebreak depends on the registry-primary