muse-agent-example/docs/2026-08-19-evaluate-frozen-replay-raw边界冲突.md
zizi d80df3ed7c 治理: 剩余问题收口——humanization 规则/样例数据库权威 + PG 集成全通过 + 行为评测脚手架 + raw 冲突备忘录
范围(不含 design-story-foundation、docs/design、docs/write-chapter、
craft/、humanization/README.md 等进行中改动):

1. humanization 规则/样例运行时数据库权威
   - db/ddl/111:example_ai_flavor_rule / example_ai_flavor_sample /
     example_ai_flavor_rule_event(append-only 生命周期留痕),已应用到 muse-example
   - deai/load_db.py:数据库装载器,激活门/重复检测/指纹与文件装载器同源;
     数据库失败关闭,不静默回退 Git 文件资产
   - humanization/tools/seed_rules_db.py:YAML 种子单事务同步,幂等、
     变化留痕、--strict 对 db-only 行失败关闭;真实库已种入 26 规则/107 样例
   - prevent/diagnose/revise 生产路径切到数据库读取(--offline 显式读文件),
     落库前新鲜度检查与合同声明来源一致;四个 SKILL.md 数据库合同同步
   - 真实库验证:规则库指纹与文件种子一致(v-609bc40e21d0b5db),
     三个生产脚本端到端从库装载通过

2. PostgreSQL 集成:显式授权后 9/9 通过
   - 此前被依赖门阻断的 6 个 _db/smoke 测试全部通过
   - extract rollback 冒烟改为回滚事务内自给夹具(pending 窗/草稿缺失时自建),
     不再依赖瞬时生产状态;夹具残留核验为 0

3. Skill 行为评测脚手架(真实执行数量仍为 0)
   - harness/evals/skill_eval.py:场景合同、六类评测范畴、适配器和结构化裁决报告
   - diagnose-ai-flavor 参考场景 4 条 + 管道自测 7 项通过
   - 真实模型适配器未授权时以稳定码 EVAL_ADAPTER_UNAVAILABLE 失败关闭;
     清单登记 skill_behavior_eval 条目,默认被依赖门阻断

4. evaluate-frozen-replay raw 存储边界冲突
   - docs/2026-08-19 备忘录:平台 DB-first 合同(创始人批准)与回放链
     仓外 vault 强制的冲突事实、两个选项和裁决前约束;运行时合同未单方面改写

5. harness 自身修复
   - runner 对账语义:行为评测入口不参与测试资产双向等值,但登记文件必须存在;
     manifest 保留 skill_behavior_eval 布尔字段并校验类型
   - 新增 2 条对账回归用例

验证证据: harness 三组自测 15+15+7 通过;静态审计 32 Skill / 0 问题;
76 个非数据库条目通过;9 个 PostgreSQL 集成条目显式授权后通过;
行为评测条目默认阻断;py_compile 与 git diff --check 通过。
未调用真实模型、embedding 或额度;真实行为评测执行数量仍为 0。
2026-08-19 02:41:25 +08:00

54 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# evaluate-frozen-replay raw 存储边界冲突(待裁决)
> 状态:**待所有者裁决**。本文只陈述事实、冲突和选项;在裁决前,运行时合同不单方面改写。
> 日期:2026-08-19。证据均来自仓内文件与提交历史,未连接外部服务。
## 1. 冲突双方
### A. 平台 raw 合同:数据库是正式权威
- `db/ddl/101-example-raw.sql` 文件头(设计拍板 2026-07-30,docs/2026-07-30-落库与看板设计.md §2.7 + §4,创始人批准):
- 放弃时效语义,改靠**访问控制 + append-only**;
- 完整 prompt/response/未接受候选/标准答案/原书全文/供应商响应**进库可看全文**(看板可读);
- **仓外 vault 降级为可选备份**;密钥/token 绝不入表。
- `example_raw_lease` + `example_raw_content` 两表已建(append-only、禁 UPDATE/DELETE/TRUNCATE)。
- 创作链已用 DB raw:`record-run-evidence/scripts/persist_raw.py` 被 `write-next-chapter/run_writer.py`、`plan-story/record_planning_execution.py` 消费。
### B. 回放评测链:仓外 vault 强制
- `.claude/skills/evaluate-frozen-replay/SKILL.md`:
- 「原始 prompt、response、候选、标准事实摘要和完整输入**只能留在仓库外受控 raw vault**;必须受显式保留授权、租约和迁移回执约束」;
- 「正式 execute 还必须显式传 `--raw-archive-dir <仓外绝对目录>`;缺失、相对路径、位于本轮输出目录内或与临时 vault 跨文件系统时,均在建立 vault 或调用模型前失败关闭」。
- 实现与之一致:`run_writer_replay/__init__.py` 在 `raw_archive_dir is None` 时失败关闭,整轮 raw 走 vault + 迁移回执(`raw-vault-migration-receipt-v1`),当前**不写** `example_raw_lease`/`example_raw_content`(脚本内无引用)。
### C. 冲突点
同一类资产(评测的完整 prompt/response/候选/原文)在两份现行合同里有相反的存储义务:A 要求进库(vault 可选备份),B 要求只留仓外 vault。时间线上 A 先拍板(2026-07-30),B 是其后建立的回放域专用合同;仓内没有记录 B 偏离 A 的显式批准。
## 2. 为什么没有在本批直接改
- 回放链是盲评安全链(防泄漏审计、匿名化、预算门),raw 层重写会触碰其安全终态定义;
- 两个方向都属于业务红线改动:改成 DB-first 要重写 raw 写入与迁移收口;改成 vault-only 要推翻创始人批准的 §4 合同;
- 项目冲突裁决层级里,运行时 Skill 低于设计文档与 DDL,但 B 可能是后来的所有者意图,缺显式证据时不得替所有者选择。
## 3. 选项
### 选项 1:回放 raw 迁入数据库(对齐 A)
- `run_writer_replay` 的 raw 写入改走 `persist_raw` 合同(lease + content,append-only,访问控制);
- `--raw-archive-dir` 从强制前置降为可选备份参数,保留其路径校验作为备份合同;
- SKILL.md §raw 相关段落与三臂 execute 流程同步改写;行为评测与安全 manifest 合同不变(安全输出仍然只保存固定闭集)。
- 代价:一次专门设计 + 实现批次(raw 写入点、迁移收口语义从「迁走」变为「进库回执」)、回放实现测试更新。
### 选项 2:回放链登记为 A 的显式例外(对齐 B)
- 在 `docs/2026-07-30-落库与看板设计.md` §4 或领域 SoT 追加:盲评参考书原文与评测 raw 因泄露面控制保留仓外 vault,属平台 raw 合同的登记例外;
- `evaluate-frozen-replay/SKILL.md` 引用该例外条款;DDL 101 头部注释补例外指引;
- 代价:一份所有者签认的例外记录;无代码改动。
## 4. 裁决前约束
- 回放 `--execute` 维持现状(vault 强制、失败关闭);
- 创作链 raw 继续走 DB(persist_raw),不受本冲突影响;
- 任何新评测批次不得把完整参考书原文写进 Git 或普通看板视图。