Skip to content

v3.1.0

Latest

Choose a tag to compare

@github-actions github-actions released this 28 Aug 20:34
· 2 commits to main since this release

v3.1.0

Плагин работает во втором харнессе. Кроме Claude Code его теперь можно поставить в
OpenCode — строкой в opencode.json, закреплённой на этот же тег этого же репозитория.
Механика гейта общая: одно ядро, одни инструменты, одни навыки и субагенты. Для тех, кто
работает в Claude Code, не меняется ничего — отсюда минорный номер.

Контуры
code: без изменений.
arch: без изменений.
xml: без изменений.
hygiene: без изменений.
оркестратор: логика взвода, формат состояния и тексты вынесены в общее ядро
hooks/gate-core.mjs. Хуки Claude Code стали тонкими обёртками над ним:
ввод-вывод харнесса снаружи, решение внутри. Поведение прежнее, и это
проверяется теми же тестами, что и до выноса.

        Точки переключения через окружение, все с обратносовместимыми умолчаниями:
        `QG_STATE_DIR` — каталог состояния (по умолчанию `.claude/.state`);
        `QG_PROJECT_DIR` — корень проекта, первым в цепочке перед `CLAUDE_PROJECT_DIR`;
        `QG_ROOT` — корень пакета, избавляет навык от перебора кандидатов;
        `QG_DATA_DIR` — каталог анализатора, сильнее `CLAUDE_PLUGIN_DATA`.

Установка в OpenCode

"plugin": ["1c-quality-gate@git+https://github.com/Romandredan/1c-quality-gate.git#v3.1.0"]

Пакет ставит сам OpenCode, копировать в проект нечего. Состав объявляется хуком config:
навыки через config.skills.paths, команды и субагенты разбором поставляемых .md,
MCP стандартов записью в config.mcp. Инструменты агент находит по QG_ROOT из хука
shell.env — механизм штатный, а не наследование окружения процесса.

Тег закрепляйте: без него OpenCode тянет текущее состояние main, и два харнесса
разъезжаются. Единственный ручной шаг — две строки в .gitignore проекта, названы в
docs/OPENCODE.md.

Гейт в OpenCode мягкий. Эквивалента Stop-хука с отказом в завершении сессии там нет:
плагин ловит session.idle и возвращает агента к работе, не более трёх раз на неизменный
состав правок. Исчерпание лимита пишется в журнал записью gate-surrendered — отказ от
проверки остаётся наблюдаемым фактом. Требования к снятию не смягчены: release
по-прежнему требует машиночитаемый след, валидатор общий для обоих харнессов.

Что перестанет проходить
Нет. Ни одна проверка не ужесточена, новых обязательных записей следа не появилось,
пороги не менялись: отчёт, проходивший валидатор в 3.0.0, проходит и здесь.

Ломающие изменения
Нет. Установка Claude Code, расположение состояния, имена проверок, флаги и коды возврата
не менялись. Каталог анализатора остался прежним и общим для обоих харнессов: бинарник
закреплён по версии и SHA-256, для Claude Code и OpenCode он побайтово один, и вторая
копия стоила бы шестидесяти мегабайт. QG_DATA_DIR перекрывает путь, если он не нужен.

Миграция
Не требуется, .1c-quality-gate.json не меняется.

Закреплённая версия анализатора
0.2.73

Минимальная версия Claude Code
Не меняется.

Благодарности
@BaniBaushev — замысел и основная работа: общее ядро, плагин OpenCode, субагенты и
команды, документация второго харнесса. Пять заходов ревью, и на каждый — разбор по
существу, а не отписка. Отдельно стоит назвать два места, где правка пришла вместе с
тестом, воспроизводящим дефект: отвергнутый абсолютный путь в QG_STATE_DIR и подключение
наборов тестов к общему прогону.

Проверено живьём на OpenCode 1.18.25: пакет ставится из git-спецификации и разворачивается
целиком; регистрируются пять навыков, три субагента и MCP v8std; правка .bsl взводит
гейт в .opencode/.state, gate.mjs status из оболочки агента его видит, release снимает
маркер; analyzer-run.mjs поднимает bsl-analyzer 0.2.73 с подтверждённым часовым.

Тестов 596 → 602. Наборы gate-core.test.mjs (44 проверки) и opencode-plugin.test.mjs
(43) подключены к общему прогону — прежде они существовали, проходили и не запускались ни
в CI, ни локально.