Production Checklist
Each item below covers a failure that is straightforward to prevent before launch and difficult to diagnose afterwards.
Submitting tickets
Section titled “Submitting tickets”- Ticket IDs are UUIDs generated in the game backend, and a timed-out
CreateTicketis retried with the same ID. - Everything the engine needs is in
engine_input; everything the backend needs back is inmetadata. -
Player.latenciesuses host keys that map directly onto the provisioning layer’s placement identifiers. -
mmrvalues are on the same scale as the queue’smmr_normalization_ref. The parameter defaults assume a normalised0.0-1.0range; a raw ladder rating in the thousands will dominate every other term until it is rescaled. - The player is shown a queue state on the
CreateTicketack, not a match.
Consuming outcomes
Section titled “Consuming outcomes”- Outcomes are handled idempotently, keyed on
Outcome.idorMatch.id. Delivery is at-least-once on every sink. - The outcome handler acknowledges quickly and provisions asynchronously. A handler that provisions before responding will hit the delivery timeout and cause a retry storm, with duplicate provisioning attempts as the visible symptom.
-
ticket.expiredandticket.removedare handled as lists; both are batched. -
ticket.removedreasons are distinguished: re-queue for most, stop routing forQUEUE_RETIRED.
Honouring matches
Section titled “Honouring matches”-
match.createdis treated as a commitment: the integration either provisions a server or compensates withReactivateTickets. - The integration walks
host.acceptablebefore declaring provisioning failed. -
terminal_retention_ttl_secsis set above the orchestrator’s worst-case provisioning time plus the fallback walk. - A non-empty
failed_ticket_idsfromReactivateTicketsis alerted on, not ignored.
Error handling
Section titled “Error handling”-
FAILED_PRECONDITIONonCancelTicketis handled as “a match is coming”, and thematch.createdthat follows is still honoured. -
UNAVAILABLEis retried with backoff rather than surfaced to the player. -
FAILED_PRECONDITIONwithx-ivk-reason: QUEUE_RETIRINGstops further routing to that queue instead of being retried.
Configuration
Section titled “Configuration”-
expiration_ttl_secsis slightly above the longest wait the game will display, so the timeout the player sees is the game’s decision. - Credentials are loaded from a secret store, not from source control, configuration files, or a game client.
- If more than one ruleset is in use,
fairness_weightreflects which mode is the headline one.
Backfill
Section titled “Backfill”- Backfill requests are cancelled when a match fills or ends.
- The launch plan does not depend on backfill being fulfilled. It is not yet implemented.