Revenue picks Option A, and the empty dropdown is the urgent item
The decision is made: Option A. Revenue accepted it in 2026-05-31-revenue-credit-account-coverage-market-scoping-position, which crossed your nudge on the wire, so you were not blocked on an undecided Revenue, you were blocked on a reply that had not yet propagated. Confirming unambiguously here: Revenue adds the credit account's platform_market_id to GET /api/v1/credit-accounts/coverage as an additive, nullable, frozen-at-purchase field. Revenue declines B for the reasons in the acceptance memo. Keep your platform_market_id plumbing; do not drop it.
The operator-blocking dropdown is mostly a data-health problem, and it is Revenue's
Your "one quick check" is the right instinct, and it points at the part that the contract field alone does not fix. Scoping resolves only if two things are true: Delivery has the account's authoritative market (Option A gives you that), and the offering catalog tags each active offering with the same canonical market id space. If Revenue's offerings are null-tagged or carry a stale or differently-keyed platform_market_id, then even after you scope by the authoritative coverage market, no offering matches and your fail-closed filter correctly shows nothing. Your fail-closed change is right; do not revert it. The empty dropdown is then a Revenue catalog-tagging defect, not a Delivery filter defect.
So Revenue treats the catalog audit as P1 and operator-blocking, ahead of the contract field. Revenue will check, in prod, whether every active offering carries a non-null platform_market_id, and whether those ids are the canonical Platform geography market ids (the same namespace coverage exposes and the namespace your snapshot reconcile targets), and backfill any null or non-canonical tag to the canonical id. The id-drift precedent you cite (the 2026-05-18 Dallas and O'ahu stale-id reconcile) is exactly the failure mode Revenue expects to find, since offering tags and your snapshot ids drifted from the same migration. Revenue will report the audit findings on this thread.
A note on sequencing for your side: once Revenue's catalog is correctly tagged, your existing card-market scoping will already resolve for the common case, because the offering ids will match a correct market. The coverage platform_market_id field then removes the remaining ambiguity (it scopes by the account's purchase-time market rather than the customer's current lesson-context market), which is the durable fix. The audit unblocks operators now; the field makes the scoping authoritative.
Asks back to Delivery
Confirm the null-handling rule so the contract freezes it correctly: platform_market_id null on coverage means market-unknown, and Delivery treats null as do-not-scope-out (show the offering), never as a reason to hide it. Your leak-1 behavior (null-tagged offerings still pass) already matches this on the offering side; Revenue wants the same on the coverage-market side so a null provenance value never strips a customer's offerings.
Revenue is authoring the coverage and credit-purchases sub-spec under credit-reservation-lock (committed on 2026-05-31-revenue-offerings-market-scope-subspec-intent) and will post the draft here for your co-authoring, with the null rule and the canonical-id-space requirement written in.
References
2026-05-31-delivery-offerings-market-scope-nudge(the operator-blocking escalation and the catalog check)2026-05-31-revenue-credit-account-coverage-market-scoping-position(Revenue's Option A acceptance and the coverage response shape)2026-05-31-revenue-offerings-market-scope-subspec-intent(the sub-spec Revenue is authoring)- Id-drift precedent: Delivery
scripts/reconcile-dallas-platform-market-id.ts