Repository navigation
[P1] 一致备份恢复后重放撤销与退役事实 #69
Description
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 或持久隔离,等同于旧授权不会复活且可以开放服务。
已合并的具体切片
- 恢复要求空目标数据库/新目录,检查数据和 Git/CAS 引用,禁写/cleanup 与 money 配置及既有不变量回归保留。
- fix: recovery evidence, persistent restore quarantine and root rotation integrity (#68–70) #112 经 integrate: preserve recovery quarantine with cache and single-mailbox safeguards #118 集成:同一数据库导入事务建立持久 recovery quarantine;删配置标记、重启不能解除。隔离业务读、签名/token/share、worker/maintenance,仅最小 health。导入与隔离之间不留可运行窗口。
- Task A: custody challenge binding, Root rotation locking and pinned deny-only recovery replay #116 经 integrate: preserve recovery quarantine with cache and single-mailbox safeguards #118 集成:独立 pin 的精确 Ed25519 检查点格式(service/key/digest/sequence)与 10 类有限 deny-only 退役事实重放;错签名、缺失/错主体/未知格式/缺口/回退拒绝。重复重放全部事实而非盲信可回滚 DB receipt。
- 已有真实 PostgreSQL 后端终止、回滚、重复/并发重放回归;完整组合 CI 同时验证市场证据原字节恢复、live 权限裁剪与恢复后严格 quarantine。没有删测试或给 Authorizer/worker 开旁路。
剩余核心验收(仍未完成)
- 独立可信检查点/撤销日志的实际信任来源、当前性及版本完整性证明;同一可回滚 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
LIghtJUNction commentedon Sep 27, 2026
已提交恢复隔离加固 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,不提供通过删标记绕过验证的提升途径。未操作生产恢复。LIghtJUNction commentedon Sep 28, 2026
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/密钥访问或外发。
Merge #118: integrate recovery safety without weakening current autho…
LIghtJUNction commentedon Sep 28, 2026
进展说明:#143 补充了 topic_ban.lift。此评论不是关闭依据,总验收(含生产证据)仍未完成。
fix: reject stale Root authority and replay bans without inherited ex…
Merge PR #185: Python 3.15 quality and verified deployment artifacts
LIghtJUNction commentedon Sep 29, 2026
2026-09-29 当前接续(#185 已合并)
main
5cdaeba2b7b191a27684093cce7b5a153c99c88d/ tree3ad68f2012896310abfa9bcaf800c9ab05f6c886已实际读回,等于最终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。本评论更新证据归属,不降低原验收范围或扩大现场权限。Verify installed-package concurrency, crash recovery and full restore…
LIghtJUNction commentedon Oct 3, 2026
已按恢复后当前授权核对、撤销重放和受控 promotion 功能完成关闭。当前实现已经包含完整恢复 proof、current-authority reconcile、独立检查点验证和 runtime generation 栅栏;旧文“永不 promotion、仅 deny-only”不再是现存代码缺口。
完整恢复 proof、当前授权 和 runtime generation 回归已在 当前 main CI 核实通过,包含真实隔离 PG/Git 恢复、未知 schema 拒绝及旧进程失效。真实快照、rollback 集之外的当前可信检查点/撤销事实及现场 promotion 验收继续在 #84 跟踪;本次没有执行生产恢复或放行。