Files
dev-skills/decisions/55-task-pipeline-becomes-resolve.md
T
av bf6a173115 журнал решений: разложен по теме на файл, метки решений стали номерами
- DECISIONS.md (4040 строк, 65 тем) → decisions/, файл на тему плюс указатель;
- буквенные метки решений заменены сквозными Р1–Р234, следствия получили
  префикс С при прежних номерах: схема букв выродилась до пятибуквенных и
  сломалась — `АЕАКЛ` была занята и темой 53, и темой 65;
- 42 перекрёстные ссылки переписаны под новые номера и стали живыми; где номер
  означал тему, а слово стояло «решение», формулировка исправлена.
2026-08-13 12:40:56 +03:00

7.2 KiB

55. task-pipeline стал resolve: два плановых стопа вместо полной автономии (2026-08-09)

Р203. Автоматическое решение задач агентом признано утопией — «работает, но работает плохо», — и хуже того, автор перестал ориентироваться в собственном процессе. Отсюда разворот: задачи решаются по одной, а в цикл возвращается человек. task-batch удалён целиком; task-pipeline переписан в resolve.

Прежняя доктрина звучала «умолчание — делать, а не спрашивать», и она не отменена, а ограничена. Полностью автономный прогон плох не тем, что ошибается, а тем, что ошибку видно на готовом коде: развилка, стоившая бы абзаца до propose, стоит переписывания после apply. Постоянное же согласование возвращает ту цену, ради ухода от которой пайплайн и писался. Разрез поэтому по месту, а не по важности решения: развилка, найденная до ближайшего чекпоинта, копится в него; найденная после последнего — по-прежнему уходит вопросом в запись, и задача доводится в объявленных границах.

Чекпоинтов два, и второй обязателен всегда.

  • «варианты» — у исследовательской задачи, до первого требования. Признак ветки не объём работы, а отсутствие одного очевидного способа решения: обсуждать варианты после propose поздно, предложение уже воплотило один из них, и разговор пойдёт не о выборе, а о переделке. Форма ограничена сверху — 2–4 варианта: больше четырёх человек не сравнивает, а признаёт неспособность сравнить и просит рекомендацию.
  • «объяснение» — у всякой задачи, после ревью дизайна. Порядок обоснован: человек читает то, что уже просеяла машина, и не тратит внимание на выловимое review-specs. Внимание здесь самый дорогой ресурс процесса.

Объяснение не стало новым артефактом, и это главная правка первоначального замысла. Задумывалось отдельным разделом в design.md; при разборе оказалось, что оно там было бы третьим домом одного и того же: в proposal.md уже есть ## Why («в чём проблема»), в design.md — рассмотренные варианты. Поэтому объяснение собирается из двух существующих артефактов, а требование к их форме уехало в openspec/config.yamlrules.proposal и rules.design. Это единственное место, применяющееся в момент написания, а не после. Побочная выгода: design.md с названными причинами отказа — половина будущего ADR, а промоут ADR читает именно архивный design.md.

Закрыт вопрос, висевший в плане открытым: что делает автоматический участок, когда ревью кода спорит с одобренным дизайном. Признак проверяемый — меняются ли дельта-спеки. Не меняются: находка внутри дизайна, дожимается сама. Меняются: решение стало другим, а одобрено было прежнее — разметка пересчитывается (правило уже было) и чекпоинт повторяется. Чекпоинт, который можно обойти находкой ревью, не значит ничего, и хуже того — человек уверен, что одобрил именно то, что уехало в коммит.

Удаление task-batch обошлось дороже своего каталога. На нём держались: третий режим review-specs (стык после слияния) вместе с исключением «живого change нет — берём источником актуальные спеки»; единственное исключение из правила review-triage «плана нет — не запускаюсь»; и обоснование имени основной ветки в каноне — «в неё вливает батч». Первые два — послабления, существовавшие только ради батча, и с ним они исчезли, сделав оба правила строже.

Что из этого следует

С184. Автономность ограничивается местом, а не важностью решения. «Спрашивать о важном» неисполнимо: важность оценивает тот же, кто хочет закончить. «Копить до ближайшего планового стопа» проверяемо и не требует суждения.

С185. Чекпоинт ставится после машинной проверки, а не до неё. Внимание человека тратится только на то, чего машина не ловит; порядок наоборот сжигает его на выловимом и обесценивает саму остановку.

С186. Объяснение для человека не заводит своего артефакта. Если оно собирается из уже существующих, оно не может с ними разойтись; отдельный текст «то же, но понятнее» — третий дом, и расходится он молча.

С187. Послабление, введённое ради одного потребителя, уходит вместе с ним. Исключение переживает своего заказчика и выглядит общим правилом; удаляя потребителя, ищи его исключения — они и есть настоящий хвост.