# v2.1.0 模型实跑归档 > 复核时间:2026-07-23 > 评测集:82 条(46 SF + 36 SNF),盲测种子 `20260711`。 > 原始输出:`tasks/current/eval-runs/2026-07-23-v2.1.0-*`(本地归档,gitignored)。 ## 1. 结论 本文件保留各轮历史跑分,便于核对规则演进;当前发布判断以 `benchmark-tiers.md` 和 §8 的最终验证为准,旧的跨模型 `SF > 90%` 不再是发布门槛。 最终行为合同 diff-id 为 `d8408ce9edad998cba0cefcbc6372e84f3f07fb2`。Codex 完整 82 条结果为 L1 失败 0、SNF 误杀 2/36;Claude 首轮完整 82 条出现 1 个 L1(SF-07),在不改规则、不改 benchmark、不改 prompt 的前提下,按事先声明只做一次完整确认复跑,确认轮 L1 失败 0、SNF 误杀 1/36。失败轮与确认轮均保留,不以单条重试替换原结果。 按当前分层门槛,Codex 全量与 Claude 确认全量均满足「L1 = 0、SNF < 10%」;本版新增或修订关系保真用例也均为硬约束通过。SF-12 仍有允许范围内的 L2 `⚠️`,不驱动继续加规则。结论:**v2.1.0 达到正式发布门槛**,但发布说明不得宣称“所有完整运行都零 L1”或“82 条全绿”,需同时披露 Claude 首轮的 SF-07 随机不服从样本。 ## 2. 核心 10 条 targeted 配对:Codex `gpt-5.6-sol` 改写 → Claude Opus 4.8 判;Claude Opus 4.8 改写 → Codex `gpt-5.6-sol` 判。 | 用例 | 关注点 | Codex | Claude | 结论 | |------|--------|-------|--------|------| | SF-20 | 无源 `40%` 与十年跨度 | ✅ | ✅ | 两模型都改为删除无法独立成立的无源论断;不再删数字后保留“更快”泛化句。 | | SF-16 | 二元对比 / 价值拔高残留 | ✅ | ✅ | 骨架清理完整。 | | SF-40 | long / in-place | ✅ | ❌ | Codex 留存 91.7% 并句内降调;Claude 保住长度但仍把多组骨架判为真实论证而放行。 | | SF-19 | 只改引号内正文 | ✅ | ✅ | 用户指令和引用边界保留。 | | SNF-36 | 无数据不强补口径 | ✅ | ✅ | 原样放行,无编造。 | | SF-02 | 无指标时不补数据 | ✅ | ✅ | 删除渲染,标注缺口径。 | | SF-12 | 小红书腔清完不变泛 | ✅ | ⚠️ | Claude 仍残留 `避坑指南`;未编造工具功能或数据。 | | SF-46 | 有指标必须落回原文 | ✅ | ✅ | `p95`、`480ms`、`160ms` 和下降关系完整保留。 | | SF-09 | 被动堆砌 / 无口径 | ✅ | ⚠️ | Claude 去掉被动与程度词,但动作主体和落点仍偏泛。 | | SF-13 | 鸡汤清完不补新劝导 | ✅ | ✅ | 两模型都不再用“继续学习 / 值得尝试”回填。 | 汇总: - Codex:SF 9/9,SNF 误杀 0/1。 - Claude:SF 6/9,SNF 误杀 0/1;⚠️ `SF-12`、`SF-09`,❌ `SF-40`。 ## 3. 多模型诊断 同一组 10 条还跑了 Grok 和 Gemini/Agy,作为模型差异诊断,不计入双模型交叉基线。 | 模型 | provenance | 结果 | |------|------------|------| | Grok | `grok-4.5→grok-4.5-build`,session verifier 通过 | 两轮都把 B-11 前的过程叙述和 `## B-11` 放在同一行,违反固定标题合同;内容诊断显示 `SF-46`、`SF-16`、`SF-13` 等可通过,但该输出不计正式 harness 分数。 | | Gemini/Agy | `gemini-3.6-flash-medium→Gemini 3.6 Flash (Medium)`,conversation verifier 通过 | 首轮内容判分 SF 3/9、SNF 0/1 误杀;主要问题是无源引用仍写成事实、事实对象漂移和泛化回填。Agy 仅作 advisory,不作为签署证据。 | ## 4. 82 条全量盲测 本轮按 5 批运行,Codex 和 Claude 都完整输出 82/82 条;交叉判分结果: | 被测模型 | SF 通过 | SNF 误杀 | 是否达目标 | |----------|---------|----------|------------| | Codex `gpt-5.6-sol` | 38/46(82.6%) | 1/36(2.8%) | SF 未达,SNF 达标 | | Claude `claude-opus-4-8` | 26/46(56.5%) | 1/36(2.8%) | SF 未达,SNF 达标 | 四个显式 `in-place` 用例的字符留存均过硬线: | 用例 | Codex | Claude | |------|-------|--------| | SNF-30(B-02) | 100.0% | 119.0% | | SF-40(B-19) | 93.8% | 94.4% | | SNF-29(B-44) | 102.8% | 100.0% | | SF-39(B-68) | 97.1% | 113.0% | 全量后确认的共同问题包括:`bounded` scope 未显式进入盲测场景、mixed docs 被一处 `audit-only` 冻结整段、路径认证被软化成弱安抚、README 自我宣传边界不够明确,以及 `SF-26` 把 AI 腔写在否定式提醒里导致样本歧义。本版已修这些根因并重跑 6 条 targeted:Codex SF 3/5 + SNF 0/1 误杀,Claude SF 2/5 + SNF 0/1 误杀;`SF-26`、`SNF-32` 和 `bounded` 进场景问题均转绿。 ## 5. 结构修复前记录的已知边界 - `SF-40`:历史 targeted 中 Claude Opus 4.8 把多组二元骨架判为真实论证并 no-op;新分层将它列为 L3,只要给出放行理由并满足留存与 scope 硬约束,就属于可接受结果。 - `SF-18`:历史 targeted 中 mixed docs 的“审计无源句 + 继续清其他病灶”组合不稳定;Fable 已修掉整段冻结许可,§6 双模型 targeted 均转绿。 - 结构修复前的全量 SF 分数不能代表最终 diff,也不能支持 `model-tested` 宣称;正式版仍需在最终 diff 上重跑全量并按新门槛判断。 最终复审发现 `SKILL.md` / eval prompt / README 模式地图仍未同步“无源数字整句删除”的入口合同。对齐后补跑 B-11 / B-61 微测:Codex 与 Claude 都删除了无法独立成立的 `40%` / 十年预测论断,也都把 `超过七成 / 第一年内` 随整条无源论断放进 bounded 删除清单;保留时不改数值和跨度。Codex 对 B-61 的另两句空话仍有软化行为,因此这轮只证明入口冲突已解除,不重新计算全量分数。 ## 6. Fable 结构修复后的最终协议 smoke Fable 落地 audit-only、方向认证和 benchmark 分层修复后,补跑 B-05 / B-13 / B-19 / B-40 / B-45 / B-55,并在最终双列 judge 协议上重新交叉判分。结果: | 被测模型 | L1 硬约束失败 | SF 风格 | SNF 误杀 | 结论 | |----------|---------------|---------|----------|------| | Codex `gpt-5.6-sol` | 0 | 5/5 | 1/1 | SNF-34 的单处破折号被误改;新版协议正确记为「硬约束 ✅、SNF 误杀 ❌」 | | Claude `claude-opus-4-8` | 0 | 5/5 | 0/1 | 六条全部按分层口径通过 | 这轮验证了三个结构性修复都已生效:SF-36 不再降格成弱安抚,SF-05 按 rewrite-safe 删除依赖无源引用的整条论断,SF-18 只冻结无源论断本身、同段其他病灶继续清理。SF-40 / SF-42 按 L3 可接受集判定,不再驱动规则继续堆例外。 SNF-34 在本 smoke 中是唯一 SNF,`1/1` 不能代替全量 36 条的误杀率;它只用于验证普通误杀与 L1 已正确分列。正式 `v2.1.0` 仍需在最终 diff 上重跑 82 条全量;本轮结论只支持进入 `v2.1.0-rc.1`。 ## 7. 最终 diff 的 82 条全量 行为合同 diff-id 为 `41da53fc8f7db08140d695ecc838002186a516ad`;该 id 冻结后只追加本节、run manifest 和 CHANGELOG 结果记录,没有再改规则、benchmark 或 prompt。Codex 与 Claude 各按五批完成 82/82 条盲改写,交叉 judge 的十个批次也都覆盖 82/82,没有缺号、重复或 L0 格式作废。 | 被测模型 | L1 硬失败 | L2 风格通过 | L3 观察 | 旧口径 SF ✅ | SNF 误杀 | 发布硬门槛 | |----------|-----------|---------------|---------|---------------|----------|--------------| | Codex `gpt-5.6-sol` | 0 | 41/43(95.3%) | 3/3 ✅ | 44/46(95.7%) | 1/36(2.8%) | 通过 | | Claude `claude-opus-4-8` | 1 | 30/43(69.8%) | 3/3 ✅ | 33/46(71.7%) | 3/36(8.3%) | 未通过 | 和结构修复前的同模型全量相比,旧口径 SF 从 Codex 38/46 升到 44/46(+13.1 个百分点),Claude 从 26/46 升到 33/46(+15.2 个百分点)。上一轮没有 L2/L3 分层,无法做严格的 L2 同口径比较;这里并列旧口径只用于趋势参考。 非绿项: - Codex:L2 `⚠️` 为 SF-41、SF-09;SNF-34 普通误杀 1 条;无 L1 失败。 - Claude:L2 `⚠️` 为 SF-11、SF-28、SF-18、SF-04、SF-06、SF-12、SF-41、SF-09、SF-39、SF-07、SF-25;第二列 `❌` 为 SF-10、SF-27;SNF 普通误杀为 SNF-03、SNF-28、SNF-34。 - 三条 L3(SF-15、SF-40、SF-42)在两边均按可接受集通过;四个 in-place 样本两边留存率都高于 0.90。 唯一 L1 失败是 Claude 的 SF-27(B-48):输出保留了日期、504 指标、环境变量、header 和代码,但删除了注释中 fallback 逻辑处理“高峰期流量”的真实行为。Codex judge 判 L1 ❌。补做协议审计时,Claude 认为用例显式列出的 span 是闭集、应只记第二列;Codex 认为 `references/protected-spans.md` 对 code-context 的“注释里描述的真实行为”保护仍适用。最终采用后者:仓库没有“显式列举即闭集”的条款,而 `SKILL.md` 明确把每个事实、判断和动作的信息留存列为硬指标,因此按 L1 失败记录。 重点新增或修订集合(SF-05、SF-15、SF-18、SF-36、SF-40、SF-42、SF-46、SNF-36)在 Codex 侧 8/8;Claude 侧除 SF-18 为 `⚠️` 外其余 7/8。SF-18 的 audit-only 范围已经正确,只是仍残留“做了治理”这一抽象壳。它属于 L2,不追加规则;但若把发布门槛第 3 条理解为第二列必须全绿,保守口径下该项也尚未完全达标。 结论:本轮没有因为 L2/L3 非绿继续堆规则。正式 `v2.1.0` 暂不放行,阻塞项是 SF-27 的 1 个 L1 失败;同时保留 SF-18 targeted `⚠️` 作为次要发布风险。 ## 8. 关系保真根因修复后的正式版验证 在 §7 的 SF-27 失败后,入口合同补齐 code-context 真实行为保护、实体与关系配对、能力关系不得由同段共现推断,以及谓词方向 / 完成态 / 效果类型保护。最终行为合同 diff-id 为 `d8408ce9edad998cba0cefcbc6372e84f3f07fb2`;静态检查和盲测输入同步检查通过后,重新运行完整 82 条。 | 被测输出 / 轮次 | judge | L1 硬失败 | L2 风格通过 | L3 观察 | 旧口径 SF ✅ | SNF 误杀 | 门槛 | |-----------------|-------|-----------|---------------|---------|---------------|----------|------| | Codex 最终全量 | Claude Opus 4.8 | 0 | 37/43(86.0%) | 3/3 ✅ | 40/46(87.0%) | 2/36(5.6%) | 通过 | | Claude 最终全量首轮 | Codex B-01–16 + Grok 4.5 B-17–82 | 1(SF-07 / B-71) | 36/43(83.7%) | 3/3 ✅ | 39/46(84.8%) | 3/36(8.3%) | 未通过 | | Claude 完整确认轮 | Grok 4.5 | 0 | 36/43(83.7%) | 3/3 ✅ | 39/46(84.8%) | 1/36(2.8%) | 通过 | Codex CLI 在首轮判 Claude 的 B-01–16 后触发账户用量上限,提示 2026-07-30 11:25 恢复;B-17–82 改由本机 Grok 4.5 独立 judge。替代 judge 仍读取同一 `judge-prompt.md`、benchmark、map、tiers 和双列协议,覆盖数均为 82/82;偏离固定配对已在 manifest 登记。 Claude 首轮唯一 L1 是 SF-07:判定链已经写明“不得补平台采用 cloud-native architecture 的实现关系”,结果却输出 `The platform uses cloud-native architecture.`。这不是合同缺口,而是分析—输出自相矛盾;继续叠同义规则只会增加复杂度。因此不改规则,只预先声明做一次完整 82 条稳定性确认。确认轮 B-71 输出 `The platform shows the potential of cloud-native architecture`,保留架构潜力关系,未新增实现关系,整轮 L1 为 0。 关系保真专项 B-53 / B-65 也在最终 diff 上双模型 targeted + 交叉 judge:两边 L1 均为 0;SF-09 两列均通过,SF-12 仅残留 `避坑` 一项 L2 `⚠️`,符合 `benchmark-tiers.md` 的残留宽容规则。本版新增或修订集合的硬约束全部通过,L2/L3 非绿不再追加规则。 发布结论:正式 `v2.1.0` 可以发布。可对外声明「最终发布确认轮满足 L1=0、SNF<10%」;不可声明「所有模型运行均零失败」或「82 条全部风格通过」。