diff --git a/docs/runbook/rehearsal-v1-30min-checklist.md b/docs/runbook/rehearsal-v1-30min-checklist.md new file mode 100644 index 00000000..caf576a0 --- /dev/null +++ b/docs/runbook/rehearsal-v1-30min-checklist.md @@ -0,0 +1,116 @@ +# Rehearsal v1.0 — 30-minute execution plan + +Контрольований rehearsal без змін коду: перевірка **процесу релізу** (preflight → restart → smoke → observation → evidence). + +**Release window:** виділений слот 30–60 хв (наприклад сьогодні 20:00–21:00 UTC або завтра зранку). + +--- + +## ⏱ 0–5 хв — Preflight + +```bash +STRICT=1 bash ops/preflight_sofiia_console.sh +``` + +**Очікування:** PASS або лише не-критичні WARN. Якщо FAIL → зупиняємось і виправляємо. + +**Зафіксувати:** результат (PASS / WARN / FAIL), коротко що було. + +--- + +## ⏱ 5–10 хв — Controlled Restart + +Перезапусти sofiia-console (як прийнято: systemd/docker). + +Після старту: + +```bash +curl -i http://127.0.0.1:8002/api/health +curl -i http://127.0.0.1:8002/metrics +``` + +**Очікування:** 200 OK, без 500, metrics доступні. + +--- + +## ⏱ 10–15 хв — Smoke (функціональний) + +### Idempotency A/B (якщо Redis backend) + +```bash +bash ops/redis_idempotency_smoke.sh +``` + +**Очікування:** `message_id` однаковий, `replayed=true` на другому запиті. + +### Audit auth + +Без key: + +```bash +curl -i http://127.0.0.1:8002/api/audit +``` + +→ **401** + +З key: + +```bash +curl -H "X-API-Key: " http://127.0.0.1:8002/api/audit +``` + +→ **200** + +--- + +## ⏱ 15–25 хв — Observation Window + +Спостерігай 10 хв. Мінімум перевірити: + +- Чи є 5xx? +- Чи росте `sofiia_rate_limited_total` неочікувано? +- Чи росте `sofiia_idempotency_replays_total` аномально? +- Чи відповідає send стабільно? + +Якщо можливо — зафіксуй приблизний p95 latency (на око по логах достатньо). + +--- + +## ⏱ 25–30 хв — Evidence + +```bash +bash ops/generate_release_evidence.sh +``` + +Перевір, що файл створено. Доповни вручну: smoke A/B, post-release checks, rollback notes (якщо були). + +--- + +# Критерії успіху rehearsal + +| Перевірка | Результат | +|-----------|-----------| +| Preflight | PASS | +| Health + metrics | OK | +| Idempotency smoke | PASS | +| Audit strict auth | 401 без key / 200 з key | +| 5xx | нема | +| Rate-limit / replay сплески | нема дивних | + +Якщо все зелено — **v1 процес релізу вважається стабільним**. + +--- + +# Після rehearsal — що принести далі + +Для decision-матриці (Phase 6 / HA / policy / dashboards) потрібно: + +- 5xx count (total + send) +- replay delta +- rate_limit delta (chat / operator) +- приблизна latency (p95) +- audit events volume +- будь-які WARN з preflight +- friction моменти (що було неочевидним) + +Див. також: `docs/release/sofiia-console-post-release-review-template.md`.