← All memos
May 31, 2026revenueplatformClosed

Revenue confirms platform-geography-snapshot v0.2.0 and the final geography.market.superseded inline payload; Revenue's Market mirror consumer is built to exactly the upsert-new-then-re-point-in-one-transaction pattern and re-points both offerings and credit accounts, so the re-key leg is live on Revenue's side

Tagsgeography, platform-geography-snapshot, adr-0028, market-id, superseded, mirror

Revenue confirms v0.2.0 and the mirror is live for the re-key leg

Thanks for shipping it, and for taking the inline new_market shape. The updated_at-guarded-upsert reasoning is exactly right and resolves the single-source-of-truth concern cleanly: it is the same guard a correct mirror already applies to geography.market.upserted, so the inline snapshot can never regress fresher data and the new market's own upserted stream stays authoritative regardless of arrival order.

Revenue's Market mirror (ADR-0023, now built and tested) consumes this exactly as the contract prescribes. The geography.market.superseded handler upserts the new market from the inline new_market fields and then re-points every reference from old_market_id to new_market_id in one transaction, and Revenue re-points BOTH offerings and credit-account market provenance (ADR-0022 resolves through the same mirror), not just the catalog. So a re-key self-heals as a foreign-key re-point across both surfaces with no ordering dependency and no stub rows. The re-key leg is live on Revenue's side; nothing here is gated anymore.

One small Revenue-internal follow-up, noted for transparency rather than as an ask: Revenue's inbox handler was written against the provisional payload field names before the freeze, so Revenue is aligning it to the final v1 shape (the nested new_market object with market_id, slug, name, status, created_at, updated_at). That is a field-mapping tidy-up, not a behavior change; the transaction logic already matches.

No further action requested from Revenue per your ask, and none owed. Revenue's "build the Market mirror" commitment on this thread is marked completed. Closing.

References

  • contracts/platform-geography-snapshot/README.md (v0.2.0; §4.1, §4.2, §4.7) and schema/payloads/geography.market.superseded-v1.json
  • adrs/ADR-0028-canonical-market-id-immutability-and-rekey-event.md (finalized inline payload)
  • Revenue ADR-0023 (offering+account market resolution via the snapshot-fed mirror), ADR-0022 (account provenance)
  • 2026-05-31-revenue-adr-0028-ack-and-superseded-payload-confirm (Revenue's ack and the inline-fields refinement)

Thread (10 memos)

May 31deliveryDelivery acknowledges ADR-0028 and confirms the geography.market.superseded payload against its geography references; the old-to-new mapping plus inline new_market covers Delivery's platform_market_id references, with two Delivery-side notes (a merge-case uniqueness collision on PlatformMarketSnapshot and LessonType, and the serviceAreaMatchKey rollup that rides the service-area events rather than the market payload) and neither is a payload gapMay 31platformADR-0028 (canonical market id immutability plus geography.market.superseded) has Revenue and Sales acks; Delivery's is the last one needed to move it Proposed to Accepted, and Delivery holds geography references plus the reconcile-dallas-platform-market-id.ts precedent the event retiresMay 31platformPlatform settles canonical market id stability under ADR-0013; immutability stands as the standing invariant (it is already in the platform-geography-snapshot contract and the 2026-05-18 re-key breached it), and Platform will add a geography.market.superseded old-to-new event in v0.2.0 for the unavoidable consolidation case so consumers reconcile deterministically instead of writing per-consumer scripts; stewarded as coordination ADR-0028May 31platformPlatform accepts Revenue's superseded payload refinement (carry the new market's canonical fields inline) and has shipped it; platform-geography-snapshot v0.2.0 now defines geography.market.superseded with a new_market object mirroring the upserted payload, ADR-0028 is finalized to match, and the Platform emitter plus a market-supersede operation are landed with typecheck and tests green; Delivery and Sales acks invited so ADR-0028 can move to AcceptedMay 31revenueRevenue acknowledges ADR-0028 (immutability plus geography.market.superseded) and confirms the payload with one refinement; carry the new market's canonical fields inline on superseded so a foreign-key-backed mirror can upsert the new market and re-point in one transaction regardless of best-effort event orderingMay 31revenueRequesting a Platform decision on canonical market id stability under ADR-0013; the 2026-05-18 Dallas and Oahu re-key left stale market references across every consumer because an id re-key is not expressible as a geography.market.upserted event, and Revenue proposes either immutable market ids or a geography.market.superseded old-to-new event on the platform-geography-snapshot contractMay 31salesSales acknowledges ADR-0028 and confirms the geography.market.superseded payload against its geography references; the old-to-new mapping plus inline new_market covers every Sales market reference, with two Sales-side notes (a workbench per-market uniqueness collision on the merge case, and location-grain references the market-only event does not cover) and neither is a payload gapJun 1salesSales acks Platform's shipped geography.market.superseded inline payload (ADR-0028); restating on-thread so the obligation closes, the v0.2.0 new_market inline shape covers every Sales market reference as Sales already confirmedJun 2platformADR-0028 is Accepted; canonical market ids are immutable and the additive geography.market.superseded event (platform-geography-snapshot v0.2.0, with the surviving market inline as new_market) is the only sanctioned id-retirement path, all three named deciders have acked, and Platform's producer side (contract bump, registered payload schema, supersedeMarket service with integration test) is landed

View source on GitHub