b27ffce9b4
用户在审批卡上写的意见此前只落到 `.agent/planning/approvals/v{n}.json` 就断了。
Supervisor 唯一的信息源是 `agent.run_status` 返回的 claimedDelegateContract,
那里面只有 contractStatus=user-revision-requested,没有承载原文的字段。于是它
按 playbook 第 6 条「把用户原话完整附在 task 里」写了句占位「请按审批卡上用户
提交的修改意见…」,子 Agent 收到的是空指令,只能自由发挥——实测用户写「把游戏
名称改成日本语」,产出的 v2 把标题从《裂隙脉冲》改成《裂潮航印》,仍是中文。
通道本来就有:决策卡的答案早就是这么送的——`append_user_input_answer_message`
把用户选择渲成一句 role=user 消息追加到 Supervisor 会话,下一轮 prompt 由
`prompt_history_sources` 现读现取。审批决定接上同一条通道即可。
因此不动 delivery schema,也不动 playbook:
- schema 加字段要连带改 validator、run_status 投影,还得让 e43133875 的
`static_delegate_structured_result_follows_claim_snapshot` 跟着 rebase 新字段,
否则 claim 重放冲突原样复发——多一处必须手工同步的地方。
- playbook 第 6 条的规则本来就在,缺的是原文本身,不是规则。
落点用 Supervisor 的**当前活动会话**(sessionId 传 None),不用 delivery 上的
parentSessionId——那是委派发出时的快照,不保证仍是可写的活动会话。
messageId 用 responseId 派生:`project_receipt_locked` 会被
`reconcile_plan_gdd_approval_projections_locked` 在每次 hydrate 重跑,不幂等就
每刷新一次多一条。
守门一条,两个断言都验过非空转:去掉追加,第一条断言红;换成非幂等 append,
重放后消息数 2 vs 1,第二条断言红。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>