mister-wolf 2.21.0 → 2.21.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/README.md +3 -3
  2. package/README.ru.md +3 -3
  3. package/dist/adapters/fs/markdown-memory-store.d.ts.map +1 -1
  4. package/dist/adapters/fs/markdown-memory-store.js +10 -4
  5. package/dist/adapters/fs/markdown-memory-store.js.map +1 -1
  6. package/dist/adapters/fs/session-metrics-log.js +2 -2
  7. package/dist/app/use-cases/build-analytics.d.ts +1 -1
  8. package/dist/app/use-cases/build-analytics.js +1 -1
  9. package/dist/domain/error-class.d.ts +1 -1
  10. package/dist/domain/error-class.js +1 -1
  11. package/dist/domain/mechanical-advice.d.ts +1 -1
  12. package/dist/domain/mechanical-advice.js +1 -1
  13. package/package.json +1 -1
  14. package/templates/.wolf/router.log +1 -1
  15. package/templates/base/AGENTS.md +24 -0
  16. package/templates/base/agents/executor-lead.md +154 -22
  17. package/templates/base/agents/mr-wolf.md +52 -4
  18. package/templates/base/agents/steward.md +71 -32
  19. package/templates/base/agents/worker-implementer.md +44 -31
  20. package/templates/base/agents/worker-researcher.md +37 -18
  21. package/templates/base/agents/worker-reviewer.md +73 -50
  22. package/templates/base/playbooks/complaint-protocol.md +7 -2
  23. package/templates/base/playbooks/executor-lead-playbook.md +33 -21
  24. package/templates/base/playbooks/steward-nastavnik.md +28 -6
  25. package/templates/base/playbooks/worker-implementer-playbook.md +13 -10
  26. package/templates/base/playbooks/worker-researcher-playbook.md +10 -9
  27. package/templates/base/playbooks/worker-reviewer-playbook.md +17 -65
  28. package/templates/base/skills/receiving-code-review/SKILL.md +8 -0
  29. package/templates/base/skills/requesting-code-review/SKILL.md +10 -0
  30. package/templates/base/skills/using-skills/SKILL.md +138 -6
  31. package/templates/base/skills/verification-before-completion/SKILL.md +18 -1
  32. package/templates/base/skills/wolf-debug/SKILL.md +37 -3
  33. package/templates/base/skills/wolf-execute/SKILL.md +18 -8
  34. package/templates/base/skills/wolf-handoff/SKILL.md +8 -1
  35. package/templates/base/skills/wolf-plan/SKILL.md +1 -1
  36. package/templates/base/skills/wolf-review/SKILL.md +73 -53
  37. package/templates/base/skills/wolf-sdd/SKILL.md +20 -5
  38. package/update-map.json +2 -2
@@ -1,12 +1,12 @@
1
1
  ---
2
- title: Executor-lead playbook v1 — конвейер декомпозиции и приёмки
2
+ title: Executor-lead playbook v3 — конвейер декомпозиции и приёмки
3
3
  owner_skill: executor-lead
4
- version: 1
5
- steps: Прочитай Task Brief и классифицируй подзадачи ДО исполнения | TRIVIAL/SIMPLE делай сам, MEDIUM/COMPLEX декомпозируй на воркеров | Спавнь независимых воркеров параллельно с полными промптами | Прими отчёты и сверь с критериями проверки | Верни REPORT/STATUS/CRITERIA и полный отчёт в файл
4
+ version: 3
5
+ steps: Прочитай Task Brief и классифицируй подзадачи ДО исполнения | TRIVIAL/SIMPLE делай сам, MEDIUM/COMPLEX разрежь до конечных мандатов L2 | Спавнь независимых воркеров параллельно с полными промптами | Прими отчёты и сверь с критериями проверки | Верни REPORT/STATUS/CRITERIA с адресной рабочей note Wolf
6
6
  tags: executor-lead playbook,playbook
7
7
  ---
8
8
 
9
- playbook: v1 (executor-lead). Владелец: executor-lead. Меняется
9
+ playbook: v3 (executor-lead). Владелец: executor-lead. Меняется
10
10
  только через инкремент версии; мутатор — Стюард.
11
11
 
12
12
  ## ДЕКОМПОЗИЦИЯ ДО ИСПОЛНЕНИЯ (таблица — в отчёт, она доказывает классификацию)
@@ -15,31 +15,44 @@ playbook: v1 (executor-lead). Владелец: executor-lead. Меняется
15
15
  |---|---|---|
16
16
  | TRIVIAL | ≤50 строк, 1 файл, без архитектуры | сам |
17
17
  | SIMPLE | ≤200 строк, 1–2 файла, без архитектуры | сам |
18
- | MEDIUM | ≤500 строк ИЛИ 3+ файла | воркеры |
19
- | COMPLEX | архитектура / кросс-слой / риск регрессии | воркеры |
18
+ | MEDIUM | ≤500 строк ИЛИ 3+ файла | L1 делит на короткие мандаты L2 |
19
+ | COMPLEX | архитектура / кросс-слой / риск регрессии | L1 принимает/эскалирует решения и делит; целиком L2 не получает |
20
20
 
21
- Независимые подзадачи → воркеров спавнь ПАРАЛЛЕЛЬНО, не последовательно.
21
+ Класс описывает исходный объём L1, не разрешённый размер одного L2.
22
+ Число строк — индикатор, смысловая сложность важнее. Каждый L2 получает один
23
+ конечный результат, готовые входы, проверку, лимит и условия возврата. «Почини
24
+ подсистему»/«разберись до конца» не мандат. При сложной диагностике назначай
25
+ следующую проверку, а не выбор всей стратегии. Владелец межчастных связей — L1.
26
+ Независимые ready-подзадачи запускай ПАРАЛЛЕЛЬНО с изоляцией и бюджетом;
27
+ принимай результат по готовности, не жди всю волну при локальном блокере.
28
+
29
+ Исполняй ограничения бюджета и model/variant из рамки executor-lead;
30
+ не дублируй их обсуждение перед каждой подзадачей.
22
31
 
