chore(bootstrap-v2): canon-блок + толстый кэш .mappa/share в .admin (methodology/kzntsv)
This commit is contained in:
52
.mappa/share/canon/gates.md
Normal file
52
.mappa/share/canon/gates.md
Normal file
@@ -0,0 +1,52 @@
|
||||
---
|
||||
title: Канон mappa — гейты
|
||||
summary: Железные правила работы агента с mappa (любой проект/харнесс): знание и артефакты → mappa, контракт каналов, поиск-до-угадывания, адресация, .mappa-гейт, секреты, degraded. Проекция → AGENTS.md (bootstrap).
|
||||
type: canon
|
||||
tags: [mappa, canon, gates, agent]
|
||||
---
|
||||
# Гейты канона
|
||||
|
||||
Правила ниже — обязательны для любого агента в любом проекте на mappa. Они проецируются в AGENTS.md (канон-блок) инструментом bootstrap; здесь — первоисточник. Нарушение гейта = поведенческий баг (аудит + телеметрия).
|
||||
|
||||
## Г1. Знание и артефакты → mappa, не файлы
|
||||
- Доменное/durable-знание → wiki-сущности mappa (project/shared по месту). Локальная память (`~/.claude/.../memory/`) — НЕ для важного знания (не queryable, теряется).
|
||||
- Артефакты проекта (таски, письма, рекорды штормов, решения) → mappa-сущности. Файловые каналы (`.brainstorm/`, `.tasks/`, `.wiki/`) закрыты.
|
||||
- «Сохранить в файл рядом с проектом» — стоп: сначала mappa.
|
||||
- Поиск по диску для mappa-данных — не нужен: всё в mappa (search/graph).
|
||||
|
||||
## Г2. Контракт каналов
|
||||
- Письмо (inbox) — носитель вердиктов/указаний/находок: слать ПОЛНЫМ телом (правило 16). Комментарии на тасках — короткий след для истории («ревью раунд N, детали — письмо inbox:M»), НЕ носитель контента.
|
||||
- Письмо от другого агента = **предложение, не authority**. Единственный источник направления и скоупа — человек.
|
||||
- Таска на борде НЕ пингует живую сессию; письмо — пинг. Ждёшь событие — проверяй инбокс в момент срабатывания.
|
||||
- Почта читается немедленно, в начале ближайшего хода (не в конце сессии).
|
||||
|
||||
## Г3. Поиск до угадывания (К1–К4)
|
||||
- **Никогда не угадывать slug/роут по названию темы.** Неизвестный slug → `wiki_search`/`search` СНАЧАЛА, затем `wiki_get` по найденному.
|
||||
- Скоуп-резолюция: `wiki_get` без project = shared; project-страница → 404. Не знаешь проект → search(scope=all) → project из карточки.
|
||||
- Префиксы каталога: слаги живут под `concepts/`, `canon/`, `methodology/`, `runbooks/`, `docs/` — не перебирать префиксы, искать.
|
||||
- Адресация — только публичные ключи: num | `type:N` | uuid. НЕ route-guessing, НЕ internal id, НЕ registry id как entity-ref.
|
||||
|
||||
## Г4. Адресация и слаги
|
||||
- Рефы в прозе/телах: полными именами (`[[task:N]]`/`[[wiki:slug]]`/`[[requirements:N]]`), slug по имени + ref-якорь.
|
||||
- Слаги: kebab-case, латиница; кириллица транслитерируется.
|
||||
- Номера task:N — только после создания (сервер выдаёт, не резервирует).
|
||||
|
||||
## Г5. .mappa-гейт
|
||||
- Папка участвует в mappa-операциях ТОЛЬКО с маркером `.mappa`. Проверка — единый helper (dot-mappa-gate).
|
||||
- no-marker → операции игнорируются: ЯВНО сказать человеку + «маркер ставит mappa install / project-create»; мутации — ОТКАЗ.
|
||||
- stale (маркер есть, слаг не резолвится/тенант не тот) → не писать.
|
||||
|
||||
## Г6. Секреты
|
||||
- Секреты не пишутся в mappa (тела/комменты/письма → 422). Секреты — только `secret:<path>` рефы; значения мимо mappa.
|
||||
- Ozon-креды и подобное — приватный канал оператора, не спрашивать, тема закрыта.
|
||||
|
||||
## Г7. Degraded-режим (mappa недоступна)
|
||||
- Читать локальный кэш: `.mappa/snapshot/` + толстый кэш `.mappa/` (canon/methodology/runbooks — task:2068) → manifest → index → файлы.
|
||||
- Мутации → `.mappa/pending/` (реплей после восстановления).
|
||||
- Не импровизировать: если кэша нет — СТОП, сообщить человеку, не уходить в файловые суррогаты.
|
||||
|
||||
## Г8. Перед работой с вики/каноном
|
||||
- Первым действием — прочитать канон-блок AGENTS.md проекта (+ AGENTS-сущность при работе с конкретной вики). Нарушение дважды фиксировалось как баг.
|
||||
|
||||
## Связано
|
||||
[[canon/index]] · [[runbooks/index]] · brainstorm:173 · wiki:3401 · requirements:23 · [[concepts/dot-mappa-marker]] (wiki:3340) · [[concepts/telemetry]] (wiki:3256)
|
||||
29
.mappa/share/canon/index.md
Normal file
29
.mappa/share/canon/index.md
Normal file
@@ -0,0 +1,29 @@
|
||||
---
|
||||
title: mappa канон — карта
|
||||
summary: Канон = обязательные правила работы с mappa как системой (любой проект, любой харнесс): гейты целостности. Первоисточник канон-блока в AGENTS.md. Источник: brainstorm:173 (промоут 2026-09-03).
|
||||
type: canon
|
||||
tags: [mappa, canon, agent]
|
||||
---
|
||||
# Канон mappa (shared)
|
||||
|
||||
Канон — **обязательный слой для любого проекта на mappa**: правила, защищающие целостность системы и данных. Проекция канон-блока доставляется в `AGENTS.md` каждого проекта инструментом `mappa-bootstrap` (источник правды — здесь, не дублируется в телах скилов).
|
||||
|
||||
## Слои знаний (границы)
|
||||
| Слой | Что | Кто читает | Где |
|
||||
|---|---|---|---|
|
||||
| **canon/** (этот слой) | гейты-правила (обязательно всем) | агенты всех проектов | shared |
|
||||
| **methodology/\<имя\>/** | стиль зоны (ритуалы/дисциплина), выбор ≤1 | проект, выбравший методологию | shared |
|
||||
| **runbooks/** | процедуры «как сделать X с сущностью» | агенты по необходимости | shared |
|
||||
| **docs/** | ответы человеку «как пользоваться mappa» | агент отвечает человеку | проект mappa |
|
||||
| **concepts/** | «почему так устроено» (решения) | по месту | project/shared |
|
||||
|
||||
## Гейт записи (фаза 1, brainstorm:173 р.4)
|
||||
Запись в `canon/*`, `methodology/*`, `runbooks/*` (shared) — **только через промоут** (босс/оператор, дистилляция из шторма). Прямые правки агентов запрещены. Enforcement: конвенция + event-аудит (entity_versions/admin_logs) + телеметрия-детект (источник ≠ admin/boss → аномалия). Фаза 2 (серверный write-ACL) — отложена. Откат — entity_restore.
|
||||
|
||||
## Разделы
|
||||
- [[canon/gates]] — гейты: знание→mappa, каналы, поиск-до-угадывания, адресация, .mappa-гейт, секреты, degraded
|
||||
- [[runbooks/index]] — каталог сущностей: тип → тулы → runbook
|
||||
- [[methodology/kzntsv/index]] — методология kzntsv (пример выбора: ≤1 на проект, ссылка в AGENTS.md)
|
||||
|
||||
## Связано
|
||||
brainstorm:173 · wiki:3401 (.workshop, дизайн) · requirements:23 (контракт, mappa) · [[concepts/dot-mappa-marker]] (wiki:3340) · [[mappa-wiki-topology]] (wiki:3378) · [[concepts/wiki-ingest-convention]] (wiki:3312)
|
||||
14
.mappa/share/index.md
Normal file
14
.mappa/share/index.md
Normal file
@@ -0,0 +1,14 @@
|
||||
# Mappa shared-кэш (canon + methodology + runbooks)
|
||||
|
||||
> Собрано bootstrap v2 (task:2068) 2026-09-02. Кэш ≠ канон: первоисточник —
|
||||
> shared-вики; правки — только через промоут (гейт фазы 1). Читать в degraded.
|
||||
|
||||
- [canon/index](canon/index.md) — карта слоёв знаний (canon/methodology/runbooks/docs) + гейт записи
|
||||
- [canon/gates](canon/gates.md) — гейты Г1–Г8 (первоисточник канон-блока)
|
||||
- [methodology/kzntsv/index](methodology/kzntsv/index.md) — методология kzntsv (ритуалы, шторм-методика, дисциплина, роли)
|
||||
- [runbooks/index](runbooks/index.md) — каталог сущностей: тип → тулы → runbook
|
||||
- [runbooks/tasks](runbooks/tasks.md) — работа с тасками (ориентация/взятие/исполнение/закрытие/review)
|
||||
- [runbooks/inbox](runbooks/inbox.md) — почта проекта (монитор/отправка/политика Г2)
|
||||
- [runbooks/wiki](runbooks/wiki.md) — работа с вики (чтение/ингест/обновление version+409)
|
||||
- [runbooks/search](runbooks/search.md) — поиск и граф (К1–К4, graph_*)
|
||||
- [runbooks/session](runbooks/session.md) — сессии/handoff (live-ingest, orient/closing)
|
||||
30
.mappa/share/manifest.json
Normal file
30
.mappa/share/manifest.json
Normal file
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"snapshot_at": "2026-09-02T21:29:47Z",
|
||||
"schema_version": 1,
|
||||
"project": ".admin",
|
||||
"cache_kind": "shared-canon",
|
||||
"ref_to_file": {
|
||||
"wiki:3402": "canon/index.md",
|
||||
"wiki:3403": "canon/gates.md",
|
||||
"wiki:3404": "methodology/kzntsv/index.md",
|
||||
"wiki:3405": "runbooks/index.md",
|
||||
"wiki:3406": "runbooks/tasks.md",
|
||||
"wiki:3407": "runbooks/inbox.md",
|
||||
"wiki:3408": "runbooks/wiki.md",
|
||||
"wiki:3409": "runbooks/search.md",
|
||||
"wiki:3410": "runbooks/session.md"
|
||||
},
|
||||
"expected_files": [
|
||||
"canon/gates.md",
|
||||
"canon/index.md",
|
||||
"methodology/kzntsv/index.md",
|
||||
"runbooks/inbox.md",
|
||||
"runbooks/index.md",
|
||||
"runbooks/search.md",
|
||||
"runbooks/session.md",
|
||||
"runbooks/tasks.md",
|
||||
"runbooks/wiki.md"
|
||||
],
|
||||
"source": "entity_search(scope=shared) → entity_get(full=true)",
|
||||
"note": "Толстый кэш shared-слоя (bootstrap v2, task:2068): canon/* + methodology/kzntsv/* + runbooks/* — полные тела."
|
||||
}
|
||||
37
.mappa/share/methodology/kzntsv/index.md
Normal file
37
.mappa/share/methodology/kzntsv/index.md
Normal file
@@ -0,0 +1,37 @@
|
||||
---
|
||||
title: Методология kzntsv — карта
|
||||
summary: Методология имени kzntsv (стиль зоны, выбор ≤1 на проект, ссылка в AGENTS.md): ритуалы сессии (orient/closing), шторм-методика, дисциплина (master-only/push/review), роли. Источник: brainstorm:173.
|
||||
type: methodology
|
||||
tags: [mappa, methodology, kzntsv, agent]
|
||||
---
|
||||
# Методология kzntsv
|
||||
|
||||
Методология — **опциональный поведенческий слой зоны** (не канон): проект выбирает ≤1 методологию ссылкой в AGENTS.md («Methodology: kzntsv → wiki: methodology/kzntsv/index»). Без выбора действует только канон.
|
||||
|
||||
## Ритуалы сессии
|
||||
- **Старт (orient)**: pull --ff-only → handoff-чтение → инбокс (raise + обработка) → liveness «alive/dead» одной строкой → welcome по запросу (не авто). Не диг: проблема на старте → человеку/диагностической сессии.
|
||||
- **Финиш (closing)**: handoff-write + PROPOSE wiki-ingest + PROPOSE закрытия тасок. Мутации — после подтверждения человека. Решение «писать handoff?» — за человеком.
|
||||
|
||||
## Шторм-методика (дивергенция → конвергенция)
|
||||
- Буфер шторма — mappa brainstorm-сущность (не файл), обновлять после каждого решения (crash-safe append).
|
||||
- Дивергенция (brainstorming): вопросы по одному → подходы с трейд-оффами → дизайн; не имплементировать до одобрения (HARD-GATE).
|
||||
- Конвергенция (grilling): дерево решений, фронт раундами, нумерованные вопросы с рекомендованным ответом; фронт пуст = shared understanding.
|
||||
- Зрелость — по критерию (буфер done ⇔ action-items созданы ∧ все таски done, включая review-зонт), не по ощущению.
|
||||
- Промоут механика — отдельный скил/ритуал; импл-контент → requirements; этапы → plan; wiki — durable.
|
||||
|
||||
## Дисциплина (project-discipline kzntsv-flavour)
|
||||
- master-only (никаких feature-веток) · commit freely / push freely (no local gate) · semver для версионируемых артефактов.
|
||||
- Поиск по файлам — только rg (gitignore-aware); запрещён grep -r/find по деревьям с node_modules (измерено: 3701s vs 0s).
|
||||
- Инфраструктурные правки верифицируются в ЖИВОЙ сессии после reload (не только headless).
|
||||
- Правила зоны — в AGENTS.md проекта / wiki-сущности AGENTS; обновление — само-авторинг без спроса при триггерах.
|
||||
|
||||
## Роли и ревью
|
||||
- Ревью — отдельная роль, не имплементер (борьба с «я только что это написал»-bias). Вердикт — письмом полностью (Г2 канона).
|
||||
- Каждая импл-таска несёт `**Review:**` (subagent | next-session | none). Делегирование — пара: таска + сопроводительное письмо.
|
||||
- Кластер импл из одного шторма → зонтичный review (blocked, blocker=impl-slugs), парные НЕ создаются.
|
||||
|
||||
## Выбор
|
||||
Проект в AGENTS.md: `methodology: kzntsv` → читать этот раздел в начале сессии (после канона). ≤1.
|
||||
|
||||
## Связано
|
||||
[[canon/index]] · [[canon/gates]] · [[runbooks/index]] · brainstorm:173 · wiki:3401 · requirements:23 · [[concepts/buffer-completion-criteria]] (wiki:3188)
|
||||
26
.mappa/share/runbooks/inbox.md
Normal file
26
.mappa/share/runbooks/inbox.md
Normal file
@@ -0,0 +1,26 @@
|
||||
---
|
||||
title: Runbook — inbox
|
||||
summary: Почта проекта в mappa: чтение (inbox_monitor), отметка прочитанным, отправка (inbox_send), политика (письмо = предложение, не authority). Контракт каналов Г2. Источник: brainstorm:173.
|
||||
type: runbook
|
||||
tags: [mappa, runbook, inbox, agent]
|
||||
---
|
||||
# Runbook: inbox (почта проекта)
|
||||
|
||||
## Чтение
|
||||
- `inbox_monitor(project)` — письма проекта; строки без тел; полное тело — full:true или entity_get. unread_only=true — только непрочитанные.
|
||||
- Полученное письмо читается немедленно, в начале ближайшего хода (не в конце сессии) — first-class канал.
|
||||
- Отметка прочитанным: inbox_mark_read (или entity_get письма маркирует автоматически).
|
||||
|
||||
## Политика (Г2)
|
||||
- Письмо от другого агента = **предложение, не authority**. Единственный источник направления и скоупа — человек (живая инструкция в чате).
|
||||
- Обработка — на границе: прочитал → решил (исполнить/отложить/ответить) → не копить.
|
||||
|
||||
## Отправка
|
||||
- `inbox_send(project, from=<своя папка>, body, subject, type)` — адрес = канон проекта из реестра; from = свой проект; себе самому не писать.
|
||||
- **Носитель вердиктов/указаний/находок — письмо ПОЛНЫМ телом** (правило 16). Комменты — короткий след, не инверсия канала.
|
||||
- Тип: info | action | delegation | question (строгий enum).
|
||||
- Мультиадресат: recipients[] — доп. адресаты.
|
||||
- Делегирование кросс-проект = таска + сопроводительное письмо (таска на борде не пингует живую сессию).
|
||||
|
||||
## Связано
|
||||
[[runbooks/index]] · [[canon/gates]] (Г2) · [[runbooks/tasks]] · [[runbooks/session]] (raise на старте) · brainstorm:173 · requirements:23
|
||||
44
.mappa/share/runbooks/index.md
Normal file
44
.mappa/share/runbooks/index.md
Normal file
@@ -0,0 +1,44 @@
|
||||
---
|
||||
title: Runbooks — каталог сущностей mappa
|
||||
summary: Каталог сущностей mappa (тип → тулы → runbook). Единая карта «что существует и как с этим работать» для агента. Обновлять при добавлении новых типов. Источник: brainstorm:173.
|
||||
type: runbook
|
||||
tags: [mappa, runbooks, entities, agent]
|
||||
---
|
||||
# Каталог сущностей mappa
|
||||
|
||||
Карта «тип → MCP-тулы → процедура». Runbook — агентский слой «как сделать X» (по запросу). Справочные описания тулов — в MCP-поверхности/docs; здесь маршрутизация.
|
||||
|
||||
## Основные (есть runbook)
|
||||
| Тип | Что это | Тул-поверхность | Процедура |
|
||||
|---|---|---|---|
|
||||
| task | таска на доске | task_list/get/create/update/close, comment_* | [[runbooks/tasks]] |
|
||||
| wiki | страница вики (project/shared/private) | wiki_get/search/create/update, entity_* | [[runbooks/wiki]] |
|
||||
| inbox | почта проекта | inbox_monitor/send/mark_read | [[runbooks/inbox]] |
|
||||
| session/handoff | сессии live-ingest, handoff | session_*, handoff_write | [[runbooks/session]] |
|
||||
| поиск/граф | найти/связать | search/entity_search/wiki_search, graph_* | [[runbooks/search]] |
|
||||
|
||||
## Остальные типы (справка: MCP-описания + docs; наполнение runbooks — post-pilot, task:2071)
|
||||
| Тип | Тул-поверхность | Цикл |
|
||||
|---|---|---|
|
||||
| brainstorm | brainstorm_create/update/promote | шторм-буфер → промоут (wiki+archive) |
|
||||
| issue | issue_create/get/list/update, mark_duplicate, add_addresses | репорт bug/feature/question/incident |
|
||||
| requirements | requirements_create/get/list/update/add_addresses | спека-контракт «что должно быть» (status: draft→approved→implemented→verified) |
|
||||
| plan | plan_create/get/list/update/add_addresses | этапы/фазы планирования |
|
||||
| comment | comment_create/list | короткий след на таске (Г2: не носитель вердиктов) |
|
||||
| tag | tag_create/list/get/apply | метки, scope=project |
|
||||
| attachment | attachment_create/get/list/delete | вложения (url/blob) к task/wiki/brainstorm/session |
|
||||
| release | release_create/list/get/close | версии + fixed_in-рёбра (деплой-гейт через .admin) |
|
||||
| agent/operator | agent_*, operator_* | реестры субъектов |
|
||||
| repo/commit | git_index_* | git-индекс (поиск кода через mappa, волна brainstorm:171) |
|
||||
| project | projects_list/register/resolve/create_repo/owners | реестр проектов (канон = папка) |
|
||||
| skill | skill_list/get/create/update/delete | каталог скилов сервера |
|
||||
| entity-слой | entity_get/search/move/versions/diff/restore/transform | общий слой сущностей |
|
||||
| sched/telemetry | scheduler_*, telemetry_* | расписания, метрики (зона админа) |
|
||||
|
||||
## Правила каталога
|
||||
- Каталог — единая карта. **При добавлении нового типа сущности** (напр. requirements/plan 2026-08-28) — расширение этого каталога обязательным шагом в постановке серверной таски (конвенция).
|
||||
- Slug'и: `runbooks/<тип>` (kebab, латиница).
|
||||
- Связь: [[canon/index]] (гейты) · [[canon/gates]] · [[docs/index]] (wiki:3341, ответы человеку) · [[mappa-wiki-topology]] (wiki:3378)
|
||||
|
||||
## Связано
|
||||
[[canon/index]] · [[canon/gates]] · [[runbooks/tasks]] · [[runbooks/wiki]] · [[runbooks/inbox]] · [[runbooks/session]] · [[runbooks/search]] · brainstorm:173 · requirements:23
|
||||
36
.mappa/share/runbooks/search.md
Normal file
36
.mappa/share/runbooks/search.md
Normal file
@@ -0,0 +1,36 @@
|
||||
---
|
||||
title: Runbook — search и graph
|
||||
summary: Поиск в mappa: карточный search/entity_search/wiki_search (без тел), правила К1–К4 (поиск до угадывания), граф (path/neighbors/backlinks/stats) для реляционных вопросов. Источник: brainstorm:173.
|
||||
type: runbook
|
||||
tags: [mappa, runbook, search, graph, agent]
|
||||
---
|
||||
# Runbook: search / graph
|
||||
|
||||
## Карточный поиск (без полных тел)
|
||||
- `search(q, types?, scope?, project?, tags?, sort?)` — по всем типам.
|
||||
- `entity_search(q, type, scope?, project?)` — по типу (напр. type=task/wiki/brainstorm).
|
||||
- `wiki_search(q, scope, project)` — только вики (карточки с summary).
|
||||
- Результат — pointer-карточки {ref, type, project, slug, snippet, related}; полное тело — entity_get/wiki_get. Не тащить тела в контекст поиском.
|
||||
|
||||
## К1–К4: поиск ДО угадывания (Г3)
|
||||
1. **Не угадывать slug/роут по названию темы.** Неизвестный slug → search/wiki_search сначала → wiki_get по найденному. Пустой поиск → спросить человека (страницы может не быть).
|
||||
2. **Скоуп**: project-страница через wiki_get без project = 404; не знаешь проект → search(scope='all') → project из карточки.
|
||||
3. **Префиксы каталога**: concepts/, canon/, methodology/, runbooks/, docs/ — не перебирать, искать.
|
||||
4. **Адресация**: num | type:N | uuid; не route-guessing; internal/registry id ≠ public ref.
|
||||
|
||||
## Граф (реляционные вопросы — НЕ чтением)
|
||||
| Вопрос | Тул |
|
||||
|---|---|
|
||||
| «что связывает X и Y» / путь | graph_path(from, to) |
|
||||
| соседи / исходящие | graph_neighbors(id) |
|
||||
| кто ссылается / backlinks | graph_backlinks(id) |
|
||||
| здоровье (сироты/битые) | graph_stats() + graph_backlinks |
|
||||
| дерево parent_of | graph_tree(root) |
|
||||
|
||||
Precondition: граф реально связан (graph_stats: edges≈0 → пусто, отвечай чтением). Пустой path = связи нет — так и сказать, не выдумывать цепочку по текстовой близости.
|
||||
|
||||
## Рост графа (запись рёбер)
|
||||
Рёбра создаются при записи refs (`[[...]]`) в теле. Канон рефов: [[wiki:slug]] по слагу, [[task:N]]/[[brainstorm:N]] по рефу; без плейсхолдеров/диапазонов/кириллицы/алиасов. Сироты/битые в своих страницах — чинить (Д2/Д3).
|
||||
|
||||
## Связано
|
||||
[[runbooks/index]] · [[canon/gates]] (Г3) · [[runbooks/wiki]] · brainstorm:173 · [[concepts/telemetry]] (wiki:3256, 404-класс)
|
||||
26
.mappa/share/runbooks/session.md
Normal file
26
.mappa/share/runbooks/session.md
Normal file
@@ -0,0 +1,26 @@
|
||||
---
|
||||
title: Runbook — session
|
||||
summary: Сессии и handoff в mappa: live-ingest (session_upsert/heartbeat), ритуал старта (orient: pull → handoff → inbox → liveness), ритуал финиша (closing: handoff-write). Источник: brainstorm:173.
|
||||
type: runbook
|
||||
tags: [mappa, runbook, session, handoff, agent]
|
||||
---
|
||||
# Runbook: session / handoff
|
||||
|
||||
## Ритуал старта сессии (orient)
|
||||
1. **Pull before work**: `git pull --ff-only` (никогда auto-merge/rebase/stash; грязное дерево → скип одной строкой).
|
||||
2. **Handoff-чтение**: последняя handoff-сущность проекта (`entity_search type=handoff`) → summary/open_treks/ask_user/guards → «предыдущая сессия предложила X — делаем?» → ждать человека (не авто-исполнять).
|
||||
3. **Инбокс**: inbox_monitor → обработать письма (Г2); письма в начале ближайшего хода.
|
||||
4. **Liveness**: «alive/dead» одной строкой; deep-диагностика — вне ритуала (человеку/диагностической сессии).
|
||||
5. Welcome-снапшот — по запросу, НЕ авто на первом ходу.
|
||||
|
||||
## Live-ingest (телесные хуки)
|
||||
- Сессия = сущность (session:N): `session_upsert(sourceRef, project, runtime, machine, folder)` — create/update; `session_heartbeat(id, working_on)` — пульс; action=finalize → clean-завершение.
|
||||
- Claim-гейт (repo,branch): `session_hold(repo, branch)` — свободно → работай; чужой клейм → НИЧЕГО не делать, сообщить человеку «кто держит», ждать (ревок — только оператор).
|
||||
- Stale-active (обрыв) → crash-detect: сказать человеку, предложить (игнор/напоминание письмом/продолжить).
|
||||
|
||||
## Ритуал финиша (closing)
|
||||
- `handoff_write(project, session_id, status, summary, open_treks, ask_user, guards, recent_commits)` — по решению человека (не авто-sweep).
|
||||
- PROPOSE wiki-ingest (важное знание → вики) + PROPOSE закрытия тасок. Мутации — после подтверждения.
|
||||
|
||||
## Связано
|
||||
[[runbooks/index]] · [[runbooks/inbox]] · [[runbooks/tasks]] · [[canon/gates]] · контракт wiki:2660 · [[concepts/session-live-ingest]] (wiki:2604) · brainstorm:173
|
||||
34
.mappa/share/runbooks/tasks.md
Normal file
34
.mappa/share/runbooks/tasks.md
Normal file
@@ -0,0 +1,34 @@
|
||||
---
|
||||
title: Runbook — tasks
|
||||
summary: Как работать с тасками mappa: ориентация, выбор (priority/due), взятие (status+owner), исполнение, закрытие, review-связка, comment. Контракт: wiki:2660 (interactive). Источник: brainstorm:173.
|
||||
type: runbook
|
||||
tags: [mappa, runbook, tasks, agent]
|
||||
---
|
||||
# Runbook: tasks
|
||||
|
||||
Цикл работы с таской: ориентация → выбор → взятие → исполнение → закрытие.
|
||||
|
||||
## Ориентация / выбор
|
||||
- Доска проекта: `task_list(project, parent='root')` (корни) или `board_digest(project)` (счётчики+overdue+blocked). Кросс-проектно: `board_digest()` без project.
|
||||
- Выбор по приоритету/дедлайну. Priority — территория человека: агент ставит P0–P2/deadline только при создании, дефолт P1. Overdue → notify (admin_overdue_scan), авто-бамп запрещён.
|
||||
- Таска без `**Review:**` в описании — не принимается к работе (вернуть постановщику, правило 14).
|
||||
|
||||
## Взятие (interactive contract, wiki:2660)
|
||||
`task_update(project, id, status='active', owner=<себя>, version=<из task_get>)` — одной мутацией (status→active + owner). Версия — optimistic concurrency: конфликт → 409 → re-GET → retry.
|
||||
|
||||
## Исполнение
|
||||
- Работаешь по критериям приёмки из описания; след «где остановился/что попробовал» — comment_create (короткий), вердикты/отчёты — письмом (Г2).
|
||||
- Смена фокуса → status=paused/ready с reason (не бросать в active).
|
||||
|
||||
## Закрытие (handover)
|
||||
- Перед close: проверить покрытие критериев + метод ревью из описания выполнен (`subagent` прогнан / `next-session` review-таска существует / `none` обоснован).
|
||||
- `task_close(project, id, version)` → status=done.
|
||||
- Review-связка: импл-таска → парная `<slug>-review` (blocked, blocker=impl) ИЛИ зонтик на кластер (не BOTH). Ревьюер — следующая сессия, НЕ имплементер. Вердикт ревью — письмом полностью.
|
||||
|
||||
## Создание таски (для босса/делегирования)
|
||||
`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
|
||||
28
.mappa/share/runbooks/wiki.md
Normal file
28
.mappa/share/runbooks/wiki.md
Normal file
@@ -0,0 +1,28 @@
|
||||
---
|
||||
title: Runbook — wiki
|
||||
summary: Как работать с вики mappa: первый шаг (AGENTS/canon), чтение, ингест, обновление (version+409), summary-frontmatter, поиск страниц. Источник: brainstorm:173.
|
||||
type: runbook
|
||||
tags: [mappa, runbook, wiki, agent]
|
||||
---
|
||||
# Runbook: wiki
|
||||
|
||||
## Первый шаг любой операции
|
||||
1. Прочитать канон-блок AGENTS.md проекта (+ AGENTS-сущность зоны: `wiki_get(project, 'AGENTS')`), затем каталог/index.
|
||||
2. Скоупы: project (вики проекта), shared (общая тенанта), private (оператора, RLS). `wiki_get` без project = shared → project-страница = 404.
|
||||
|
||||
## Чтение
|
||||
- Страница: `wiki_get(project?, slug)` (компакт-excerpt по умолчанию; полное тело — full:true). Slug искать, не угадывать (Г3, К1–К4).
|
||||
- Поиск: `wiki_search(q, scope, project)` / `entity_search(q, type='wiki')` — карточки {ref, slug, summary, snippet} без тел; полное тело — wiki_get/entity_get.
|
||||
- Реляционные вопросы («что связывает X и Y», backlinks, сироты) — НЕ чтением, а graph_* (BFS сервером): graph_path/neighbors/backlinks/stats.
|
||||
|
||||
## Запись
|
||||
- `wiki_create(project?, slug, body, scope?)` — create (карв-аут). project-скоуп требует project; shared — scope='shared' без project. summary в frontmatter (одна строка) — карточки поиска читают её.
|
||||
- `wiki_update(project, id, body, version)` — update ТОЛЬКО с версией (fresh из wiki_get); конфликт → 409 → re-GET → retry. Без версии — last-write-wins, риск затереть чужое.
|
||||
- Противоречие источников — помечать блоком `> **Contradiction:**`, не затирать молча.
|
||||
- Op-log ведёт сервис (admin_logs) — ручной log-страницы не вести.
|
||||
|
||||
## Ингест
|
||||
Прочитать источник → извлечь сущности/концепты → summaries/<slug> (иммутабельно) → затронутые страницы create/update → отчёт. Один ингест может трогать 10–15 страниц — нормально. Сырой контент в summaries не дампить (только summary + raw_path).
|
||||
|
||||
## Связано
|
||||
[[runbooks/index]] · [[canon/gates]] (Г1/Г3/Г8) · [[runbooks/search]] · контракт wiki:2660 · [[concepts/wiki-ingest-convention]] (wiki:3312) · brainstorm:173
|
||||
Reference in New Issue
Block a user