2.0 KiB
2.0 KiB
R2.2 任务报告
完整只读审计见 UniDesk #1871,执行任务为 qt_aef9f6210a0b4b76bb6a84d99cbf8cc4。
实测基线
- 当前已部署 NC01 SQLite 为 1,277,952 bytes,228 runs、242 findings、234 metadata;全部 run 为 blocked。
- 仅 2 个 run 有 state_dir/report SHA 和 locator,合计 5 个 artifact。
- 历史 runtime YAML 声明多个私有 SQLite/PVC,但不能在未观测运行实例时把它们伪装为现役迁移源。
- SQLite 无 TTL;artifact bytes 不在数据库中,仍由 PVC/stateDir 与 web-observe GC 管理。
目标持久化模型
- 复用 config/platform-db/postgres-nc01.yaml 的 NC01 Host PostgreSQL,新建 Monitor 专用 role/database/export/Secret consumer。
- PG 保存 runner identity、run、finding、run payload、artifact locator 和必要 timeline;时间使用 timestamptz,JSON 使用 jsonb,定义 FK、唯一约束和 scope 索引。
- artifact bytes 继续留 runner PVC;PG 保存 node/lane/PVC/stateDir/relativePath/SHA/size 等不可变定位信息。
- latest 明确定义为所选 scope 内 updated_at DESC、run_id DESC;不再扇出多个 SQLite。
- 迁移工具只导出/导入已有事实,不合成缺失 run、finding、report 或 artifact。
切换
- 从 resolved YAML registry 生成真实迁移源清单并记录 SQLite fingerprint/integrity/schema/rows。
- 在受控短停写窗口做一致快照和 artifact existence/SHA 枚举。
- 每 source 单 PG transaction 幂等导入,冲突即失败。
- 校验行数、关键字段、latest 与 locator 可达性。
- 一次发布把 writer/query 切到 PG,并拒绝 SQLite fallback。
- 回滚只允许在接管确认前回到冻结 snapshot;确认后不再写回或服务 SQLite。
前置阻塞
受控只读状态显示 NC01 Host PG 服务和既有对象存在,但已有应用凭据 SCRAM 认证失败。实施前必须通过 owning YAML/Secret 流程修复并验证,禁止手改密码或复用其它应用凭据。