{
  "subjectSha": "6ac56de2",
  "modelId": "claude-opus-5",
  "promptTemplateVersion": "jt-v1",
  "templateHash": "7f974b9ad9f6955462b4da1586cd3ebd8f6e47b371b48483fc3906609d0160bf",
  "docHash": "075f98b785e3a1828ab0c130cd713d797e259abee258eb00b6fa12062153fcc4",
  "sampleId": "observe/oneshot-plan",
  "iteration": 5,
  "appendCost": 4,
  "unitsToModify": [
    "✅ 执行状态（2026-08-31 收尾回填）",
    "File Structure",
    "Task 5: status 登记 + 收尾",
    "Self-Review（写完计划后自查，已执行）"
  ],
  "wallMs": 43325,
  "exitCode": 0,
  "raw": "这份文档自己在组织的「同类条目」＝一个 **Task**（Task 1…5，带 Files / Steps / commit）。加一个新 Task，需要改动的已有部分：\n\n**必改：**\n\n1. **`## ✅ 执行状态（2026-08-31 收尾回填）`** —— 该表逐 Task 一行（Task 1 / 2 / 2′ / 3 / 4 / 5），新 Task 必须在此加行；开头那句「**全部 Task 已执行完毕**」也随之要改。\n2. **`## File Structure`** —— 全篇唯一的文件清单（Create / Modify 汇总），新 Task 触碰的文件必须登记进去；其中「`metrics/f4-denominator-branches.mjs` —— **唯一新文件**」这句在新 Task 建文件时即不成立。\n3. **`## Task 5: status 登记 + 收尾`** —— 它是终结任务（`git status` 干净 + push + work-log）。新 Task 若要在收尾前执行，Task 5 必须重编号为 Task 6；并连带改所有跨任务引用：`## 🔴 预注册` 里的「必须进 **Task 2 与 Task 4**」、Task 2 Step 1 的「见上」、Self-Review §1 的「§5 第 2 项 → **Task 3/4**」「N80.4 → **Task 1 Step 4 + Task 4 Step 1**」、Task 4 Step 1 的「`must-hit-3`」等。\n4. **`## Self-Review（写完计划后自查，已执行）`** —— §1 Spec 覆盖的映射表与「✅ 无缺口」结论、§2 占位扫描、§3 类型一致性（列举了字段名跨 Task 一致、`c.proposalF4Ids` 由哪个 Task 注入），三项都是全篇性断言，新增 Task 后都要重跑并改写。\n\n**条件性（视新 Task 内容触发）：**\n\n- **`**Architecture:**` 段**（`---` 之上的引言区）—— 描述了「新增 `metrics/f4-denominator-branches.mjs`」这一个量具；新 Task 引入第二个量具则需改。\n- **`## 🔴 预注册（Task 1 里写死进源码，先 commit 再跑）`** —— 新 Task 若带新的预注册常量，`PREREG` 对象及其下方「为什么只预注册第一项」的论证要改。\n- **`## Global Constraints`** —— 新 Task 引入新纪律条目时。\n\n```json\n{\"unitsToModify\": [\"✅ 执行状态（2026-08-31 收尾回填）\", \"File Structure\", \"Task 5: status 登记 + 收尾\", \"Self-Review（写完计划后自查，已执行）\"], \"appendCost\": 4}\n```"
}