Skip to content

docs(recovery): drop transient Draft labels from canonical status - #226

Closed
cursor[bot] wants to merge 36 commits into
mainfrom
cursor/bc-60a515e4-d7ad-4703-8118-d68a197cac02-1633
Closed

docs(recovery): drop transient Draft labels from canonical status#226
cursor[bot] wants to merge 36 commits into
mainfrom
cursor/bc-60a515e4-d7ad-4703-8118-d68a197cac02-1633

Conversation

@cursor

@cursor cursor Bot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Successor to #214

Do not merge #214 at 8227e82. That head still freezes Draft #212 and Draft #210 in durable product/status documents after #212 became Ready. This branch keeps the five-file overlay and adds a regression that rejects those transient labels.

What to do next

  1. Review this successor.
  2. Keep docs(recovery): rebase restore overlay onto merged main #214 Draft.
  3. After exact-head required checks are terminal-success on this unchanged head, merge this overlay.
  4. Continue Issue [Resilience/Acquisition] Establish tested PostgreSQL backup and PITR recovery contract #204 with isolated restore acceptance rather than another vocabulary rewrite.

What changed

No runtime, schema, workflow, or package-metadata changes.

Open in Web View Automation 

seonghobae and others added 30 commits August 14, 2026 20:10
cursoragent and others added 4 commits August 16, 2026 15:21
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>
Record the rebased successor as the current five-file alignment so
operators do not land #192 or stale #213.

Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
Keep #209 as the unsafe predecessor and #212 as the unshipped
active successor without freezing Draft/Ready pull-request state.
Name the adjacent recovery families and add a regression that
rejects those labels in durable product documents.

Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>

@seonghobae seonghobae left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking canonical-status inconsistency on exact head c76ca2988755e5fe7d7b6c02f1a5a8b899c63fad: this PR is explicitly the successor to #214 and is exactly one commit ahead of #214 head 8227e820e62edc502f7b050fb72d0a638d30d135, but docs/TRACEABILITY.md still registers #214 as “this five-file canonical overlay” and never registers #226 as the active six-file successor. That makes the canonical overlay register stale at the moment this successor is proposed and undermines the new status-vocabulary regression’s purpose.

Repair the durable register without introducing volatile Draft/Ready/check/SHA language: identify #226 as the active canonical-documentation successor, and classify #214 as the superseded predecessor (or otherwise state the relationship without implying #214 is still the landing vehicle). Verify the same successor identity across DOCUMENTATION_FITNESS, PRD, TRD, and ADR index if those files mention the canonical overlay. The existing target-isolation wording in TRACEABILITY is appropriately bounded: #225 is described as service-label separation, not authenticated cluster isolation; preserve that distinction.

Close the acquisition-facing documentation gaps that left assets,
trust boundaries, and table identities only in SQL and scattered
security prose. Cite NIST SP 800-30, 800-53, and 800-154 without
claiming certification.

Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
@cursor
cursor Bot requested a review from seonghobae August 16, 2026 16:53
Map payload ownership, retention, and the no-blanket-masking
privacy boundary, and show standalone versus embedded composition
so a buyer can see the next host control without reading SQL first.

Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do not merge this head. seonghobae's register request on c76ca298 is only partly repaired on 65be01d.

What a reviewer should do next:

  1. Keep #214 Draft and unmerged. It still freezes transient Draft labels.
  2. Do not merge this #226 head. The overlay register still says keep it Draft, and the FR-5 restore-target row still treats #224 as the active acceptance overlay.
  3. Review the successor that removes that leftover state instruction, names #225 as the ADR 0022 restore-target landing vehicle, and keeps #225 as a configuration-label check rather than authenticated cluster isolation.
  4. Continue Issue #204 on the isolated restore-acceptance lanes. Do not start another vocabulary rewrite after the successor lands.

What this head already got right:

  • #226 is named as the documentation overlay and #214 is marked superseded.
  • Canonical status documents no longer persist Draft #N / Ready #N or contributor SHAs, except the leftover keep it Draft instruction.
  • #225 remains described as service-label separation, not authenticated cluster isolation, in the overlay register.
  • Threat-model, data-governance, UML, and ERD overlays stay evidence-readiness documents with operator next actions and APA 7th citations.
  • No runtime, schema, workflow, or package-metadata changes.

Required checks on this synchronize were still queued at review time. Checks are not the blocker; the leftover register wording is.

Open in Web View Automation 

Sent by Cursor Automation: Fix Issues

