{
  "subjectSha": "6ac56de2",
  "modelId": "claude-opus-5",
  "promptTemplateVersion": "jt-v1",
  "rung": "R2",
  "templateHash": "6a9de5b79d3d5cf3877970a22c0b4dbb5bcba17b7be11fb64eb00d6d244b82b0",
  "docHash": "075f98b785e3a1828ab0c130cd713d797e259abee258eb00b6fa12062153fcc4",
  "sampleId": "observe/oneshot-plan",
  "iteration": 5,
  "appendCost": 4,
  "unitsToModify": [
    "✅ 执行状态（2026-08-31 收尾回填）",
    "File Structure",
    "Self-Review",
    "Task 5: status 登记 + 收尾"
  ],
  "wallMs": 48959,
  "exitCode": 0,
  "raw": "按这份计划自己组织的单元（Task 1–5，每个 Task 一个单元）来加一个新 Task，需要改动以下已存在的部分：\n\n**1. `## ✅ 执行状态（2026-08-31 收尾回填）` 的 Task 状态表**\n表格按 Task 逐行列出「Task / 状态 / 实际产出」，新 Task 必须在此表插一行，否则它不在执行状态里。文档自身已有先例：计划外新增的 **Task 2′** 就是靠往这张表里插行才登记上的。\n\n**2. `## File Structure`**\nCreate / Modify 的文件清单是全计划共用的一段，不按 Task 分块。新 Task 若创建或修改任何文件，必须回到这一段追加条目。\n\n**3. `## Self-Review`**\n- 第 1 项「Spec 覆盖」是 spec 条目 → Task 编号的映射（`§5 第 2 项 → Task 3/4`、`N80.4 → Task 1 Step 4 + Task 4 Step 1`），新 Task 要进这张映射并重新声明「✅ 无缺口」。\n- 第 3 项「类型一致性」逐字点名了跨 Task 一致的字段（`STATES` 在 Task 1 Step 3/4 与 Task 2 Step 3/5/6、`c.proposalF4Ids` 由 Task 3 Step 1 注入），新 Task 若碰这些字段要补进该列举。\n\n**4. `## Task 5: status 登记 + 收尾`**\nTask 5 是终局单元（`git status` 确认干净 + push + work-log 追加）。新 Task 若是实质工作，必须插在 Task 5 之前 ⇒ Task 5 需重编号为 Task 6，且上述状态表、Self-Review 里出现的 Task 编号引用随之改；若接在 Task 5 之后，则收尾步骤的位置需要调整。\n\n**另外两处条件性改动（取决于新 Task 的内容，非结构性必改）：**\n- `## 🔴 预注册` 的 `PREREG` 常量块是全计划共用的单块，新 Task 若带预注册常量须改此块（Task 2′ 的实际做法是「阈值预注册后另行 commit」）。\n- `**Architecture:**` 段只描述了单一新文件 `metrics/f4-denominator-branches.mjs`，新 Task 若引入第二个文件须改写该段。\n\n**不需要改动的部分**：`Goal` / `Global Constraints` / pin 与 dump 表 / `🔴 探针撞出的两条` 段落 / Task 1–4 各自的正文步骤。\n\n```json\n{\"unitsToModify\": [\"✅ 执行状态（2026-08-31 收尾回填）\", \"File Structure\", \"Self-Review\", \"Task 5: status 登记 + 收尾\"], \"appendCost\": 4}\n```"
}