Документация Harness

Команды Harness

Стабильный человеко-машинный интерфейс: короткие команды запускают предсказуемые процессы на уровне репозитория и оставляют сохраняемые артефакты.

Канонический синтаксис и цепочки

Команды Harness используют форму DOMAIN ACTION [TARGET]. Внутри одного домена соседние операции можно объединять оператором >; домен и целевой объект наследуются только там, где это явно разрешено протоколом.

PROJECT INIT
STEP ADD: Добавить экспорт PDF
STEP PLAN STEP-024 > IMPLEMENT > REVIEW
GIT CHECK > COMMIT > PUSH > PR
HARNESS UPDATE CHECK TO <tag> > APPLY

Обычный запуск канонической команды проходит через единую детерминированную границу .harness/tools/harness-dispatch.py. Dispatcher нормализует вход, проверяет всю цепочку по .harness/command-transitions.json, регистрирует состояние выполнения, применяет предусловия и затем либо вызывает машинный обработчик, либо передаёт модели точный смысловой навык и минимальный контекст. .harness/tools/validate-command.py остаётся отдельной диагностической проверкой без изменений. Отсутствующий переход означает INVALID_CHAIN: ни один сегмент не запускается; нарушенное предусловие возвращает BLOCKED.

Для команд с целью STEP можно вводить сокращение из трёх и более цифр: например, STEP RUN 024 нормализуется в STEP RUN STEP-024. Тот же реестр хранит краткое описание, стабильную ссылку на документацию и режим reasoning для каждой команды. Сгенерированная .harness/reasoning-boundaries.json показывает внешним инструментам, где модель обязательна, не нужна или зависит от сценария.

Цепочки не пересекают домены. Например, STEP RUN STEP-024 > GIT COMMIT не поддерживается: работа над STEP и публикация Git остаются отдельными запусками.

Оперативная справка и диагностика

HARNESS HELP

Показывает доступные команды, их краткие описания и ссылки на документацию. Список формируется непосредственно из .harness/command-transitions.json, поэтому отдельного вручную поддерживаемого реестра справки нет.

Цепочка выполнения
Реестр команд
Канонические формы и описания
Ссылки на документацию
Сгруппированная справка

HARNESS STATUS

Показывает снимок текущего состояния Harness и проекта: релиз, инициализацию, состояние Git, незавершённые исполнения и доступность работы с Pull Request.

Цепочка выполнения
Manifest / lock / Git
Незавершённые исполнения
Configured PR provider capability
Снимок состояния без изменений

HARNESS RESUME

Продолжает единственное незавершённое выполнение, которое можно безопасно возобновить. Если подходящих выполнений нет или их несколько, команда возвращает BLOCKED вместо выбора наугад.

Цепочка выполнения
Локальное состояние выполнения
Ровно одно продолжение?
Проверить сохранённый контекст
Точная команда продолжения или BLOCKED

HARNESS DOCTOR

Проверяет обязательные зависимости ядра и исправность Harness отдельно от необязательных возможностей. Отсутствие второго AI-инструмента или provider CLI для Pull Request не блокирует Harness целиком: GitHub использует gh, Gitea — tea.

Цепочка выполнения
Python 3.11+ / Git
Целостность Harness
Codex / Claude Code / PR provider CLI
Обязательные проверки + доступные возможности

HARNESS CONFIG

Показывает фактически применяемую конфигурацию manifest, Git и обновления вместе с файлами, из которых получены значения.

Цепочка выполнения
Manifest
Git / update policy
Разрешить настроенные пути
Эффективная конфигурация без изменений

Инициализация и планирование

PROJECT INIT

Однократная инициализация из PROJECT_BRIEF.local.md. Создаёт базу знаний проекта и начальную дорожную карту, но не код продукта.

Цепочка выполнения
Локальный бриф
Требования REQ / вопросы OQ
Архитектура / ADR
Семантическая проверка требований
Дорожная карта / STEP
Семантическая проверка дорожной карты
Пересобрать проекции
Общая проверка Harness
Финализация INIT
Проект инициализирован

STEP ADD: <описание>

Преобразует человеческую задачу в новый STEP с границами, зависимостями, критериями приёмки и проверками.

Цепочка выполнения
Запрос
Поиск дубликатов и пересечений
REQ / ADR / OQ / зависимости
Создать STEP-NNN
Связи и проекции
Проверка Harness
Передать в STEP PLAN

STEP LIST

