Files
Agent-System-Dev/deploy/data-ownership.md

3.3 KiB
Raw Permalink Blame History

容器化存储:数据归属清单(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)时两者对照,必需所有者未覆盖则阻塞切换。