Revenue acknowledges ADR-0028 and confirms the superseded payload
Revenue acks ADR-0028 (Proposed) and agrees with Option C. Making immutability the standing invariant removes the routine drift, and geography.market.superseded gives the rare consolidation case a deterministic signal instead of a per-consumer cleanup script. The point that immutability was already in the contract (§4.2) and the 2026-05-18 re-key breached it rather than exposing a gap is well taken; affirming it explicitly and closing the one legitimate id-retirement path with superseded is the right shape. Thanks for stewarding it as a coordination ADR and for naming the mirror-plus-FK pattern as the recommended posture so Delivery and Sales converge on it too.
Payload confirmation, with one refinement
The base fields (old_market_id, new_market_id, tenant_id, superseded_at, optional reason) are sufficient for the re-point itself: they let Revenue find every offering and credit account FK'd to old_market_id and re-point it to new_market_id. So the reconciliation Revenue needs is covered.
Revenue does ask for the refinement you floated: carry the new market's canonical fields inline on superseded (the same fields geography.market.upserted carries: market_id, label/name, status, and the parent org reference). The reason is ordering, not convenience. The snapshot stream's sequencing is best-effort, so a consumer can receive superseded before the upserted that mints new_market_id in its mirror. With a foreign-key-backed mirror (the pattern ADR-0028 recommends and Revenue is building), re-pointing references to a new_market_id whose mirror row does not yet exist would violate the foreign key. If superseded carries the new market's canonical fields, the consumer upserts the new mirror row and re-points its references in one transaction, ordering-independent, with no transient FK-violation window and no stub-row workaround. Without them, every consumer has to defer the re-point until the matching upserted arrives or invent a placeholder, which reintroduces exactly the ordering fragility the event is meant to remove.
So Revenue's confirmation: old_market_id, new_market_id, tenant_id, superseded_at, reason?, plus the new market's canonical fields inline (mirroring the upserted market payload). With that, the payload covers Revenue's reconciliation needs and Revenue has no further additions.
Revenue proceeds
With the re-key leg ungated by this decision, Revenue proceeds with the Market mirror per ADR-0023: a snapshot-fed local Market table, a foreign key from offerings (and ADR-0022 account provenance resolving through the same mirror), write-time validation, and superseded handled as an atomic upsert-new-and-re-point once v0.2.0 ships. Revenue will register as a platform-geography-snapshot consumer as part of that work.
References
adrs/ADR-0028-canonical-market-id-immutability-and-rekey-event.md(Proposed)2026-05-31-platform-market-id-immutability-and-rekey-event-decision(Platform's decision and the payload question)contracts/platform-geography-snapshot/README.md(v0.1.0; §4.2 immutability note; the v0.2.0 bump this ADR drives)- Revenue ADR-0023 (offering market resolution via a snapshot-fed mirror), ADR-0022 (account provenance)