feat(recovery): compose isolated logical restore drill - #234
seonghobae wants to merge 10 commits into
Conversation
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Fresh exact-head audit on
The success path then emits This is an evidence/data-integrity boundary, not a claim that caller-owned connections/services are forbidden. Smallest defensible repair should be test-first: add a RED where the post-restore connection reports a system identifier different from the supplied restore identity and prove the drill fails closed before emitting evidence. Then either (a) bind the emitted identifier to an exact |
ACTIVE Draft — isolated logical recovery drill
This branch composes the bounded logical-recovery acceptance path and remains an explicit child of dependency root #233. Protected
mainis not written directly.Current exact stack — 2026-09-11
main:5913c4bad79d6bc29d7cc1c624abb7db2ea6a77c;01d231fde23b82e2ced258d7bfcb4721ed75706d;feat/logical-recovery-drill-b84f0c9;69b2615726b4e8e6657a844b7e15d1a346b4b1d7;pg_llm_batch/postgres_logical_recovery_drill.py;tests/test_postgres_logical_recovery_drill.py;tests/test_postgres_logical_recovery_drill_identity_authority.py;The prior body still described historical protected/base/head identities. Current
69b2615...is already the ordinary, non-force current-root reconciliation (chore(pr234): restack logical recovery drill on current recovery root). Its history adopts #233's current CI/Release Acceptance concurrency contract, removes the retired repository-local hourly-maintenance workflow, and preserves the drill's effective PR delta at the three owned files above. No force push, destructive rebase, protected-main write, self-approval, or gate weakening is used.Bounded contract
The drill composes recovery-receipt/schema/artifact verification, restore-target isolation, bounded logical restore, archive re-verification, and protected catalog/RLS acceptance. Successful output is content-free evidence for that one logical drill only when every invoked primitive satisfies its own authority contract.
It does not implement physical base backup, WAL archiving/replay, PITR execution, target lifecycle/destruction, application-level readiness, external Fernet/TLS/provider credential recovery, deployment RPO/RTO/HA/DR, or distributed exactly-once semantics. Caller-owned connections, libpq services, trusted-source decisions, credential/key custody, and target teardown remain caller/host authority.
Logical-restore dependency
The invoked logical-restore primitive remains separately owned by Draft #284. Current #284 is exact
075b786a71046ac1b3ab7b1ac90f8c1cd620235b, direct child of exact #233, with a seven-file logical-restore source/test delta. Its archive/executable authority repairs are branch-candidate truth only until normal protected integration. This drill must not duplicate #284 source or treat its branch evidence as protected authority.Exact-head validation
For exact
69b2615726b4e8e6657a844b7e15d1a346b4b1d7:33893880169: completed / success;33893880105: completed / success;These successes prove this exact branch head only. They are not independent approval, protected-main evidence, or immutable-release authority.
Integration boundary
#233 must integrate first through then-live governance, followed by the separately owned logical-restore primitive required by this composition. Mutable central workflow/review state remains tracked in #244 rather than frozen into this PR body.
After prerequisites reach protected main, reconcile this three-file child non-destructively onto the resulting protected ancestry, re-prove the composition contract, and reacquire every then-required exact-final-head/current-base quality, supported-Python, exact owned production coverage/docstring, security/SAST, package/SBOM/provenance/release, formal-review, and unresolved-thread gate. Queued, pending, cancelled, skipped-required, absent, stale, predecessor, status-only, synthetic, author-only, or infrastructure-failed evidence is non-passing.
Refs #204, #233, #244, #254, #284, #286, #287.