@gian-tiaga/eda 3.9.2 → 3.10.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
@@ -47,7 +47,7 @@ eda update-all ~/Code
47
47
  | `eda-business` | Совместно с человеком описывает целевое поведение проекта по тематическим карточкам: сложные темы фиксирует подробно, но без шума, соседних модулей и привязки к текущему коду. Может закрепить значимый механизм вроде JWT или серверного хранения токенов, но не язык, библиотеку или конкретную СУБД. `about` содержит лишь короткое описание проекта и основные возможности | `docs/business.md`, `docs/business/` |
48
48
  | `eda-roadmap` | Создаёт roadmap-файл: список будущих задач с короткими, понятными и недвусмысленными описаниями без деталей реализации, файлов, библиотек, API и пошагового плана | `docs/artifacts/roadmaps/` |
49
49
  | `eda-explore` | Исследует тему до конкретного результата: описание проблемы, релевантная архитектура, закрытые развилки, риски внутри решений и короткий выбранный вариант решения без плана. После определения темы читает только применимые business- и reference-карточки. В дефолтном режиме ведёт исследование как диалог; для пакетов и ПО проверяет актуальные стабильные версии | `docs/artifacts/researches/` |
50
- | `eda-plan` | Пишет план реализации через Plan Mode: фиксирует решения, БД/API-контракты и фазы, каждую из которых один агент выполняет и проверяет за один проход. На подтверждение показывает полный план в формате скила, включая метаданные, разделы и структуру фаз; сохраняет тот же текст. Задач с идентификаторами внутри фаз нет. Реализацию не описывает — её задают `docs/rules.md`, `docs/arch.md` и карточки. Если целевое поведение ещё не описано в business-карточках, до реализации добавляет `Дополнить бизнесовые правила`; если решение противоречит правилам или архитектуре, сначала меняет сам документ. По `plan.review` запускает изолированный `eda-plan-polish` ровно на одну итерацию полировки (`limit 1`); `plan.strict` независимо включает кросс-CLI ревью | `docs/artifacts/plans/`, опционально plan-review артефакты |
50
+ | `eda-plan` | Пишет план реализации через Plan Mode: фиксирует решения, контракты БД и API, устройство и дизайн интерфейса, консольные команды и фазы, каждую из которых один агент выполняет и проверяет за один проход. На подтверждение показывает полный план в формате скила, включая метаданные, разделы и структуру фаз; сохраняет тот же текст. Задач с идентификаторами внутри фаз нет. Реализацию не описывает — её задают `docs/rules.md`, `docs/arch.md` и карточки. Если целевое поведение ещё не описано в business-карточках, до реализации добавляет `Дополнить бизнесовые правила`; если решение противоречит правилам или архитектуре, сначала меняет сам документ. По `plan.review` запускает изолированный `eda-plan-polish` ровно на одну итерацию полировки (`limit 1`); `plan.strict` независимо включает кросс-CLI ревью | `docs/artifacts/plans/`, опционально plan-review артефакты |
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 перестаёт расти, останавливается и восстанавливает лучшую версию, а не последнюю. По умолчанию одна итерация: проверка и исправление. Исправление проверяет ревью следующей итерации, поэтому при `limit 1` последняя правка остаётся неперепроверенной. Кросс-CLI strict не используется | `docs/artifacts/plan-reviews/`, `docs/artifacts/plan-review-fixes/` |
@@ -225,8 +225,8 @@ plan:
225
225
  # Определяет, как eda-plan принимает существенные решения.
226
226
  # autonomous | recommend_and_ask | ask_each_time
227
227
  decision_mode: recommend_and_ask
228
- # Задаёт стратегию тестов.
229
- # after_each_phase | tdd_each_phase | end_of_plan | ask_each_time
228
+ # Задаёт стратегию тестов и автоматических проверок.
229
+ # after_each_phase | phase_tests_final_checks | tdd_each_phase | end_of_plan | ask_each_time
230
230
  test_strategy: ask_each_time
231
231
  # Задаёт стратегию логирования.
232
232
  # debug_precise | standard | ask_each_time
@@ -400,7 +400,7 @@ discover-automations:
400
400
  - `aim.mode` — `automatic` самостоятельно выбирает безопасные ответы на рабочие вопросы; `manual` передаёт вопросы человеку. Явный режим в текущем вызове имеет приоритет.
