# 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}

```
<scripts/deploy.sh stdout/stderr stream, with timestamps>
```

## 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}
