Конвейер реализации на пресете low-pipeline — ТЗ пишет Opus на low, ТЗ критикуют сразу DeepSeek V4.1 Flash и GLM 5.3 Flash в pi, код пишет devin на SWE-2 max фоновой задачей, принимает и коммитит Grok 4.7 на high в своём агентном харнессе; основной контекст только маршрутизирует, носит вопросы автору и ведёт журнал. Вызывай, когда шаг спеки или фичу надо провести через ТЗ, критику, реализацию и независимую приёмку, а лимит подписки Max поджимает — на подписке только ТЗ, внешних денег около тр...
Installs into .claude/skills of the current project.
Are you the author of Low Pipeline?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/dmitry-fomin-low-pipeline)
---
name: low-pipeline
description: "Конвейер реализации на пресете low-pipeline — ТЗ пишет Opus на low, ТЗ критикуют сразу DeepSeek V4.1 Flash и GLM 5.3 Flash в pi, код пишет devin на SWE-2 max фоновой задачей, принимает и коммитит Grok 4.7 на high в своём агентном харнессе; основной контекст только маршрутизирует, носит вопросы автору и ведёт журнал. Вызывай, когда шаг спеки или фичу надо провести через ТЗ, критику, реализацию и независимую приёмку, а лимит подписки Max поджимает — на подписке только ТЗ, внешних денег около трёх долларов на задачу. Запускай только по явному имени: маршрутом карточки Listik (launch_route или метка process:<ключ>) или когда человек назвал пресет; по сходству задачи сам не подхватывай."
argument-hint: "[путь к <id>.<X>.md или описание задачи]"
license: MIT
---
# Конвейер low-pipeline
Пресет для случая, когда кончается не кошелёк, а квота подписки: на подписке остаётся **один этап** — писатель
ТЗ на Opus low, остальные трое снаружи. Код пишет devin на `swe-2-max` (аккаунт devin, отдельных денег нет),
судья — Grok 4.7 high; внешних **≈ $3** на задачу. Обоснование расклада — в
[presets-2026-09-24.md](../../references/presets-2026-09-24.md) и [ROLES.md](../../references/ROLES.md).
**Прочитай [pipeline-core.md](../../references/pipeline-core.md) целиком до первого действия.** Там всё, что
у пресетов общее: твоя роль, жёсткие правила, протокол вопросов, шаг 0, треки, сборка пакета диффа, пределы
на порцию, журнал и общие грабли. Ниже — только то, чем low-pipeline отличается: кто делает каждый этап и как его
позвать. Скил запускается только по явному имени — маршрутом карточки Listik (`launch_route` или метка
`process:low-pipeline`) или человеком (`/feature-pipeline:low-pipeline`); по сходству задачи сам его не подхватывай, и запуск скила — согласие автора
на отправку **ТЗ, чек-листа, кода и диффа порции** наружу: критикам — шаг, ТЗ и чек-лист, код на чтение, исполнителю — рабочий
каталог целиком (devin ходит по коду сам), судье — дифф. Секреты в ТЗ не пропускает этап 1, в дифф — границы
правки порции; все команды — из корня основного дерева.
## Роли
| Этап | Кто | Модель и усилие | Первая строка отчёта |
| --- | --- | --- | --- |
| 1. ТЗ и чек-листы | субагент `feature-pipeline:pipeline-spec-writer-low` | **`model: opus` в вызове** (frontmatter — opus, effort low) → Opus low | `готово` или `вопрос` |
| 2. Критика ТЗ | скил `pi:pi-delegate`, две фоновые задачи одним сообщением | каналы `deepseek` (DeepSeek V4.1 Flash) и `glm` (GLM 5.3 Flash), `--permission read`; кворум — хотя бы один из `deepseek`, `glm` | по файлу на критика, потом твоя сводка `review-<X>.md` с разделами «Блокирующие» и «Существенные» |
| 3. Реализация | скил `devin:devin-delegate`, фоновой задачей, с `--write` | `--thinking max` (модель `swe-2-max`) | `готово`, `не смог` или `вопрос` |
| 4. Приёмка и коммит | `/grok:delegate`, фоновой задачей | `--model grok-4.7 --effort high` | `зелёный` с хешем или `красный` |
**Про этап 1 отдельно.** Агент `pipeline-spec-writer-low` — тот же, что в `medium-pipeline`, и во frontmatter
у него `opus` + `low`. Здесь его **перебивают параметром `model: opus` в вызове**: так и получается Opus low —
`model` перебивает frontmatter, усилие остаётся из него. Усилие в вызове не меняется, нужен другой уровень — это другой агент.
**Чем пресет платит за дешевизну.** SWE-2 в Artificial Analysis **не замерен** — ни качества, ни
`hallucinationRate` у него нет, его заявлениям верить не на чем; замер против DeepSeek на одинаковых карточках —
открытый пункт в `presets-2026-09-24.md`.
Отсюда два следствия, и оба не смягчаются: **судья не
опционален** — без приёмки пресет не запускается вовсе, а недоступный канал судьи это **стоп**, а не «пойдём
без приёмки», потому что «готово» без независимой проверки не значит ничего; и **`не смог` — редкое исключение,
а `готово` — заявление, не факт**: модель почти никогда не скажет «не смог», её заявление проверяет судья.
По той же причине DeepSeek не судья нигде, а критик — только вторым рядом с GLM: его одиночные пункты в сводке
помечены `сверить с кодом` (`pipeline-core.md`, «Критика ТЗ»).
## Нужные скилы
Стоп, если нет хотя бы одного — раздел «Внешние скилы» `pipeline-core.md`. Скрипты из кэша не зови.
- [`pi:pi-delegate`](../../../pi/skills/pi-delegate/SKILL.md) (`plugins/pi/skills/pi-delegate/SKILL.md`) — критика ТЗ, каналы `deepseek` и `glm`; [`pi:pi-check`](../../../pi/skills/pi-check/SKILL.md) — готовность обоих; [`pi:pi-jobs`](../../../pi/skills/pi-jobs/SKILL.md) — забор ответов; [`pi:pi-runtime`](../../../pi/skills/pi-runtime/SKILL.md) — контракт;
- [`devin:devin-delegate`](../../../devin/skills/devin-delegate/SKILL.md) (`plugins/devin/skills/devin-delegate/SKILL.md`) — этап 3 (`--write` и `--thinking max` обязательны); [`devin:devin-check`](../../../devin/skills/devin-check/SKILL.md) — готовность; [`devin:devin-jobs`](../../../devin/skills/devin-jobs/SKILL.md) — ход и забор; [`devin:devin-runtime`](../../../devin/skills/devin-runtime/SKILL.md) — контракт и продолжение сессии;
- `/grok:delegate` — этап 4 и предполётный прогон судьи; `/grok:setup` — готовность, если прогон упал не на балансе; `/grok:status` и `/grok:result` — ход и забор; `grok:grok-cli-runtime` — контракт;
- [`listik:listik`](../../../listik/skills/listik/SKILL.md) (`plugins/listik/skills/listik/SKILL.md`) — карточка, этапы, журнал, вопросы автору.
## Префикс
```
STEPS=docs/specs/steps
BASE=<id> # без карточки — adhoc-<ГГГГ-ММ-ДД>-<слаг>
WT=. # в треке — абсолютный путь дерева трека
```
`<X>` — буква порции, `<R>` — заход приёмки, `DJOB` и `JOB` — id фоновых задач исполнителя и судьи. `DJOB` берётся из ответа `devin:devin-delegate`.
## Предполётная проверка — до этапа 1
**Стоп-фактор.** Любая роль недоступна (предполётная проверка не прошла, харнесс не установлен или не залогинен, запуск упал, ответила не та модель) — конвейер стоит: журнал `стоп: <роль> — <харнесс> недоступен: <причина>`, `listik needs-owner <id> "<вопрос>"` и тот же вопрос в чат, и больше ничего. Запасного исполнителя нет: роль не подменяется ни другим харнессом, ни другой моделью, ни локальным субагентом, в headless тоже (`pipeline-core.md`, «Стоп-фактор»). Повтор того же харнесса и той же модели в той же роли — не подмена. Исключение — критики этапа 2: они идут по кворуму, выбывший критик не стоп, пока кворум пресета набран; кворум не набран — стоп по ядру (`pipeline-core.md`, «Критика ТЗ»).
Все четыре канала — здесь, не когда понадобятся. Скилов нет — уже стоп по ядру. Готовность исполнителя —
`devin:devin-check`; усилие зашито пресетом — `--thinking max`, другое не выбирай. Не готов —
**стоп-фактор** (раздел «Стоп-фактор» `pipeline-core.md`): журнал `стоп: исполнитель — devin недоступен: <причина>`,
`needs-owner` и вопрос в чат; запасного исполнителя нет. Готовность критиков — `pi:pi-check` полной пробой, смотришь `ok` каналов `deepseek` и `glm`; выбывание критика на предполёте — по ядру (`pipeline-core.md`, «Критика ТЗ»); оба канала без `ok` на предполёте — кворум не набрать, стоп по ядру («Кворум не набран») до этапа 1. Судья —
**настоящим коротким прогоном** через `/grok:delegate` без `--background`:
```
/grok:delegate --no-web --model grok-4.7 --effort low Ответь ровно одним словом: ok
```
Вернулось `ok` — канал живой. Вернулся 402 или другая ошибка — **стоп и вопрос автору** с текстом ошибки
дословно, и остановка здесь жёстче, чем в остальных пресетах: незамеренного исполнителя
без приёмки проверить нечем, без судьи нельзя даже на одну порцию. Любая роль недоступна — стоп-фактор ядра, не подмена.
## Этапы
### 1. ТЗ и чек-листы — `pipeline-spec-writer-low`, `model: opus`
`Agent` `feature-pipeline:pipeline-spec-writer-low`, **`model: opus`** — обязательно, в каждом запуске и в
режиме правки. В задаче: путь к спеке **или** текст автора; `$STEPS`; имя бумаг `<id>`. В треке добавь **границу
этого трека** — каталог или слой, за который его ТЗ не выходит, словами автора. Правила порций, границ
и чек-листов агент знает сам — не пересказывай. ТЗ читать будет модель с высокой склонностью к выдумке:
недосказанное она додумает и не спросит, поэтому допущения агента показывай автору **всегда**. `вопрос` —
протокол вопросов, `готово` — в журнал `шаг <id>: старт, пресет low-pipeline, порций <K>`.
### 2. Критика ТЗ — DeepSeek + GLM
**Стоп-фактор.** Критики этапа идут по кворуму, а не по правилу недоступной роли: выбывший критик (запуск упал, не залогинен, ответила не та модель, ответ негоден или не пришёл за окно) — не стоп, пока кворум пресета набран. Не набран — стоп по ядру: журнал `стоп: критика — кворум не набран: <кто не дал годного ответа и почему>`, `needs-owner` и тот же вопрос в чат (`pipeline-core.md`, «Критика ТЗ»).
Состав — два критика в pi: `pi:pi-delegate`, каналы `deepseek` (DeepSeek V4.1 Flash) и `glm` (GLM 5.3 Flash), `--permission read`, фоновыми задачами одним сообщением, с одним заданием; ответы — `result` через `pi:pi-jobs`. Кворум — годный ответ хотя бы одного. Ни `deepseek`, ни `glm` не дали годного ответа — стоп «кворум не набран»: локальный Sonnet или другой критик Anthropic их не заменяет.
Проверка на секреты, старые ответы, запуск, задание, окно 15 минут, забор, годность, повтор, журнал выбывших и правила сведения в `$STEPS/$BASE.review-<X>.md` — `pipeline-core.md`, «Критика ТЗ».
Решение по сводке — твоё, по ядру (`pipeline-core.md`, «Решение по сводке»): каждому пункту
`принять`, `отклонить` или `автору` в `$STEPS/$BASE.decisions-<X>.md`, автору — только пункты `автору`, строка в журнал.
Есть `принять` или `автору` — **автору ТЗ**: возобнови `pipeline-spec-writer-low` через `SendMessage` с путями к
`$STEPS/$BASE.decisions-<X>.md` и `$STEPS/$BASE.review-<X>.md`; после `/clear` — новый запуск в режиме правки
(`model: opus`, пути к порции, чек-листу, файлу решений и сводке). Одна критика на порцию, поправленное ТЗ не критикуется.
### 3. Реализация — `devin:devin-delegate`
**Стоп-фактор.** Харнесс этапа недоступен (запуск упал, не залогинен, ответила не та модель) — конвейер стоит: журнал `стоп: <роль> — <харнесс> недоступен: <причина>`, `needs-owner` и тот же вопрос в чат; подмены другим харнессом, моделью или локальным субагентом нет (`pipeline-core.md`, «Стоп-фактор»).
Карточку Listik выдаёшь до запуска, а `claim` за devin не пишешь — он сам:
`listik stage <P> --to s3-impl --holder devin --actor agent:claude --harness claude`.
Дальше **вызови скил `devin:devin-delegate`**. В аргументах скила обязательно:
- `--write` — этап пишет код; без флага devin только читает, и «похоже на реализацию» он в право записи сам не переводит;
- `--thinking max` — усилие пресета (модель `swe-2-max`);
- рабочий каталог `--cwd $WT`, `--label "$BASE <X>"` и `--session "$BASE-<X>"` — по ней идёт продолжение;
- фоновой запуск: ответ — job-id;
- путь к порции **строкой**, не содержимое файла.
**devin недоступен — стоп.** `devin:devin-check` не готов или запуск devin упал на старте (не на `не смог`) —
стоп-фактор ядра: журнал `стоп: исполнитель — devin недоступен: <причина>`, `needs-owner <id> "<вопрос>"` и тот же
вопрос в чат. Запасного исполнителя нет: ни pi, ни другая модель, ни локальный субагент роль не берут. Повтор
того же devin с тем же `--thinking max` (новая сессия после упавшего `resume`) — не подмена.
Задание, которое уходит в скил:
```
Реализуй порцию ТЗ из файла <путь $STEPS/$BASE.<X>.md подставь буквально>. Прочитай его целиком; раздел «Границы
правки» — жёсткое условие, не пожелание. Разберись в коде, который правишь, прежде чем править. Прогони то, чем проект
проверяется (тесты, линтер, типы). Не коммить и не делай git add/stash/checkout/reset. Не трогай .env, *.key, *.pem,
credentials.json. Не правь тесты под реализацию и не глуши гарды. Требование непонятно или противоречиво — не выбирай
за автора: сделай то, что от ответа не зависит, и верни ответ с первой строкой `вопрос` и списком вопросов, у каждого
варианты, один помечен словом «предпочитаю». Ответ — не длиннее 30 строк, первая строка `готово`, `не смог` или
`вопрос`; дальше: сделано по пунктам требований / не сделано с причиной / открытые вопросы и расхождения / изменённые
файлы списком / проверки одной строкой каждая. Хоть одно требование не выполнено — первая строка `не смог`. Листинги и
логи в ответ не клади.
Listik, карточка <P> (подставь её id буквально): отчитывайся по ней, а не только в дереве. Писать в трекер
не запрещено — это твоя карточка, и claim в ней и есть доказательство, что ты запустился.
listik
Первым действием возьми её сам: listik claim <P> --holder devin --actor agent:devin --harness devin
Дальше каждые 10–15 минут работы — heartbeat с тем, что идёт сейчас:
listik heartbeat <P> --holder devin --note "<что делаешь>" --actor agent:devin --harness devin
Перед ответом — итог в журнал:
listik comment <P> "<первая строка отчёта и суть: файлы, проверки>" -k journal --actor agent:devin --harness devin
Не смог или вопрос — тот же journal и release <P>: не держи карточку, если по ней не работаешь.
```
Job id из ответа скила сразу в журнал: `порция <X>: devin <job-id>`, он же `DJOB=`. Ожидание и забор — как говорит `devin:devin-delegate`; ход уже запущенной задачи — `devin:devin-jobs`. Ответ devin дословно — отчёт этапа.
**Сессия devin и повтор.** Прогон идёт в именованной сессии `--session "$BASE-<X>"`, имя сразу в журнал
строкой `порция <X>: devin сессия <id>` (имя сессии и есть её id). Повторный заход по той же порции **продолжает её**:
`resume --session "<имя>" --background --label "…"` по `devin:devin-runtime` (наследует каталог, права и
усилие). **`resume` вернул exit 2 (сессии нет) или другую ошибку — откат на новый прогон** тем же
`devin:devin-delegate` с текущим текстом задачи и новым именем сессии (`$BASE-<X>-2` и т.д.), строкой в журнал
об откате и с новой строкой `порция <X>: devin сессия <имя>`.
**Чем повторяется заход.** Правило одно на все пресеты и задано протоколом (`pipeline-core.md`,
«Шаг 0 — конфиг»), отдельного ключа настройки у него нет. После `вопрос` — продолжение сессии, ответы
автора уходят в неё дословно. После красного приёмки — то же продолжение сессии, «Красные пункты
приёмки» уходят в неё дословно. Новый прогон в обоих случаях только **откат** (см. выше): тогда в текст
идёт текущий текст задачи, «Ответы автора» или «Красные пункты приёмки» дословно и в конец — «Правки
предыдущего захода уже лежат в рабочем дереве — не откатывай и не переписывай их, работай поверх».
`вопрос` — протокол вопросов: продолжение той же сессии с ответами автора дословно, и только откат
продолжения идёт новым прогоном; `не смог` — повтор **его формулировкой** в пределах бюджета;
сбой, таймаут или пустой ответ — по `devin:devin-jobs` как `не смог`; `готово` идёт на этап 4 без обсуждения.
### 4. Приёмка и коммит — Grok 4.7 high фоновой задачей
**Стоп-фактор.** Харнесс этапа недоступен (запуск упал, не залогинен, ответила не та модель) — конвейер стоит: журнал `стоп: <роль> — <харнесс> недоступен: <причина>`, `needs-owner` и тот же вопрос в чат; подмены другим харнессом, моделью или локальным субагентом нет (`pipeline-core.md`, «Стоп-фактор»).
Судья единственный видит требования, чек-лист и код одновременно, поэтому вердикт и коммит — его; здесь он же и
единственная проверка работы исполнителя. Подсказок «это не дефект» ему не давай: находку разрешаешь ты по
отчёту. Собери пакет диффа по `pipeline-core.md` («Пакет диффа для приёмки»), выдай карточку судье
(`listik stage <P> --holder grok --actor agent:claude --harness claude`; `claim` и вердикт он пишет сам, за него —
нельзя) и запусти судью. **Вызови `/grok:delegate`** с `--background`, `--write`, `--no-web`,
`--model grok-4.7`, `--effort high`, каталог `$WT`. Как ждать и забирать — `/grok:status` и
`/grok:result`: ждать финальной фазы `done`/`failed`/`cancelled`, не пропажи `running`, не дольше
трёх часов; предел исчерпан — стоп, строка в журнал и вопрос автору.
Задание, которое уходит в `/grok:delegate`:
```
Ты — приёмка одной порции ТЗ и последняя инстанция по ней. Кода ты не правишь никогда: твой результат — вердикт и,
если он зелёный, коммит.
Пути (подставлены буквально): чек-лист приёмки, файл порции, пакет диффа; при повторном заходе — ещё дамп предыдущего
захода, тогда смотри разницу, а не всю порцию заново.
Порядок: прочитай порцию и чек-лист. Прогони каждый пункт чек-листа по факту — открой код, запусти команду, посмотри
вывод; «выглядит сделанным» не считается. Прочитай пакет диффа и ищи срезанные углы: правку тестов под реализацию,
ослабленные ассерты, скипы и xfail, отключённые правила линтера, заглушенные гарды, выход за границы правки порции,
правки не по теме порции. Прогони команды из раздела «Проверки порции» чек-листа — это минимум. Полный набор тестов сверх него — на твоё усмотрение: гоняй, если дифф задевает общий код, от которого зависит многое, конфиг сборки/тестов или зависимости, либо узкий запуск вызывает сомнение; в ответе строкой — запускал ли и почему. Дифф не трогает исполняемый код (документация, тексты, комментарии) — тесты не запускай вовсе, строкой «код не менялся». Раздела в чек-листе нет — минимум определи сам тем же правилом.
Чек-лист содержит непустой раздел «Критичные инварианты» — по каждому пункту предъяви конкретный ломающий
сценарий (одновременные запросы, повтор доставки, отрицательное значение и т.п.) с наблюдаемым результатом:
логом, состоянием тестовой БД, ответом API. Пересказ кода без попытки не считается проверкой.
Чек-лист содержит негативный контроль — прогони его и покажи отказ выводом команды; отказа нет — красный
пункт. Порция добавляет или чинит проверку (барьер, `claim`, шлюз, гард, валидацию, отказ API), а негативного
контроля в чек-листе нет — построй сценарий отказа сам и прогони его.
Каждое число, SHA и цитата в вердикте и отчёте — копией из вывода команды этого захода: хеш — из
`git rev-parse --short HEAD` после коммита, счётчики — из вывода раннера тестов, место в файле — `path:line`;
числа не из вывода в вердикт не идут. Утверждение исполнителя с числом или хешем сверяй с выводом своей
команды, а не принимай на веру.
Вердикт первой строкой:
- `зелёный` — все пункты чек-листа закрыты, проверки зелёные, срезанных углов нет. Тогда сам закоммить порцию.
`git add` — только новые и изменённые пути порции; удалённый через `git rm` путь в него не передавай:
упадёт `did not match any files` и не застейджит **ничего**. Коммить `git commit -m "<сообщение>" -- <все пути
порции, включая удалённые>`. После проверь `git show --stat --name-status HEAD` — ровно пути порции. Неполный —
второй коммит поверх, не `git commit --amend` (запрещён); в отчёте оба хеша: вторая строка вердикта — через
запятую, последний итоговый. Не добавляй `-A` и `.`: в
дереве может лежать чужое. Не коммить бумаги шага (каталог ТЗ и файлы `*.journal.md`). Не пушить. Не делать
reset, stash, checkout файлов, clean, rebase, amend и --no-verify. Не трогать .env, *.key, *.pem, credentials.json.
- `красный` — коммита нет. Дальше нумерованный список: пункт чек-листа или найденный срезанный угол, каждый — что
не так и что именно доделать. Находку про выход за границы правки порции ставь первым словом строки
`ГРАНИЦЫ:` — дальше её иначе маршрутизирует оркестратор. Остальные формулировки уйдут исполнителю дословно,
поэтому они про дефект, а не про впечатление.
Ответ — не длиннее 40 строк. Первая строка `зелёный` с хешем коммита или `красный`; дальше: пункты чек-листа с исходом
по каждому / найденные срезанные углы / проверки одной строкой каждая / что отложено или перенесено. Листинги и логи в
ответ не клади.
Listik, карточка <P> (подставь её id буквально): судья берёт её сам и сам пишет вердикт — за тебя его не напишут.
listik
Первым действием: listik claim <P> --holder grok --actor agent:grok --harness grok
Вердикт — сразу после ответа, первой строкой аргумента ровно `VERDICT: PASS` или `VERDICT: FAIL`
(сервер читает только её), дальше хеш коммита или красные пункты дословно, по одному в строке:
listik comment <P> $'VERDICT: PASS\n<hash7>' -k verdict --actor agent:grok --harness grok
listik comment <P> $'VERDICT: FAIL\n<пункты дословно>' -k verdict --actor agent:grok --harness grok
Красный вердикт — ещё и release <P>: карточку снова возьмёт исполнитель.
```
Job id из ответа `/grok:delegate` — в журнал и в `JOB=`.
- **зелёный** — судья уже закоммитил, в отчёте хеш. В журнал `порция <X>: готово (коммит <hash7>)`, отложенное и
перенесённое — отдельными строками. Дальше следующая порция — с этапа 3, если её критика уже прошла параллельно (см. «Цикл» в pipeline-core.md), иначе с этапа 2.
- **красный** — коммита нет, порция на этап 3 с пунктами дословно, в пределах бюджета; повтор идёт
продолжением сессии исполнителя (правило `pipeline-core.md`, «Шаг 0 — конфиг»), а новый прогон — только
откат, когда продолжить нельзя.
- **`failed`, `402` или пустой ответ** — это не красное: вердикта не было. Строка в журнал и вопрос автору;
порция остаётся незакрытой, следующую не начинаешь.
Проверь после зелёного, что коммит действительно есть: `git -C "$WT" log --oneline -1`. Судья работает с
автоодобрением своих инструментов, и его «закоммитил» стоит одной команды проверки.
## Грабли пресета
| Симптом | Причина | Что делать |
| --- | --- | --- |
| В сессии нет `devin:devin-delegate` | плагин devin не установлен или сессия стартовала до установки | стоп-фактор: `стоп: исполнитель — devin недоступен: …`, `needs-owner` и вопрос в чат; запасного нет; скрипт из кэша не зови |
| devin вернул разбор порции вместо правки, дерево чистое | в `devin:devin-delegate` забыт `--write` | перезапуск скила с `--write`; предыдущий ответ отчётом этапа не считается |
| devin ушёл не на `swe-2-max` | в вызов не попал `--thinking max` | ответ отчётом не считается, перезапуск с `--thinking max` |
| Исполнителю ушло содержимое ТЗ | в скил попал текст файла, а не путь | в задание идёт путь к порции |
| Порция закоммичена недоделанной | `готово` от исполнителя принято на веру без судьи | судья не опционален: SWE-2 не замерен, «готово» проверяет только приёмка |
| Судья упал с 402, порция повисла | баланс Grok Build исчерпан | предполётный прогон судьи до этапа 1; 402 по ходу — вопрос автору, порция не закрывается |
| Фоновая задача не находится по статусу | статус или забор вызваны из другого каталога, чем запуск | тот же каталог во всех вызовах; ход — скил jobs/status плагина |
| Судья сказал «зелёный», коммита нет | прогон оборвался после вердикта | `git log --oneline -1` после каждого зелёного; нет коммита — вопрос автору |
| Повтор после `вопрос` или красного начал сессию с нуля | имя сессии не попало в журнал или сессия по имени не нашлась (`resume` — exit 2) | это откат, а не сбой: новый прогон через `devin:devin-delegate` с текущим текстом задачи и новым именем сессии, строка в журнал |