Files

24 lines
1.3 KiB
Markdown

# Restore Runbook
Executable via `RestoreGateService`/`scripts/restore_test.py` as of M6-05
(steps 1-8; step 9's scheduled trigger and step 10's operational traffic
cutover remain manual/operational). See `artifacts/evidence/M6-05/` for a
known, confirmed external blocker on this development host: Qdrant's own
snapshot-recovery mechanism currently fails here for reasons unrelated to
this code (root-caused in detail there) -- the code is complete and
unit-tested, and expected to pass real-infra validation unchanged once
that environment issue is resolved.
1. Select a completed verified backup and validate checksums.
2. Create an empty isolated restore environment with matching supported software.
3. Restore configuration references/secrets separately.
4. Restore PostgreSQL and apply only documented compatible migrations.
5. Restore immutable blobs and parsed artifacts; verify sampled hashes.
6. Restore Qdrant snapshots and collection aliases.
7. Run reconciliation for missing/orphan points and artifacts.
8. Run database integrity, counts, citations, golden retrieval and security denial tests.
9. Record evidence and only then allow traffic.
10. Keep the failed/current environment intact until restore acceptance.
A production incident restore follows the same proof, with an explicit incident commander and rollback decision.