# TaskUpdate

Модифицирует существующую задачу — её статус, содержимое, владение, метаданные или рёбра зависимостей. Так задачи проходят через свой жизненный цикл и так работа передаётся между Claude Code, сокомандниками и подагентами.

## Когда использовать

- Переход задачи по рабочему процессу статусов по мере работы над ней.
- Взятие задачи путём назначения себя (или другого агента) `owner`.
- Уточнение `subject` или `description` по мере понимания проблемы.
- Фиксация вновь обнаруженных зависимостей через `addBlocks` / `addBlockedBy`.
- Прикрепление структурированных `metadata`, таких как внешние ID тикетов или подсказки о приоритете.

## Параметры

- `taskId` (string, обязательный): задача для модификации. Получайте из `TaskList` или `TaskCreate`.
- `status` (string, необязательный): один из `pending`, `in_progress`, `completed`, `deleted`.
- `subject` (string, необязательный): новый императивный заголовок.
- `description` (string, необязательный): новое подробное описание.
- `activeForm` (string, необязательный): новый текст-спиннер в настоящем продолженном.
- `owner` (string, необязательный): handle агента или сокомандника, берущего ответственность за задачу.
- `metadata` (object, необязательный): ключи метаданных для слияния в задачу. Установите ключ в `null`, чтобы удалить его.
- `addBlocks` (array of strings, необязательный): ID задач, которые блокирует эта задача.
- `addBlockedBy` (array of strings, необязательный): ID задач, которые должны завершиться прежде этой.

## Рабочий процесс статусов

Жизненный цикл намеренно линеен: `pending` → `in_progress` → `completed`. `deleted` — терминальный, используется для отзыва задач, над которыми никогда не будут работать.

- Ставьте `in_progress` в момент фактического начала работы, не раньше. Одновременно только одна задача на владельца должна быть `in_progress`.
- Ставьте `completed`, только когда работа полностью сделана — критерии приёмки выполнены, тесты проходят, вывод записан. Если появляется блокер, держите задачу `in_progress` и добавьте новую задачу, описывающую, что нужно решить.
- Никогда не помечайте задачу `completed`, когда тесты падают, реализация частична или вы столкнулись с неразрешёнными ошибками.
- Используйте `deleted` для отменённых или дублирующих задач; не перепрофилируйте задачу под несвязанную работу.

## Примеры

### Пример 1

Взять задачу и начать её.

```
TaskUpdate(
  taskId: "t_01HXYZ...",
  status: "in_progress",
  owner: "main-agent"
)
```

### Пример 2

Закончить работу и зафиксировать follow-up зависимость.

```
TaskUpdate(
  taskId: "t_01HXYZ...",
  status: "completed"
)

TaskUpdate(
  taskId: "t_01FOLLOWUP...",
  addBlockedBy: ["t_01HXYZ..."]
)
```

## Примечания

- `metadata` сливается ключ за ключом; передача `null` для ключа удаляет его. Сначала вызовите `TaskGet`, если не уверены в текущем содержимом.
- `addBlocks` и `addBlockedBy` добавляют рёбра; они не удаляют существующие. Деструктивная правка графа требует выделенного процесса — проконсультируйтесь с владельцем команды перед переписью зависимостей.
- Держите `activeForm` синхронным при изменении `subject`, чтобы текст-спиннер продолжал читаться естественно.
- Не помечайте задачу `completed`, чтобы просто её заглушить. Если пользователь отменил работу, используйте `deleted` с кратким обоснованием в `description`.
- Прочитайте последнее состояние задачи через `TaskGet` перед обновлением — сокомандники могли изменить его между вашим последним чтением и записью.
