# Release Report — {version} → {env} - **Date**: {YYYY-MM-DD HH:MM} {timezone} - **Operator**: {user} - **Strategy**: {all-at-once | blue-green | canary | manual} - **Verdict**: {Released | Released-with-override | Rolled-Back | Aborted} - **Verdict reason**: {one-line summary} ## Pre-Release Gate (Phase 1) ### Acceptance Criteria | AC ID | Status | Evidence | |-------|--------|----------| | AC-001 | Met / Unmet | path:section, test report, etc. | ### Test Status | Suite | Pass | Fail | Skip | Source | |-------|------|------|------|--------| | Functional | N | N | N | _docs/03_implementation/{batch}.md | | Performance | N | N | N | _docs/06_metrics/perf_*.md | ### Change Summary | Component | Tickets | Type | |-----------|---------|------| | {component} | TKT-001, TKT-002 | feature / fix / breaking / security | ### Rollback Plan - Previous version: `{previous-version}` (registry digest: `{sha}`) - Rollback script: `scripts/deploy.sh --rollback` - Rollback target verified pullable: yes / no - Rollback target verified bootable in target env: yes / no ### Restrictions / Approvals - Change-window restrictions: {none | description} - Manual approvals required: {none | reference to approval file} ### Tracker State at Gate - Tickets in scope: {N} - Tickets blocking release: {0 — list any} ## Strategy Select (Phase 2) - Recommended: {strategy} — reasoning - Chosen: {strategy} — reasoning (if differs from recommended) ## Execute (Phase 3) - Start: {timestamp} - End: {timestamp} - Exit code: {0 / non-zero} ``` ``` ## Smoke Test (Phase 4) - Mode: {/test-run --prod-smoke | manual smoke set} - Start: {timestamp} - End: {timestamp} | Test | Result | Notes | |------|--------|-------| | {name} | Pass / Fail | response time, status, etc. | ## Watch Window (Phase 5) - Duration: {minutes} - Cadence: {minutes per poll} - Backend: {observability source — Prometheus, CloudWatch, Datadog, etc.} | T+min | error_rate | rps | p99_latency | saturation | health | notes | |-------|------------|-----|-------------|------------|--------|-------| | 0 | … | … | … | … | OK | … | | 1 | … | … | … | … | OK | … | | … | … | … | … | … | … | … | ### Threshold breaches - {None | "p99 latency 1.7× baseline at T+8 — soft breach, user accepted continuation"} ## Commit or Rollback (Phase 6) ### If Released - Tracker tickets moved: {list} - Git tag pushed: {tag} → {sha} - Retrospective scheduled: yes — {/retrospective --cycle-end output path} ### If Rolled-Back - Trigger: {auto / user-elected} - Reason: {phase + one-line cause} - Rollback start: {timestamp} - Rollback end: {timestamp} - Post-rollback smoke: pass / fail - Tracker tickets moved back: {list} - Incident retrospective scheduled: yes — {/retrospective --incident output path} ### If Aborted - Phase that aborted: {1 / 2 / 3 / 4 / 5} - Reason: {one-line cause} - No live-system changes attempted: yes / no (if live changes, document under Phase 3 above and treat as Rolled-Back instead) ## Lessons (one-liners; full incident retro if Rolled-Back / Released-with-override) - {Optional: short one-liner observations the operator wants the next /retrospective to consider}