Показывает компактный список канонических STEP: ID, название, состояние жизненного цикла, приоритет, тип, фазу, состояние плана и путь к файлу.

Цепочка выполнения
Канонические STEP
Состояния и планы
Компактный список без изменений

STEP SHOW STEP-NNN

Показывает подробное состояние одного STEP: метаданные, план, зависимости, связанные REQ/ADR, флаги риска, последнюю применимую проверку и незавершённые исполнения. Допускает сокращённую цель, например STEP SHOW 024.

Цепочка выполнения
STEP-NNN или сокращённый ID
Зависимости / REQ / ADR / риски
План / проверка / исполнения
Подробный снимок STEP

STEP PLAN STEP-NNN

Сначала проверяет непротиворечивость задачи, затем сохраняет план реализации и запускает независимую семантическую проверку плана. План становится готовым только при совпадающем PASS и актуальных отпечатках контекста и содержимого.

Цепочка выполнения
STEP и связанные контракты
Проверка непротиворечивости
Подход к реализации
Сохранить черновик плана
Независимая проверка плана
Основа контекста + хэш плана
План готов или BLOCKED

STEP NEXT

Детерминированно, без вызова модели, рекомендует следующую каноническую команду. Сначала учитывает безопасно возобновляемое выполнение, затем ранжирует доступные STEP по состоянию, приоритету, влиянию на последующие задачи, явным рискам и порядку дорожной карты. Это рекомендация, а не планирование спринта.

Цепочка выполнения
Незавершённые исполнения
Есть прерванный STEP?
Если нет — доступные STEP
Зависимости / приоритет / риск / критический путь
Выбрать STEP
Точная следующая команда

PROJECT STATUS

Детерминированно пересобирает проекции, проверяет целостность проекта и возвращает структурированный снимок состояния вместе с рассчитанным STEP NEXT. Модель не интерпретирует статус проекта и не дополняет результат предположениями.

Цепочка выполнения
Канонические статусы STEP
Статусы REQ / проекции
Расхождения / блокирующие проблемы
Исправить только однозначный дрейф проекций
Состояние проекта

Команды PLAN и REVIEW проходят разные проверки качества

STEP ADD / STEP PLAN

Requirements Quality проверяет, достаточно ли определён контракт; Planning Consistency — согласован ли он; применимые блокирующие PRN-NNN становятся обязательными инженерными ограничениями.

STEP REVIEW

Сначала проверяется реализация. Даже при вердикте ревью PASS STEP закрывается только после отдельного Completion / Convergence Gate.

PROJECT STATUS

Сводка использует детерминированное состояние проекта, покрытие прослеживаемости и актуальность планов; клиенты не должны восстанавливать эти факты из текста Markdown.

Выполнение и контроль

STEP IMPLEMENT STEP-NNN

Модель реализует только актуальный утверждённый план в пределах контракта задачи. Перед успешным завершением dispatcher запускает команды из раздела Verification через .harness/tools/verification.py, а фактические Evidence формируются детерминированно; ответ модели сам по себе не может объявить проверку успешной.

Цепочка выполнения
Актуальный план + зависимости
Изменения только в разрешённых границах
Тесты
Проверки
Доказательства / документация
STEP REVIEW STEP-NNN

STEP REVIEW STEP-NNN

Независимая модель проверяет задачу, реализацию и доказательства для точной ревизии репозитория. При FAIL Review Contract v2 требует machine-readable findings со stable id/fingerprint, точным location, сценарием, expected/observed, влиянием, направлением исправления, ограничениями и evidence. Детерминированный отбор заранее определяет обязательные проверки безопасности и тестов, а .harness/tools/semantic-writer.py фиксирует точную ревизию, основания проверок и неизменяемый отчёт. Неполный или malformed v2 finding отклоняется fail-closed. Даже PASS закрывает STEP только при наличии требуемого для его типа доказательства завершения.

Цепочка выполнения
STEP / план / изменения / тесты
Выбор обязательных спецпроверок
Критерии приёмки + доказательства
Независимая проверка
Вердикт
PASSПередать PASS в Completion / Convergence Gate
FAILПередать в STEP FIX STEP-NNN
BLOCKEDЗафиксировать блокирующую проблему и остановиться
Проверки безопасности и тестов подключаются только при фактической необходимости.

STEP FIX STEP-NNN

