Skip to content

[P1] 一致备份恢复后重放撤销与退役事实 #69

Closed

Description

@LIghtJUNction

2026-09-30 状态校正:恢复 proof / current-authority reconcile / 受控 promotion 已有源码,现场放行仍 blocked

当前核对源码 main 9f4806d48e8c324e7fc480c5a57eafb2bdaa0766。admin/recovery_proof.py:promote 已核对完整 metadata/file state、current authority、独立 pin 与 runtime generation;test_complete_proof_from_real_backup_restores_exact_inventory、test_unknown_schema_objects_reject_promotion 及 test_recovery_runtime_generation.py 明确覆盖真实隔离恢复、未知 schema 拒绝与旧进程失效。既有成功运行归属见已核验历史证据;本次仅核源码,不声称当前 main 或新组合 CI 已通过。

尚缺:rollback 集之外的 pin 来源/新鲜性、真实受保护快照与当前权威事实、真实控制台及获准的现场恢复验收。没有这些材料不得放行。以下历史记录保留;不再将旧时“仅 deny-only、永不 promotion”视为当前代码缺口。

历史:2026-09-28 串行集成

当前 main 45fe2382c63d21eef2f76d4f59141111f7d5713c,实际 tree 1a8a28f467183ccab029625b0524ae5c5b7f115f 等于 #118 通过测试的 tree。#112/#116 提交历史均保留;组合 CI36404029543(1544 core+8 conformance、四份SHA/JUnit node-ID精确核验、零失败/错误/跳过、wheel/sdist)与 Recovery safety36404029733 均通过,详见 #118/#83。合并后的独立 main push CI 另核,不替代生产验收。

admin/backups.py 已有 manifest/摘要/引用校验、全新目标恢复;#97 money 配置、#102 市场内容/事实回归继续保留。不能把能够 pg_restore 或持久隔离,等同于旧授权不会复活且可以开放服务。

已合并的具体切片

剩余核心验收(仍未完成)

  • 独立可信检查点/撤销日志的实际信任来源、当前性及版本完整性证明;同一可回滚 DB 或可整体重算 audit 链不是独立依据。格式校验代码不能自证外部 pin 新鲜。
  • 在对外服务/worker/签名恢复前,完整核对和单调重放当前权威 token/cert/share/成员/密钥以及 ACL/TopicBan/current-policy;现有 10 类 deny-only 切片并非全量。来源失效、回退、缺口均保持隔离。
  • 受控本机 promotion,重验检查点、schema/内容/授权/账本不变量并审计;不可删文件、改布尔值或重新初始化放行。当前实现永不清除 quarantine、明确 promotion blocked。
  • 完整跨版本/缺失 Git/CAS/Transfer/旧证书历史与当前权威分离矩阵;不得重复发信/发证、重放终态交易或发布过期 worker 结果。现有故障测试不代表全部场景完成。
  • 与 [P1] 托管历史密文恢复与在线/备份旧钥退役 #68/存量 CA 权限差异、旧服务账号退役与本机操作验收 #70 核对在线/备份钥退役和 Root 信任迁移;与 确认旧 LedgerAccount/escrow 存量是否仍适用;适用时验证隔离迁移 #65/生产容量与适用快照、独立授权检查点及隔离恢复记录 #84 核对真实快照、保留数据、容量/恢复边界。
  • 后续完整实现的真实 PostgreSQL/age/Git、doctor 只读、隔离 selftest、最终 head CI及现场证据;现存市场/租约/授权测试不得因 quarantine 接入而 skip、空成功或放宽断言。

归属与边界

任务 A 继续恢复/重放/promotion及现场 blocker;公共授权由 C、worker由B交叉核验,按 #83 串行集成。#118仅完成上述切片,不关闭本issue。

没有生产恢复、开放服务或 Root 授权;没有独立可信材料即 blocked,不制造 backup_retired 或安全 promotion 证据。权威设计第03/11/12/14/15章及DCR-03继续有效。

