@gian-tiaga/eda 3.3.1 → 3.4.0

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.
package/README.md CHANGED
@@ -51,7 +51,7 @@ eda update-all ~/Code
51
51
  | `eda-plan-review` | Одним read-only проходом проверяет план по фиксированному чек-листу из 16 пунктов: покрытие запроса, отсутствие развилок, соответствие правилам и архитектуре, дубли, регистр текста, фазы и объём. Замечания вне списка не принимает. Оценка — доля закрытых пунктов, поэтому растёт монотонно. План не меняет | `docs/artifacts/plan-reviews/` |
52
52
  | `eda-plan-review-fix` | Закрывает проваленные пункты чек-листа минимальным изменением плана с совпадающим SHA-256. План не растёт: сначала удаление и замена, прирост объёма за один заход не больше 3%. Новое ревью не делает и код не меняет | `docs/artifacts/plan-review-fixes/` |
53
53
  | `eda-plan-polish` | Оркестрирует изолированный цикл plan-review → plan-review-fix. Хранит снапшот лучшей версии плана: как только score перестаёт расти, останавливается и восстанавливает лучшую версию, а не последнюю. По умолчанию две review-итерации. Кросс-CLI strict не используется | `docs/artifacts/plan-reviews/`, `docs/artifacts/plan-review-fixes/` |
54
- | `eda-plan-execute` | Управляет выполнением плана по фазам. Каждую фазу целиком выполняет отдельный изолированный субагент: он читает план, правила, архитектуру и только business/reference-карточки затронутого поведения и компонентов. Фазы проходят строго последовательно и принимаются независимыми проверяющими. Основной агент отмечает подтверждённые задачи и ведёт журнал | `docs/artifacts/executions/` |
54
+ | `eda-plan-execute` | Управляет выполнением плана по фазам в режиме `subagents`, `single` или `auto`. В `subagents` каждую фазу целиком выполняет отдельный изолированный субагент: он читает план, правила, архитектуру и только business/reference-карточки затронутого поведения и компонентов. Фазы проходят строго последовательно и принимаются независимыми проверяющими. В `single` весь план по тем же правилам выполняет и проверяет основной агент в одном контексте, а `auto` выбирает режим по плану. Отметки подтверждённых задач и журнал ведёт основной агент | `docs/artifacts/executions/` |
55
55
  | `eda-fix` | Делает обычные фиксы по короткому контексту, баг-репорту или плану. Перед правками читает правила, архитектуру и только применимые карточки, добавляет нужные тесты, прогоняет проверки и сохраняет историю правок | `docs/artifacts/fixes/` |
56
56
  | `eda-review` | Оркестрирует отдельные read-only проверки корректности, архитектуры, правил, references, business-правил, плана, качества, тестов, безопасности, производительности, frontend/UI/UX, API, БД, документации и предыдущих ревью. Сохраняет только доказанные дефекты, которые обязательно исправить; косметические и спекулятивные предложения отбрасывает. Любая находка даёт `changes-required`, а чистое ревью — `clean` и 100/100. Без аргументов ревьюит `git diff HEAD` | `docs/artifacts/reviews/` |
57
57
  | `eda-fix-by-review` | Применяет все находки из ревью с учётом правил, архитектуры и применимых карточек. Спрашивает только при неоднозначности, конфликте, расширении scope или рискованном действии. В конце ссылается на отчёт прямо в файле ревью | `docs/artifacts/review-fixes/` |
@@ -124,6 +124,8 @@ eda update-all ~/Code
124
124
 
125
125
  У некоторых скилов есть флаг `strict` — он включает дополнительные тяжёлые проверки. Передаётся как часть запроса агенту, например: `eda-explore strict <тема>`. Также strict можно включить отдельно в `docs/settings.yaml`, например через `explore.strict: true`. У `eda-review` вместо общего режима каждая проверка имеет собственные `mode` и `model`.
126
126
 
