Task: Production verification — dev-platform smoke suite + 48h soak¶
Description¶
Execute the PRD's Production Verification runbook on dev-platform (then staging/production when promoted): health checks, invoice write-back round-trip, concurrency race smoke, idempotency replay smoke, soft-delete smoke, filter/export smoke, synthetic alert triggers, then a 48-hour soak watching consumer lag, parked messages, and DLQ depth. Gate for epic close; includes the operator-applied RabbitMQ topology step and rollback rehearsal (consumer disable-by-unbinding).
Acceptance Criteria¶
- [ ] Topology applied: trading queue bound to accounting exchange; consumers visible in RabbitMQ management (AC: 1)
- [ ] Write-back smoke: a seeded source entity transitions ≤30 s after the accounting event; activity entry visible via API (AC: 2)
- [ ] Concurrency smoke: two scripted writers claiming the same line item's remaining capacity → exactly one 201 + one 409 (AC: 3)
- [ ] Idempotency smoke: double-POST with same key → one record, identical responses (AC: 4)
- [ ] Soft-delete smoke: a deleted record in its initial state is absent from the list,
deleted_atset in DB, activity entry present (AC: 5) - [ ] Filters/export smoke: the derived-status filter returns the right set; CSV export returns the filtered set (AC: 6)
- [ ] Observability: dashboard live; one synthetic parked message fires the alert; rollback (unbind) rehearsed and documented (AC: 7)
- [ ] 48 h soak: consumer lag ≈ 0, parked count stable, DLQ depth 0, no error-rate regression — evidence recorded in this task (AC: 8)
- [ ] Sign-off: ADR-0066/0067/0068 reviewed and signed off by a second reviewer outside the implementing thread (AC: 9)
Technical Details¶
- Environment: dev-platform via gateway (
https://dev.platform.acme-example.co.uk); remember dev-platformterraform applyis operator-only — topology via k8srabbitmq.comresources, not TF. - Rollback criteria per PRD §Production Verification (parked/DLQ growth, an over-allocation detected, crash-loop, p95 >2× baseline) →
docs/platform/operations/rollback-runbook.md. - Resolved user names are null in dev until #1581 lands — not a blocker for this epic's smokes.
Dependencies¶
- [ ] ALL implementation tasks (002–009) merged and deployed to dev-platform
- [ ] Operator: RabbitMQ topology + any KV/ESO secret steps
Effort Estimate¶
- Size: S (+48 h soak elapsed)
- Hours: 8
- Parallel: false
Definition of Done¶
- [ ] Acceptance tests written (Gherkin scenarios)
- [ ] Unit tests written and failing (red phase) — then passing after implementation
- [ ] Integration tests written and passing
- [ ] E2E tests pass (if UI changes involved)
- [ ] Code implemented and makes all tests pass (green phase)
- [ ] Code refactored for quality (refactor phase — DRY, naming, simplification)
- [ ] Self-reviewed for bugs, edge cases, and conventions
- [ ] Automated code review passed (/pm:epic-review)
- [ ] PR created and CI checks pass
- [ ] Production verification steps documented
- [ ] Deployed and verified in production (see /pm:prod-verify)
- [ ] Architecture decisions referenced in Dev Notes (if architecture.md exists)
- [ ] Dev Agent Record completed (model, files, completion notes)
Dev Notes¶
Architecture Patterns¶
- PRD §Production Verification (authoritative checklist); architecture.md §5 monitoring thresholds + rollout/rollback
Project Structure¶
- Smoke scripts under the epic dir or
scripts/per repo convention; evidence recorded in this task's Dev Agent Record
References¶
docs/platform/operations/{monitoring-runbook.md,rollback-runbook.md,deployment-guide.md}
Dev Agent Record¶
- Agent Model Used: [to be filled by implementing agent]
- Completion Notes: [to be updated per subtask completion]
- File List: [to be updated — all files created/modified/deleted]
File Modification Rules¶
Implementing agents may ONLY modify these sections: Task/Subtask checkboxes, Dev Agent Record, File List, Status. Do NOT modify: Description, Acceptance Criteria, Dev Notes, Dependencies, Definition of Done.