The assignee moves a task forward, and a stalled one goes up the reporting chain
Watching a role work on the cluster through mission-control wait (ADR 0024) showed a task can fall
between chairs. The Software Engineer needed a decision only a person could make, asked for it in a
comment as the built-in skill told it to, and ended its turn: the task stayed with its role, the
person was never told, and the question sat unseen until someone happened to look. The same happens
whenever a role's turn ends without handing the task on, or when its run fails: nobody holds the
task, and nothing in Mission Control notices. We decided
on one rule: whoever is assigned a task is the one to move it forward. A question is a handoff:
the task goes to whoever must answer, with the question as the handoff, and comes back with the
answer. A task in a working status is held when its assignee has its turn, or when it waits for
open subtasks or blockers, whose finishing wakes it. A role's task that is held by neither is
stalled, and Mission Control hands it on itself: to the stalled role's manager, who reports to
whom being the organization's reporting chain, with what the agent last said as the handoff. A
manager that stalls hands it further up, so a task ends with a person.
Considered Options
- Questions as comments addressed to a person, which made the task that person's turn while its role still held it: rejected. Someone would hold a task while someone else had to act on it, two rules where one does, and a new kind of comment, field and turn to keep.
- A person's turns including every task they follow: rejected; it fires on every comment and still does not say who was asked.
- A stalled task goes to the first person up the chain: rejected in favour of the chain itself. A manager is a role whose agent can act at once, hand the task back with guidance, give it to another role, or hand it to its own manager; people see what the roles beneath them could not settle.
- Reminders for tasks that sit with a person: left out. A task assigned to a person is their
turn, which
waitand the web app show; Mission Control does not chase people. - Detecting stalls by polling: rejected. A task stalls at moments the server sees: a role's turn ends or its run fails. It looks then, and once at startup for tasks that stalled before this.
- A run no runtime configuration serves as a stall: rejected. Such a run starts by itself once a configuration serves it, as Mission Control retries it whenever what serves runs changes (ADR 0019); moving its task away would lose that, and on a server not yet set up, every task given to a role would come straight back. The task page shows why it waits.
Consequences
- A turn ends in a handoff. The working-in-mission-control skill and the prompts say so: hand the task on when your part is done, hand it to whoever must answer when you need something, and end a turn without either only while you wait for subtasks or blockers. The reply that became a comment when an agent commented nothing still does while it waits for those; otherwise it is the stalled task's handoff.
- Escalation is a transition by Mission Control itself, to the role's manager as todo, with the reason "Stalled" and what happened: the agent's last words, or the run's error. A role without a manager hands to the person who last handed it the task, else its creator when a person. A task with none of those stays, and the server logs it.
- The stalled role's run stops when its task leaves it, as on any handoff, and keeps its session: when the task comes back, the agent continues where it was.
- A question keeps the task's status. An answer is a handoff back;
--assignee backhands a task to whoever handed it to you. - Waiting on subtasks still holds a task. A role keeps its parent while its subtasks run, and is woken as each finishes (ADR 0011). A subtask that stalls goes up the chain itself.
- The startup sweep acts on tasks already stuck. On the first start after this, tasks a role held with a waiting or failed run and nothing open go to managers at once.
- Sign-off is unchanged (ADR 0022): the guard is on roles moving a task to in review or done, not on Mission Control handing a stalled task to a manager.