Контракт¶
Что в ОТК стабильно в пределах 1.x — на это можно опираться в хуках, CI и инструкциях агентов. В контракте поля, значения, ключи и флаги только добавляются; переименование или удаление — только в 2.0.
Что входит¶
| Входит | Не входит (может меняться в 1.x) |
|---|---|
команды и флаги otk, коды выхода |
текст вывода в консоль и журналов |
ключи otk.toml / otk.local.toml, переменные OTK_* |
текст summary.md и summary.html |
summary.json, junit.xml, summary.sarif, problems.txt |
static.json, run.json, designer.json, designer-check.json |
итоги otk gate --json, otk doctor --json |
журналы logs/, состояние копии ИБ otk-state.json |
план otk.json (otk collect --out) |
модули Python пакета otk_1c (API — это команда otk) |
коды причин (reasonCode) и правила находок (rule) |
тексты сообщений и remediation |
Внутренний файл JSON первым полем несёт $comment — формат меняется без предупреждения, править вручную не нужно.
Схемы¶
Каждый файл JSON начинается с schema — имя и версия формата (otk.summary.v1, otk.gate-result.v1,
otk.doctor-result.v1, otk.plan.v1) — и version — версия ОТК, которая его записала. Схемы лежат в пакете
(src/otk_1c/schema/) и на сайте документации по адресу из $id, например
https://cmapnep-tools.github.io/otk-1c/schema/gate-result.v1.json.
Правила чтения:
- незнакомое поле — пропустить: в v1 поля только добавляются, схемы контракта его допускают;
- незнакомое значение открытого перечисления — как неизвестное: код причины — как
other(действовать поremediation),statusитога — по коду выхода; открытые перечисления в схеме —anyOfиз известных значений и строки; - закрыты (новых значений в 1.x не будет): код выхода
code, важностьseverity(error,warning), режим проверки (on,auto,off); - другое имя или версия в
schema— другой формат:otk.summary.v2читатель v1 не разбирает.
Имена¶
- Поля JSON и ключи настроек — camelCase (
reasonCode,summaryPath,bslAnalyzerTimeout,[designerCheck]). - Значения перечислений, имена проверок и анализаторов, команды и флаги — kebab-case (
not-checked,ib-busy,platform-api,bsl-analyzer,otk platform-help); имена проверок и анализаторов — и там, где они ключи ([checks] platform-api,[analyzerSeverity] bsl-analyzer). - Имена из чужих словарей — как есть: контексты и виды модулей платформы (
Server,CommonModule), варианты встроенного языка (Russian), статусы git (A,M,D,R). - Важность находки —
errorилиwarningвезде: файлы прогона,[analyzerSeverity],[smoke] severity, SARIF, JUnit.
Коды выхода¶
Для всех команд:
| Код | Значит |
|---|---|
| 0 | успех: проверка прошла, команда выполнена |
| 1 | найдены дефекты в проверяемом коде (gate, report, static, run, designer-check), контрольный дефект не пойман (controls), ошибка в запросе (console check) |
| 2 | окружение, настройка, вызов или сбой самой ОТК: нет платформы, база занята, обязательная проверка недоступна (doctor), битый otk.toml, неизвестная команда |
Команды без проверяемого кода (collect, doctor, scaffold, availability, tj, mcp, platform-help, help)
возвращают только 0 и 2; console — тоже, кроме console check (1 — ошибка в запросе). build — 1, если выгрузка
не загрузилась в копию ИБ. ci, hook run и pt возвращают код запущенной проверки.
Настройки и переменные¶
Значение настройки берётся по порядку: аргумент командной строки, переменная OTK_*, otk.local.toml, otk.toml,
умолчание. Список переменных и ключей — «Настройки». Неизвестный раздел или ключ —
предупреждение (doctor, примечания сводки), прогон продолжается. Что взято из переменных, показывает
otk doctor (fromEnv в doctor --json).
Причины «не проверено» и сбоев¶
Код причины (reasonCode) задаёт место, где причина возникла: ОТК не выводит его из своего текста сообщения.
По тексту распознаются только сообщения внешних программ (платформа, Конфигуратор, ibcmd); не распознано —
other. Список кодов и что делать — «ИИ-агенты».