transition
Move a task to a permitted status, validating required reasons, assignee ownership, and blockers to enforce workflow rules.
Instructions
Moves a task to another status along the fixed transition table.
Refusals: leaving in_progress without a summary filed since the last entry
into it — summary_required; entering in_progress without an assignee —
assignee_required, by anyone but the assignee — assignee_mismatch (assignee
and caller signature in details), with an open blocker — task_blocked;
open with incomplete sections — task_sections_incomplete; cancelled with
open children — task_has_unclosed_children; done —
closing_not_a_transition, since a task is closed by close_task; a move
outside the table — transition_not_allowed, the allowed targets in
details.allowed.
The tracker never moves a task into or out of waiting by itself: both moves
are the caller's. Each entry into in_progress, from any status including
waiting, starts a new pass of the task.
cancelled takes no verdicts. It clears the blocked feature of the tasks this
one blocked (blocks), with no entry in their cases.
The response names the new status and version and the number of the filed
status_changed entry.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Target status | |
| key | Yes | Task key `PROJECT-N`, case-insensitive; a previous key of a moved task addresses it as well. An unknown key is refused with `task_not_found` | |
| reason | No | Why the task moves. Required for any step back along `backlog < open < in_progress < done`, for `cancelled` and for `waiting` (`transition_reason_required` otherwise), optional elsewhere. For `waiting` it is the only record of what the task waits for. Filed in the `status_changed` entry |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| status | Yes | Task status | |
| entries | Yes | Numbers of the entries filed in this task's case, in filing order. Empty when the sent values were already in place; the version then stays the same | |
| version | Yes | Task version after the call | |
| parent_entry | No | Number of the `link_added` entry filed into the parent task's own case when `create_task` was given `parent`. `null` when no `parent` was given, and always `null` for `transition` and `update_task`: they touch no other task's case. |