401
401
  - `explore.strict` и `explore.decision_mode` — кросс-CLI ревью и способ выбора по исследовательским развилкам в `eda-explore`.
402
402
  - `plan.review` — изолированный цикл `eda-plan-polish` внутри `eda-plan`, ровно одна итерация полировки (`limit 1`); `plan.strict` независимо управляет кросс-CLI ревью.
403
- - `plan.size`, `plan.decision_mode`, `plan.test_strategy`, `plan.logging_strategy` — режим и структура работы `eda-plan`.
403
+ - `plan.size`, `plan.decision_mode`, `plan.test_strategy`, `plan.logging_strategy` — режим и структура работы `eda-plan`. Имя `test_strategy` сохранено для совместимости, но настройка управляет и тестами, и автоматическими проверками: `after_each_phase` запускает их после каждой фазы, `tdd_each_phase` сначала пишет тесты и после реализации запускает все проверки фазы, `phase_tests_final_checks` в фазе запускает только добавленные или изменённые ею тесты, а остальные проверки оставляет финалу, `end_of_plan` переносит тесты и автоматические проверки в конец плана.
404
404
  - `plan-review.threshold` — доля закрытых пунктов чек-листа для статуса `ready`, default `100`. Отдельных агентов у `plan-review` больше нет: проверку целиком делает один субагент.
405
405
  - `plan-polish.limit` — максимальное число итераций «проверка + исправление»; default `1`. Отдельного подтверждающего прохода нет: исправление проверяет ревью следующей итерации. Цикл останавливается раньше, если score перестал расти.
406
406
  - `plan-execute.mode` — где `eda-plan-execute` выполняет фазы: `subagents` — каждая фаза в отдельном изолированном субагенте с независимой проверкой, `main` — весь план одним контекстом без субагентов, `auto` — выбор по плану; default `auto`. Явный режим в вызове имеет приоритет.
