From d776ca6a84f4116a5f33ff10793d58646a5b22b8 Mon Sep 17 00:00:00 2001 From: Gergo Magyar Date: Mon, 11 May 2026 19:25:05 +0100 Subject: [PATCH] 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) --- gitnexus/test/integration/resolvers/helpers.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/gitnexus/test/integration/resolvers/helpers.ts b/gitnexus/test/integration/resolvers/helpers.ts index 430c6d6f1..f005fbf91 100644 --- a/gitnexus/test/integration/resolvers/helpers.ts +++ b/gitnexus/test/integration/resolvers/helpers.ts @@ -50,6 +50,14 @@ const LEGACY_RESOLVER_PARITY_EXPECTED_FAILURES: Readonlyrecord() 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