{
  "subjectSha": "6ac56de2",
  "modelId": "claude-opus-5",
  "promptTemplateVersion": "jt-v1",
  "rung": "R1",
  "templateHash": "7f974b9ad9f6955462b4da1586cd3ebd8f6e47b371b48483fc3906609d0160bf",
  "docHash": "075f98b785e3a1828ab0c130cd713d797e259abee258eb00b6fa12062153fcc4",
  "sampleId": "observe/oneshot-plan",
  "iteration": 2,
  "appendCost": 3,
  "unitsToModify": [
    "✅ 执行状态（2026-08-31 收尾回填）",
    "File Structure",
    "Self-Review"
  ],
  "wallMs": 42322,
  "exitCode": 0,
  "raw": "这份文档登记/组织的条目是 **Task**（Task 1–5，每个 Task 自带 Files / Steps / 代码块）。若追加一个 Task 6，为让它完整生效，必须改动的已有部分：\n\n**必改（3 处）**\n\n1. **`## ✅ 执行状态（2026-08-31 收尾回填）`** —— 该节的 Task 状态表按 Task 逐行列举（Task 1 / 2 / 2′ / 3 / 4 / 5），新 Task 必须在表中加行；同节正文「全部 Task 已执行完毕」一句也随之失效。\n2. **`## File Structure`** —— 全文件清单集中在此处按 Create / Modify 列举，新 Task 涉及的文件必须写进这一节，而不是写在 Task 自己里（各 Task 内的 `**Files:**` 是重复列，非唯一登记处）。\n3. **`## Self-Review`** —— §1「Spec 覆盖」的 Spec 条目→Task 映射、§2「占位扫描」、§3「类型一致性」跨 Task 字段名核对，三项均是对**全部 Task 的横切复核**，新增 Task 后必须重写。\n\n**条件性改动（取决于新 Task 内容，非必然）**\n\n- **`## 🔴 预注册（Task 1 里写死进源码，先 commit 再跑）`** —— 若新 Task 带预注册常量或期望值，须在此 `PREREG` 块内追加，不能自建。\n- **`**Architecture:**`** —— 若新 Task 新增量具文件；文中现写「新增 `metrics/f4-denominator-branches.mjs`」为唯一新文件。\n- **`## Global Constraints`** —— 若新 Task 引入新纪律条款。\n- 若新 Task 插在中间而非追加到末尾，Task 1–5 的编号及 Self-Review、执行状态表中对「Task 1 Step 4」「Task 3 Step 1」等的交叉引用需一并改。\n\n另：若把「条目」理解为 Task 2 内的**控制项**（`must-hit-*` / `must-not-hit-*`），必改处为 —— Task 2 Step 8 的 commit message（写死「9 条控制」）、执行状态表 Task 2 行（写死「13 条控制 + 1 条 skip」）、Self-Review §3；且每条 `must-not-hit` 须同时追加同构 `must-hit` 阴性对照（成对，非单条追加）。\n\n```json\n{\"unitsToModify\": [\"✅ 执行状态（2026-08-31 收尾回填）\", \"File Structure\", \"Self-Review\"], \"appendCost\": 3}\n```"
}