diff --git a/openfut-utas-host/ROUTE_AUTHORITY.md b/openfut-utas-host/ROUTE_AUTHORITY.md index 5c80929..2792939 100644 --- a/openfut-utas-host/ROUTE_AUTHORITY.md +++ b/openfut-utas-host/ROUTE_AUTHORITY.md @@ -141,10 +141,12 @@ attachment of `EconomyServices` + `classify()` barrier flip; then no-Python-fall / writer-unreachable / stale-reader / NEVER-BOTH proofs. Retire in-memory `ProfileEconomy` from any prod path. -**Two market-handler correctness gaps to close before the barrier:** (a) the -synthetic-seller buy mints `listing.card_id`, which `handle_market_list` sets to the -numeric wire `resourceId` string — a real Core `card_id` requires a resourceId→card_id -mapping (Core's content preflight rejects an unmapped mint on reboot); (b) `GET -/purchased` reveal needs a last-opened cache (POST returns metadata; items are polled -via GET) — Store BUY (open-on-buy) already returns items inline, so this only affects -owned reward-pack (pack 70) opens. +- **Market resourceId→Core card_id mapping** (`fe72f0d`): listings carry BOTH + `card_id` (authoritative Core content, minted on buy) and `wire_resource_id` + (FIFA wire, echoed in the auction record); `handle_market_list` reverse-maps via + the catalog `by_resource` index and fails closed on an unmappable resource. The + E2E now survives a FULL Core+store restart (synthetic mint is real content). +- **GET /purchased reveal** (`747cc23`): the reveal is the durable FIFA "purchased" + pile (PileStore `list_by_pile`), shaped by the same `shape_club_response` /club + uses; idempotent, cleared per-item on move-to-club. E2E opens pack 70 and asserts + the reveal + idempotent repeat.