docs(recovery): rebase restore overlay onto merged main - #214
docs(recovery): rebase restore overlay onto merged main#214cursor[bot] wants to merge 33 commits into
Conversation
Replay the #212 successor alignment onto 229f8d3 so the product and technical contracts no longer present #209 as the active pg_restore path or treat set_config as an enforcement control. Register #210 as the Fernet operator-contract overlay and freeze stale #213. Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
There was a problem hiding this comment.
Stale comment
Review: COMMENT at
85949a2Five-file documentation overlay only. No runtime, schema, workflow, or package-metadata changes.
The predecessor defects this overlay exists to close are closed:
- PRD restore row, TRD restore paragraph, FITNESS, and TRACEABILITY freeze #209. Its EOF-consumption postcondition is not a merge path for seekable PostgreSQL custom archives.
- Draft #212 is named only as the ACTIVE-PR successor. It is not implied shipped. ADR README does not list proposed ADR 0016 as a protected-main decision.
- PRD FR-3 and FITNESS state that a role with arbitrary SQL can call
set_configfor an arbitrary tenant scope. RLS is defense in depth, not a credential. That matches AGENTS.md, CLAUDE.md, and ADR 0002.Do not merge #192 at
229f8d3, stale #213 atf44ec24, or #209 atafbe449. Do not race #208 or #212 source writers.No RIGHT-side must-fix. Land this overlay only after every then-live required check is terminal-success on unchanged
85949a2243d79135c0a2ee4722b4c94fb96662bd. Queued or predecessor evidence does not transfer.Residual
Sibling Draft #215 (
fc7561d) appeared concurrently and binds recovery receipts from exact schema/backup evidence. It is a separate writer. TRACEABILITY already says the overlay register is descriptive and requires a GitHub refetch. Do not fold #215 into this five-file lane.After this lands, continue Issue #204 with an isolated custom-format restore drill rather than another five-file rewrite.
Sent by Cursor Automation: Fix Issues
seonghobae
left a comment
There was a problem hiding this comment.
Canonical-fitness blocker on exact head 85949a2243d79135c0a2ee4722b4c94fb96662bd: the durable product/status documents encode transient PR-state text that is already false. docs/product/PRD.md and docs/DOCUMENTATION_FITNESS.md repeatedly call #212 Draft, while fresh GitHub state has #212 Ready/mergeable at exact head 63a89c7b39d5dad87c7186bdbeaae2c2043f1b66. The same branch's own non-negotiable invariant says transient PR/check state belongs in PR/review evidence, not durable architecture/product documents. The cursor review was accurate when submitted but has been overtaken by repository state.
Please repair this canonical lane narrowly after a fresh full PR/branch inventory: describe #209 as the superseded unsafe predecessor and #212 as the unshipped active successor without persisting Draft/Ready or an exact transient head. Keep protected-main claims unchanged. Also re-evaluate the recovery status paragraph/matrix against newly active #215/#216/#217: it need not enumerate every transient PR, but it must not imply the active recovery graph consists only of #208/#212 now that receipt binding, catalog acceptance, and physical/WAL/PITR profile slices exist. Prefer stable capability-state language (logical execution, post-restore acceptance, evidence binding, physical/PITR profile) over volatile PR state.
No runtime/source change is requested. Keep #214 Draft until the canonical status vocabulary is internally self-consistent and fresh.
There was a problem hiding this comment.
Review: COMMENT at 8227e82
Do not merge #214. The 85949a2 CHANGES_REQUESTED finding still holds on this head: durable product/status documents persist transient Draft #212 and Draft #210 labels. #212 is Ready on GitHub; those labels are already false.
Successor is #226. It keeps this overlay, removes the Draft/Ready vocabulary, names the adjacent recovery families as capabilities, and adds tests/test_canonical_status_vocabulary.py so the labels cannot return.
Keep #214 Draft. Review and merge #226 after exact-head required checks are terminal-success. Do not race #208 or #212 source writers from this documentation lane.
Sent by Cursor Automation: Fix Issues
| | Bounded PostgreSQL backup-artifact integrity evidence | IMPLEMENTED-ON-PROTECTED-MAIN | The package can derive SHA-256 and byte-size evidence from one private regular backup artifact under descriptor-pinned, no-follow, finite-work constraints without executing backup or restore. | | ||
| | Bounded packaged PostgreSQL schema evidence | IMPLEMENTED-ON-PROTECTED-MAIN | The package can derive SHA-256 and byte-size evidence from the exact distributed `schema.sql` resource under a finite package-owned work budget without executing SQL or asserting live-cluster parity. | | ||
| | PostgreSQL logical backup execution | ACTIVE-PR | A `pg_dump` candidate exists in #208 but is not shipped; protected main must not be described as creating a restorable backup from the evidence primitives alone. | | ||
| | PostgreSQL logical restore execution | ACTIVE-PR | Draft #212 is the current direct `pg_restore` successor. Predecessor #209 must not merge: its EOF-consumption check can report failure after a seekable custom-format restore has already committed. Caller-owned source trust, target isolation, libpq allowlist, transactional failure, metadata-fingerprint integrity, and permanent documentation remain unshipped. | |
There was a problem hiding this comment.


Why this exists
PR #192 moved from
eafbfa9to229f8d3by merging protected main. That rebase did not fix the product/technical overlay: the PRD and TRD still present predecessor #209 as the activepg_restorepath, and FR-3 still reads as if arbitrary SQL cannot callset_config.Draft #213 already carried the overlay, but it is based on
eafbfa9and is now stale. This branch replays the same alignment on the current #192 head so operators do not follow an unsafe restore contract.Operator action
229f8d3.f44ec24.afbe449.What changed
set_config; RLS does not prevent that.No runtime source, schema, workflow, or package metadata changes.
Refs #192, #209, #212, #210, #213, #204.