docs(route-authority): market resourceId mapping + reveal contract landed

Records fe72f0d (resourceId->Core card_id reverse mapping; listings carry both
identities; full Core+store restart E2E) and 747cc23 (GET /purchased reveal =
durable purchased pile, idempotent). Both pre-barrier correctness gaps closed.
Remaining: Python differential, host concurrency matrix, failure injection,
importer, from_config attachment, then the classifier barrier + reachability.
This commit is contained in:
OpenFUT Agent
2026-08-13 21:51:52 +00:00
parent 747cc234c1
commit 1fac71e3ef
+9 -7
View File
@@ -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.