Исправляет только замечания к реализации и доказательствам из последнего применимого FAIL-отчёта. FIX получает findings через детерминированный parser .harness/tools/review_findings.py и использует stable fingerprint как identity замечания между циклами. Legacy/malformed/ambiguous handoff не угадывается: выполнение блокируется до свежего REVIEW. Проблема контракта переводит выполнение в BLOCKED, а не расширяет границы исправления.

Цепочка выполнения
Последний применимый FAIL-отчёт
Точечные исправления
Проверки
Доказательства
Новая STEP REVIEW

STEP RUN STEP-NNN

Для обычных задач разработки dispatcher детерминированно оркестрирует переходы STEP PLAN → STEP IMPLEMENT → Verification → STEP REVIEW → STEP FIX/REVIEW → финализацию без отдельного вызова модели между фазами. Verification-команды запускаются через .harness/tools/verification.py. Модель по-прежнему выполняет смысловую работу внутри PLAN, IMPLEMENT, REVIEW и FIX; специальные типы STEP могут использовать смысловую оркестрацию самого STEP RUN.

Полная оркестрация
STEP, блокировки и тип
Определить следующую команду
Актуальный план?
STEP IMPLEMENT
Проверки реализации
Независимая STEP REVIEW
Если план отсутствует или устарел
STEP PLAN STEP-NNN
Планирование + независимая проверка плана
FAILSTEP FIX → проверки → новая STEP REVIEW
PASSCompletion Gate → Финализация STEP → статус «Выполнено»
BLOCKEDОстановиться → сохранить доказательства и отчёт
STEP FIX → STEP REVIEW имеет абсолютный safety cap execution.maxFixReviewCycles (1–5; по умолчанию 3), но может остановиться раньше по deterministic evidence. .harness/tools/repair_cycle.py сравнивает immutable Review Contract v2 reports и блокирует дальнейший FIX при NO_PROGRESS, REPEATED_FINDINGS или REGRESSION. Первый FAIL никогда не останавливается адаптивно; при изменении contract scope сравнение отключается fail-safe. Проверки безопасности и тестов подключаются только при необходимости.

STEP AUDIT STEP-NNN

Без изменений проверяет фактическое состояние; найденные дефекты превращаются в замечания или корректирующие задачи.

Цепочка выполнения
Фактическое состояние
Доказательства / расхождения / риски
Отчёт аудита
Нужен корректирующий STEP?
Без скрытых исправлений

PROJECT RECONCILE

Ищет расхождения между кодом, тестами и конфигурацией и REQ/ADR/OQ/архитектурой/STEP/доказательствами. Также выполняет ожидающую миграцию активных проектных документов после обновления Harness.

Цепочка выполнения
Код / тесты / конфигурация
REQ / ADR / OQ / архитектура / STEP
Проверка устаревших команд
Поиск расхождений и ожидающей миграции
Нужна миграцияМигрировать активные проектные документы
Дрейф проекцийПересобрать однозначные проекции
Существенный дефектСоздать корректирующий STEP
Команда не исправляет код продукта. Результат фиксируется в отчёте аудита.

RELEASE CHECK

Проверяет условия выпуска: замечания, требования, миграции, тесты и сборку, безопасность, документацию и вопросы развёртывания.

Цепочка выполнения
Критические замечания
REQ / STEP
Сборка / тесты / развёртывание
Миграции / безопасность / документация
Отчёт готовности к релизу
Готово или BLOCKED

Состояние выполнения и восстановление после прерывания

Каждый запуск имеет корневую команду и режим single, chain или orchestration. Текущее состояние хранится локально в .harness/local/execution/execution-status.json, а все read-modify-write операции сериализуются через .harness/local/execution/execution-status.lock. Это предотвращает потерю состояния между параллельными сессиями и подагентами.

Текущий формат schemaVersion: 2 хранит полные записи только для активных или возобновляемых выполнений, отдельные stepRecovery proofs и ограниченное окно recentTerminals. Для mutation-команд активная запись также может содержать bounded current.context.sideEffect: proof одной попытки с фазами prepared → side_effect_started → side_effect_observed → postconditions_verified. После restart executor сначала наблюдает внешний факт и классифицирует его как ALREADY_APPLIED, SAFE_RETRY или AMBIGUOUS, поэтому commit/push/PR не повторяются вслепую.

Завершённая история автоматически компактизируется вместо бесконечного роста файла, а миграция старого локального формата выполняется самим execution layer — PROJECT RECONCILE здесь не участвует. HARNESS STATUS показывает незавершённые исполнения вместе с остальным состоянием проекта, а HARNESS RESUME безопасно продолжает единственное однозначно возобновляемое выполнение. Во время активного .harness/local/update-journal/ тот же lock образует границу с самообновлением: новые канонические изменения execution state ждут завершения commit/rollback обновления.

