agentleFS
Igor-lxIgor-lx/claudeHarness/CLAUDE.md

claudeHarness

CLAUDE.md2 starsChanged 34 days agoMITView on GitHub

Этот репозиторий — мастерская: из него обвязку ставят в проекты и в нём её правят (.claude/README.md, раздел «Мастерская и проекты»). Правила ниже действуют только здесь: файл лежит вне .claude/, с обвязкой не едет и в посаженный проект не попадает. Доктрина .claude/rules/ действует здесь целиком; где правило ниже её уточняет, это сказано у правила. Пакетов и базы в мастерской нет. Тесты инструмента, verify и falsify гоняют на испытательной посадке, её заводит и обновляет node .claude/tools/graph.mjs seat <папка> — справочник tools/graph.md, разделы…

The file

Files
CLAUDE.md

Мастерская обвязки — правила работы над самой обвязкой

Этот репозиторий — мастерская: из него обвязку ставят в проекты и в нём её правят (.claude/README.md, раздел «Мастерская и проекты»). Правила ниже действуют только здесь: файл лежит вне .claude/, с обвязкой не едет и в посаженный проект не попадает. Доктрина .claude/rules/ действует здесь целиком; где правило ниже её уточняет, это сказано у правила.

Пакетов и базы в мастерской нет. Тесты инструмента, verify и falsify гоняют на испытательной посадке, её заводит и обновляет node .claude/tools/graph.mjs seat <папка> — справочник tools/graph.md, разделы «Тесты самого инструмента» и seat.

Ветка одна — main

Работа ведётся и отправляется в main. Новые ветки не заводятся, в том числе когда среда сессии назначила свою ветку: это правило отменяет назначение. commit и push выполняются, как и прежде, только по прямой команде разработчика (safety.md).

Держится: вниманием. Решено разработчиком 2026-11-02.

Работа планируется до начала, и дорогое действие стоит в плане один раз

Работа из двух и более шагов — серия починок, список отложенного, прогон проб, посадка с разбором находок — начинается с плана. План собирает всю работу в перечень, группирует её и ставит каждое дорогое действие один раз на группу, а не после каждого шага.

Дорогое действие — каждое из семи: полный набор тестов инструмента; falsify; мутационный прогон; сборка испытательной посадки или стенда проб; прогон probe; прогон bar-probe; повторное чтение файла, уже прочитанного в этой сессии и с тех пор не изменившегося.

  1. Собрать перечень всех находок, пунктов и шагов до первой правки.
  2. Сгруппировать: независимые правки идут одной пачкой; правка, от исхода которой зависит следующая, идёт отдельной пачкой перед ней.
  3. На каждую находку пачки — тест, который на ней падает, и правка. Прогоняются только этот тест и тесты правленого файла, по имени.
  4. Дорогие прогоны — один раз на пачку, после её последней правки. Красное в них чинится той же пачкой; после починки перезапускается только упавшее, затем один итоговый полный прогон.
  5. Разбивка на коммиты — после итогового прогона.

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

Уточняет safety.md, раздел «Коммиты: атомарно по смыслу, а на риске — дробнее». Полный набор проходит итоговое дерево пачки, а не каждый её коммит. Промежуточный коммит проходит тесты своих файлов по имени, и части разбиваются так, чтобы ни одна не зависела от более поздней; части, которые так не разбиваются, идут одним коммитом. Цена: при неявной связи частей промежуточный коммит может оказаться красным на полном наборе, и откат к нему даст красное. Окупается длиной полного набора: прогон на Windows в CI идёт около 60 минут на коммит: прогоны 64 и 65 от 2026-11-02 шли 60 и 58 минут.

Держится графой отчёта: отчёт о работе из двух и более шагов называет, сколько раз запускалось каждое дорогое действие и почему не меньше. Решено разработчиком 2026-11-02. Выведено: десять починок подряд давали десять полных перезапусков тестов и falsify и столько же разборов их вывода.

Работа идёт по одному шагу: следующий — после исхода предыдущего