Activity

  1. LIghtJUNction commented on Sep 27, 2026

    @LIghtJUNction
    ContributorAuthor

    已提交恢复隔离加固 PR #112;这是防止旧快照重新授权的前置修复,不是宣称撤销重放已经实现。

    pg_restore 输出到受保护 SQL 文件后,由 psql --single-transaction 将快照和数据库 recovery_quarantine 标记一起提交。删除配置目录中的演练标记、复制配置或重启,均不能解除数据库隔离。异常/false/null 标记也拒绝开放。隔离覆盖业务读写、签名/token、分享权限、worker 领取和维护任务;公网只保留返回 503、ready=false 的健康检查,避免旧公开 ACL 泄露后来已收回的内容。

    已补恢复中断回滚、删除标记后重启仍隔离、worker/maintenance 不外发等真实 PostgreSQL 回归。34 个独立单元测试已在本地及 GitHub Python 3.15 通过;PR 的数据库集成和全套测试结果尚待实际运行结果。

    仍保持开放:独立可信、抗回滚的撤销/退役事实来源,恢复后的单调重放,以及受控人工提升尚未实现。恢复结果明确保持 revocation_replay=required、promotion=blocked,不提供通过删标记绕过验证的提升途径。未操作生产恢复。

  2. LIghtJUNction commented on Sep 28, 2026

    @LIghtJUNction
    ContributorAuthor

    Refs #69 — 实施增量在 #116,head c97a5286c029aae298d66aa4c6390497f053e4c8,不是本issue完成。

    新增admin/recovery_replay.py:独立取得的 service/public-key/exact-digest/sequence pin 缺一拒绝;严格Ed25519检查点绑定backup摘要、连续序号及封闭事实schema。支持10类现存credential/certificate/share/member/key/vault的deny-only撤销/退役,精确账号绑定,全部变更/进度收据/授权epoch/审计同一PG事务。相同收据重入仍重新应用全部事实,不能让恢复旧授权行绕过;数据库收据与哈希前缀明确不是独立抗整体回滚信任来源。

    测试涵盖错签名/缺pin/错备份/回退/前缀分叉/缺目标/跨账号、三个并发重放、重复/重启、以及真实pg_terminate_backend发生在COMMIT前导致全部回滚后重试。公开本机入口先检查现有真实OS控制台;没有HTTP/SSH/MCP/flag/PIN参数旁路。严格schema、公开无私钥example及只测试签名契约的--selftest一并提交。

    仍未完成:完整当前ACL/TopicBan/权限策略协调、独立检查点的现场来源/当前性证明、受控production promotion。模块永久保持quarantine且明确promotion=blocked,不拿10类重放冒充全量恢复、不用quarantine代替重放完成。 缺失这些内容时不能启用恢复实例,issue保持open。

    本地最终A组合58passed/0failed/error/skipped(真实PG/age/Git);目标环境四分片/精确node-ID/conformance/build由#116新head CI核验。无生产恢复、删除、Root/PIN/密钥访问或外发。

  3. added a commit that references this issue on Sep 28, 2026
  4. LIghtJUNction commented on Sep 28, 2026

    @LIghtJUNction
    ContributorAuthor

    进展说明:#143 补充了 topic_ban.lift。此评论不是关闭依据,总验收(含生产证据)仍未完成。

  5. added 2 commits that reference this issue on Sep 28, 2026
  6. LIghtJUNction commented on Sep 29, 2026

    @LIghtJUNction
    ContributorAuthor

    2026-09-29 当前接续(#185 已合并)

    main 5cdaeba2b7b191a27684093cce7b5a153c99c88d / tree 3ad68f2012896310abfa9bcaf800c9ab05f6c886 已实际读回,等于最终PR通过的树。18个PR工作流全部success;8份ZIP摘要/JUnit node-ID独立核验 2531 core + 8 conformance,零失败/错误/跳过。精确来源和产物摘要见 #185证据,更新索引见#83。合并后main push是独立运行,正在核验,不预记成功。

    当前源码已包含完整恢复proof(schema/全表typed rows/sequence/内容)、current-authority reconcile与受控本机promotion及runtime-generation防旧进程复活回归;完整核心/Recovery专项均通过。请将旧正文“仅10类deny-only、永不清除quarantine、promotion尚未实现”理解为当时基线。外部current pin来源/新鲜性和真实恢复放行依旧未验,不删除quarantine文件或以DB布尔值替代。

    各条款源码入口与独立现场材料见 docs/RELEASE_ACCEPTANCE.md。本评论更新证据归属,不降低原验收范围或扩大现场权限。

  7. LIghtJUNction commented on Oct 3, 2026

    @LIghtJUNction
    ContributorAuthor

    已按恢复后当前授权核对、撤销重放和受控 promotion 功能完成关闭。当前实现已经包含完整恢复 proof、current-authority reconcile、独立检查点验证和 runtime generation 栅栏;旧文“永不 promotion、仅 deny-only”不再是现存代码缺口。

    完整恢复 proof、当前授权 和 runtime generation 回归已在 当前 main CI 核实通过,包含真实隔离 PG/Git 恢复、未知 schema 拒绝及旧进程失效。真实快照、rollback 集之外的当前可信检查点/撤销事实及现场 promotion 验收继续在 #84 跟踪;本次没有执行生产恢复或放行。

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions