3.3 KiB
3.3 KiB
容器化存储:数据归属清单(U1)
权威设计:docs/superpowers/plans/2026-10-22-container-storage-plan.md(U1、KTD1—KTD4)。
实例身份与期望态唯一权威:runtime/<name>/manifest.json(scripts/svc_manifest.py);
本清单只登记数据所有者、类型、引用形式与唯一写者,不含秘密值与业务内容。
生产体量/源版本盘点需另行授权访问后补全;未核实项不得据此声明迁移完成。
归属总表
| 所有者 | 类型 | 引用形式(登记键) | 唯一写者 | 迁移范围 |
|---|---|---|---|---|
| 基座逻辑库 | PostgreSQL 逻辑库(账号/项目/消息/文档/设置等基座表族) | base_dbref 或 base_dsn_ref(绝对路径秘密文件)+ base_role_ref + base_port;身份锚 identity.base_db_ref |
本实例应用进程(经基座 DSN);引导/迁移角色与应用角色分离(U2) | 必需 |
| RDM 领域库 | PostgreSQL 逻辑库(RDM 域表/项目文档树等) | rdm_dbref 或 rdm_dsn_ref + rdm_role_ref + rdm_port;锚 identity.rdm_db_ref |
本实例应用内 RDM 域(独立 DSN);非基座连接串 | 必需 |
| 知识库 | PostgreSQL/pgvector 逻辑库(语料、索引投影) | kb_dbref 或 kb_dsn_ref + kb_role_ref + kb_port;锚 identity.kb_db_ref |
本实例知识库接入(应用内);索引可重建但语料库为权威 | 必需 |
| 持久文件根 | 目录树(工件、RDM uploads、KB 原件及必要解析产物) | files_root(绝对路径,不相对 checkout/worktree 解析);锚 identity.files_root |
本实例应用进程;禁止他实例共用同一根 | 必需 |
| 环境身份 | 枚举 | env_class ∈ prod|test|verify;锚 identity.env_class |
运维显式登记;克隆时换新(U5) | 必需(container) |
| 实例身份 | 稳定 ID + 数据 marker | instance_id;<data_root>/.agentx/data-marker.json |
svc manifest 治理;启动只校验不重建 |
必需 |
| Compose 项目 | 容器项目名 | compose_project;同 runtime 内唯一 |
本环境容器驱动(U2);冲突在修改前拒绝 | container 必需 |
storage_mode=legacy(缺省):沿用既有 SQLite / 宿主 PG(db/dbref/dsn)路径,不要求三库与 files_root。
storage_mode=container:上表 container 行全部必需;缺任一绑定、错库、错文件根、foreign marker、同名 Compose 或端口冲突 → 拒绝,不静默建空库、不回退默认。
凭据只允许以受保护文件路径引用(*_dsn_ref / *_role_ref),明文不得入 manifest、日志或本清单。
配置形态
见同目录 env-bindings.example.env。写入实例:
# 先写齐绑定键,最后打开 container 合同(缺一即拒)
scripts/svc.sh <name> … # 经 svc_set_key / manifest set;Compose·端口冲突在修改前失败
另一 checkout/worktree 只要指向同一绝对 files_root 与库引用,仍定位同一资源(路径不相对仓库根解析)。
与旧恢复清单关系
细粒度基座表/插件枚举仍见 docs/recovery/u1-data-ownership.md。
本文件是容器化三库+文件根的合同级归属;实施迁移(U3)时两者对照,必需所有者未覆盖则阻塞切换。