# 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, необовʼязковий): Дескриптор агента чи члена команди, що бере відповідальність за завдання.
- `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

Завершіть роботу і запишіть наступну залежність.

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

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

## Примітки

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