package/lib/install.js CHANGED
@@ -447,19 +447,23 @@ const DECISION_MODE_CHOICES = [
447
447
  const TEST_STRATEGY_CHOICES = [
448
448
  {
449
449
  value: 'after_each_phase',
450
- name: 'Писать и запускать тесты после каждой фазы'
450
+ name: 'Писать тесты и запускать все проверки после каждой фазы'
451
+ },
452
+ {
453
+ value: 'phase_tests_final_checks',
454
+ name: 'Писать тесты в фазах, запускать только их, остальные проверки — в конце'
451
455
  },
452
456
  {
453
457
  value: 'tdd_each_phase',
454
- name: 'В каждой фазе сначала тесты, затем код'
458
+ name: 'В каждой фазе сначала тесты, затем код и все проверки фазы'
455
459
  },
456
460
  {
457
461
  value: 'end_of_plan',
458
- name: 'Писать тесты в конце плана отдельной фазой'
462
+ name: 'Писать тесты и запускать все проверки в конце плана'
459
463
  },
460
464
  {
461
465
  value: 'ask_each_time',
462
- name: 'Спрашивать стратегию тестов каждый раз'
466
+ name: 'Спрашивать стратегию тестов и проверок каждый раз'
463
467
  }
464
468
  ];
465
469
  const LOGGING_STRATEGY_CHOICES = [
@@ -782,7 +786,7 @@ export async function askSettings({
782
786
  ['explore', 'explore.decisionMode', settings.explore, 'decisionMode', 'Как принимать важные решения в eda-explore?', DECISION_MODE_CHOICES],
783
787
  ['plan', 'plan.size', settings.plan, 'size', 'Какой размер плана eda-plan использовать по умолчанию?', PLAN_SIZE_CHOICES],
784
788
  ['plan', 'plan.decisionMode', settings.plan, 'decisionMode', 'Как принимать важные решения в eda-plan?', DECISION_MODE_CHOICES],
785
- ['plan', 'plan.testStrategy', settings.plan, 'testStrategy', 'Какую стратегию тестов eda-plan использовать по умолчанию?', TEST_STRATEGY_CHOICES],
789
+ ['plan', 'plan.testStrategy', settings.plan, 'testStrategy', 'Какую стратегию тестов и проверок eda-plan использовать по умолчанию?', TEST_STRATEGY_CHOICES],
786
790
  ['plan', 'plan.loggingStrategy', settings.plan, 'loggingStrategy', 'Какую стратегию логирования eda-plan использовать по умолчанию?', LOGGING_STRATEGY_CHOICES],
787
791
  ['plan-review', 'planReview.threshold', settings.planReview, 'threshold', 'Какой порог готовности использовать в eda-plan-review?', PLAN_REVIEW_THRESHOLD_CHOICES],
788
792
  ['plan-polish', 'planPolish.limit', settings.planPolish, 'limit', 'Сколько итераций «проверка + исправление» разрешить eda-plan-polish?', PLAN_POLISH_LIMIT_CHOICES],
@@ -1228,7 +1232,7 @@ function migrateSettingsContent(content) {
1228
1232
  transfer(
1229
1233
  'plan.testStrategy',
1230
1234
  plan.test_strategy ?? legacyDefaults.test_strategy,
1231
- oneOf(['after_each_phase', 'tdd_each_phase', 'end_of_plan', 'ask_each_time']),
1235
+ oneOf(['after_each_phase', 'phase_tests_final_checks', 'tdd_each_phase', 'end_of_plan', 'ask_each_time']),
1232
1236
  value => { settings.plan.testStrategy = value; }
1233
1237
  );
1234
1238
  transfer(
@@ -1472,8 +1476,8 @@ plan:
1472
1476
  # Определяет, как eda-plan принимает существенные решения.
1473
1477
  # autonomous | recommend_and_ask | ask_each_time
1474
1478
  decision_mode: ${settings.plan.decisionMode}
1475
- # Задаёт стратегию тестов.
1476
- # after_each_phase | tdd_each_phase | end_of_plan | ask_each_time
1479
+ # Задаёт стратегию тестов и автоматических проверок.
1480
+ # after_each_phase | phase_tests_final_checks | tdd_each_phase | end_of_plan | ask_each_time
1477
1481
  test_strategy: ${settings.plan.testStrategy}
1478
1482
  # Задаёт стратегию логирования.
1479
1483
  # debug_precise | standard | ask_each_time
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gian-tiaga/eda",
3
- "version": "3.9.2",
3
+ "version": "3.10.0",
4
4
  "description": "Пакет скилов и специализированных агентов eda-* для Claude Code и Codex CLI",
5
5
  "type": "module",
6
6
  "bin": {
@@ -19,14 +19,21 @@ description: 'Создаёт понятный исполнимый план ре
19
19
  | `plan.review` | `true`, `false` | включение: `с ревью плана`, `с plan-review`; выключение: `без ревью плана`, `без plan-review` |
20
20
  | `plan.size` | `normal`, `short`, `ask_each_time` | `short`; обычный: `обычный план`, `не short` |
21
21
  | `plan.decision_mode` | `autonomous`, `recommend_and_ask`, `ask_each_time` | `autonomous`, `recommend_and_ask`, `ask_each_time`, «сам выбирай», «рекомендуй и спрашивай», «спрашивай всё» |
22
- | `plan.test_strategy` | `after_each_phase`, `tdd_each_phase`, `end_of_plan`, `ask_each_time` | явное указание стратегии тестов |
22
+ | `plan.test_strategy` | `after_each_phase`, `phase_tests_final_checks`, `tdd_each_phase`, `end_of_plan`, `ask_each_time` | явное указание стратегии тестов и проверок |
23
23
  | `plan.logging_strategy` | `debug_precise`, `standard`, `ask_each_time` | явное указание стратегии логирования |
24
24
 
25
25
  Если итоговое значение `plan.size`, `plan.test_strategy` или `plan.logging_strategy` равно `ask_each_time`, задай блокирующий вопрос, кроме случая, когда пользователь уже выбрал значение в текущем сообщении.
26
26
 
27
- Варианты вопросов: размер плана — `normal` / `short`; тесты — `after_each_phase` / `tdd_each_phase` / `end_of_plan`; логирование — `debug_precise` / `standard`.
27
+ Варианты вопросов: размер плана — `normal` / `short`; тесты и проверки — `after_each_phase` / `phase_tests_final_checks` / `tdd_each_phase` / `end_of_plan`; логирование — `debug_precise` / `standard`.
28
28
 
29
- `test_strategy` обязан менять план: `tdd_each_phase` начинает каждую фазу с тестов, `after_each_phase` добавляет тесты после реализации каждой фазы, `end_of_plan` выносит тесты в отдельную финальную фазу. `logging_strategy` обязан отражаться в алгоритме, фазах и разделе `Логирование`.
29
+ Имя `test_strategy` сохраняется для совместимости, но настройка управляет и написанием тестов, и моментом запуска автоматических проверок. Она обязана менять план:
30
+
31
+ - `tdd_each_phase` начинает каждую фазу с тестов, затем выполняет реализацию и запускает написанные тесты вместе со всеми применимыми проверками фазы;
32
+ - `after_each_phase` сначала выполняет реализацию, затем добавляет тесты и запускает их вместе со всеми применимыми проверками фазы;
33
+ - `phase_tests_final_checks` добавляет тесты в ту же фазу, что и реализацию; в `Проверке` фазы оставляет только точечный запуск добавленных или изменённых в ней тестов, а полный набор тестов, линтеры, typecheck, static analysis и остальные обязательные проверки переносит в финальную проверку всего плана;
34
+ - `end_of_plan` выносит написание тестов и первый запуск всех автоматических проверок в отдельную финальную фазу; предыдущие фазы подтверждаются только указанными неавтоматическими критериями готовности.
35
+
36
+ `logging_strategy` обязан отражаться в алгоритме, фазах и разделе `Логирование`.
30
37
 
31
38
  `без проверок` одновременно устанавливает `plan.review: false` и `plan.strict: false`. `plan.review` и `plan.strict` независимы.
32
39
 
@@ -120,7 +127,7 @@ status: <draft | meta-reviewed | reviewed>
120
127
  reviewer: <pending | none | claude | codex>
121
128
  plan_review: <docs/artifacts/plan-reviews/... | none>
122
129
  plan_review_fix: <docs/artifacts/plan-review-fixes/... | none>
123
- test_strategy: <after_each_phase | tdd_each_phase | end_of_plan>
130
+ test_strategy: <after_each_phase | phase_tests_final_checks | tdd_each_phase | end_of_plan>
124
131
  logging_strategy: <debug_precise | standard>
125
132
  sources:
126
133
  rules: <путь или —>
@@ -146,6 +153,17 @@ sources:
146
153
  ### API и внешние контракты
147
154
  Если не меняются: `Не затрагивается`. Иначе метод и путь, auth/permissions, request/query/body, response, ошибки и status codes, события, очереди и внешние сервисы.
148
155
 
156
+ ### Интерфейс и дизайн
157
+ Если интерфейс не меняется: `Не затрагивается`. Иначе опиши состав и организацию затронутых страниц или экранов: основные области и элементы, их расположение, назначение и взаимосвязи. Используй заданные макеты или референсы; если их нет — текущий дизайн проекта. Формат выбирай по содержанию: свободный текст или таблица `Страница | Описание дизайна`.
158
+
159
+ Не повторяй здесь целевой алгоритм и содержание фаз. Поведение упоминай только тогда, когда без него нельзя понять состав или организацию интерфейса.
160
+
161
+ ### Консольные команды
162
+ Если команды не меняются: `Не затрагивается`. Иначе перечисли точки входа и команды в таблице:
163
+
164
+ | Команда | Аргументы и опции | Назначение |
165
+ |---|---|---|
166
+
149
167
  ## Фазы выполнения
150
168
 
151
169
  ### 1. <Название фазы>
@@ -158,8 +176,8 @@ sources:
158
176
  Проверка:
159
177
  - команда или критерий готовности.
160
178
 
161
- ## Тесты
162
- Стратегия и сценарии по поведению — в одном месте, а не внутри каждой фазы.
179
+ ## Тесты и проверки
180
+ Стратегия, сценарии по поведению, фазовые и финальные команды — в одном месте, а не дублируются внутри каждой фазы. В поле `Проверка` фазы остаётся только применимый к ней запуск или критерий согласно `test_strategy`.
163
181
 
164
182
  ## Логирование
165
183
  Стратегия, уровни, обязательные поля и что писать запрещено.
@@ -183,7 +201,7 @@ sources:
183
201
 
184
202
  Quality gate перед показом на подтверждение, перед сохранением и после каждой включённой проверки:
185
203
 
186
- - есть `Целевой алгоритм` и `Контракты реализации` с обоими подразделами;
204
+ - есть `Целевой алгоритм` и `Контракты реализации` с подразделами `Данные и БД`, `API и внешние контракты`, `Интерфейс и дизайн` и `Консольные команды`;
187
205
  - применимые business-карточки выбраны после определения scope, записаны в `sources.business` и отражены в критериях приёмки;
188
206
  - каждый отсутствующий, неполный или расширяемый пункт целевого поведения покрыт отдельной задачей `Дополнить бизнесовые правила` до зависимой реализации; для чисто технических изменений такая задача не добавлена;
189
207
  - план строго следует `docs/rules.md` и `docs/arch.md`, а также применимым reference-карточкам; там, где нужно другое поведение, есть отдельный пункт на изменение самого документа до зависимой реализации;
@@ -81,7 +81,18 @@ plan-execute:
81
81
 
82
82
  ### 3. Прочитать план и проверить фазы
83
83
 
84
- Прочитай `$PLAN_FILE`. Для каждой фазы извлеки цель, что сделать, результат и проверку. До запуска убедись, что у каждой фазы есть проверяемый результат и команда или критерий проверки.
84
+ Прочитай `$PLAN_FILE`, включая `test_strategy`. Для каждой фазы извлеки цель, что сделать, результат и проверку. До запуска убедись, что у каждой фазы есть проверяемый результат и команда или критерий проверки.
85
+
86
+ `test_strategy` управляет не только написанием тестов, но и фазовыми проверками:
87
+
88
+ | Стратегия | Фазовый прогон |
89
+ |---|---|
90
+ | `tdd_each_phase` | сначала написать тесты, после реализации запустить их и все применимые проверки фазы |
91
+ | `after_each_phase` | после реализации написать тесты и запустить их и все применимые проверки фазы |
92
+ | `phase_tests_final_checks` | написать тесты в фазе, но запустить только добавленные или изменённые этой фазой тесты; остальные проверки отложить |
93
+ | `end_of_plan` | до финальной фазы использовать только указанные неавтоматические критерии готовности; тесты и автоматические проверки не запускать |
94
+
95
+ Полный набор тестов и обязательных проверок всё равно запускается в финале. Если план не соответствует своей стратегии, верни его в `eda-plan` или `eda-plan-polish`, а не меняй стратегию при выполнении.
85
96
 
86
97
  Если фаза не описывает проверяемый результат или её проверку нечем выполнить, не достраивай смысл молча: через `AskUserQuestion` предложи вернуть план в `eda-plan` или `eda-plan-polish`.
87
98
 
@@ -136,7 +147,7 @@ current_phase: <номер>
136
147
 
137
148
  Ожидание слота и один технический retry не считаются попыткой исправления фазы и не расходуют её лимит сходимости.
138
149
 
139
- Каждому исполнителю фазы передай: рабочую директорию, `$PLAN_FILE`, номер и полный текст фазы, краткие результаты завершённых фаз, пути к `docs/rules.md`, `docs/arch.md`, `docs/business.md` и `docs/references.md`, ограничения пользователя, критерии проверки фазы и запрет коммитить и менять план и журнал.
150
+ Каждому исполнителю фазы передай: рабочую директорию, `$PLAN_FILE`, номер и полный текст фазы, `test_strategy`, краткие результаты завершённых фаз, пути к `docs/rules.md`, `docs/arch.md`, `docs/business.md` и `docs/references.md`, ограничения пользователя, критерии проверки фазы и запрет коммитить и менять план и журнал. Явно передай разрешённый фазовый прогон из таблицы стратегии; не разрешай запускать отложенные ею проверки досрочно.
140
151
 
141
152
  Требуй YAML-результат:
142
153
 
@@ -173,7 +184,7 @@ questions: [<вопросы или пусто>]
173
184
 
174
185
  ### 7. Проверять каждую фазу
175
186
 
176
- В `subagents` после `completed` запусти нового изолированного субагента-проверяющего. Он не меняет файлы, целиком читает план, `docs/rules.md` и `docs/arch.md`, читает только применимые карточки, выполняет все проверки фазы и подтверждает критерии результата.
187
+ В `subagents` после `completed` запусти нового изолированного субагента-проверяющего. Он не меняет файлы, целиком читает план, `docs/rules.md` и `docs/arch.md`, читает только применимые карточки, выполняет разрешённый стратегией фазовый прогон и подтверждает критерии результата. При `phase_tests_final_checks` он запускает только тесты, добавленные или изменённые в этой фазе. При `end_of_plan` он не запускает автоматические команды и проверяет только указанные неавтоматические критерии готовности.
177
188
 
178
189
  ```yaml
179
190
  status: passed | failed | blocked
@@ -189,13 +200,13 @@ references_read: [<пути или пусто>]
189
200
 
190
201
  При `failed` передай полный результат исполнителю этой фазы, поручи исправить подтверждённые проблемы и запусти нового проверяющего. Основной агент код не чинит и контекст прежнего проверяющего не переиспользует.
191
202
 
192
- В `main` сам выполни все проверки фазы и сверь результат с критериями плана, а не с собственным впечатлением. Падение исправляй и повторяй проверку заново целиком.
203
+ В `main` сам выполни разрешённый стратегией фазовый прогон и сверь результат с критериями плана, а не с собственным впечатлением. Для `phase_tests_final_checks` запускай только добавленные или изменённые текущей фазой тесты; для `end_of_plan` не запускай автоматические команды до финальной фазы. Падение исправляй и повторяй проверку заново целиком.
193
204
 
194
205
  При `passed` отметь фазу завершённой и только тогда переходи к следующей.
195
206
 
196
207
  ### 8. Финальная проверка
197
208
 
198
- После всех фаз прогони полный набор тестов, линтеров, typecheck, static analysis и других обязательных команд проекта. В `subagents` это делает отдельный новый субагент: он только проверяет, целиком читает план, `docs/rules.md` и `docs/arch.md` и выбирает карточки итогового изменённого поведения. В `main` тот же полный набор запускает основной агент.
209
+ После всех фаз прогони полный набор тестов, линтеров, typecheck, static analysis и других обязательных команд проекта. Для `phase_tests_final_checks` и `end_of_plan` это первый полный прогон; он обязан включить созданные по фазам и существующие тесты проекта вместе со всеми отложенными проверками. Для `after_each_phase` и `tdd_each_phase` это итоговый повтор полного набора после интеграции всех фаз. В `subagents` это делает отдельный новый субагент: он только проверяет, целиком читает план, `docs/rules.md` и `docs/arch.md` и выбирает карточки итогового изменённого поведения. В `main` тот же полный набор запускает основной агент.
199
210
 
200
211
  Падение из-за сделанных изменений сопоставь с фазами и исправь по порядку плана: в `subagents` передай каждую группу исполнителю соответствующей фазы. Затем повтори всю финальную проверку целиком. Чужую или несвязанную поломку зафиксируй и вынеси вопросом, если без решения нельзя завершить план. Запрещено делать проверки зелёными через подавление ошибок, игноры, исключения, ослабление конфигов или изменение команд проверки.
201
212
 
@@ -42,7 +42,7 @@ Read-only проверка одного плана по списку ниже.
42
42
  | 5 | Все существенные решения имеют источник подтверждения: ответ пользователя, research или `autonomous` с причиной |
43
43
  | 6 | В плане не осталось решений, которые придётся принимать исполнителю |
44
44
  | 7 | Пакеты, библиотеки и сервисы имеют конкретные версии или ссылку на существующий lock |
45
- | 8 | Есть `Целевой алгоритм` и `Контракты реализации` с подразделами `Данные и БД` и `API и внешние контракты` |
45
+ | 8 | Есть `Целевой алгоритм` и `Контракты реализации` с подразделами `Данные и БД`, `API и внешние контракты`, `Интерфейс и дизайн` и `Консольные команды` |
46
46
  | 9 | Ни один факт не описан в двух разделах |
47
47
  | 10 | В плане нет сигнатур чужих методов, приведений типов, формы классов, внутренних вычислений без контрактного смысла и пересказа кодовых примеров карточек; формулы, задающие обязательное поведение, допустимы |
48
48
  | 11 | У каждой фазы есть цель, что сделать, результат и проверка |