Talking About Finished Work
A done report arrives. Dad reads the Korean lines on his phone and has a question: why did you pick that approach, did you check the iPad too, where is the build. That is a perfectly normal thing to want. The worker that did the job still holds the context, and asking it is far cheaper than asking anyone else.
It is also a trap. The work is closed. Its binding is resolved, its obligation paid, its notification sent. If a question about that work could quietly turn it back into live work, every casual why would risk resurrecting a task nobody decided to resurrect, with a worker taking new actions on a contract that has already been settled. So Coop lets the conversation happen and makes sure it stays a conversation.
One Door Chooses the Path
Dad's replies through his Pippa chat and through Telegram both go through the same control facade, and Control.reply decides what a reply becomes. It starts the same way every time: the reply is recorded in the item's thread. Then it looks at the most recent binding for that item.
- No binding at all. The reply is
recorded_only. Nobody ever worked on this through Coop, so there is nobody to tell. - The worker's session is not a managed, actively enrolled chat. Still
recorded_only, with the detail The recorded worker is not connected. No other session was selected. - A todo whose binding is still active. This is the previous lesson: a
reply_review, marked as a reply to Dad, because a reply on live work may change the contract. - Anything else (a resolved todo, or a request): a
followupenvelope to that exact session, carrying the reply and aclosedflag that is true when the binding is no longer active.
That second bullet is a design choice worth noticing. When the worker that did the job is gone, the facade does not pick another session to answer in its place. The module's first line says it has no inferred recipient. A different chat answering a question about work it never saw would be guessing, and its guess would arrive looking like an answer.
What the Worker Is Told
The follow-up prompt asks the worker to answer with COOP_REPLY and the envelope's id, on its own hidden line like every other token, and to write the answer in plain Korean lines, because Coop relays it to Dad as written. When the flag says closed, it adds one more sentence: The work is closed. Discuss its result; do not reopen it or start new work. The workflow document states the rule the same way: a follow-up does not reopen the task or authorize new work, and new work belongs in a new todo.
What the Code Does Not Do
The sentence in the prompt is not the guard. The guard is that the follow-up path has nothing to reopen with. When the adapter sees a final carrying the right COOP_REPLY, it calls relay_reply, which strips the token, runs the text through the same dad_text that keeps report JSON away from Dad, and enqueues an attention line with reason worker_reply. If the worker said nothing usable, the line reads The worker acknowledged the follow-up. Then the envelope is marked applied.
That is the entire branch. It does not touch the binding, does not create an obligation, does not change the item's status. It does read report JSON, if the worker pasted any: dad_text decodes it to lift the for_dad lines out for Dad. But nothing on this path commits a report or ever calls Engine.report, and the work envelope stopped being observed when its last binding resolved. Even a done that somehow reached Engine.report would name a resolved binding and be refused. Two independent reasons, the prompt and the structure, and only the structural one is load-bearing.
Why Not Just Reopen?
Some trackers reopen an issue automatically when someone comments on it. It feels helpful and it is quietly destructive. The status of an item stops meaning someone decided this is finished and starts meaning nobody has commented lately. Coop's lifecycle keeps those apart. A closed item changes state only when someone with authority makes a new decision, and the natural way to express new work is a new todo with its own contract, its own binding and its own report. A follow-up is how Dad talks to the worker. A todo is how he asks it to do something.