feat(recovery): bind deterministic PITR stop targets - #238
Draft
seonghobae wants to merge 9 commits into
Draft
seonghobae wants to merge 9 commits into
seonghobae wants to merge 9 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 |
This was referenced Aug 17, 2026
seonghobae
changed the base branch from
main
to
fix/recovery-evidence-weakref-coverage-b84f0c9
August 19, 2026 02:32
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Add a bounded, deterministic PostgreSQL PITR recovery-target binding seam without configuring a cluster, creating
recovery.signal, supplyingrestore_command, replaying WAL, promoting a target, or claiming RPO/RTO.Exact stack boundary — refreshed 2026-09-10
main:5913c4bad79d6bc29d7cc1c624abb7db2ea6a77c.fix/recovery-evidence-weakref-coverage-b84f0c9@01d231fde23b82e2ced258d7bfcb4721ed75706d(test(recovery): cover stale evidence registry cleanup #233).feat/postgres-pitr-target-b84f0c9@a6a6076853eef15b8d839f3cbca006289bc4abb1.pg_llm_batch/postgres_pitr_target.pytests/test_postgres_pitr_target.pytests/test_postgres_pitr_target_hardening.pya6a6076...is the ordinary non-destructive reconciliation of the PITR-target history onto current #233. The inherited workflow/history changes are predecessor ancestry only and are not part of this PR's relative diff. No protected-main, canonical-documentation, or central.githubsource was mutated by this lane.RED → GREEN lineage
c550f0d7cc75d6de5ae8d6e98f06afcc05d5f26c: focused contract failed because the production PITR-target module did not yet exist.5e34dfc4613969aec94523f5269699f86bfdf89a: bounded implementation.dc7e3e3640d360a243184878199250db34418fdb: non-string time-target rejection coverage.a6a6076853eef15b8d839f3cbca006289bc4abb1: preserves the same three-file semantic delta on current test(recovery): cover stale evidence registry cleanup #233.Exact validation state
For exact current head
a6a6076853eef15b8d839f3cbca006289bc4abb1:33894120771: completed / success.33894120782: completed / success.APPROVED: absent.These checks are branch evidence only; they do not transfer across another reconciliation and do not authorize protected integration by themselves.
Bounded contract
bind_postgres_pitr_recovery_target(...)consumes the exact protectedPostgresPhysicalRecoveryProfiletype and requiresbackup_method="pitr"with a WAL archive. The profile's reviewedrecovery_target_kindremains authoritative.The binder normalizes timezone-explicit time targets to UTC; bounds and canonicalizes normal 32-bit transaction IDs; canonicalizes non-zero LSN targets; bounds restore-point names and rejects control characters; requires an exact-boolean inclusive edge for time/XID/LSN and forbids it for name/immediate; permits only
latest,current, or an exact positive uint32 timeline; and emitsrecovery_target_action=pauseso isolated acceptance precedes any separate promotion decision.The result is structured server-setting authority only. It contains no shell command, filesystem path, credential, target-promotion authority, or deployment capability claim.
Explicit non-guarantees
This branch does not provide
restore_command, create or mutate PostgreSQL configuration, createrecovery.signal, verify WAL continuity, copy a base backup, start PostgreSQL, execute WAL replay, prove that a requested target is present in the archive, promote a cluster, prove catalog/RLS/application readiness, recover external Fernet/TLS/provider/host configuration, or establish RPO/RTO/HA/DR.Dependency and governance boundary
#233 remains the exact predecessor and must integrate first under live protected-branch governance. This PR remains Draft because it has no qualifying independent approval. Do not transfer predecessor checks/reviews, manufacture head churn, self-approve, bypass required gates, or mutate read-only central owner source from this lane.
Direct child #299 has been non-destructively reconciled onto this exact head; its own source/test/review evidence remains independently gated.
After #233 integrates, reconcile this PR non-destructively to then-current protected main, prove that the relative diff remains exactly the three PITR-target files, and reacquire every exact-final-head/current-base required check/review gate. Merge only through the normal protected workflow.
Queued, pending, cancelled, skipped-required, absent, neutral, stale, predecessor, status-only, synthetic, author-only, rate-limited, infrastructure-failed, dismissed, or conclusion-null evidence is non-passing.
Refs #204, #233, #244, #299.