Мелкие изменения

PROJECT QUICK FIX: <описание>

Небольшая правка с низким риском без искусственного REQ/ADR/STEP. Если меняется контракт или уровень риска, команда останавливается и предлагает STEP ADD.

Цепочка выполнения
Соответствует критериям малой правки?
Минимальная правка
Пропорциональные проверки
Предложить GIT COMMIT
Границы шире допустимыхОстановиться и перейти в STEP ADD
Не создаёт REQ / ADR / STEP ради безопасной мелкой правки.

Навыки и шаблоны GitHub

SKILL FIND: <описание>

Ищет и проверяет навыки, сохраняет отчёт с числом кандидатов до значения skills.search.maxResults и ничего не устанавливает.

Цепочка выполнения
Описание потребности
Поиск в GitHub и интернете
Проверка содержимого кандидатов
Отчёт с лучшими кандидатами
Предложить SKILL INSTALL / CREATE

SKILL INSTALL: <source | #N>

Повторно проверяет выбранный навык и устанавливает весь bundle с фиксацией exact provenance в UPSTREAM.md, реестра и маршрутизации. Third-party scripts не запускаются автоматически.

Цепочка выполнения
Выбранный источник / #N
Повторная проверка источника
Безопасность и коллизии
Установить набор + UPSTREAM.md
Реестр + маршрутизация
Проверка целостности

SKILL CREATE: <описание>

Создаёт собственный project-native навык, если подходящего готового варианта нет, и добавляет UPSTREAM.md с Source: project-native, references и rationale.

Цепочка выполнения
Описание
Проверка дубликатов
Правила и реальные команды проекта
Создать SKILL.md
Реестр + маршрутизация
Проверка целостности

GITHUB GENERATE TEMPLATES

Перегенерирует формы задач GitHub и шаблон PR по фактическому набору инструментов проекта.

Цепочка выполнения
Фактические технологии и инструменты
Формы задач GitHub
Шаблон PR
Проверка YAML
Проверка Harness
Проверка изменений

Обновление Harness

HARNESS UPDATE CHECK [TO <tag>]

Dispatcher вызывает детерминированный механизм .harness/tools/harness-update.py напрямую, без вызова модели: маршрут, правила владения, BASE/OURS/THEIRS и коллизии вычисляются машинно. Текущий BASE берётся из .harness/harness.lock.json, а допустимый маршрут — из канонического .harness/harness-update-graph.json. Без TO конечная версия берётся из поля latest; с TO <tag> используется указанный тег, но он всё равно должен быть достижим по графу. Проверка моделирует переходы по маршруту и не меняет рабочее дерево.

Цепочка выполнения
Текущий релиз из lock-файла
Маршрут по графу обновлений
Проверка текущего релиза + моделирование переходов
Владение / трёхстороннее слияние / конфликты
Отчёт без изменений

HARNESS UPDATE APPLY [TO <tag>]

Dispatcher выполняет обновление напрямую, без вызова модели. Каждый переход выполняется как отдельная аварийно-устойчивая транзакция с журналом .harness/local/update-journal/: до первой записи сохраняются затрагиваемые управляемые пути, lock и локальное состояние выполнения. После записи целевого состояния запускается валидатор постусловий, а неизменяемый отчёт UPDATE-*.md публикуется только после PASS. Если процесс оборвался, незавершённый журнал не маскируется как обычное состояние: HARNESS UPDATE CHECK возвращает UPDATE_JOURNAL_PENDING, а следующий HARNESS UPDATE APPLY сначала восстанавливает прерванный переход и только затем повторяет обновление. Если переход требует перезапуска, команда останавливается на достигнутом релизе и после перезапуска повторяется к исходной конечной версии.

Цепочка выполнения
Свежая машинная предварительная проверка
Журнал транзакции + резервная копия
Применять переходы по очереди
Владение + трёхстороннее слияние
Postcondition validator
Отчёт только после PASS
Атомарная фиксация или восстановление
Показать изменения и предложить GIT CHECK
Сам тег не определяет допустимость обновления. Нужен маршрут от текущего релиза до целевой версии в .harness/harness-update-graph.json. Граф хранит только данные маршрутизации и не может запускать скрипты/хуки или подменять содержимое неизменяемых релизов.

