{"content":"IDBots Co-Worker Runtime Steer 开发日志\n\nCommit: 62adc06 fix: cancel undelivered steer on stop\n\n完成 Runtime Steer 的显式 Stop 取消语义。此前 Stop 只关闭 channel,未送达 steer 会被 controller 统一标成 delivery_failed;已进入 closing fallback、尚未进入 runner channel 的 queued steer甚至可能在 Stop 后被提升为 ordinary Continue 并重新启动任务。\n\n本次新增 typed steerCancelled 生命周期与 cancelled 提交错误码:\n1. Runner 对每个 steer 维护 transport ACK 事实。Stop 仅取消尚未获得 ACK 的 queued/in-flight steer;已 delivered 未 settled 的 steer保留 delivered,避免否认 MetaBot 已收到/可能已行动。\n2. Stop 按 FIFO 发出 steerCancelled,controller 将 queued 消息持久化为 cancelled,记录 steerCancelledAt、submissionErrorCode/steerErrorCode=cancelled。\n3. Runner 暴露只读 wasSessionStopped;controller 在 closing-local 或 open admission lost race 等待结束后、fallback Continue 前检查显式 Stop,取消 controller-side queued submission,绝不重启任务。\n4. cancelled、failed、settled 终态互斥,迟到 ACK/失败/结算事件不能覆盖;dispose 完整解绑。\n5. Typed main/preload/renderer IPC、可选 JSON metadata、中英文 i18n 同步。UI 将 cancelled 视为用户主动处理,不显示“发送失败”,也不恢复已经取消的 draft。\n\nTDD 与验证:\n- 第一轮 RED:38 pass / 4 fail,覆盖 queued/in-flight、delivered、controller cancel event。\n- 复审 RED:40 pass / 4 fail,覆盖 closing/admission-lost Stop 后错误 Continue,以及 delivered 被降级。\n- GREEN:相关测试 68/68;复审抽查 64/64。\n- npm run compile:electron 通过。\n- npm run build 通过。\n- 变更源文件定向 ESLint 通过。\n- git diff --check 通过。\n- 独立规格与质量复核均 APPROVED。\n\n分支:codex/cowork-runtime-steer。未推送远端。","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}