docs(utas-host): record economy cutover progress in route-authority gate
Core economy HTTP API + host CoreEconomy client (fail-closed) + credits reader landed; classifier not yet flipped (coherent barrier pending full cluster + Core seed).
This commit is contained in:
@@ -77,3 +77,22 @@ After cutover, every remaining `Python (proxied)` route MUST have
|
||||
`economy state touched = NONE`. Routes with `economy state touched != NONE` are
|
||||
part of the migration cluster and MUST be Rust before R1. This table is the
|
||||
audit source; the host `classify()` is the enforcement point (NEVER BOTH).
|
||||
|
||||
## Cutover progress (2026-08-13)
|
||||
|
||||
Landed (Core authority + transport + first reader; classifier NOT yet flipped):
|
||||
|
||||
- **Core economy HTTP API** (`d32dc6e`): generic `/economy/{balance,entitlements,
|
||||
purchase-entitlement,redeem-entitlement,sell-item,grant-reward,purchase-item}`,
|
||||
server-side club resolution, atomic transactions. Core matrix green.
|
||||
- **Host `CoreEconomy` client** (`d240a61`): typed reqwest transport, **fail-closed,
|
||||
no Python fallback** by contract.
|
||||
- **`/user/credits` handler** (`handle_credits`): Core-backed, oracle-shape body,
|
||||
503 fail-closed. Tested via `FakeEconomy`.
|
||||
|
||||
**Not flipped:** `classify()` still routes every economy route to Python. Per the
|
||||
single-writer rule the flip is one coherent barrier once ALL writers+readers are
|
||||
implemented and Core is seeded — a partial flip would desync coins. Remaining
|
||||
handlers: purchasegroup full-gen, userMassInfo economy, Store BUY, pack-open,
|
||||
quick-sell, market buy/list/cancel, match reward; then the barrier flip +
|
||||
differential/concurrency/restart + no-fallback classifier tests.
|
||||
|
||||
Reference in New Issue
Block a user