127
+ У `eda-plan-execute` есть режимы `subagents` / `single` / `auto`. Режим можно разово указать в вызове, например `eda-plan-execute single docs/artifacts/plans/....md`; без него используется `plan-execute.mode` из настроек, а без настроек — `auto`.
128
+
127
129
  У `eda-aim` есть режимы `automatic` / `manual`. В автоматическом основной агент сам отвечает на безопасные рабочие вопросы по рекомендации субагента и фактам проекта, в ручном передаёт их человеку. Режим можно разово указать в вызове; без него используется `aim.mode` из настроек. Точный список новых целей перед записью в `docs/artifacts/aims/` всё равно один раз подтверждает человек.
128
130
 
129
131
  Скилы, которых нет в таблице ниже, не поддерживают эти флаги. Набор проверок `eda-review` отдельно управляется через `review.agents`.
@@ -135,6 +137,7 @@ eda update-all ~/Code
135
137
  | `eda-explore` | `strict` | После сохранения отчёта отдаёт его соседнему CLI (Claude → Codex или наоборот) на критическое ревью конкретности, фактов, развилок, рисков и версий; затем доправляет отчёт по замечаниям | Серьёзные исследования, которые лягут в основу больших решений; когда хочется второго мнения от другой модели/среды |
136
138
  | `eda-plan` | `strict`, `без ревью плана`, `без проверок` | `strict` независимо включает кросс-CLI проверку; `без ревью плана` отключает встроенный review/fix; `без проверок` отключает оба вида ревью | Когда нужно разделить создание плана и его последующую полировку |
137
139
  | `eda-plan-review` | `threshold N` | Разово меняет долю закрытых пунктов, при которой план считается готовым | Для самостоятельного аудита готового плана |
140
+ | `eda-plan-execute` | `subagents` / `single` / `auto` | Разово меняет, где выполняются фазы, поверх `plan-execute.mode` | `single` для небольшого плана в одном контексте, `subagents` для большого или тяжёлого |
138
141
  | `eda-plan-polish` | `threshold N`, `limit N` | Меняет gate и максимальное число подтверждающих review-итераций | Для доводки ответственных планов перед `eda-plan-execute` |
139
142
 
140
143
  ---
@@ -229,6 +232,11 @@ plan-polish:
229
232
  # Максимальное число подтверждающих review-итераций.
230
233
  limit: 2
231
234
 
235
+ plan-execute:
236
+ # Где eda-plan-execute выполняет фазы плана.
237
+ # subagents — каждая фаза в отдельном субагенте, single — весь план одним контекстом, auto — решает по плану.
238
+ mode: auto
239
+
232
240
  review:
233
241
  # Каждая проверка имеет собственный режим запуска и модели для обеих сред.
234
242
  agents:
@@ -377,6 +385,7 @@ discover-automations:
377
385
  - `plan.size`, `plan.decision_mode`, `plan.test_strategy`, `plan.logging_strategy` — режим и структура работы `eda-plan`.
378
386
  - `plan-review.threshold` — доля закрытых пунктов чек-листа для статуса `ready`, default `100`. Отдельных агентов у `plan-review` больше нет: проверку целиком делает один субагент.
379
387
  - `plan-polish.limit` — максимальное число подтверждающих review-итераций; default `2`. Цикл останавливается раньше, если score перестал расти.
388
+ - `plan-execute.mode` — где `eda-plan-execute` выполняет фазы: `subagents` — каждая фаза в отдельном изолированном субагенте с независимой проверкой, `single` — весь план одним контекстом без субагентов, `auto` — выбор по плану; default `auto`. Явный режим в вызове имеет приоритет.
380
389
  - `review.agents.<check>.mode` — запускать проверку всегда, автоматически по контексту или отключить.
381
390
  - `review.agents.<check>.model.claude` и `.codex` — модель конкретной проверки в соответствующей среде.
382
391
  - `eda-review` не делит находки по обязательности: каждый принятый пункт требует исправления, а предложения без доказанного практического дефекта отбрасываются. Score остаётся экспертной оценкой серьёзности; любая находка блокирует `clean` независимо от score.
