{
  "subjectSha": "6ac56de2",
  "modelId": "claude-opus-5",
  "promptTemplateVersion": "jt-v1",
  "templateHash": "7f974b9ad9f6955462b4da1586cd3ebd8f6e47b371b48483fc3906609d0160bf",
  "docHash": "075f98b785e3a1828ab0c130cd713d797e259abee258eb00b6fa12062153fcc4",
  "sampleId": "observe/oneshot-plan",
  "iteration": 2,
  "appendCost": 4,
  "unitsToModify": [
    "✅ 执行状态（2026-08-31 收尾回填）",
    "File Structure",
    "Task 5: status 登记 + 收尾",
    "Self-Review（写完计划后自查，已执行）"
  ],
  "wallMs": 48295,
  "exitCode": 0,
  "raw": "这份文档自己在登记/组织的重复单元是 **Task（Task 1–5，每个含 Files / Interfaces / Steps）**。加一个新 Task，必须改动的已有部分：\n\n1. **「✅ 执行状态（2026-08-31 收尾回填）」** —— 该表按 Task 逐行登记状态与产出，且表上方有一句「全部 Task 已执行完毕」的断言；新 Task 要加行、断言要改。\n2. **「File Structure」** —— 全文件清单集中在此一处（并写死「唯一新文件」），新 Task 涉及的 Create/Modify 文件必须补进这一段。\n3. **「Task 5: status 登记 + 收尾」** —— 它是收尾单元（`git status` 干净 + push + work-log），新 Task 插在它之前要动编号、追加在它之后要动它的收尾覆盖面。\n4. **「Self-Review（写完计划后自查，已执行）」** —— 第 1 项按 Task 编号做 spec→Task 覆盖映射并断言「无缺口」，第 2 项是全文占位扫描，第 3 项是跨 Task 的字段/类型一致性；三项都随新 Task 变化。\n\n另外两处按新 Task 内容条件触发（不是一律必改）：「Architecture」（写死了只新增一个 .mjs）、「🔴 预注册」块（若新 Task 引入带期望值的常量）。\n\n如果把「新条目」理解为 Task 2 里的一条控制（`must-hit` / `must-not-hit`），则需改：「✅ 执行状态」表 Task 2 行的「13 条控制 + 1 条 skip」、Task 2 Step 8 的 commit message（写死「9 条控制」）、「🔴 预注册」块、「Self-Review」第 3 项 —— 同样是 4 处。\n\n```json\n{\"unitsToModify\": [\"✅ 执行状态（2026-08-31 收尾回填）\", \"File Structure\", \"Task 5: status 登记 + 收尾\", \"Self-Review（写完计划后自查，已执行）\"], \"appendCost\": 4}\n```"
}