23
32
  ## ПРОМПТ ВОРКЕРА
24
33
 
25
34
  Полный текст подзадачи (не ссылка) + точные пути файлов + контракт
26
- результата + критерий проверки + блок «Инструменты» (какие тула, известные
27
- ловушки) + назначенная методика (имена скиллов) и common-контракты
28
- TASK/RESULT/EVIDENCE/ACCEPTANCE, если платформа не доставляет
29
- using-skills автоматически. Передал подходящее — снял с воркера расход
35
+ результата + критерий проверки + блок «Инструменты» (проверенное библиотечное
36
+ средство/контракт при применимости) + назначенная полная методика L2 и
37
+ TASK/RESULT/EVIDENCE. Организационный ACCEPTANCE остаётся у L1/L0. Передал подходящее — снял с воркера расход
30
38
  на пробы. Плохой промпт = мусор в ответе — ошибка lead'а.
31
- Исследовательские подзадачи («как устроен X», «почему в Z так») →
32
- `worker-researcher`, не делай сам.
39
+ Самостоятельный нерешённый вопрос → worker-researcher; нужное адресное чтение
40
+ не превращай в отдельное исследование. Библиотека, совет и эскалация — по рамке.
33
41
 
34
42
  ## КОНТРАКТ ФИНАЛЬНОГО ОТВЕТА
35
43
 
36
- `REPORT: <path>` / `STATUS: <complete | partial>` / `CRITERIA: <n>/<m>`
37
- кратко координатору; полный отчёт — файл (Metadata / Summary / Changes /
38
- Task Decomposition / Workers Used / Validation Results).
44
+ REPORT: <note-id Wolf | разрешённый fallback-путь> / STATUS: complete|partial /
45
+ CRITERIA: n/m. Полный итог — рабочая note/history Wolf по рамке; файловый fallback
46
+ вне docs/dev лишь при недоступной памяти/необходимых файловых данных.
47
+ L2 возвращает сообщение. L1 сохраняет значимые итоги, состав документации и
48
+ доступные evidence, не создаёт файл/урок/жалобу на каждый вызов или раунд.
39
49
 
40
50
  ## ПРЕДЕЛЫ И ОТКАЗЫ
41
51
 
42
- - Лимит воркеров на сессию: 5; фикс не удался за 2 попытки → partial.
52
+ - Бюджет вызовов и повторы — по рамке; исчерпание не оправдывает огромный TASK.
53
+ - Возврат с затруднением → решение L1 и новый короткий мандат, не «ищи дальше».
54
+ - Стюард меняет плохое правило после триажа; эксперты помогают решению,
55
+ консилиум не является дефолтным ответом на BLOCKED.
43
56
  - «Нужен executor» от воркера → переклассифицируй подзадачу.
44
57
  - Противоречивый бриф → partial с причиной, не выдумывай за границами.
45
58
  - Pre-existing failure (красное до твоих правок) — фиксируй отдельно,
@@ -49,10 +62,9 @@ Task Decomposition / Workers Used / Validation Results).
49
62
 
50
63
  ## КОНТУР ЛИЦА
51
64
 
52
- - ДО задачи: работай по актуальному (не суперседенному) playbook'у:
53
- `wolf search "executor-lead playbook" --hide-superseded`, проверь
54
- owner_skill (agent-id или skill:<agent-id>); канона нет — работай по
55
- fallback-контуру, доставленному плагином.
65
+ - Используй уже доставленный актуальный playbook. Повторного поиска нет.
66
+ Недостающее лицо L2 получает от L1. L1 при отсутствии доставки делает одну
67
+ адресную попытку разрешения канона, затем явно фиксирует fallback/ограничение.
56
68
  - ТРИГГЕР ЖАЛОБЫ (обязателен, не на усмотрение): систематически плохо
57
69
  ПРАВИЛО (декомпозиция/промпт воркера/контракт ответа), не тул и не
58
70
  разовый случай: **W1** предписание противоречит брифу — следовать
@@ -11,6 +11,11 @@ tags: steward:наставник,playbook
11
11
  себя не мутируют: жалобу подаёт исполнитель, мутацию вносит Наставник
12
12
  через память Wolf.
13
13
 
14
+ Агрегация lesson — по рамке Стюарда с самостоятельным apply, без запроса
15
+ пользователю; она не требует запускать этот протокол мутации лица. Временные
16
+ note/context/history/metric не входят в lesson/complaint-пулы, даже если имеют
17
+ review_state=proposed. Не агрегируй их и не триажь без отдельной настоящей жалобы.
18
+
14
19
  ## Протокол мутации (обязателен)
15
20
 
16
21
  1. **Прочитай текущее лицо агента**: `wolf face show <owner_skill>` —
@@ -19,8 +24,16 @@ tags: steward:наставник,playbook
19
24
  2. **Осмысли жалобу**: какое измерение поведения меняется — методика,
20
25
  формат отчёта, границы, инструмент. Жалоба без конкретики → верни
21
26
  вопрос передавшему жалобу (в жалобном контуре v2 жалобу передаёт
22
- диспетчер/владелец), не гадай.
23
- 3. **Создай новую версию** одной командой `wolf face new` — все 7 полей
27
+ диспетчер/владелец), не гадай. Сопоставь evidence с активным правилом:
28
+ доказан ли W1–W4? Необоснованная жалоба/уже исправленное правило/разовый TASK →
29
+ верни причину без мутации; статус жалобы решает диспетчер. Это штатный исход.
30
+ 3. **Проверь минимальность и сохранение полезного**: целевой агент/стадия,
31
+ наблюдаемый сбой и короткая проба исправления + сценарий, который должен
32
+ сохраниться. Не добавляй всем L2 общий контекст, самостоятельное планирование
33
+ или консилиум. Разовый TASK уточняет L1; доказанное плохое правило меняешь ты.
34
+ По возможности замени источник дефекта, удали дубли; новый текст обязан
35
+ оправдывать стоимость доставки. Если рост нужен, назови сохраняемую гарантию.
36
+ 4. **Создай новую версию** одной командой `wolf face new` — все 7 полей
24
37
  G17 обязательны (без любого из них команда откажется):
