窗口 E 完成报告:阶段 4 reward 训练信号

日期:2026-08-16 执行依据:docs/specs/2026-08-13-execution-plan-v1.md §六.八(E1-E4 验收清单,13 项冻结)


一、执行范围与纪律对照

按建议顺序执行:E1(API + 映射定稿)→ E2(配方 + 消融)→ E3(校准 + 验收) → E4(集成 + 回归)

五条关键纪律逐条对照:

# 纪律 落地
1 reward 是外围输出层,不得改变评分路径(golden 0 差异硬验收) matcher/evaluator/aggregator/registry 零改动;reward 只消费 step_scores;report 新增 reward 块(纯函数,既有字段不变);golden 复跑 0 差异(§三.11)
2 -1 必须 mask,不参与聚合 level_reward(-1)=None;不参与分子与分母;全 mask → trajectory_reward=None(不给 0 虚假信号);测试 test_minus_one_masked_in_aggregation
3 只消费 final verdict(阶段 2 状态位 B4) revoked → mask(revoked)、provisional → mask(provisional_not_final)、无记录 → mask(no_verdict_record);revoked 的 L0 不触发硬惩罚;verdict_store 集成测试
4 交叉验证四类判定(虚报/漏报/未验证)不进 reward(F4 拍板) reward 包零引用交叉验证器(源码级守卫)+ 输出 schema 无四类判定字段(输出级守卫),双守卫测试
5 验收用排序一致性 + 分层均值检验(F7 拍板),不用 Spearman 点估计当门槛 ρ/τ + bootstrap CI 如实报告;主判据 = good/bad 分层显著分离(diff>0 且 p<0.05,预注册分组);ρ 不做阈值

二、产出清单

类别 文件 说明
src/bioaudit/reward/(6 模块) mapping(映射定稿)/ recipes(配方 A/B/C + 硬惩罚 + PRM 接口)/ api(E1.1 入口 + report 集成)/ calibration(E3 统计 + 锚点)/ validate(E4 五闸)
CLI reward / reward-calibrate / reward-validate E1 API / E3 校准报告 / E4 自检五闸
决策记录 docs/reward-mapping.md E1.2 映射定稿”宪法”(数值 + 等距/非线性论证 + min/mean + 饱和 + -1 mask + γ 依据 + PRM 接入点)
协议 docs/reward-protocol.md 配方定义 / mask 语义 / 预注册统计量与分组 / 锚点阈值依据 / 实测表
契约 docs/api-contract.md §九 reward 入口请求/响应 schema + 契约要点
report 集成 src/bioaudit/api/audit.py Step 7 report.reward 块(experimental_uncalibrated,C3 语义不变;失败降级不拖垮报告)
CI .github/workflows/ci.yml 双矩阵新增 reward-validate 步骤(E4.13)
测试 tests/test_reward.py32 项 映射/mask/时序/消融/锚点/确定性/报告集成/CLI
报告 docs/migration/E4-phase4-reward-report.md 本文件

三、验收对照(§六.八 E1-E4,13 项逐项)

E1 reward API 与映射定稿

E2 配方与消融

E3 校准与验收

E4 集成与回归

四、消融与校准实测汇总(30 任务冻结,docs/reward-protocol.md §七)

配方 ρ [CI] τ_b [CI] good bad diff [CI] p
A 0.6279 [0.2916, 0.8380] 0.4949 [0.2099, 0.7182] 0.7692 0.6592 +0.110 [0.036, 0.183] 0.007
B 0.6091 [0.2894, 0.8335] 0.4898 [0.2131, 0.7213] 0.6611 0.2862 +0.375 [0.195, 0.536] 0.001
C 0.6279 [0.2916, 0.8380] 0.4949 [0.2099, 0.7182] 0.7692 0.6592 +0.110 [0.036, 0.183] 0.007

五、映射决策记录摘要(完整论证见 docs/reward-mapping.md)

决策点 定稿 核心论证
映射对象 level(非 numeric_score) 与评分路径解耦;numeric 是展示口径
等距 vs 非线性 非线性(0.00/0.30/0.60/0.85/1.00) level 语义间距不等;惩罚错误的边际价值 > 奖励锦上添花
-1 mask(不参与分子分母) 无好坏信息;给值 = 注入虚假信号
85.0 饱和 明确不做微调(扩展点显式记录) 证据质量未校准;L4 是预留出口
min vs mean mean(+ 硬惩罚组合) mean 稠密 credit assignment;min 塌缩且与引擎 C1 冗余
硬惩罚 γ=0.30,二元 L0=”将导致错误结论”;n≥2 时含 L0 轨迹 ≤ 0.246 < 0.60 < 0.85
PRM 接口预留(占位权重 1.0 均匀) PRM 未实现;接口先通,诚实标注 C≡A

六、experimental 标注说明(E4.10 / C3 语义)

七、遗留与排期(如实声明)

  1. 批 2 任务集(30→60)落地后校准重跑:本文档 §四 表格更新 + 新预注册 记录(旧值留档);分层检验随任务集变化如实重新评估(reward-protocol.md §八);
  2. PRM 未实现:配方 C 占位权重(均匀)持续生效;PRM 落地后替换权重并走 映射变更流程;
  3. report 集成已含降级保护:reward 块失败不拖垮报告(外围层纪律测试); 未来若 reward 转为生产信号,需先完成 RLHF 校准(超出本窗口范围);
  4. 映射/统计代码 numpy-only(不引 scipy 核心依赖),与 B6 锁依赖一致。