=== 黄金EA回测验证框架 v3.1 · 负对照套件（三跑 + allowed_fail_set） ===
预注册常量: N=1200 seed=42 lots=0.1 SL=300pt TP=600pt OOS=0.6 fold=200bars
状态机自身的必红臂: 7/7 用例符合预期（期望 overall/exit 逐条相符）
基线自检(原 9 项): exit=0 · 10/10 checks passed
本次运行含 5 枚必红臂 × 三跑，全部为红且修复后全部回绿

1 逐项成本置零对照 → PASS
   三跑: baseline=PASS(期望 PASS) · injection=FAIL(期望 FAIL) · revert=PASS(期望 PASS)
   期望: 精确轴（commission / swap）置零后 Δequity 必须逐位等于台账合计；路径轴（点差 / 跳空）置零必须使净值变好；每个可判轴的引擎变异注入都必须让闸变红
   实测: 四轴全部可判且票票为红：精确轴逐位相符（commission 268.80 / swap 0.89），路径轴方向正确（点差 +1350.58、跳空 +4.00），四次引擎变异注入全部命中
2 前视作弊臂（dirs 与净值双轴） → PASS
   三跑: baseline=PASS(期望 PASS) · injection=FAIL(期望 FAIL) · revert=PASS(期望 PASS)
   期望: 正常策略在扰动点之前 dirs 与净值双双不变；前视策略必须被 dirs 轴逮住；修复跑（换回正常策略）必须重新全绿；并量化「只比净值」会滞后多少格
   实测: 探针有效：前视臂在 dirs[899] 被逮住，净值轴首差 整段未出现
3 单号->成交价张冠李戴注入 → PASS
   三跑: baseline=PASS(期望 PASS) · injection=FAIL(期望 FAIL) · revert=PASS(期望 PASS)
   期望: 基线对账必须干净；两种张冠李戴注入都必须被逮住；修复跑（换回成交价）必须重新干净；而计数校验在注入下仍在绿
   实测: 两种注入全部命中（A 触发 2 条、B 触发 1 条）；计数校验在两种注入下仍绿（448=448 单）——「数量对得上」不构成核对
4 字节翻一位 / 哈希基变体 → PASS
   三跑: baseline=PASS(期望 PASS) · injection=FAIL(期望 FAIL) · revert=PASS(期望 PASS)
   期望: 基线清单干净；翻一位必须变红；同内容的三种行尾处理必须给出三个不同 sha256，按 V1 清单必须拒绝 V2/V3；修复跑（翻回去）必须重新干净
   实测: 字节轴与哈希基轴都有判别力（三变体 3/3 互异，注入 1 字节即红）
5 时间轴错位一天 / 切点漂移 → PASS
   三跑: baseline=PASS(期望 PASS) · injection=FAIL(期望 FAIL) · revert=PASS(期望 PASS)
   期望: 预注册切点时刻必须与实跑一致；整体平移时间轴或切点 +1 根都必须被逮住；修复跑（从平移件移回来）必须重新干净
   实测: 时间轴闸有判别力（平移 1 天与切点 +1 根都被逮住，移回来后重新干净）

OVERALL=PASS  exit=0
wrote out/NEGCTL_REPORT.md · out/negctl_report.json · out/negctl_manifest.sha256
