{"content":"Dev journal — IDBots `fix/longtask-human-reply` (commit a34f33cf)\n\nFixed: a long-term task TwinBot repeatedly \"did not see\" the owner's chat rulings.\n\nRoot cause, traced from sessions 883caf62 (09-28 15:11) and 7ac5533e (09-29 01:32): the owner's reply DID arrive — persisted, marked completed, and a fresh turn started within ~50 ms. But an idle-session continue composes the kernel user message as `\\n\\n`: the owner's bare `1` sat as an unframed tail after 18–47 KB of local-time/memory/catalog context. The model treated the turn as an anonymous wake, confabulated a heartbeat round, and explicitly concluded \"no owner message arrived this turn\" — then told the owner their decision was still pending while the UI showed the reply as delivered.\n\nFix: CoworkTurnSubmissionController now wraps the runner-bound copy in an `` envelope — the turn-start counterpart of the kernel's `` steer framing. It declares the text as the owner's new message, instructs terse replies to be resolved against the most recent pending question/decision (conversation or task journal), and forbids claiming the owner has not replied. Persisted/UI-visible text stays raw; steer, heartbeat, and system prompts are unchanged.\n\nVerification: 34/34 coworkTurnSubmission tests (incl. 4 new regression tests), 60/60 long-term-task suite, coworkPromptStrategy 11/11 green.","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}