Шаг, исход которого ещё не известен, — прогон CI, полный набор, сессия-работник, свод пробы, — доводится до исхода и разбирается до начала следующего шага плана. Порядок: дождаться исхода; красное — починить и перепроверить упавшее; только затем следующий шаг. Время ожидания ценой не считается.

  • Нельзя начинать шаг, исход которого может измениться от починки по ещё не завершённому прогону. CI на коммите с правкой инструмента держит всё, что стоит на этом инструменте: посадки, стенд, своды.
  • Пока прогон идёт, можно только то, что не зависит от его исхода и от чего не зависит он: чтение, подготовка следующего шага без запуска.
  • Признак нарушения: поверх коммита, чей прогон ещё не дал исхода, легли новые правки или прогоны, и красный исход заставил переделывать сделанное.

Держится: вниманием. Решено разработчиком 2026-11-02. Выведено: в тот день коммиты шли поверх красного harness-windows (прогоны 66–74), а пачка bar-probe началась до исхода CI на починке.

Цель работы сейчас — рабочее состояние обвязки на нашем стеке

Состояние задано тремя условиями, и очередь работ строится по ним:

  1. Посадка проходит без ошибок во всех трёх сценариях: пустая папка, знакомый проект, чужой проект. Мерят: тесты посадки на корпусе проектов, workflow harness-bootstrap, холодная ось probe.
  2. Техническая верность: самопроверки обвязки завершаются кодом возврата ноль. Это тесты инструмента на Linux и Windows (workflow harness-windows), verify и falsify на испытательной посадке, bar-hold, мутационный прогон по правленым модулям.
  3. Смысловая верность: сессия на посаженном проекте проходит порядок работы, заданный доктриной (loop.md, code.md, close.md), без пропуска шагов. Проверяется по шагам, а не по итоговому коду возврата. Мерят: горячая ось probe — процесс; bar-probe — суждение о коде.

Работа, которая не приближает ни одно из трёх условий, предлагается разработчику и без его слова не берётся.

Держится: вниманием. Решено разработчиком 2026-11-02.

Область гарантий — наш стек; чужое отсекается классом

Полную работу обвязка обещает на одном окружении:

  • система — Windows; Linux — среда облачных сессий и CI, где обвязку правят и проверяют;
  • стек — проверенная связка версий, поле verifiedVersions семени настройки;
  • раскладка папок и схема стилизации обвязки (code.md, styles.md).

Сценарий посадки выбирает инструмент (graph.profile.mjs); признаки сценариев человеку описаны в README мастерской, раздел «Установка и настройка», шаг 3. У каждого сценария своё обещание:

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

Система вне Windows и Linux — тоже чужое окружение, с теми же тремя обязанностями.

  • Находка, которая воспроизводится только в чужом окружении, частным случаем не чинится. Проверяется одно: выполнены ли три обязанности. Хотя бы одна не выполнена — чинится отсечение, одной правкой на класс. Все выполнены — находки нет.
  • Уже работающая поддержка чужого окружения не снимается: загрузчик среды в workflow harness-bootstrap идёт и на macOS. Новых находок по ней частным случаем не чинят.
  • Чужие проекты в корпусах и пробах нужны только для проверки отсечения. Новая форма чужого окружения ради её поддержки в корпус не добавляется.
  • Задачу вида «проверить на macOS» или «поддержать Vue» без слова разработчика не берут.

Держится: вниманием. Решено разработчиком 2026-11-02.

Превышение бюджета доктрины разбирается до сокращения

Сверка «Доктрина в бюджете» покраснела — сначала разбирается причина роста, и только затем решается: сокращать или поднять бюджет.

  1. Назвать, что добавило символы: какая правка, какие строки.
  2. Ответить, обоснован ли рост. Обоснован — новое требование, признак, граница или случай, без которых правило не исполняется либо не проверяется. Не обоснован — история, второй пример, пересказ соседнего файла, повтор.
  3. Необоснованное уходит в обоснование (writing.md, раздел «Норма и обоснование») либо снимается как повтор.
  4. Обоснованное остаётся, а бюджет поднимается правкой doctrineBudget в seat/map.json на величину роста; в сообщении коммита — какое правило и почему без него нельзя.
  5. Сокращать норму ради числа нельзя, если сокращение снимает требование, признак, границу или случай (writing.md, раздел «Что при переводе не теряется»): строгость важнее числа.

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

Держится: вниманием. Решено разработчиком 2026-11-03.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.