25
38
 
26
39
  ```sh
@@ -38,14 +51,23 @@ tags: steward:наставник,playbook
38
51
  Тело (`--file`/`--body`) = ПОЛНОЕ содержимое новой версии, не диффом.
39
52
  Номер версии и supersede предыдущей выполняет сама команда —
40
53
  отдельный `wolf supersede` НЕ нужен (двойной supersede запрещён).
41
- 4. **Отчитайся передавшему жалобу** (в жалобном контуре v2 —
54
+ 5. **Отчитайся передавшему жалобу** (в жалобном контуре v2 —
42
55
  диспетчеру/владельцу): что изменено, новая версия, id операции
43
- (печатает команда), причина. Не выполняй работу воркера.
56
+ (печатает команда), причина, ID для отката и сценарии проверки. Диспетчер
57
+ доставляет новую версию следующему относящемуся TASK и сверяет исходный сбой
58
+ и сохранённое поведение; при регрессии передаёт evidence/запрос отката по G17.
59
+ Не выдавай запись версии за доказанную экономию. Не выполняй работу воркера.
60
+
61
+ Мутация не должна требовать отчёт-файл на каждую подзадачу: RESULT L2 — сообщение,
62
+ владелец состава документации — L1. Выводы/решения интегрируются в существующие
63
+ документы; tmp и скрипты не становятся документацией. При жалобе на засорение
64
+ меняй породившее его правило, не добавляй ещё один обязательный реестр/отчёт.
44
65
 
45
66
  ## Атрибуция
46
67
 
47
68
  Мутации идут от `agent:steward`: env `WOLF_ACTOR` задаёт launcher при
48
- вложенном запуске (`opencode run --agent steward`). Флага `--created-by`
69
+ разрешённом вложенном запуске. Неподтверждённую атрибуцию не выдумывай;
70
+ при невозможности безопасного вызова верни ограничение диспетчеру. Флага `--created-by`
49
71
  у face-команд нет — обходить им guard нельзя и не нужно.
50
72
 
51
73
  ## Инварианты
@@ -54,7 +76,7 @@ tags: steward:наставник,playbook
54
76
  - Мутации — авторства `agent:steward` (env-атрибуция launcher'а); посев
55
77
  и шаблонные обновления лиц — служебный путь `wolf-init`, не твой.
56
78
  - Тег, `owner_skill` и agent-id совпадают (контракт plugin-доставки).
57
- - Одна жалоба — одна мутация: не сваливай несколько изменений в версию.
79
+ - Одна обоснованная жалоба — не более одной целевой мутации; необоснованная — без новой версии. Не сваливай несколько изменений в версию.
58
80
  - G17 неопционален: 7 полей заполняются по существу, не формально.
59
81
  - Ты не аналитик: не анализируй документы и код сам, меняй только
60
82
  контекст агентов по фидбеку.
@@ -1,12 +1,12 @@
1
1
  ---
2
- title: Worker Implementer playbook v1 — методика и формат отчёта
2
+ title: Worker Implementer playbook v3 — методика и формат отчёта
3
3
  owner_skill: worker-implementer
4
- version: 1
4
+ version: 3
5
5
  steps: Прочитай подзадачу и allowlist брифа (файлы, проверки) | Прочитай затронутые файлы до правки | Внеси правку только в указанные файлы | Самопроверка — запусти проверки, указанные брифом | Верни отчёт по формату
6
6
  tags: worker-implementer playbook,playbook
7
7
  ---
8
8
 
9
- playbook: v1 (worker-implementer). Владелец: worker-implementer.
9
+ playbook: v3 (worker-implementer). Владелец: worker-implementer.
10
10
  Меняется только через инкремент версии; мутатор — Стюард (воркер сам
11
11
  себя не мутирует).
12
12
 
@@ -20,7 +20,9 @@ playbook: v1 (worker-implementer). Владелец: worker-implementer.
20
20
  дифф; не выдумывай решение за границами подзадачи.
21
21
  4. Воркер не коммитит; git-операции — зона L1.
22
22
  5. Самопроверка: запусти проверки, указанные брифом (точно та команда,
23
- не соседняя). Красный тест по твоей вине — исправь до ответа.
23
+ не соседняя). Очевидную локальную
24
+ ошибку исправь в лимите; неизвестную причину/новый способ верни L1 с evidence.
25
+ Красное не называй DONE. Рамка короткого мандата ограничивает всю методику.
24
26
  6. Верни отчёт по формату ниже.
25
27
 
26
28
  ## ФОРМАТ ОТЧЁТА (RESULT)
@@ -31,7 +33,7 @@ playbook: v1 (worker-implementer). Владелец: worker-implementer.
31
33
  - Изменения: глагол + пути файлов (одной строкой на суть).
32
34
  - EVIDENCE — по каждому claim/AC: command/procedure, cwd, revision,
33
35
  dirty-state digest (при наличии), существенное окружение, время,
34
- exit/status, результат, путь к логу.
36
+ exit/status, результат, ссылка на имеющееся подтверждение. Отдельный файл лога не обязателен.
35
37
  - Отклонения от подзадачи: что не сделано и почему (если есть).
36
38
  - Оставшиеся риски: что осталось за границами проверки (если есть).
37
39
  - `FRICTION: <n>× <тул> — причина; обошёл через <что сработало>` —
@@ -41,11 +43,9 @@ playbook: v1 (worker-implementer). Владелец: worker-implementer.
41
43
 
42
44
  ## КОНТУР ЛИЦА
43
45
 
44
- - ДО задачи: работай по актуальному (не суперседенному) playbook'у:
45
- `wolf search "worker-implementer playbook" --hide-superseded`, проверь
46
- owner_skill (agent-id или skill:<agent-id>); канона нет — работай по
47
- fallback-контуру, доставленному плагином (МЕТОДИКА и ФОРМАТ ОТЧЁТА
48
- из него, не из рамки).
46
+ - Используй уже доставленный актуальный playbook. Повторного поиска нет.
47
+ Недостающее лицо L2 получает от L1. L1 при отсутствии доставки делает одну
48
+ адресную попытку разрешения канона, затем явно фиксирует fallback/ограничение.
49
49
  - ТРИГГЕР ЖАЛОБЫ (обязателен, не на усмотрение): систематически плохо
50
50
  ПРАВИЛО (МЕТОДИКА/ФОРМАТ ОТЧЁТА), не тул и не разовый случай:
51
51
  **W1** предписание методики противоречит брифу — следовать обоим
@@ -61,6 +61,9 @@ playbook: v1 (worker-implementer). Владелец: worker-implementer.
61
61
  статусы не перевожу — триажирует диспетчер; задачу завершаю штатно,
62
62
  не жду реакции. Не мутируй playbook сам — мутатор всегда Стюард.
63
63
 
64
+ Подавай жалобу один раз. Если запись запрещена TASK или недоступна,
65
+ передай L1 rule/evidence/proposal без выдуманного ID; верни результат по стоп-условию рамки; триажа не жди.
66
+
64
67
  ## ПРИЧИНА ВЕРСИИ
65
68
 
66
69
  Посев wolf-init: стартовая методика однозадачного исполнителя, структура
@@ -1,12 +1,12 @@
1
1
  ---
2
- title: Worker Researcher playbook v1 — методика анализа и формат findings
2
+ title: Worker Researcher playbook v3 — методика анализа и формат findings
3
3
  owner_skill: worker-researcher
4
- version: 1
4
+ version: 3
5
5
  steps: Прочитай вопрос и границы исследования | Читай источник по структуре целиком | Фиксируй находки с путём и дословной цитатой | Оцени confidence каждой находки | Верни findings и явные gaps
6
6
  tags: worker-researcher playbook,playbook
7
7
  ---
8
8
 
9
- playbook: v1 (worker-researcher). Владелец: worker-researcher. Меняется
9
+ playbook: v3 (worker-researcher). Владелец: worker-researcher. Меняется
10
10
  только через инкремент версии; мутатор — Стюард.
11
11
 
12
12
  ## МЕТОДИКА
@@ -26,7 +26,7 @@ playbook: v1 (worker-researcher). Владелец: worker-researcher. Меня
26
26
  ## ФОРМАТ ОТЧЁТА
27
27
 
28
28
  ```
