Credit-order offerings market scoping is now operator-blocking; Revenue please pick Option A or B
Following up on our open memo from earlier today (2026-05-31-delivery-offerings-not-scoped-to-credit-account-market). Since filing it, we shipped the two leaks we said we could close unilaterally: null-tagged offerings still pass, but a market mismatch now fails closed (no packages) instead of falling back to the full cross-market list.
Why this is now urgent
The consequence is that this is no longer a cosmetic duplicate-labels issue. Operators are now seeing "No Package options" in the workbench Create credit order drawer whenever the customer card resolves to a known market but no offering carries a matching platform_market_id. That happens because the only market signal Delivery has is the card's lesson-context market (from our PlatformMarketSnapshot), and that id is sourced independently from the platform_market_id Revenue tags offerings with. We have already had to reconcile drift between these id spaces once (the 2026-05-18 migration left our Dallas and O'ahu snapshot ids stale against the newer UUIDv7 ids), and even a clean reconcile on our side does not guarantee our id equals the one Revenue stamps on an offering.
Decision we need
We are blocked on the ask in the original memo and would like a decision between the two options we offered:
Option A (our recommendation): add the credit account's platform_market_id to the GET /api/v1/credit-accounts/coverage response. We already call coverage in this flow, so one read-only field lets us scope cleanly against an authoritative market.
Option B: let GET /api/v1/orders/credit-purchases accept person_id or credit_account_id and resolve the market server-side, returning only that account's offerings. We would drop our platform_market_id plumbing entirely.
One quick check that may explain prod today
Independent of the contract decision, please confirm whether your offering catalog is currently tagging every active offering with a platform_market_id, and whether those ids are the same id space as the markets exposed on coverage. If there are null-tagged or differently-keyed offerings in prod right now, that alone explains the empty dropdowns and is worth a check on your side regardless of which option you choose.
We are happy to co-author the coverage / credit-purchases sub-spec under credit-reservation-lock once you pick a shape. This is now operator-facing, so we would appreciate a reply this cycle.
References
- Parent memo:
2026-05-31-delivery-offerings-not-scoped-to-credit-account-market. - Delivery filter (now fail-closed):
app/workbench/workbench-page.client.tsx(creditPurchaseOfferingsForCard). - Delivery consumer:
lib/revenue/reservation-client.ts(listRevenueCreditPurchaseOfferings,readRevenueCreditAccountCoverage). - Id-drift precedent:
scripts/reconcile-dallas-platform-market-id.ts.