Skip to content

Latest commit

 

History

History
63 lines (48 loc) · 3.18 KB

File metadata and controls

63 lines (48 loc) · 3.18 KB

进度报告 · M6 一致性红队与回归基线

  • 里程碑:M6 — 一致性红队与回归基线(本里程碑据用户授权自定义;路线图原止于 M5)
  • 日期:2026-06-20
  • 分支:claude/objective-dirac-c19b49(worktree)→ 合并入 main
  • 结论:完成。合并入含 M1/M2/M3 的 main 后,全部 13 条样本由真实规则裁决: 崩坏率 0%、误伤率 0%、跳过 0。门禁可进 CI。

1. 目标与定义

把项目北极星「写不崩」从主张变成可执行的证明:一份带金标签的红队语料,全量过 M5 加固版管线,崩坏率(本应拦却放行)钉为 0 作回归门禁——任一对抗样本漏拦即门禁失败。 完整动机与取舍见 ADR 0010

2. 已实现模块

world_engine/qa/
├── doubles.py    · DictKnows —— KnowsView 的内存参考实现(M1 的 EpistemicStore 会替代)
├── corpus.py     · 13 条带标签样本(对抗 + 干净),覆盖 6 类违例;共享一个红队世界
├── harness.py    · run_redteam:按"能力集合"裁剪 → 跑 → 比对金标签 → 汇总记分卡
├── report.py     · Markdown 记分卡渲染
└── __main__.py   · `python -m world_engine.qa` —— 打印记分卡,崩坏率非 0 则退出码 1

3. 当前记分卡(合并 main 后,默认确定性裁判)

指标
门禁(崩坏率=0) ✅ 通过
样本 共 13,运行 13,跳过 0
崩坏率 breakage 0.0%(漏放 0 / 应拦 9)
误伤率 false-alarm 0.0%(误拦 0 / 应放 4)
软核对触发率 30.8%
  • 全部生效:epistemic_leak 2、life_status 1、location 1(由 M1 真实规则裁决)+ possession 2(M1)+ timeline 3、soft 4(M5),全部命中金标。
  • soft 含两类独立否决:风格档(verbose_taciturn)与内容档(meta_leak,出戏/元信息泄漏), 分别由默认交叉裁判面板的两名互补裁判各自拦下——印证 §7.4「两个独立裁判」确实在工作。

4. 关键设计

  • 诚实覆盖:harness 先算"当前能力集合"(已加载硬规则名 + 是否有软核对),能力不足的 样本跳过并写进报告,绝不伪装通过。本支单独开发时 leak/life/location 三类如实跳过; 合并 M1 后 build_default_pipeline 自动接上真规则,样本零改动转为生效——本次合并即如此。
  • 门禁真的会响:tests/test_redteam.py::test_gate_actually_fires_on_escape 故意喂一条 "干净却被标为应拦"的样本,验证管线放行→漏放→门禁失败,证明门禁不是恒真。
  • 可复现:用两名配置不同的 DeterministicJudge 构成交叉裁判面板,离线、确定,适合 CI。

5. 验证

.venv\Scripts\python.exe -m world_engine.qa      # 记分卡 + 门禁(退出码)
.venv\Scripts\python.exe -m pytest               # 205 passed(全套;M5+M6 新增 45)

6. 后续

  • M1 合并后补齐认知边界/生死/位置样本的真实驱动(届时 4 条自动激活)。
  • 真实 LLM 接入后,可用同一语料对真模型跑崩坏率回归;确定性裁判保留为离线基线。
  • 持续把软核对里反复出现的语义残余「往硬规则搬」(§7.4),并用本基线守住不回退。