Skip to content

release — ship safely

← Book index · rollback first, GO/NO-GO, then prove the outcome

What it is: the SHIP phase — the last gate before production and the loop-closer after it. Shipping is an explicit decision with evidence, never an afterthought.

How it works

flowchart TD
  C[pre-launch checklist:<br/>verify green NOW · no open Criticals<br/>all changes committed · CI green on THIS commit<br/>NFRs met · migrations safe] --> VER[version: SemVer by observable behavior<br/>annotated tag · consumer changelog]
  VER --> RB[rollback plan written FIRST]
  RB --> RO[staged rollout: team → 5% → 25% → 100%<br/>named metrics · numeric abort thresholds · bake time]
  RO --> GO{{"👤 GO / NO-GO"}}
  GO --> POST[post-ship: outcome measured vs spec criteria<br/>Operate runbook in summary.md<br/>incident → rollback → root-cause → postmortem]

Best cases

  • User-facing launches that need staged rollout and a tested way back.
  • Closing out any task — even internal ones get the single-step collapse plus the rollback note and runbook.
  • The moment after ship nobody does: did the change actually work? It reads the spec's success metric back with real data.

Example

itqan:release "ship the new onboarding flow to production"

What you get

A written GO/NO-GO block (evidence · integration step · rollout with thresholds · rollback) · version + tag + Keep-a-Changelog entry in the same change · an Operate runbook for on-call (dashboards, alerts, rollback command, failure modes, escalation) · an Outcome line proving the change worked, not just ran.

Hand-offs

Consumes inspect/harden-cleared, verify-green work. NO-GO routes back with the reason. In loop mode, a healthy GO pulls the next task. Incidents post-ship: rollback → verify Part B → postmortem into decisions.md.

Pro tip: write the abort thresholds as numbers before stage one — "watch it closely" is not a rollout plan, "error rate > 2% for 5 min ⇒ roll back" is.