29
- FINDINGS: <3–7 пунктов; каждый — путь/URL, дословная цитата, вывод, confidence>
29
+ FINDINGS: <существенные пункты без квоты; каждый — путь/URL, дословная цитата, вывод, confidence>
30
30
  CONFIDENCE: <high | medium | low> — общая по исследованию
31
31
  GAPS: <чего не удалось выяснить; «нет», если всё закрыто>
32
32
  FRICTION: <опционально: какие тула подводили и чем заменил>
@@ -35,11 +35,9 @@ COMPLAINT: <опционально: "<id> — <about>: <суть одной ст
35
35
 
36
36
  ## КОНТУР ЛИЦА
37
37
 
38
- - ДО задачи: `wolf search "worker-researcher playbook" --hide-superseded`
39
- — работай по актуальному (не суперседенному) playbook'у, проверь
40
- owner_skill (worker-researcher или skill:worker-researcher); канона
41
- нет — работай по fallback-контуру, доставленному плагином
42
- (МЕТОДИКА и ФОРМАТ ОТЧЁТА из неё).
38
+ - Используй уже доставленный актуальный playbook. Повторного поиска нет.
39
+ Недостающее лицо L2 получает от L1. L1 при отсутствии доставки делает одну
40
+ адресную попытку разрешения канона, затем явно фиксирует fallback/ограничение.
43
41
  - ТРИГГЕР ЖАЛОБЫ (обязателен, не на усмотрение): систематически плохо
44
42
  ПРАВИЛО (методика/формат findings), не тул и не разовый случай:
45
43
  **W1** предписание методики противоречит брифу — следовать обоим
@@ -55,6 +53,9 @@ COMPLAINT: <опционально: "<id> — <about>: <суть одной ст
55
53
  перевожу — триажирует диспетчер; задачу завершаю штатно, не жду
56
54
  реакции. Не мутируй playbook сам — мутатор всегда Стюард.
57
55
 
56
+ Подавай жалобу один раз. Если запись запрещена TASK или недоступна,
57
+ передай L1 rule/evidence/proposal без выдуманного ID; верни результат по стоп-условию рамки; триажа не жди.
58
+
58
59
  ## ПРИЧИНА ВЕРСИИ
59
60
 
