generated from john/python-template
2.8 KiB
2.8 KiB
Production Runbook
This runbook is the operational checklist for releasing and monitoring the transcription system.
1. Pre-release gate checklist
- Run the full suite:
uv run pytest - Confirm contract guardrails are green:
uv run pytest tests/test_meta_contract_guards.py
- Confirm health endpoint includes worker liveness payload (
/healthzreturnsworker.state). - Confirm required runtime settings are present in deployment environment:
OPENROUTER_API_KEYDATABASE__*- filesystem paths for data/logs/backups.
- Confirm schema contract alignment is current:
src/transcription/db/models.pydocs/schema.md
2. Release execution steps
- Deploy artifact/config to target environment.
- Validate service startup:
/healthzresponds200worker.stateisrunning
- Execute one smoke workflow:
- create a document/job with at least one source
- verify terminal job outcome updates
- verify execution evidence row appended
- Verify log flow:
- stdout aggregation receives events
- file logs are written under
./data/logs
3. Rollback triggers and actions
Trigger conditions
/healthzreportsworker.state=failed- Repeated provider timeout/error spikes beyond normal baseline
- Evidence write failures or DB persistence failures
Actions
- Roll back app artifact and config to previous release.
- Restart service and re-check
/healthz. - Re-run smoke workflow and confirm worker returns to
running. - Preserve incident evidence:
./data/logs- relevant DB rows (
job,job_source,execution_attempt)
4. Post-release monitoring checklist
First 24 hours
- Monitor
/healthzperiodically forworker.state. - Track job terminal distribution (
transcribed,partial_success,failed). - Sample timeout/error categories for abnormal increase.
- Spot-check new
execution_attemptrecords for append-only growth and timing metadata.
First 72 hours
- Re-check error/timeout trend versus 24h baseline.
- Verify no recurring worker-failed states.
- Verify storage growth and rotation behavior under
./data/logs. - Confirm incident response notes are captured for any production anomalies.
5. Operator playbook for common incidents
Worker failed
- Check
/healthzpayload (error_id,error_category). - Locate matching error in logs.
- If non-transient defect persists, roll back.
Provider timeout spike
- Confirm provider reachability and rate limits.
- Review timeout frequency and impacted job volume.
- If sustained, execute rollback criteria and notify stakeholders.
Partial-success increase
- Inspect affected
job_sourceandexecution_attemptrecords. - Confirm failures are category-aligned (
external/timeout/internal). - Triage whether issue is source quality, provider, or runtime regression.