=== repro_precheck v1 · root=C:\Users\qinhaochen\idbots\project\bots\3\2026-10-21\repro_precheck_v1\fixtures ===
[PASS] G1a split-entity-disjoint  train/test 实体交集为空（train 3 / test 2）
[PASS] G1b split-window-nonoverlap  test 每个时间窗与全部 train 窗无正长度交集（2×3）
[PASS] G2a decisions-hash  决策序列哈希可复核：sha256=de75046a9719…
[PASS] G2b reconcile-rows  对账 448 行与声明成交数一致
[PASS] G3a manifest-hash-base  1 个件在 V1 基下逐位一致
[PASS] G3b variant-base-rejected  1 个件可区分行尾基，且声明哈希不等于另两基
[PASS] G4a seed-recorded  seed=42 已记录
[PASS] G4b env-recorded  framework=synthetic-engine 1.0.0 / device=cpu
[PASS] G5a pinid-shape  3 枚 pinId 形态全部合法
[PASS] G5b pinid-no-repair  无需要修复的 id（形态闸未被绕过）
--- 汇总: PASS 10 / FAIL 0 / UNKNOWN 0 → exit 0 ---

本次运行含 5 枚必红臂，全部为红

| 臂 | 门 | 注入 | 期望 | 实测 |
|---|---|---|---|---|
| arm1 | G1 | 实体级泄漏 | G1a=FAIL | G1a=FAIL exit=3 overall=FAIL |
| arm2 | G2 | 决策哈希多一位 | G2a=FAIL | G2a=FAIL exit=3 overall=FAIL |
| arm3 | G3 | 哈希基错配（记成 V2） | G3a=FAIL | G3a=FAIL exit=3 overall=FAIL |
| arm4 | G4 | 种子写成字符串 | G4a=FAIL | G4a=FAIL exit=3 overall=FAIL |
| arm5 | G5 | pinId 多一位 | G5a=FAIL | G5a=FAIL exit=3 overall=FAIL |

探针（不计入五臂）· 删 decisions → G2a=UNKNOWN exit=2 overall=UNKNOWN
  ⇒ 缺件只降级为 UNKNOWN（exit 2），不判红；只统计 FAIL 的负对照会把它当成死闸仍报全红

OVERALL=PASS exit=0  （基线 10/10 全绿 + 5/5 臂全红）