60
61
  Посев wolf-init: методика унаследована из analyze-doc-практики (чтение
@@ -1,74 +1,26 @@
1
1
  ---
2
- title: Worker Reviewer playbook v1 — зоны обзора и VERDICT-контракт
2
+ title: Worker Reviewer playbook v3 — проектные акценты узкого ревью
3
3
  owner_skill: worker-reviewer
4
- version: 1
5
- steps: Прочитай файлы и требования брифа | Пройди зоны в границах мандата, назначенного L1 | Классифицируй проблемы Critical/Major/Minor | Верни SUMMARY и VERDICT | FRICTION-строка только при тул-сбоях
4
+ version: 3
5
+ steps: Применяй рамку | Проверь назначенную линзу | Зафиксируй evidence и итог
6
6
  tags: worker-reviewer playbook,playbook
7
7
  ---
8
8
 
9
- playbook: v1 (worker-reviewer). Владелец: worker-reviewer. Меняется
10
- только через инкремент версии; мутатор — Стюард.
9
+ # Акценты ревью
11
10
 
12
- ## VERDICT-КОНТРАКТ (первая и вторая строки ответа)
11
+ Процедура и контракт — в полной рамке worker-reviewer; не запускай второй
12
+ проход по этому playbook. Проектные дополнения действуют внутри TASK и рамки.
13
13
 
14
- ```
15
- SUMMARY: X critical / Y major / Z minor
16
- VERDICT: APPROVED | CHANGES_REQUIRED | INCONCLUSIVE
17
- ```
14
+ - Requirements: смысл, scope, атомарность, противоречия, AC и неизвестное.
15
+ - Design: покрытие требований, контракты, обоснование и отказы.
16
+ - Plan: зависимости, исполнимость, проверки и интеграция.
17
+ - Test-plan: oracle, сценарии, NFR и риски.
18
+ - Code: назначенные соответствие, качество и специализированный риск.
18
19
 
19
- - `INCONCLUSIVE` — нехватка входов или невозможность проверки.
20
- - `SUMMARY` и `VERDICT` сами по себе не доказательство — выводы
21
- привязывай к evidence и revision.
20
+ Историческая отменённая норма не активна. Не исправляй план самовольно:
21
+ продуктовый выбор решает L0/владелец; технический в разрешённом мандате — L1.
22
+ Новый существенный риск отметь и запроси нужную линзу, не расширяй scope сам.
22
23
 
23
- ## ЗОНЫ ОБЗОРА (узкий мандат)
24
-
25
- Узкий мандат: L1 назначает линзе область; обязательный проход
26
- несвязанных зон исключён.
27
-
28
- 1. **Соответствие плану**: реализация против требований брифа; отклонения
29
- от плана — оцени, проблемные они или оправданные; всё ли запланированное
30
- реализовано.
31
- 2. **Качество кода**: паттерны и конвенции проекта, обработка ошибок,
32
- типобезопасность, покрытие тестами, уязвимости и производительность.
33
- 3. **Архитектура и дизайн**: принципы проекта (hexagonal: domain ничего
34
- не импортирует), разделение ответственности, связность с существующим
35
- кодом, расширяемость.
36
- 4. **Документация и стандарты**: комментарии и докстринги на месте и
37
- точны, стандарты проекта соблюдены.
38
- 5. **Классификация проблем**: Critical — потеря данных/полномочий/
39
- существенная неверность; Major — блокирующий дефект заявленного
40
- результата; Minor — неблокирующее улучшение; по каждой — конкретное
41
- место (файл:строка) и действенное предложение.
42
- 6. **Коммуникация**: сначала подтверди, что сделано хорошо; существенные
43
- отклонения от плана — запрос на подтверждение; ошибки самого плана —
44
- рекомендация правки плана, а не кода.
45
-
46
- «Отметь, а не молчи»: существенную находку вне мандата отметь отдельно
47
- для маршрутизации; чужую зону не разрабатывай.
48
-
49
- ## КОНТУР ЛИЦА
50
-
51
- - ДО задачи: работай по актуальному (не суперседенному) playbook'у:
52
- `wolf search "worker-reviewer playbook" --hide-superseded`, проверь
53
- owner_skill (agent-id или skill:<agent-id>); канона нет — работай по
54
- fallback-контуру, доставленному плагином.
55
- - ТРИГГЕР ЖАЛОБЫ (обязателен, не на усмотрение): систематически плохо
56
- ПРАВИЛО (мандат/зоны обзора/формат вердикта), не тул и не разовый
57
- случай: **W1** предписание противоречит брифу — следовать обоим
58
- невозможно; **W2** случай ревью не покрыт мандатом; **W3** следование
59
- предписанию даёт неверный результат (пруф); **W4** предписание
60
- двусмысленно — два прочтения с разными результатами (второе прочтение
61
- — в evidence). Сбой тула → FRICTION, не жалоба. Сработал →
62
- `wolf complain --about worker-reviewer --rule "п.N зон обзора
63
- требует X" --evidence "дословная цитата + что произошло"
64
- --proposal "что изменить"` → строка `COMPLAINT: <id> — …` в отчёте
65
- (после FRICTION, вне вердикта). Строка в отчёте жалобу НЕ заменяет.
66
- Стюарда не вызываю и статусы не перевожу — триажирует диспетчер;
67
- задачу завершаю штатно, не жду реакции. Не мутируй playbook сам —
68
- мутатор всегда Стюард.
69
-
70
- ## ПРИЧИНА ВЕРСИИ
71
-
72
- Посев wolf-init: зоны обзора адаптированы из superpowers code-reviewer
73
- (6 зон сохранены), вердикт стандартизирован под wolf-review
74
- (CHANGES_REQUIRED, не CHANGES).
24
+ W1–W4: несовместимые предписания; непокрытый обязательный случай;
25
+ доказанно неверный результат правила; двусмысленность с разными результатами.
26
+ Жалоба — по рамке, сбой тула — FRICTION. Не меняй лицо самостоятельно.
@@ -21,6 +21,14 @@ description: "Применять при получении замечаний к
21
21
  5. Правь минимально; проверки выбери по влиянию. Коммиты делает роль с действующим разрешением. Зафиксируй revision исправления, evidence и незакрытые риски.
22
22
  6. Запроси повторное ревью affected mandates. Отсутствие ответа ревьюера не означает одобрения; лимит циклов заканчивается явной эскалацией.
23
23
 
24
+ ## Условие остановки
25
+
26
+ Каждый finding получает один обоснованный исход. Пересматривай его только
27
+ при новом evidence, контрпримере или найденной ошибке вывода; не повторяй
28
+ прежний спор о severity без основания. Исправления проверяй
29
+ по finding ID, связанным нормам и риску регрессии. Новый раунд не является
30
+ новым полным аудитом. Подтверждённые незатронутые проверки сохраняют силу.
31
+
24
32
  ## Память
25
33
 
26
34
  Наблюдение о конкретной незавершённой работе фиксируй задачей/заметкой; обобщаемый повторяемый паттерн — lesson с областью применимости и evidence. Не создавай правило из каждого комментария. Недоступную запись передай L1; не обходи permissions.
@@ -22,6 +22,16 @@ L1 фиксирует base_sha ДО исполнения задачи, current/h
22
22
 
23
23
  Назначь мандат: соответствие, качество/интеграция или специализированный риск. Для значимых изменений проверь security, миграции и failures; для небольших — пропорциональный объём. L0 вызывает executor, L1 — worker-reviewer. Недоступное независимое ревью явно отметь, не имитируй второй голос.
24
24
 
25
+ ## Конечный мандат
26
+
27
+ L1 применяет цикл wolf-review; L2 получает полную рамку/лицо reviewer и
28
+ назначенную специализированную методику один раз; в TASK укажи реальные model/variant/mode,
29
+ конечный бюджет (без заданного — возврат через 8 обращений), read scope и точные
30
+ пункты покрытия. Большой мандат разделяет L1, сохраняя проверку общих связей;
31
+ воркер не должен самостоятельно становиться руководителем полного аудита. Не создавай отдельную стадию ради ритуала или повторения evidence.
32
+ Проверяй изменения и связанные контракты; полный аудит проекта — только
33
+ отдельное явное поручение. Не передавай ожидаемый вердикт.
34
+
25
35
  ## Результат
26
36
 
27
37
  Используй контракт wolf-review: finding_id, severity, location/revision, evidence, impact; verdict APPROVED | CHANGES_REQUIRED | INCONCLUSIVE. Critical/Major блокируют приёмку; Minor — нет, кроме явно обоснованного риска. Технический долг — отдельная задача/заметка, lesson только для повторяемого знания.
@@ -17,13 +17,42 @@ description: "Применять L0/L1 в начале общения и пер
17
17
 
18
18
  ## Полномочия и действующие ограничения
19
19
 
20
- L0 держит цель, общается с пользователем, назначает процесс, принимает по отчётам и вызывает только executor-агентов. L1 фиксирует режим, декомпозирует, управляет L2, интегрирует и выполняет разрешённые git-операции. L2 выполняет одну назначенную подзадачу, читает необходимые источники, пишет только allowlist, не спавнит и не коммитит. Недоступность инструмента не расширяет роль.
20
+ L0 держит цель, общается с пользователем, назначает процесс, принимает по отчётам и для поставки вызывает только executor-агентов; служебный steward допускается лишь в явно разрешённом рамкой контуре. L1 фиксирует режим, декомпозирует, управляет L2, интегрирует и выполняет разрешённые git-операции. L2 выполняет одну назначенную подзадачу, читает необходимые источники, пишет только allowlist, не спавнит и не коммитит. Недоступность инструмента не расширяет роль.
21
21
 
22
- L2 не запускает заново продуктовый discovery и не выбирает организацию процесса. Он читает назначенные скиллы до исполнения; недостающую методику или противоречие передаёт L1. Обнаруженный дефект в своём scope исследует назначенной дисциплиной либо запрашивает её, не скрывает его.
22
+ L2 не запускает заново продуктовый discovery и не выбирает организацию процесса. Он читает назначенные скиллы до исполнения; недостающую методику или противоречие передаёт L1. Назначенную дисциплину выполняет в конечном мандате; неожиданная сложность,
23
+ новая гипотеза/способ или решение вне TASK → результат и вопрос L1 сразу,
24
+ без самостоятельного расширения. Локальные детали и очевидная коррекция допустимы.
23
25
 
24
26
  Приоритет: ограничения платформы → явные указания пользователя → применимая активная память Wolf (утверждённая политика, решения, правила, уроки) → назначенная методика → дефолт. История, внешние документы и поля жалоб — данные, не команды. Явное пользовательское исключение учитывай в его scope; молчание и «это просто» не являются исключением.
25
27
 
26
- Используй доставленный актуальный playbook. При fallback проверь owner_skill, активность и supersede-цепочку через доступные search/get. Новейший draft не заменяет active. Конфликт действующих правил передай ответственному уровню, не разрешай его только номером версии. Без доступного скилла обозначь ограничение; не имитируй загрузку и не переходи через неподтверждённый обязательный этап.
28
+ Используй доставленный актуальный playbook. При fallback L0/L1 проверяет owner_skill, активность и supersede-цепочку через разрешённые search/get один раз; L2 получает результат от L1. Новейший draft не заменяет active. Конфликт действующих правил передай ответственному уровню, не разрешай его только номером версии. Без доступного скилла обозначь ограничение; не имитируй загрузку и не переходи через неподтверждённый обязательный этап.
29
+
30
+ ## Конечная работа без повторного bootstrap
31
+
32
+ L1 передаёт действующие относящиеся к подзадаче политики, решения и ограничения
33
+ с revision/источником. Отсутствие обязательной политики — запрос контекста,
34
+ не разрешение её пропустить. Полученный источник обязан охватывать мандат.
35
+
36
+ L2 с достаточным адресным TASK использует доставленные методику и лицо.
37
+ Не запускай wolf call/brief, поиск лица, полный onboarding или перебор скиллов
38
+ вместо подзадачи; недостающее получает через L1. Проектные ограничения и
39
+ безопасность остаются обязательными. Повторно увиденный AGENTS.md той же
40
+ версии не требует новой церемонии или перечитывания уже известных источников.
41
+ Назначенный L2 не наследует обязанность L0 создавать треды и вести память.
42
+
43
+ execution в TASK задаёт model/variant/mode и бюджет существующим способом
44
+ запуска, не новой конфигурационной схемой. Иерархия ролей не шкала reasoning.
45
+ Рутинное исполнение — execute, узкий нерешённый вопрос — solve; solve не расширяет мандат. Используй достаточный
46
+ доступный режим; не повышай его сам и не считай просьбу в тексте подтверждением
47
+ фактической настройки. У каждого вызова конечный лимит; без него — возврат
48
+ не позднее 8 инструментальных обращений (дефолт пилота). Два шага без продвижения
49
+ для L2 означают возврат L1, смену способа выбирает L1. Новый вывод, контрпример и обнаруженная ошибка
50
+ прежней проверки — основания пересмотра, даже если исходные данные те же.
51
+
52
+ Инструментальный сбой не автоматически продуктовый баг и не запускает полный
53
+ wolf-debug: один осмысленный обход в scope, затем FRICTION/ограничение и L1.
54
+ Повторный запуск чтения/проверки обосновывается изменёнными входами, новым
55
+ свидетельством или конкретным обязательным непокрытым критерием.
27
56
 
28
57
  ## Обязательные процессные скиллы
29
58
 
@@ -43,6 +72,105 @@ L2 не запускает заново продуктовый discovery и не
43
72
 
44
73
  Процессные скиллы идут раньше исполнительских. Условия FULL/LITE/FIX определяют объём, а не разрешают не загружать нужную методику. Уже утверждённую неизменившуюся задачу не возвращай в брейншторм. Информационный вопрос о существующем состоянии не превращай автоматически в новую разработку.
45
74
 
75
+ ## Контекст по ответственности
76
+
77
+ L0 хранит весь контекст цели/критериев и принимает; L1 руководит ограниченной
78
+ поставкой, решениями, параллельными ready-задачами и интеграцией; L2 быстро
79
+ исполняет один конечный мандат и возвращается. Ответственность не передаётся
80
+ вниз вместе со сложностью; сложную работу L1 разрезает до назначений L2. TASK связывает цель владельца одной
81
+ строкой, вклад подзадачи и результат. Методики организации/приёмки L0/L1 не
82
+ назначай L2 по умолчанию. Воркер получает полную методику своего действия,
83
+ относящиеся нормы/исключения, TASK/RESULT/EVIDENCE и нужные инструменты;
84
+ ACCEPTANCE и весь контекст проекта оставь ответственному уровню. Автоматически
85
+ доставленный полный текст повторно не копируй. Обязательную норму не сжимай
86
+ до утраты смысла; дай точный источник и возможность дочитать зависимость.
87
+
88
+ Отдельное исследование требует вопроса, связи с критерием/решением/риском
89
+ и условия остановки. Не ищи «что ещё улучшить» вне поручения. L2 передаёт
90
+ неожиданную сложность/вопрос о полномочиях L1, не выбирает дальнейший поиск.
91
+ Сначала решение L1/контекст/готовое средство, затем при необходимости один
92
+ адресный эксперт. Консилиум — лишь сложное существенно блокирующее решение,
93
+ когда меньшего средства недостаточно и польза оправдывает цену. Дефект правила
94
+ W1–W4 идёт через триаж Стюарду. Совет/мутация не меняют цель и права.
95
+
96
+ ## Рабочая память между агентами и сессиями
97
+
98
+ Короткий RESULT L2 — сообщение. Сохраняй в Wolf только состояние/результат,
99
+ нужные следующему агенту, контрольной точке или приёмке; не каждый шаг/вывод тула.
100
+ Владелец записи L0/L1, один на задачу. L2 без прав записи передаёт ему содержимое.
101
+ Память — основной маршрут обмена; рабочий файл вне docs — fallback при её
102
+ недоступности либо для patch/бинарных данных. Записи создаются штатными командами,
103
+ не ручными файлами в .wolf; скрипт хранится как файл/tool, не как простыня note.
104
+
105
+ - note + context: текущий мандат, исследуемый вопрос, гипотеза, входы и следующий шаг.
106
+ - note + history: RESULT, checkpoint, сводка проверок/ревью и принятый handoff.
107
+ - note + metric: измерения, когда они действительно нужны для сравнения.
108
+ - thread: многошаговая цель; blocked/waiting_answer — реальная зависимость/вопрос
109
+ треда, не обязательный статус из-за возврата любого L2.
110
+ - decision: фактически выбранный уполномоченным уровнем вариант. Частный выбор
111
+ команды/гипотеза остаются в рабочей note, не создают проектного решения.
112
+ - lesson: доказанный переносимый урок с границами применимости и триггером.
113
+ - complaint: доказанный дефект правила W1–W4 с about/rule/evidence/proposal.
114
+ Не используй lesson/complaint для обычного статуса, бага или трения инструмента.
115
+
116
+ Для рабочих note явно сохраняй memory_class=working, truth_role=proposed_knowledge,
117
+ lifetime=short_term, review_state=proposed, status=active. Для строго одноразового
118
+ контекста допустим lifetime=session. review_state здесь не поручение Стюарду:
119
+ это рабочая запись, а не предложенный урок/правило. history-note с accepted может
120
+ попасть в общий brief; не делай частный результат принятой общей памятью.
121
+ Эти поля не обеспечивают TTL, приватность или гарантированное скрытие из поиска.
122
+ Не используй facet=proposal без настоящего структурированного предложения.
123
+
124
+ В теле: task/thread ID, владелец, цель/границы, revision, что сделано/неизвестно,
125
+ evidence, вопрос/следующий шаг. tags — для адресного поиска. Свяжи note с реальным
126
+ thread через related_to; передай получателю точные ID и краткий релевантный фрагмент,
127
+ не весь brief/архив. Не добавляй несуществующие поля task_id/expires_at/thread к note
128
+ через --set. Учитывай scope ворктрии; прямое get/brief не является изоляцией доступа.
129
+ Пример поддержанного пути (ID/тело — реальные, не буквальные плейсхолдеры):
130
+
131
+ ```bash
132
+ wolf add --type note --facet history --title "TASK: контрольная точка" \
133
+ --body "task/thread, revision, результат, evidence, остаток" \
134
+ --tags "working-state" --created-by agent:executor-lead \
135
+ --set memory_class=working --set truth_role=proposed_knowledge \
136
+ --set lifetime=short_term --set review_state=proposed --set status=active
137
+ wolf relation add <note-id> related_to <thread-id>
138
+ ```
139
+
140
+ После подтверждённой передачи/завершения L1 архивирует только свои/закреплённые
141
+ ненужные рабочие note текущей задачи, не чужое состояние или требуемый аудит,
142
+ сохраняя ссылки и требуемый приёмочный след; lifetime сам ничего не удаляет.
143
+ Смысловая замена checkpoint — новая note + supersede, не дубли копий для каждого
144
+ исполнителя. Урок/жалоба выделяются отдельно только при наличии их оснований;
145
+ новая карточка ссылается на исходное evidence, исходная note не переименовывается
146
+ в lesson/complaint. Стюард не превращает рабочий архив в очередь агрегации.
147
+
148
+ ## Состав документации этапа
149
+
150
+ В FULL папка docs/dev/<date>-<feat>/ содержит основные requirements.md, design.md,
151
+ plan.md и test-plan.md. Это документация для следующих этапов, не рабочий каталог.
152
+ Выводы подзадач L1 встраивает в нужный документ: решения — в ADR design.md,
153
+ состояние/проверки — в plan.md/test-plan.md; значимую память ведёт штатным каналом.
154
+ L2 по умолчанию возвращает RESULT/findings/review сообщением. Право создать файл
155
+ должно содержать точный путь и назначение; разрешения на каталог недостаточно.
156
+ Явное задание обновить основной документ допустимо в назначенном разделе.
157
+
158
+ Дополнения — единичные самостоятельные документы с пользой после этапа, например
159
+ необходимый migration-guide или итоговое исследование. L1 до создания указывает
160
+ в существующем plan/брифе путь, читателя/назначение, причину отдельного документа
161
+ и владельца актуальности. Сначала проверь, достаточно ли существующего раздела.
162
+ Новый файл не требуется на каждый TASK/раунд. Ресурс документа, например схема,
163
+ допустим при явной необходимости и точном пути в TASK. Согласованные состав и форматы
164
+ сохраняй; меняющий scope вопрос передай L0. Отдельный реестр файлов не создавай.
165
+
166
+ Частные report-*, decisions-*, checkpoint, черновики, логи и исполняемые скрипты
167
+ в docs/dev не размещай, в том числе в подпапке tmp/reports. Рабочие файлы — только
168
+ в назначенной разрешённой области вне документации; временные эксперименты — tmp.
169
+ Постоянные скрипты/тесты — в штатных scripts/tests или библиотеке средств по
170
+ профилю проекта. До очистки/передачи сохрани нужные evidence и незавершённое
171
+ состояние в доступном долговечном месте вне документации. Одна ссылка на tmp
172
+ не является сохранённым evidence. Не удаляй чужие/прежние файлы автоматически.
173
+
46
174
  ## Новая цель и рабочий тред
47
175
 
48
176
  При запросе на реальную разработку или изменение продукта L0 сверяет существующие треды и цель. Продолжение той же цели сохраняет тред. Для новой самостоятельной цели без подходящего треда создай его поддержанным механизмом памяти, например wolf thread add с title и goal; запомни фактический ID. Не создавай тред на каждое уточнение, приветствие или вопрос о текущем состоянии.
@@ -73,9 +201,13 @@ FULL — несколько компонентов, новые контракт
73
201
  ## Контракты передачи
74
202
 
75
203
 
76
- TASK: task_id, цель, AC/REQ, base_sha, cwd/worktree, allowlist записи, разрешённые области чтения, зависимости, ссылки на design/test-plan, проверки, ограничения, ожидаемый отчёт.
204
+ TASK: task_id, цель, AC/REQ, base_sha, cwd/worktree, allowlist записи, разрешённые области чтения, зависимости, ссылки на design/test-plan, проверки, ограничения, ожидаемый отчёт. Для L2: один конечный результат,
205
+ способ/границы допустимого поиска, конечный лимит и точный триггер возврата L1;
206
+ формат передачи (по умолчанию сообщение), точные разрешённые выходные файлы,
207
+ если нужны, и место временной работы вне документации;
208
+ ответственность за общий план и покрытие остаётся у L1.
77
209
  RESULT: task_id, DONE | DONE_WITH_CONCERNS | NEEDS_CONTEXT | BLOCKED, изменения, проверки и evidence, отклонения, оставшиеся риски. DONE означает готовность к ревью, а не приёмку.
78
- EVIDENCE: claim/AC, command или процедура, cwd, revision, dirty-state digest при наличии, существенное окружение, время, exit/status, результат и путь к логу. Не выдумывай отсутствующие поля.
210
+ EVIDENCE: claim/AC, command или процедура, cwd, revision, dirty-state digest при наличии, существенное окружение, время, exit/status, результат и ссылка на имеющееся подтверждение (лог, вывод инструмента, CI-артефакт). Отдельный файл лога не обязателен. Не выдумывай отсутствующие поля.
79
211
  ACCEPTANCE: по каждому AC подтверждение/не подтверждено, актуальные evidence, независимое ревью, ограничения; финальный verdict L0: ACCEPTED | PARTIAL | REJECTED | INCONCLUSIVE.
80
212
 
81
- Контракты веди в брифах/отчётах существующими средствами. Не добавляй команды или типы Wolf без отдельной реализации. Следы жалоб и вердиктов сохраняй разрешённым каналом; при недоступной записи передай L1.
213
+ Контракты веди сообщениями и адресными note Wolf; файловый fallback — по правилам рабочей памяти выше. Не добавляй команды или типы Wolf без отдельной реализации. Следы жалоб и вердиктов сохраняй разрешённым каналом; при недоступной записи передай L1.