Операции Git

Все изменяющие операции Git проходят предварительную проверку. .harness/tools/git-preflight.py вычисляет PASS/BLOCKED и точный план операции; изменение выполняется только после PASS. Обычные GIT CHECK, GIT COMMIT, GIT PUSH и GIT SYNC требуют только Git. Для Pull Request Harness использует configured provider/tool pair: github → gh или gitea → tea; неизвестная или несовместимая пара блокируется fail-closed.

GIT CHECK

Полностью детерминированная проверка без вызова модели: dispatcher запускает .harness/tools/git-preflight.py, который проверяет политику Git, ветку, удалённое состояние, расхождение, индекс и целостность Harness.

Цепочка выполнения
Политика Git + состояние
Удалённая ветка / расхождение
Проверка Harness
Подозрительные / посторонние изменения
Отчёт без изменений

GIT COMMIT / GIT COMMIT: <подсказка>

Создаёт локальный коммит по правилам Conventional Commits и git-policy, но не доверяет состоянию между предварительной проверкой и фактическим git commit. До validator фиксируется снимок ветки, родителя и дерева индекса; прямо перед commit он сверяется повторно, а после commit проверяются фактические ветка/родитель/дерево. Пользовательские хуки Git выполняются штатно. Если hook изменил проверенное состояние, команда возвращает COMMIT_POSTCONDITION_FAILED и пытается компенсировать только доказанно принадлежащую этой операции изменение ref через reflog/CAS; разрушительный git reset --hard не используется.

Цепочка выполнения
Фактические изменения
Одна логическая группа
Тип коммита / политика ветки
Безопасное добавление в индекс
Снимок ветки / родителя / дерева
Validator + повторная сверка снимка
git commit с пользовательскими hooks
Проверка ветки / родителя / дерева после hooks
Проверенный локальный коммит

GIT PUSH

Публикует текущую ветку без принудительной отправки после проверки удалённого состояния и правил безопасности. При отдельном запуске модель проверяет смысловую целостность отправляемого изменения; если PUSH идёт сразу после доказанного GIT COMMIT в той же цепочке, dispatcher использует детерминированный быстрый путь и машинно подтверждает, что удалённый HEAD действительно продвинулся.

Цепочка выполнения
Проверка Harness
Получить удалённое состояние / проверить расхождение
Опубликовать без принудительной отправки
Политика PR
Создать / переиспользовать / пропустить PR

GIT PR

Модель формирует только смысловые текстовые поля PR — заголовок и описание. Поиск существующего PR, создание или переиспользование, проверка опубликованной ветки и точного HEAD выполняются детерминированно через .harness/tools/pr_provider.py и .harness/tools/git-action.py. GitHub использует gh, Gitea — tea; для self-hosted Gitea host берётся из configured push.remote, а неоднозначный login profile возвращает PROVIDER_LOGIN_AMBIGUOUS. После успеха сохраняется локальный .harness/local/git/pr-state.json с provider identity, номером PR, ветками и точкой возврата.

Цепочка выполнения
Политика PR
Ветка опубликована?
PR уже существует?
Заголовок и описание из связей проекта
Создать или переиспользовать PR

GIT PR FINISH

Полностью детерминированно завершает локальный жизненный цикл ветки после слияния PR. Проверяет provider state MERGED, чистое рабочее дерево, совпадение локального HEAD с сохранённым head SHA и возможность безопасно обновить ветку возврата. Обычное, squash- и rebase-слияние поддерживаются без принудительного удаления ветки. Provider-specific чтение состояния проходит через тот же configured GitHub/Gitea adapter.

Цепочка выполнения
Локальное состояние PR
PR = MERGED / HEAD подтверждён
Чистое дерево / безопасный fast-forward
Вернуться на исходную ветку
Удалить только проверенную локальную ветку PR
Удалить локальное состояние PR
git branch -D, удаление удалённой ветки, reset и автоматический rebase не используются.

GIT SYNC

Без вызова модели получает состояние удалённого репозитория и показывает расхождение веток; по умолчанию ничего не меняет, а в разрешённом режиме допускает только безопасный fast-forward.

Цепочка выполнения
Получить состояние удалённого репозитория
Сравнить локальную и удалённую ветки
mode=reportТолько показать состояние
mode=ff-onlyFast-forward только для чистой ветки без расхождения
Автоматическое слияние и перебазирование (rebase) не выполняются.