package/lib/install.js CHANGED
@@ -274,6 +274,9 @@ const DEFAULT_SETTINGS = {
274
274
  planPolish: {
275
275
  limit: 2
276
276
  },
277
+ planExecute: {
278
+ mode: 'auto'
279
+ },
277
280
  review: {
278
281
  agents: DEFAULT_REVIEW_AGENTS
279
282
  },
@@ -291,6 +294,7 @@ const SETTINGS_SECTION_NAMES = [
291
294
  'plan',
292
295
  'plan-review',
293
296
  'plan-polish',
297
+ 'plan-execute',
294
298
  'review',
295
299
  'send-review',
296
300
  'discover-automations'
@@ -364,6 +368,20 @@ const PLAN_POLISH_LIMIT_CHOICES = [1, 2, 3].map(value => ({
364
368
  value,
365
369
  name: `${value} ${value === 1 ? 'итерация' : value < 5 ? 'итерации' : 'итераций'}`
366
370
  }));
371
+ const PLAN_EXECUTE_MODE_CHOICES = [
372
+ {
373
+ value: 'auto',
374
+ name: 'Решать по плану: один контекст для простого плана, субагенты для остальных'
375
+ },
376
+ {
377
+ value: 'subagents',
378
+ name: 'Каждую фазу выполнять отдельным изолированным субагентом'
379
+ },
380
+ {
381
+ value: 'single',
382
+ name: 'Выполнять весь план одним контекстом без субагентов'
383
+ }
384
+ ];
367
385
  const PLAN_SIZE_CHOICES = [
368
386
  {
369
387
  value: 'normal',
@@ -715,7 +733,8 @@ export async function askSettings({
715
733
  ['plan', 'plan.testStrategy', settings.plan, 'testStrategy', 'Какую стратегию тестов eda-plan использовать по умолчанию?', TEST_STRATEGY_CHOICES],
716
734
  ['plan', 'plan.loggingStrategy', settings.plan, 'loggingStrategy', 'Какую стратегию логирования eda-plan использовать по умолчанию?', LOGGING_STRATEGY_CHOICES],
717
735
  ['plan-review', 'planReview.threshold', settings.planReview, 'threshold', 'Какой порог готовности использовать в eda-plan-review?', PLAN_REVIEW_THRESHOLD_CHOICES],
718
- ['plan-polish', 'planPolish.limit', settings.planPolish, 'limit', 'Сколько review-итераций разрешить eda-plan-polish?', PLAN_POLISH_LIMIT_CHOICES]
736
+ ['plan-polish', 'planPolish.limit', settings.planPolish, 'limit', 'Сколько review-итераций разрешить eda-plan-polish?', PLAN_POLISH_LIMIT_CHOICES],
737
+ ['plan-execute', 'planExecute.mode', settings.planExecute, 'mode', 'Как eda-plan-execute должен выполнять фазы по умолчанию?', PLAN_EXECUTE_MODE_CHOICES]
719
738
  ];
720
739
  for (const [section, key, target, property, message, choices] of scalarPrompts) {
721
740
  if (!requestedSections.has(section) || !shouldAsk(key)) continue;
@@ -1149,6 +1168,14 @@ function migrateSettingsContent(content) {
1149
1168
  const planPolish = objectValue(raw['plan-polish']);
1150
1169
  transfer('planPolish.limit', planPolish.limit, positiveInt, value => { settings.planPolish.limit = value; });
1151
1170
 
1171
+ const planExecute = objectValue(raw['plan-execute']);
1172
+ transfer(
1173
+ 'planExecute.mode',
1174
+ planExecute.mode,
1175
+ oneOf(['subagents', 'single', 'auto']),
1176
+ value => { settings.planExecute.mode = value; }
1177
+ );
1178
+
1152
1179
  const review = objectValue(raw.review);
1153
1180
  transferAgentSettings({
1154
1181
  rawAgents: objectValue(review.agents),
@@ -1368,6 +1395,11 @@ plan-polish:
1368
1395
  # Положительное целое число.
1369
1396
  limit: ${settings.planPolish.limit}
1370
1397
 
1398
+ plan-execute:
1399
+ # Где eda-plan-execute выполняет фазы плана.
1400
+ # subagents — каждая фаза в отдельном субагенте, single — весь план одним контекстом, auto — решает по плану.
1401
+ mode: ${settings.planExecute.mode}
1402
+
1371
1403
  review:
1372
1404
  # Каждая проверка имеет собственный режим запуска и модели для обеих сред.
1373
1405
  agents:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gian-tiaga/eda",
3
- "version": "3.3.1",
3
+ "version": "3.4.0",
4
4
  "description": "Пакет скилов и специализированных агентов eda-* для Claude Code и Codex CLI",
5
5
  "type": "module",
6
6
  "bin": {
@@ -5,24 +5,54 @@ description: 'Выполняет готовый план последовате
5
5
 
6
6
  # Скил: Управляющий выполнением плана (eda-plan-execute)
7
7
 
8
- Оркестрируй выполнение плана. Сам не пиши код и не запускай проверки проекта: передавай каждую фазу целиком отдельному изолированному субагенту, а её приёмку — отдельному проверяющему. Связывай результаты фаз, обновляй прогресс и журнал.
8
+ Веди выполнение плана: фазы строго по порядку, каждая с проверяемым результатом, прогресс и журнал в актуальном состоянии. Где именно выполняются фазы, задаёт режим.
9
+
10
+ ## Настройки
11
+
12
+ Прочитай только раздел `plan-execute` из `docs/settings.yaml`, если файл есть. Применяй только `version: 3`.
13
+
14
+ ```yaml
15
+ plan-execute:
16
+ mode: auto
17
+ ```
18
+
19
+ `plan-execute.mode` принимает `subagents`, `single` или `auto`; при отсутствующем или невалидном значении используй `auto`. Файл настроек не изменяй.
9
20
 
10
21
  ## Вход из сообщения пользователя
11
22
 
12
- Текст рядом с вызовом — главный вход. Разбери тему, путь к файлу, ограничения и прямые указания.
23
+ Текст рядом с вызовом — главный вход. Разбери тему, путь к файлу, ограничения, прямые указания и режим:
24
+
25
+ - `subagents`, `субагенты`, `по фазам`, `изолированно` → `$MODE=subagents`;
26
+ - `single`, `один`, `одним контекстом`, `без субагентов`, `сам` → `$MODE=single`;
27
+ - `auto`, `авто`, `автоматически` → `$MODE=auto`;
28
+ - без явного режима → `$MODE=plan-execute.mode` из валидных настроек, иначе `$MODE=auto`.
29
+
30
+ Режим из вызова важнее настройки, настройка важнее умолчания.
13
31
 
14
32
  Если входа достаточно, продолжай без вопроса. `AskUserQuestion` задавай только если входа нет, он противоречивый, найдено несколько равных планов или есть риск выполнить не тот план.
15
33
 
34
+ ## Режимы выполнения
35
+
36
+ | Режим | Кто выполняет фазу | Кто проверяет фазу и финал |
37
+ |---|---|---|
38
+ | `subagents` | отдельный изолированный субагент на каждую фазу | отдельные субагенты-проверяющие |
39
+ | `single` | основной агент подряд в одном контексте | сам основной агент |
40
+ | `auto` | решает по плану до старта: `single` или `subagents` | по выбранному режиму |
41
+
42
+ `auto` выбирай `single`, только когда весь план реально помещается в один контекст: немного фаз, небольшой объём задач и файлов, одна область кода, нет тяжёлых по контексту фаз вроде крупного рефакторинга, миграции данных или множества карточек. Иначе — `subagents`; при сомнении тоже `subagents`. Решение и его причину запиши в журнал.
43
+
44
+ В `single` следи за собственным контекстом. Если план оказался тяжелее оценки или контекст заканчивается, переключи оставшиеся фазы на `subagents`, запиши переключение в журнал и продолжи с текущей фазы.
45
+
16
46
  ## Главные правила
17
47
 
18
- 1. **Основной агент только управляет.** Ему разрешены чтение контекста, запуск и контроль субагентов, вопросы пользователю, обновление `$PLAN_FILE` и `$EXECUTION_FILE`. Код, тесты, миграции, конфиги, зависимости, документацию и git-состояние меняют только назначенные субагенты.
19
- 2. **Фазы выполняй строго последовательно.** Не запускай следующую, пока текущая не выполнена и её отдельная проверка не прошла.
20
- 3. **Одна фаза — один исполнитель.** Запускай каждую фазу целиком в новом субагенте со свежим контекстом без истории диалога. Идентификатор исполнителя сохраняй и продолжай его же для вопросов и исправлений этой фазы.
21
- 4. **Рамку читает исполнитель фазы.** Каждый исполнитель целиком читает план, `docs/rules.md` и `docs/arch.md`. Для поведения своей фазы он читает карточки из `sources.business`; у старого плана без поля выбирает через `docs/business.md` только непосредственно применимые карточки. Для затронутых компонентов так же выбирает технические карточки через `sources.references` или `docs/references.md`. Если выполнение фазы затрагивает компонент, для которого в `docs/references.md` указана карточка, исполнитель читает эту карточку целиком перед соответствующим изменением. Нерелевантные карточки не загружает.
22
- 5. **Исполнитель не додумывает план.** Если в фазе не хватает решения, он возвращает `needs_input`, а не выбирает сам. Недостающее решение — это вопрос пользователю или возврат в `eda-plan`, но не импровизация в коде.
23
- 6. **Блокируй конфликт.** План задаёт область выполняемой работы, а применимые business-карточки — требования к затронутому поведению. Если план противоречит business-карточке, `rules.md`, `arch.md` или reference-карточке, исполнитель возвращает `blocked`. Основной агент показывает конфликт и через `AskUserQuestion` спрашивает: изменить план через `eda-plan` или сначала пересогласовать правило через `eda-business`.
24
- 7. **Отмечай только подтверждённое.** Фазу закрывай только после `completed` от исполнителя и отдельного `passed` от проверяющего. При последующем опровержении верни отметку в незавершённое состояние.
25
- 8. **Проверки нельзя подавлять.** Не поручай отключать линтеры, тесты, typecheck, static analysis и другие проверки, добавлять игноры или ослаблять команды и правила. Причину падения исправляет исполнитель фазы, затем отдельный субагент повторяет проверку.
48
+ 1. **В `subagents` основной агент только управляет.** Ему разрешены чтение контекста, запуск и контроль субагентов, вопросы пользователю, обновление `$PLAN_FILE` и `$EXECUTION_FILE`. Код, тесты, миграции, конфиги, зависимости, документацию и git-состояние меняют только назначенные субагенты. В `single` основной агент выполняет фазы и проверки сам и остаётся единственным исполнителем.
49
+ 2. **Фазы выполняй строго последовательно.** Не начинай следующую, пока текущая не выполнена и её проверка не прошла.
50
+ 3. **В `subagents` одна фаза — один исполнитель.** Запускай каждую фазу целиком в новом субагенте со свежим контекстом без истории диалога. Идентификатор исполнителя сохраняй и продолжай его же для вопросов и исправлений этой фазы.
51
+ 4. **Рамку читает тот, кто выполняет фазу.** Он целиком читает план, `docs/rules.md` и `docs/arch.md`. Для поведения своей фазы читает карточки из `sources.business`; у старого плана без поля выбирает через `docs/business.md` только непосредственно применимые карточки. Для затронутых компонентов так же выбирает технические карточки через `sources.references` или `docs/references.md`. Если выполнение фазы затрагивает компонент, для которого в `docs/references.md` указана карточка, он читает эту карточку целиком перед соответствующим изменением. Нерелевантные карточки не загружает.
52
+ 5. **Исполнитель не додумывает план.** Если в фазе не хватает решения, это вопрос пользователю или возврат в `eda-plan`, но не импровизация в коде. В `subagents` исполнитель возвращает `needs_input`, в `single` основной агент останавливается и спрашивает.
53
+ 6. **Блокируй конфликт.** План задаёт область выполняемой работы, а применимые business-карточки — требования к затронутому поведению. Если план противоречит business-карточке, `rules.md`, `arch.md` или reference-карточке, останови фазу и через `AskUserQuestion` спроси: изменить план через `eda-plan` или сначала пересогласовать правило через `eda-business`.
54
+ 7. **Отмечай только подтверждённое.** Фазу закрывай только после выполнения и прошедшей проверки: в `subagents` это `completed` от исполнителя и отдельный `passed` от проверяющего, в `single` — пройденные критерии и команды проверки фазы с сохранённым выводом. При последующем опровержении верни отметку в незавершённое состояние.
55
+ 8. **Проверки нельзя подавлять.** Не отключай и не поручай отключать линтеры, тесты, typecheck, static analysis и другие проверки, не добавляй игноры и не ослабляй команды и правила. Сначала исправляется причина падения, затем проверка повторяется.
26
56
  9. **Не коммить, не пушь и не делай ревью.** Это другие скилы.
27
57
 
28
58
  ## Вопросы
@@ -43,7 +73,7 @@ description: 'Выполняет готовый план последовате
43
73
 
44
74
  Через `AskUserQuestion` предложи текущую ветку, новую ветку от `main`, новую ветку от текущей или worktree от `main`. Если вызывающий оркестратор уже передал подтверждённый выбор, не спрашивай повторно.
45
75
 
46
- Сам git-команды не выполняй: для новой ветки или worktree запусти отдельного субагента подготовки окружения. Передай ему только выбранный вариант, slug плана, рабочую директорию и запрет менять код. После успешного создания worktree остановись и дай команду перехода и нового запуска `eda-plan-execute <PLAN_FILE>`.
76
+ В `subagents` git-команды сам не выполняй: для новой ветки или worktree запусти отдельного субагента подготовки окружения; в `single` подготовь окружение сам. Передай ему только выбранный вариант, slug плана, рабочую директорию и запрет менять код. После успешного создания worktree остановись и дай команду перехода и нового запуска `eda-plan-execute <PLAN_FILE>`.
47
77
 
48
78
  ### 3. Прочитать план и проверить фазы
49
79
 
@@ -51,7 +81,9 @@ description: 'Выполняет готовый план последовате
51
81
 
52
82
  Если фаза не описывает проверяемый результат или её проверку нечем выполнить, не достраивай смысл молча: через `AskUserQuestion` предложи вернуть план в `eda-plan` или `eda-plan-polish`.
53
83
 
54
- ### 4. Инициализировать прогресс
84
+ ### 4. Определить режим и инициализировать прогресс
85
+
86
+ Если `$MODE=auto`, сравни разобранные фазы с критериями из «Режимы выполнения» и зафиксируй итоговый режим `single` или `subagents` до первой фазы. Дальше действуй по зафиксированному режиму.
55
87
 
56
88
  Создай `$EXECUTION_FILE` по пути `docs/artifacts/executions/{YYYY-MM-DD}_{HH-MM}_{slug}.md`. В `$PLAN_FILE` добавь или актуализируй один раздел `## Прогресс выполнения` со ссылкой на журнал и списком фаз.
57
89
 
@@ -60,6 +92,7 @@ description: 'Выполняет готовый план последовате
60
92
  plan: <путь>
61
93
  started: <YYYY-MM-DD HH:MM>
62
94
  status: in_progress
95
+ mode: subagents | single
63
96
  current_phase: <номер>
64
97
  ---
65
98
 
@@ -69,8 +102,8 @@ current_phase: <номер>
69
102
  | Фаза | Результат | Проверка | Статус |
70
103
  |---|---|---|---|
71
104
 
72
- ## Запуски субагентов
73
- | Время | Роль | Фаза | Результат | Файлы | Проверки |
105
+ ## Запуски
106
+ | Время | Исполнитель | Фаза | Результат | Файлы | Проверки |
74
107
  |---|---|---|---|---|---|
75
108
 
76
109
  ## Решения и блокеры
@@ -78,10 +111,12 @@ current_phase: <номер>
78
111
  ## Финальная проверка
79
112
  ```
80
113
 
81
- Основной агент пишет только этот журнал и отметки прогресса в плане. Субагентам явно запрети менять `$PLAN_FILE` и `$EXECUTION_FILE`.
114
+ Журнал и отметки прогресса в плане ведёт только основной агент. В `single` записывай выбор режима с причиной, а в колонке «Исполнитель» — `основной агент`; в `subagents` явно запрети субагентам менять `$PLAN_FILE` и `$EXECUTION_FILE`.
82
115
 
83
116
  ### 5. Запускать изолированных субагентов
84
117
 
118
+ Весь этап — только для `subagents`. В `single` пропусти его и выполняй фазы сам; переключился на `subagents` — вернись к нему.
119
+
85
120
  В Codex используй `spawn_agent` с `fork_turns: "none"`, в Claude Code — новый `Agent` с самодостаточным сообщением. Если изоляция или субагенты недоступны, остановись: `blocked: недоступно изолированное выполнение`. Работу основным агентом не делай и CLI-fallback не добавляй.
86
121
 
87
122
  #### Технические остановки субагентов
@@ -121,7 +156,7 @@ questions: [<вопросы или пусто>]
121
156
 
122
157
  ### 6. Выполнять фазы
123
158
 
124
- Для каждой фазы по порядку:
159
+ В `subagents` для каждой фазы по порядку:
125
160
 
126
161
  1. Запусти одного нового изолированного исполнителя и сохрани его идентификатор как исполнителя этой фазы.
127
162
  2. Проверь YAML-контракт, фактический scope файлов и результаты проверок. Запиши запуск в журнал.
@@ -130,9 +165,11 @@ questions: [<вопросы или пусто>]
130
165
  5. `blocked` — останови выполнение. Внешний блокер или изменение scope выноси вопросом; сам его не устраняй.
131
166
  6. После `completed` запусти независимую проверку фазы.
132
167
 
168
+ В `single` перед первой фазой один раз прочитай план целиком, `docs/rules.md` и `docs/arch.md`, а карточки выбирай по правилу 4 под каждую фазу. Затем для каждой фазы по порядку выполни работу фазы, запиши в журнал сделанное, изменённые файлы и результаты проверок и переходи к проверке фазы. Не хватает решения — спроси пользователя; конфликт с правилами или карточками — останови фазу как `blocked`; та же причина падения дважды подряд без содержательного изменения — остановись: `blocked: выполнение не сходится`.
169
+
133
170
  ### 7. Проверять каждую фазу
134
171
 
135
- После `completed` запусти нового изолированного субагента-проверяющего. Он не меняет файлы, целиком читает план, `docs/rules.md` и `docs/arch.md`, читает только применимые карточки, выполняет все проверки фазы и подтверждает критерии результата.
172
+ В `subagents` после `completed` запусти нового изолированного субагента-проверяющего. Он не меняет файлы, целиком читает план, `docs/rules.md` и `docs/arch.md`, читает только применимые карточки, выполняет все проверки фазы и подтверждает критерии результата.
136
173
 
137
174
  ```yaml
138
175
  status: passed | failed | blocked
@@ -146,27 +183,30 @@ business_read: [<пути или пусто>]
146
183
  references_read: [<пути или пусто>]
147
184
  ```
148
185
 
149
- При `failed` передай полный результат исполнителю этой фазы, поручи исправить подтверждённые проблемы и запусти нового проверяющего. Основной агент код не чинит и контекст прежнего проверяющего не переиспользует. При `passed` отметь фазу завершённой и только тогда переходи к следующей.
186
+ При `failed` передай полный результат исполнителю этой фазы, поручи исправить подтверждённые проблемы и запусти нового проверяющего. Основной агент код не чинит и контекст прежнего проверяющего не переиспользует.
187
+
188
+ В `single` сам выполни все проверки фазы и сверь результат с критериями плана, а не с собственным впечатлением. Падение исправляй и повторяй проверку заново целиком.
189
+
190
+ При `passed` отметь фазу завершённой и только тогда переходи к следующей.
150
191
 
151
192
  ### 8. Финальная проверка
152
193
 
153
- После всех фаз запусти отдельного нового субагента для полного набора тестов, линтеров, typecheck, static analysis и других обязательных команд проекта. Он только проверяет, целиком читает план, `docs/rules.md` и `docs/arch.md` и выбирает карточки итогового изменённого поведения.
194
+ После всех фаз прогони полный набор тестов, линтеров, typecheck, static analysis и других обязательных команд проекта. В `subagents` это делает отдельный новый субагент: он только проверяет, целиком читает план, `docs/rules.md` и `docs/arch.md` и выбирает карточки итогового изменённого поведения. В `single` тот же полный набор запускает основной агент.
154
195
 
155
- Падение из-за сделанных изменений сопоставь с фазами и передай каждую группу исполнителю соответствующей фазы по порядку плана, затем повтори всю финальную проверку новым субагентом. Чужую или несвязанную поломку зафиксируй и вынеси вопросом, если без решения нельзя завершить план. Запрещено делать проверки зелёными через подавление ошибок, игноры, исключения, ослабление конфигов или изменение команд проверки.
196
+ Падение из-за сделанных изменений сопоставь с фазами и исправь по порядку плана: в `subagents` передай каждую группу исполнителю соответствующей фазы. Затем повтори всю финальную проверку целиком. Чужую или несвязанную поломку зафиксируй и вынеси вопросом, если без решения нельзя завершить план. Запрещено делать проверки зелёными через подавление ошибок, игноры, исключения, ослабление конфигов или изменение команд проверки.
156
197
 
157
198
  Запиши команды и результаты в `## Финальная проверка`. Только после `passed` поставь `status: done` и время завершения. Если обязательная проверка объективно недоступна, сохрани `status: blocked`, причину и непройденные критерии; выполненным план не объявляй.
158
199
 
159
200
  ### 9. Финал
160
201
 
161
- Коротко сообщи пути к плану и журналу, завершённые фазы, результат фазовых и финальной проверок, оставшиеся блокеры, состояние git «не закоммичено» и следующий шаг: `eda-review` или `eda-commit`.
202
+ Коротко сообщи режим выполнения, пути к плану и журналу, завершённые фазы, результат фазовых и финальной проверок, оставшиеся блокеры, состояние git «не закоммичено» и следующий шаг: `eda-review` или `eda-commit`.
162
203
 
163
204
  ## Чего НЕ делать
164
205
 
165
- - Самому менять код, тесты, миграции, конфиги, зависимости или проектную документацию.
166
- - Самому запускать тесты, линтеры, typecheck, сборку, миграции, серверы и другие команды разработки и проверки.
167
- - Дробить фазу между исполнителями или давать одному исполнителю несколько фаз.
168
- - Запускать следующую фазу до успешной отдельной проверки текущей.
169
- - Позволять исполнителю додумывать недостающее решение вместо вопроса.
170
- - Давать субагентам историю диалога или разрешать менять план и журнал.
206
+ - В `subagents` самому менять код, тесты, миграции, конфиги и зависимости или самому запускать проверки проекта.
207
+ - В `subagents` дробить фазу между исполнителями, давать одному исполнителю несколько фаз, давать субагентам историю диалога или разрешать менять план и журнал.
208
+ - Выполнять большой или тяжёлый по контексту план в `single`, если режим не задан явно.
209
+ - Запускать следующую фазу до успешной проверки текущей.
210
+ - Додумывать недостающее решение вместо вопроса.
171
211
  - Подавлять ошибки проверок, ослаблять правила или менять команды ради зелёного результата.
172
212
  - Коммитить, пушить, создавать PR или делать ревью.