docs(canon): ре-прогон канон-блока на mappa-setup@0.2.8 (task:3030) + refresh .mappa/share

This commit is contained in:
2026-09-19 09:45:08 +03:00
parent e3fb31112b
commit 7939ce3611
12 changed files with 234 additions and 130 deletions

View File

@@ -1,34 +1,28 @@
---
title: Runbook — tasks
summary: Как работать с тасками mappa: ориентация, выбор (priority/due), взятие (status+owner), исполнение, закрытие, review-связка, comment. Контракт: wiki:2660 (interactive). Источник: brainstorm:173.
summary: Как работать с тасками mappa: ориентация (task_list/board_digest), взятие (status+owner, version+409), ведение (comment-след, blocked_by), optimistic-конфликт 409→retry, закрытие с Review-методом. Контракт: wiki:2660.
type: runbook
tags: [mappa, runbook, tasks, agent]
tags: [mappa, runbook, task, agent]
---
# Runbook: tasks
# runbooks/tasks — как работать с тасками
Цикл работы с таской: ориентация → выбор → взятие → исполнение → закрытие.
Процедура «взять → вести → закрыть таску». Канон-контекст: [[canon/gates]] Г2 (каналы), Г4 (адресация). Обновляется при изменениях.
## Ориентация / выбор
- Доска проекта: `task_list(project, parent='root')` (корни) или `board_digest(project)` (счётчики+overdue+blocked). Кросс-проектно: `board_digest()` без project.
- Выбор по приоритету/дедлайну. Priority — территория человека: агент ставит P0P2/deadline только при создании, дефолт P1. Overdue → notify (admin_overdue_scan), авто-бамп запрещён.
- Таска без `**Review:**` в описании — не принимается к работе (вернуть постановщику, правило 14).
## 1. Ориентация / выбор
- Доска: `task_list(project, status=…)` (компакт: ref/status/priority/title) или `board_digest(project)` (счётчики + overdue/blocked).
- Взять: `task_get(ref)` → свежая `version``task_update(status='active', owner=<identity>, version)` — CAS; конфликт → 409 (см. п.3).
- Owner — только реально работающий; не брать чужую active-таску.
## Взятие (interactive contract, wiki:2660)
`task_update(project, id, status='active', owner=<себя>, version=<из task_get>)` — одной мутацией (status→active + owner). Версия — optimistic concurrency: конфликт → 409 → re-GET → retry.
## 2. Ведение
- `comment_create` — короткий след «где остановился» (не носитель вердиктов — они письмами, канон Г2).
- blocked_by: `edge_create(from, to, blocked_by)` / снять `edge_delete` (парные review-таски).
- Пауза/переключение: `task_update(status='paused'|'ready', reason)`.
## Исполнение
- Работаешь по критериям приёмки из описания; след «где остановился/что попробовал» — comment_create (короткий), вердикты/отчёты — письмом (Г2).
- Смена фокуса → status=paused/ready с reason (не бросать в active).
## 3. Optimistic-конфликт (version+409 → retry)
> **Optimistic-конфликт:** update/close идут с `version` (из `task.get`) → конфликт → **409** → перечитай `task.get` свежим → retry с новой `version`. НЕ работай со stale-version (виден по POST /session 14.7%, POST /requirements/update 23.1% — телеметрия, дайджест 2069).
## Закрытие (handover)
- Перед close: проверить покрытие критериев + метод ревью из описания выполнен (`subagent` прогнан / `next-session` review-таска существует / `none` обоснован).
- `task_close(project, id, version)` → status=done.
- Review-связка: импл-таска → парная `<slug>-review` (blocked, blocker=impl) ИЛИ зонтик на кластер (не BOTH). Ревьюер — следующая сессия, НЕ имплементер. Вердикт ревью — письмом полностью.
## 4. Закрытие
- `task_close(ref, version)`: критерии приёмки выполнены И review-метод из `**Review:**` поля исполнен (правило 14: subagent прогнан / next-session review-таска существует / none обоснован).
- done → парная review-таска разблокируется (если была).
## Создание таски (для босса/делегирования)
`task_create(project, slug, title, description, status='ready', priority=P1, session_id)`. Номер — только из ответа. Делегирование кросс-проект = пара: таска + сопроводительное письмо (inbox_send) — таска на борде не пингует живую сессию.
- Зависимости: `edge_create(from, to, 'blocked_by')` (task→task, цикл → 422).
- Импл-таска обязана нести `**Review:**` (subagent | next-session | none).
## Связано
[[runbooks/index]] · [[canon/gates]] (Г2 каналы) · [[runbooks/inbox]] · контракт wiki:2660 · brainstorm:173 · requirements:23
**Связи:** [[runbooks/index]] · [[canon/gates]] · [[canon/index]]