# 🧹 Привести коды выхода шагов гейта к общему словарю - **Тип:** chore - **Категория:** Очередь - **Зачем:** CLAUDE.md объявляет словарь кодов общим для четырёх проверочных шагов и описывает код 3 как «каталог или файл не найден», но все четыре обёртки в Taskfile.yml при отсутствующем скрипте отдают 1 («дрейф»), из-за чего читатель кода идёт искать разъехавшееся там, где просто неполно дерево. Расхождение старое и повторено всеми четырьмя обёртками одинаково — дефектом одного изменения оно не является. Сами скрипты словарю следуют: при пропавшем источнике `scripts/check-go-version.sh` выходит с кодом 3, проверено прогоном 2026-08-12. Развилка тут есть, и решать её придётся: либо обёртки приводятся к 3, либо из описания кода 3 в памятке убирается «или файл не найден» и `exit 1` объявляется нормой для «скрипта шага нет». Второй вариант меняет только текст памятки, а не код всех четырёх обёрток, и тоже не расходится с фактами. ## Затрагивает - шаги `docs`, `tasks`, `openspec` и `go-version` в `Taskfile.yml`; - словарь кодов в `CLAUDE.md`, раздел «Гейт». ## Критерии приёмки - Один и тот же исход даёт один и тот же код у всех четырёх шагов. Оракул — убрать по очереди каждый из четырёх скриптов и прогнать его шаг: коды совпадают между собой и с тем, что обещает памятка. - Памятка и поведение сошлись. Оракул — прочитать словарь в `CLAUDE.md` и сверить с четырьмя прогонами выше поимённо. - Гейт зелёный целиком. Оракул — `task gate`. ## Рамки Скрипты плагинов (`docs.py`, `tasks.py`, `openspec.py`) не правятся: они живут вне репозитория, и их коды уже следуют словарю. Правятся только обёртки в `Taskfile.yml` и текст памятки.