diff --git a/docs/PROJECT_STATE.md b/docs/PROJECT_STATE.md index 26d03bc..bcef235 100644 --- a/docs/PROJECT_STATE.md +++ b/docs/PROJECT_STATE.md @@ -124,6 +124,32 @@ Last compiled from repository evidence during context initialization. same day by a staged two-process parity gate (real Core+host over HTTP, no FIFA) confirming byte- shape parity of `userMassInfo.squad` vs the captured oracle. Next milestone: real-data Core import / profile strategy → production Rust UTAS. Blaze deferred. +- **Slice 8 (2026-08-12): REAL-DATA staged retail A/B PASS (import + club + squad).** The real FIFA 17 + profile was imported into a staged Core via the two-store protocol (`openfut-import-fifa17 --apply`: + generic transactional Core import + `openfut-identity` seeding, idempotent), then FIFA itself + consumed it end-to-end over the source-scoped utas switch (`.105`→`.120:8199`). Imported population + 1949 of 1962 player instances (13 Legend/special assets deferred as unnameable — 9 NoName + the 4 + copies of `169193`), every original Python wire id preserved (set-equal, 0 minted/dropped), each + owned instance an opaque Core UUID. On the retail client: real club rendered (1949, not the 33-card + dev XI); `/club` pagination clean (paged==full, no loop/overlap/drop); the `Special` quality filter + returned only specials (1665, 0 base leaked) and paginated the filtered set; a squad edit persisted + to Core (canonical + opaque extension atomically, fingerprint recomputed) and survived a full cold + relaunch; rollback→Python→Rust re-enable proven on the exact client path (disarm reached Python, + re-arm returned the imported club + edited squad; identity store 0 reallocation). Three real-data + fidelity gaps the base-only dev fixture had hidden were found on the live client and fixed: + (1) `e187cd4` versioned `resourceId` — `shape_item` emitted the base assetId as `resourceId`, + collapsing every special onto its base card art; `Fifa17Identity` now carries the versioned + `resource_id`. (2) `626c972` observed `rareflag` — `shape_item` hardcoded `rareflag=1`, so all + specials rendered as basic rare; `rareflag` now flows through the FIFA catalog and onto the wire + (wire distribution == source exactly). (3) `6f16a23` `rare=SP` Special filter — previously a no-op + ("semantics UNKNOWN"), now grounded as `rareflag > 1` and applied host-side (Core has no rareflag). + Also `44fcf24`: nation/league/team proven to be INSTANCE metadata (not definition identity — the 4 + copies of `169193` are identical but for club), so the definition-consistency gate now compares + identity only (no `--defer-conflict` needed; no majority-vote). PRODUCTION NOT READY: the 13 deferred + Legends are unnameable from the `.120` client dump (absent/placeholder in `players.json`; DLC/Legends + name tables empty) — honest names require the FIFA 17 Legends locale data from the `.105` client. + Next: resolve the 13 names → re-import to 1962/0 → full-fidelity gate → gitlink reconcile → + production Rust UTAS. ## Stubbed / planned