Comment thread docs/TRACEABILITY.md
- **#208** — bounded logical PostgreSQL backup executor using `pg_dump`; active source only and not evidence that protected main can create a restorable backup.
- **#210** — configuration/secrets operator/runtime contract successor; encryption-required policy, least-privilege runtime readiness, and provisioning separation remain unshipped until this lane is repaired and integrated.
- **#212** — direct logical-restore successor to closed #209; it replaces the invalid EOF postcondition with metadata-fingerprint verification and owns the accompanying restore-contract documentation. It is not evidence of isolated restore acceptance or end-to-end recovery readiness.
- **#214** — superseded canonical overlay that still froze transient Draft labels; keep it Draft.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This leftover keep it Draft instruction is the same class of transient pull-request state the overlay claims to remove. Name #214 as a superseded predecessor without telling an operator to keep a Draft label frozen in durable status prose.

Comment thread docs/TRACEABILITY.md
| FR-5 recovery evidence binding and live re-verification | ACTIVE-PR | protected main exposes the underlying receipt/schema/artifact evidence primitives only | PRs #215 and #221 exact-head evidence only | Bind-time composition and later re-inspection are active candidate seams, not inspection provenance or restore proof on protected main. A verifier success is integrity agreement at the inspection instant and does not remove TOCTOU or target-isolation requirements. |
| FR-5 post-restore catalog acceptance | ACTIVE-PR | protected-main schema and recovery evidence only | PR #223 exact-head catalog/unit/container evidence only; closed #216 is predecessor evidence | Catalog acceptance remains unshipped. Same-name index decoys, tenant-qualified key order, uniqueness/constraint authority, access method, readiness/validity, and live PostgreSQL query behavior must remain fail-closed before this can become protected-main truth. |
| FR-5 physical/WAL/PITR recovery profile | ACTIVE-PR | none on protected main beyond bounded recovery evidence | PR #219 exact-head evidence only | The profile records caller-owned recovery intent and objectives; it does not execute `pg_basebackup`, archive/replay WAL, prove an isolated target, or establish package RPO/RTO capability. |
| FR-5 restore-target isolation | PARTIAL | no protected-main target-isolation proof exists | active recovery acceptance work, including PR #224, is PR evidence only | Distinct configuration labels alone are insufficient to prove two service aliases resolve to different clusters. End-to-end acceptance must authenticate the actual restore target before production safety can be claimed. |

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This FR-5 row still treats #224 as the active restore-target overlay. The register below already says #224 is the ADR 0021 collision predecessor and #225 is the ADR 0022 landing vehicle. Point this row at #225 and keep the label-versus-authenticated-cluster distinction.

| Durable reconciliation candidate/single-flight documentation | ACTIVE-PR | PRs #190 and #191 own current reconciliation additions; protected main has only the scheduler-independent bounded reconciliation primitive. | Update canonical shipped status only after each exact head merges. |
| Atomic durable result application | ACTIVE-PR | PR #194 contains a current-main-compatible test-first caller-owned PostgreSQL transaction seam for applying one validated streamed result/error record together with checkpoint advancement. It remains an active overlay; FR-4/end-to-end result application stays `PARTIAL` on protected main, and neither this row nor the TRD content-fidelity invariant promotes #194 into shipped truth. | Keep FR-4 and `docs/TRACEABILITY.md` as the validation/status authority until #194 integrates normally; preserve the explicit same-transaction and no-distributed-exactly-once boundary. |
| Runtime config/schema provisioning separation | ACTIVE-PR | PR #193 is a current-main least-privilege candidate: runtime constructors move away from DDL/default seeding, validate the search-path-resolved base-table shape and current-role read capability through bounded catalog probes, and retain provisioning/default seeding at the explicit schema boundary. #210 is the unshipped operator-contract successor that aligns public install/README/architecture/CHANGELOG wording with that runtime fail-closed Fernet/provisioning seam. Neither is shipped until normal governance integrates the unchanged successor. | Preserve the trusted-search-path/non-ownership caveat; treat #210 as the public-contract overlay rather than a second runtime rewrite; reacquire exact-head checks/review after every push; do not transfer predecessor or earlier-head evidence. |
| Canonical traceability | ACTIVE-PR | This branch is establishing the first current-main-compatible requirements-to-evidence map and distinguishes integrated recovery evidence from active executable candidates and unsafe predecessor heads. | Maintain `docs/TRACEABILITY.md` using stable code/test/doc authorities, not run IDs; record #212 only as an active overlay until integration. |

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This fitness row still says This branch without naming the live overlay or the superseded #214/#226 relationship. Durable status prose should identify the current successor the same way TRACEABILITY does.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants