Why: U1 starts per the approved recovery plan r2 - a reviewed design contract must exist before touching scripts/svc.sh, and R3 needs an enumerable data-ownership baseline.
Evidence: SELF - doc-check receipt via make evidence. First run FAILED (exit 1: proposal r2 not present in this worktree because it sits unmerged on feature/service-restart-recovery-plan); references reworded to cite the path with a pending-merge note and the check re-run PASS (exit 0). Both receipts are in the card; grounding facts verified at baseline 89174a0.
Impact: docs/recovery/ additions and task card only; no behavior change; implementation gated on design review.
Refs: modules/documents/docs/proposals/2026-10-12-service-restart-data-recovery.md r2 U1
4.0 KiB
4.0 KiB
U1 数据归属清单 v0.1(R3"所有数据"的枚举基线)
状态:设计候选,随 U1 评审;配套设计见 u1-identity-manifest.md。主记录:方案 r2 第 3 节 R3 与第 6 节(提案在 feature/service-restart-recovery-plan 分支待合入,路径 modules/documents/docs/proposals/2026-10-12-service-restart-data-recovery.md)。标注规则:已核实=SELF 源码观察(基线 Dev 89174a0 / Backend 同指针);待核对=实施 I2 时必须落定,未落定不得进入备份/恢复范围声明。
本清单只回答"数据在哪里、谁是权威、怎么恢复";耐久性参数(fsync/WAL 同步档)与备份窗口属 U6。
| # | 数据类别 | 权威位置 | 存储/机制 | 恢复方法 | 状态 |
|---|---|---|---|---|---|
| 1 | 团队业务库(账号/项目/成员/消息/文档/卡片/Surface 修订/设置/插件授权/run/step/命令/通知/审批/取消/额度/恢复 hold/事件) | PG 团队库(dbref 指向实例+库) | modules/backend/internal/store/migrate.go 表族(v17 pending_notices、run_commands、surface_revisions、recovery_holds、execution 等已核实存在) |
PITR/pg_dump 逻辑备份(U6);身份由 U1 DB marker 锚定 | 部分已核实,全表清单待核对 |
| 2 | 个人档库(同 schema) | <DataDir>/agent-system.db |
SQLite(app.go:196 已核实) | 在线一致性备份接口(现有)+ WAL 同档复制禁止 | 已核实 |
| 3 | 工件对象(内容文件) | <DataDir>/artifacts(PG 档;app.go:179 已核实) |
blob 临时写+rename(KTD11 对象化目标) | 文件+DB 元数据配对恢复,hash 对账 | 已核实路径,对象语义待 U6 |
| 4 | 上传/输入附件 | <DataDir> 下上传子目录 |
同上 | 同上 | 路径待核对 |
| 5 | 文档大内容/版本 | DB 行 +(如启用)内容文件 | documents 域 | DB 恢复+文件对账 | 待核对 |
| 6 | 模型转录(Native Session) | 各工作区 <sandbox>/.agentx/transcript.jsonl |
llm_direct.go:245 起播种/重建(已核实) | 随工作区恢复;revision 不符可由消息库重播种(已核实的 reseed 机制) | 已核实 |
| 7 | 子代理派生请求 | 工作区内派生请求文件(writeSubagentRequest 已核实存在) | 落盘凭据 | 随工作区恢复 | 机制已核实,路径清单待核对 |
| 8 | 执行工作区/overlay/checkpoint | 受管 workspace 目录 + filestate | KTD7 账本对象 | 工作区对账+副作用记录 | 待核对 |
| 9 | 任务 Git 现场(worktree/未提交文件) | 各任务 worktree | git | 现场+基准 SHA 对账(U6/U7) | 待核对 |
| 10 | 插件自有存储 | skillsRoot 与 sidecar dir(host_v2.go:18/24 已核实机制);各启用插件自有 DB/目录 | 插件自定义 | 插件恢复适配器(r2 §3:必需插件不可恢复则阻塞全系统签收) | 机制已核实,逐插件清单待核对 |
| 11 | RDM 等下游模块存储 | 模块自有目录/库 | 模块自定义 | 同上,纳入兼容清单后覆盖"所有数据"承诺 | 待核对 |
| 12 | 配置与机密 | runtime/<name>/svc.env(迁移后 manifest.json+dsn_ref)、.svc/<name>.json、后端模型密钥(部署库) |
文件/表 | 受限配置备份(U6);机密独立可恢复 | svc.env 已核实;密钥存储待核对 |
| 13 | 派生状态(可重建,不作权威) | 检索/向量索引(collab U6 向量域)、Redis 缓存(如启用)、runtime/<name>/history.jsonl 事件史 |
索引/日志 | 从权威源重建(r2 §5.2 索引行);Redis 可清空 | 部分待核对 |
| 14 | 程序/资产组合 | bin 制品、Web 资产、插件二进制 | 不可变组合 | 组合 manifest+摘要(U1 §3 program 字段、U6 备份) | 已核实(deploy source registry) |
清单纪律
- 进入 U6 备份范围与 U7 签收的每一行,实施增量必须把该行"待核对"清零并附证据;无法证明可恢复的必需项按 r2 §3 阻塞全系统签收。
- 新增插件/下游模块上线时必须同步登记本清单(守护测试在 U7 范围评估)。