Перейти к содержанию

Конфигурация

Кому это? Тому, у кого инструмент уже стоит и кто пишет или правит harnessimo.config.json. Когда читать? Когда нужен ключ, которым вы ещё не пользовались. Чтобы выбрать, какую проверку включить, есть таблица в гайде: симптом → секция.


Каждая секция необязательна, а отсутствие секции — это проверка, которая не работает. harnessimo doctor печатает этот список, и он и есть честный ответ на вопрос, что репозиторий гарантирует.

Страница генерируется из schema/harnessimo.config.schema.json. Править её руками бессмысленно: npm run docs:sync перезапишет, а тест упадёт на расхождении.

docs

Включает: proof

Proof-маркеры: каждое утверждение в тексте называет доказательство, которое делает его правдой.

Ключ Тип Что делает
roots array of string Каталоги, где искать Markdown. "." — корень репозитория, без рекурсии.
skip array of string Имена каталогов, внутрь которых не заходить.
maxDepth integer Насколько глубоко спускаться от каждого корня. Не даёт обходу уйти в вендоренное дерево.
mustCarryProof array of string Документы, которые в строгом режиме обязаны нести хотя бы один маркер. Сюда — те, что дают обещания.
commands object Префикс маркера → файл, объявляющий эти команды: { "make": "Makefile", "task": "Taskfile.yml", "pnpm run": "package.json" }.
migrations string or null Каталог, на который опираются маркеры migration:<prefix>.

tracks

Включает: tracks

Handoff-driven development: индекс живых треков работы и хендоффы, на которые он ссылается.

Ключ Тип Что делает
file string Индекс живых треков — по строке на трек, со статусом и следующим шагом.
log string Куда складывается итог закрытого трека.
specsDir string Где лежат спека, задачи и хендофф лана — по каталогу на лан.
taskFile string Файл со списком задач внутри лана; его отмеченные галочки читает task-гейт.
gateTasks boolean Требовать, чтобы отмеченная задача в живом лане несла proof-маркер.
staleAfterDays integer Через сколько дней живая строка трека, которую никто не обновлял, считается находкой. Полоса, брошенная на середине, сохраняет статус, следующий шаг и заявленные пути — само по себе это не протухает. 0 (по умолчанию) выключает правило.

queue

Включает: queue

Очередь работы. Состояние меняется только через прошедшую верификацию, а CI перепроверяет каждое утверждение.

Ключ Тип Что делает
file string Сама очередь: каждый пункт, его состояние и команда, которая его проверяет.
timeoutMinutes number Верификация, идущая дольше этого, — падение с названной причиной, а не зависание.
terminalByKind object Куда попадает пункт, когда его верификация прошла, — по видам.

locked

Включает: locked

Файлы, которые определяют или обеспечивают сигнал приёмки; коммит агента не имеет права их трогать.

Ключ Тип Что делает
paths array of string Префиксы путей. Пусто — проверка выключена.
baseline string Файл, называющий коммит, с которого действует правило.
agentTrailer string Трейлер в сообщении коммита, помечающий авторство агента.

coldStart

Включает: cold-start

Может ли свежий клон установиться и проверить себя, имея только репозиторий?

Ключ Тип Что делает
requiredFiles array of string Файлы, которые обязаны быть в свежем клоне до запуска чего-либо, — те, на которые рассчитывает первая команда.
entryDocs array of string Документы, проверяемые на пути, которые разрешаются только на одной машине.
commands array of string Задокументированные команды, запускаемые внутри свежего клона.

cleanExit

Включает: clean-exit

Чистое состояние на выходе из сессии (лекция 12): мусора не осталось, прогресс записан.

Ключ Тип Что делает
scan array of string Префиксы путей, чьи изменённые файлы читаются. Пусто — проверка выключена.
markers array or null Строки, которые проходят сборку и означают незаконченную работу. Null — значения по умолчанию.
allow array of string Фрагменты путей-исключений — обычно те файлы, где эти маркеры и перечислены.
progressFile string Файл, который сессия обязана обновить, если меняла код.
codePrefixes array of string Что считается кодом для правила о прогрессе. Пусто — всё, что не Markdown.
progressThreshold number Число изменённых строк, ниже которого правило о прогрессе молчит, чтобы правку в одну строку не заставляли описывать. По умолчанию 50.
requireCleanTree boolean Падать также, когда в рабочем дереве есть незакоммиченные изменения.

instructions

Включает: instructions

Файл инструкций остаётся маршрутизатором, а не мануалом (лекция 04).

Ключ Тип Что делает
limits object Путь → максимальное число строк.

boundaries

Линии, которые коду пересекать нельзя: шаблон, который не должен появляться в определённой части дерева, и причина, по которой не должен. Оба репозитория, из которых выросла эта библиотека, написали это правило руками и по-разному — потому что объявить его было негде.

Ключ Тип Что делает
scan array of string Каталоги, которые читать. Всё под ними проверяется правилами, чьи пути его покрывают.
rules array of object Сами границы. Пустой список — проверка, которая ничего не найдёт.

thresholds

У измеренной метрики есть объявленный пол, и прогон ниже него не закончен. Проверка не считает метрики: команда самого проекта пишет файл результатов, а она читает и сравнивает. Только полы — метрика, где меньше значит лучше, это то же правило зеркально, а придумывать направление на нуле реальных случаев было бы гаданием.

Ключ Тип Что делает
results string Файл, который пишет команда подсчёта: JSON вида { метрика: число }.
floors string Файл с минимально допустимым значением каждой метрики. Положите его в locked.paths: агент, который может опустить себе проходной балл, оценивает сам себя.
command string Команда, которая создаёт файл результатов. Называется в сообщении, когда файла нет, и отсюда никогда не запускается — команды принадлежат проекту.

release

Включает: release

Версия — утверждение, сделанное на нескольких поверхностях: они обязаны совпадать.

Ключ Тип Что делает
manifest string Где объявлена отгружаемая версия. Обычно package.json.
changelog string Файл, описывающий каждую выпущенную версию.
tagPrefix string Как выглядит тег для x.y.z: "v" даёт v1.2.3.

tokens

Guard на чтение: повторное чтение файла, который не менялся, отклоняется, а стоимость сессии печатается. Принуждение в момент работы, а не проверка того, закончена ли она.

Ключ Тип Что делает
windowMinutes integer Сколько помнить прочитанное. После этого тот же файл можно читать снова — сессия, шедшая дольше, это уже не один кусок работы. По умолчанию 20.
statePath string Где лежит состояние сессии. Оно описывает один прогон, поэтому ему место вне git.

autonomy

Насколько работа в этом репозитории идёт под присмотром. Это нижняя граница, а не настройка: harnessimo check работает на этом уровне или выше, а --autonomy может её только поднять. Каждый уровень добавляет проверки, которые надзор на уровне ниже уже не ловит.

Ключ Тип Что делает
level "watched" | "reviewed" | "unattended" watched — человек читает каждый шаг; быстрые проверки. reviewed — за шагами никто не смотрел, но диф прочитают; добавляет переперепроверку и проверку закрытых поверхностей. unattended — не смотрел никто; добавляет чистый выход и холодный старт.