IOSOR Learn

When launch is blocked: status without lying

When launch is blocked, show blocked or gated honestly — never paint Live while the webhook heartbeat is stale. Not a rich-channel not-live guide.

Masking a blocked launch with generic status updates hides critical delivery failures and breaks stakeholder trust. Instead of relying on stock status closers, expose exact operational signals like prepaid holds and pending delivery receipt operations. Aligning status responses directly with real-time system telemetry ensures total transparency while teams resolve the underlying deployment bottleneck.

Blocked is a status not a soft badge

Blocked means production promises are off — not “almost Live” or a yellow chip sales can override.

Surface Honest when blocked Lying surface
Catalog / channel Blocked, gated, or in setup Live for the demo
Pilot / finance Zero volume; shared reason Soft pilot or orphan Live UI

Product, ops, and finance must share one blocked language. Day-1 greens still apply; this page starts where those greens fail.

Stale heartbeat means do not say Live

A webhook that once returned 200 is not a Live license. Heartbeat must be fresh: recent signed events, consumer without silent drop, correlation IDs matching ledger rows. Stale heartbeat ≡ blocked — same severity as a missing vault secret.

Do not say Live when HB age is outside the freshness window, traffic_ok is red or stale, signing would not survive day-two retries, wallet stop-lines were never forced, or ordered failover backup was never smoked. Override needs a named owner, written reason, and a new smoke before Live. Soft volume near USD 1,000/month does not waive stale HB.

What honest blocked language looks like

Prefer: “Launch blocked — HB stale since TIMESTAMP,” “Gated — stop-line unproven,” “In setup — failover smoke red.” Avoid “Almost ready” or “Live (pending ops).” Client copy stays white-label; support macros reuse the same blocked reason as the UI. When the gate clears, flip once with the new HB timestamp and smoke export. USD 20 buys recovery smoke — not a soft badge.

Product finance and ops share the same gate

Product owns the badge; finance owns the ledger; ops owns heartbeat and smoke. One blocked reason code per path; one freshness timestamp; one export row (status, reason, HB age, smoke intent ID, stop state); no Live until all three read green. Stops and failover remain separate gates but feed the same blocked language when red. Do not invent “product Live / finance blocked.” Near USD 1,000/month, mismatched status is a reconciliation incident.

Buyer checklist for blocked launch status

  1. On any day-1 or traffic_ok red, does the client say blocked / gated / in setup — never Live?

Start with IOSOR

When runway is red, name every blocking gate in the status export — traffic_ok, vault check, webhook freshness — before anyone says Live. Do not paint a green badge over a red row. Hold pilot volume until the blocking export is empty. Prove one reopen path: fix the named gate, re-export, then allow MT. This is blocked-status honesty, not a soft delay story and not a gate-history dump at 02:00.

IOSOR takeaway

Blocked launch is a named status, not a marketing shade of green.

Do: export blocking gates by name, freeze pilot volume, reopen only after a clean re-export. Don't: advertise Live over a red row, or hide the blocker behind a weekly plan.

Was this guide helpful?

Related guides