# Auto-Accept Task When a New Topic Starts ## Goal Prevent unrelated follow-up conversation from being appended to the previous Task. When the Intent Agent decides that the user's current message starts a new topic, Beaver should silently accept the previous Task before processing the current message. ## User Experience - No confirmation dialog or extra assistant message is shown. - A related follow-up or requested change continues the existing Task. - An unrelated lightweight message is handled as `simple_chat`. - Unrelated work that needs Task capabilities is handled as `new_task`. - Before either new-topic path continues, the previous Task is formally accepted. ## Routing Rules The existing Intent Agent actions remain unchanged: - `continue_task` and `revise_task` belong to the active Task. - `close_task` and `abandon_task` keep their existing explicit semantics. - With an active Task, `simple_chat` means an unrelated lightweight new topic. - With an active Task, `new_task` means unrelated work that needs a separate Task. The Intent Agent guidance must explicitly distinguish unrelated lightweight conversation from revisions. A message must not be classified as `revise_task` merely because an active Task is awaiting acceptance. ## State Transition Before processing a `simple_chat` or `new_task` decision: 1. Check whether the active Task is `awaiting_acceptance`. 2. Find its latest completed run. 3. Record a normal `accept` acceptance against that run. 4. Continue processing the current message using the original routing decision. The normal acceptance path must be reused so that the Task becomes `closed`, `final_accepted_run_id` is recorded, acceptance events are persisted, run memory is updated, and skill-learning candidates can be generated. Tasks without an acceptance-eligible completed run are left unchanged. Router failures retain the existing conservative `continue_task` fallback and must not auto-accept a Task. ## Testing Backend tests must cover: - An unrelated `simple_chat` message accepts the previous Task and is not appended as another Task run. - A `new_task` decision accepts the previous Task and creates a separate Task. - `continue_task` and `revise_task` do not auto-accept the active Task. - Router failure fallback does not auto-accept the active Task. - Auto-accept records the final accepted run and normal acceptance history.