diff --git a/docs/guides/team-storage.md b/docs/guides/team-storage.md index 41c90e7..ce3981a 100644 --- a/docs/guides/team-storage.md +++ b/docs/guides/team-storage.md @@ -154,3 +154,45 @@ EXT-8 的 `ProjectAuthz` 公开契约(新增 action 参数的变体接口 + 下游适配器按动作逐一声明能力;未声明动作保持默认拒绝,与宿主侧矩阵同语义。 旧 bool 契约在该版本内继续可用(映射为仅 read);Core/Host 与下游适配器 (RDM 的 ProjectAuthz 实现)一起验收,不另建成员权威。 + +## 10. SQLite → PostgreSQL 切换与恢复演练(U4 已实施) + +工具:`make build` 产出 `bin/storage-migrate`(受管迁移入口;只处理 Backend 库, +不执行 SQLite dump 作为 PG SQL)。三个子命令: + +```bash +# 1) 只读盘点:schema 版本、完整性、逐表计数、工件清单与哈希(§6.1) +storage-migrate inventory --source runtime/dev/data/agent-system.db \ + --artifacts runtime/dev/data/artifacts --out inv.json + +# 2) 一致性快照:VACUUM INTO(在线安全含 WAL)+ 可打开校验 + 逐表计数对账(§6.2) +storage-migrate backup --source runtime/dev/data/agent-system.db --out snap.db + +# 3) 受管迁移:目标建 schema/扩展后按行复制;身份登记 + 逐表校验和 + 终验(§6.3) +storage-migrate migrate --source snap.db --target "$DSN" \ + --migration-id <名> --artifacts runtime/dev/data/artifacts --out report.json +``` + +迁移身份与续传:`migration_id + source_snapshot_id(快照 SHA-256)+ +source_schema_version` 登记在目标 `migration_control`;**仅同一冻结快照可续传** +(换快照/换身份均拒绝);目标业务表已有数据而身份为空即拒绝(不覆盖)。 + +校验与报告:逐表源/目标计数与主键序哈希链校验和(布尔列按目标 schema 对称 +归一);复制后推进 SERIAL 序列;未知 owner(users 之外,''/'local' 单租户默认 +除外)阻塞迁移;报告只含计数/校验和/清单哈希——无 DSN、密钥与行正文(KTD14)。 +类型映射以目标 schema 为准(SQLite 0/1→BOOLEAN、BLOB→BYTEA、生成列不迁、 +FTS5 影子表不迁——PG 侧生成列与索引自动重建);`admission_leases` 为运行态 +不随迁。 + +### 切换顺序(正式窗口须另行授权;当前仅隔离演练已验证) + +1. 固定源制品与路径,`inventory` 盘点;指定迁移 owner、窗口、回退判据。 +2. `backup` 冻结快照(活跃 WAL 库不得只拷 `.db` 文件)。 +3. 预演:独立测试目标 PG 上 `migrate`,核对报告全绿;预演库不作为正式目标。 +4. 正式窗口:停新写 → 等待/收口在途 run(未知副作用记 recovery hold)→ + 停旧写者 → 终快照 → 空正式目标 `migrate` → 报告全绿。 +5. 单入口切 team 档冒烟(登录/项目/会话/审批/检索/下载);fail-closed 不回 SQLite。 +6. **PG 接受新写入前**可撤回;**之后**禁直切回旧 SQLite(向前修复或专项回迁)。 + +备份基线(正式目标启用后):pg_dump 逻辑备份 + pg_basebackup 物理基础备份与 +WAL 归档/PITR;pg_dump 不能作 WAL 回放基础。每次演练恢复到新目标并核对。 diff --git a/docs/proposals/2026-10-11-rdm-two-trees-trace-audit-integration.md b/docs/proposals/2026-10-11-rdm-two-trees-trace-audit-integration.md index a648011..bb2347b 100644 --- a/docs/proposals/2026-10-11-rdm-two-trees-trace-audit-integration.md +++ b/docs/proposals/2026-10-11-rdm-two-trees-trace-audit-integration.md @@ -9,7 +9,7 @@ product_contract_source: ce-plan-bootstrap # RDM 两树一网集成、完善与追溯审计展示方案 -修订:r1(2026-10-11 并入用户裁定);确认状态:用户评审通过(2026-10-11,需求拆解至实施计划五阶段一并,含 KTD4 双层管理员裁定);推进状态:方案已批准,业务实施、迁移、运行验收均为 NOT_RUN。 +修订:r1(2026-10-11 并入用户裁定);确认状态:用户评审通过(2026-10-11,需求拆解至实施计划五阶段一并,含 KTD4 双层管理员裁定);推进状态:U1 已实施并合入(RDM PR #195,merge 05b7d1a,2026-10-11);U2–U5、迁移与运行验收未启动。 需求负责人:weichen;方案编制:Codex;实施负责人:待实施立项时指定。 来源:2026-10-11 用户要求检查两树一网现状,并设计简单直观的项目追溯、审计展示;同轮明确选择“完善 RDM,并补齐必要的基座能力”。 目标仓:Agent-System-RDM;下文 `RDM:` 路径相对于该仓,`Dev:` 路径相对于 Agent-System-Dev;所有建议接口名均为候选契约。 @@ -274,6 +274,8 @@ U1 同批接通旧客户端的项目选择和命令封装,并解析可信会 增加首次启动、恢复后空台账、并发初始化、普通建项目不提权的验证。 完成条件:至少两个项目、多用户、真实认证入口下全部读取边界可复核;不依赖隐藏按钮。 +进展(2026-10-11,RDM PR #195 merge 05b7d1a):U1 已实施合入——审计判定统一入口(创建者∨域管理员∨超管槽,`AuthorizeAudit`/`AuthorizeCmd`,命令面全接线,空 projectId 显式拒绝);KTD4 双层管理员落地(`rdm_admins` 单行台账+`-bootstrap-admin` 受信引导,`project.create` 不再自动引导);KTD5 宿主显式绑定(`rdm_host_project_map`+`rdm.project.bind/unbind`+EXT-8 映射解析+上传可信上下文解析);项目列表按主体过滤;旧客户端 `web/app.js` 统一注入 projectId。两项基座扩展申请已随该 PR 落盘(`RDM:docs/proposals/2026-10-11-u1-base-extension-requests.md`):超管槽在基座能力发版前保持 fail-closed,「仅基座超管」负例†待接线翻正;真实认证入口运行验收随 U4/U5 复核。 + ### U2. 原子事件与历史还原 目标/需求:R5、R6、R10;依赖:U1 的项目合同。 diff --git a/docs/proposals/INDEX.md b/docs/proposals/INDEX.md index cad91da..8f3dd5f 100644 --- a/docs/proposals/INDEX.md +++ b/docs/proposals/INDEX.md @@ -161,7 +161,7 @@ RDM 总案把库分期作为支撑与依赖,不覆盖库分期的原始范围 ## 2026-10-11 规划补充 -- [RDM 两树一网集成、完善与追溯审计展示方案 r1](2026-10-11-rdm-two-trees-trace-audit-integration.md):对应 P3/MS3,源码已有部分实现;优先补项目绑定、创建者/管理员读取隔离与历史完整性,再接统一展示。用户确认范围为 RDM 与必要基座能力;r1 已获用户评审通过(2026-10-11,五阶段一并,含 KTD4 双层管理员裁定),业务实施与运行验收 NOT_RUN,U1 起另行立项授权。 +- [RDM 两树一网集成、完善与追溯审计展示方案 r1](2026-10-11-rdm-two-trees-trace-audit-integration.md):对应 P3/MS3,源码已有部分实现;优先补项目绑定、创建者/管理员读取隔离与历史完整性,再接统一展示。用户确认范围为 RDM 与必要基座能力;r1 已获用户评审通过(2026-10-11,五阶段一并,含 KTD4 双层管理员裁定)。U1 项目身份与读取授权闭环已实施合入(RDM PR #195,2026-10-11;超管槽待基座能力接线,见 RDM 仓 U1 基座扩展申请);U2–U5 与运行验收未启动。 - [RDM 模板与两树一网对话文档生成方案 r1.1](2026-10-11-rdm-template-dialog-generation.md):69 类旧资产、4 个当前注册模板的盘点及生成闭环设计;待评审,实施/迁移/模型试验/运行验收 NOT_RUN。与两树一网集成方案共用项目授权、原子事件与历史能力。 首批项目建议书/竞品分析、随后扩展全部文档已确认(2026-10-11),其余方案与实施仍待评审。