server-monitor-manager/agents/hermes/notes/salvage-2026-08-18/hermes-desktop-attachments/desktop-attachments/b3-measurability-wire-ci.md
Ochenstarik 23eb3f5233 chore(agents): разбор рабочих папок с диска на 2026-08-18
Задания, отчёты и патчи, лежавшие в C:\Users\Ochenstarik\projects и в
домашней папке, перенесены в agents/. Разложено по агентам там, где имя
файла позволяло определить автора; остальное — в _salvage-2026-08-18/
и разбирается вручную.

Патчи в notes/salvage-2026-08-18/ — незакоммиченная работа из брошенных
рабочих копий: она существовала только на диске.

Тяжёлое (релизные архивы, инсталляторы, наборы данных) в репозиторий не
попало: оно лежит рядом, в Agent_projects/_archive и Agent_projects/_data.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 14:19:54 +07:00

6.2 KiB
Raw Blame History

Правила работы — AGENTS.md в корне репозитория, копия в C:\Users\Ochenstarik\kagent-tasks\AGENTS.md.

Рабочий каталог: C:\Users\Ochenstarik\kagent\.worktrees\t_e15a6516 Ветка: wt/kagent-091-measurability Выполняется после задачи b2-measurability-sanitize.md.

Предусловие

Ветка отпочкована от старого main, в ней нет работы этапа 0.9.0: нет pnpm-lock.yaml, нет job python, нет исправлений gateway и control-plane. Пока PR #3 не влит в main, сборка этой ветки будет красной по чужим причинам.

Начинать только после того, как PR #3 смержен. Первым действием — git fetch origin и rebase ветки на origin/main. Верификация на устаревшей базе не даёт права на слияние.

Если PR #3 ещё не влит — останови работу и сообщи. Не обходить, не копировать чужие правки в свою ветку.

Проблема

Три скрипта — roadmap_status.py, drift_check.py, eval_suite.py — написаны, но не вызываются ниоткуда. Это ровно тот дефект, который drift_check.py создан обнаруживать: код присутствует в дереве и недостижим ни из одной точки входа.

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

1. Подключить к непрерывной интеграции

Добавить в .github/workflows/ci.yml:

  • шаг python scripts/drift_check.py в существующий job python. Сборка падает при обнаружении расхождения. Список проверок — из спецификации, раздел 41.5: заявленная возможность без проходящего доказательства; модуль в дереве, недостижимый ни из одной точки входа; задокументированный endpoint, отсутствующий в таблице маршрутов; задокументированная переменная окружения, которая нигде не читается; пользовательское изменение без записи в CHANGELOG.md; архитектурное изменение без ADR;
  • отдельный job measurability: выполняет roadmap_status.py, публикует полученный ROADMAP.md как артефакт сборки и падает, если сгенерированный файл отличается от закоммиченного. Это и есть механизм, запрещающий ручную правку статусов;
  • eval_suite.py запускать в режиме, не требующем поставщика моделей. Пока набор состоит из черновых случаев, job проверяет только разбор контрактов и целостность набора, а не прохождение случаев.

2. Первый прогон будет красным

Ожидаемо и правильно: drift_check.py на текущем дереве обязан найти как минимум четыре недостижимых модуля —

services/nats/src/events.py
services/auth/src/totp.py
services/control-plane/src/db.ts
packages/contracts/src/reasoning.ts

Ни один из них не импортируется ниоткуда.

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

Чтобы ветку можно было влить, добавь в drift_check.py файл известных расхождений (docs/known-drift.json) с ограниченным сроком: запись содержит путь, причину, дату и задачу, в которой расхождение снимается. Запись без задачи или с истёкшим сроком роняет сборку. Список должен только сокращаться.

3. Что не входит

  • наполнение случаев оценки настоящими снимками репозиториев;
  • метрики автономности и гейт релиза по ним;
  • исправление найденных расхождений.

Критерий приёмки

  • ветка перебазирована на main, содержащий работу 0.9.0;
  • drift_check.py вызывается из CI и находит все четыре недостижимых модуля — список привести в отчёте;
  • roadmap_status.py вызывается из CI, расхождение сгенерированного и закоммиченного ROADMAP.md роняет сборку;
  • проверено, что ручная правка статуса в ROADMAP.md действительно роняет сборку: сделать правку, показать красный прогон, откатить;
  • прогон непрерывной интеграции зелёный при пустом списке известных расхождений сверх четырёх зафиксированных;
  • ссылка на прогон приложена.

Границы

.github/workflows/ci.yml, scripts/*, docs/capabilities.json, docs/known-drift.json, ROADMAP.md. Ничего в сервисах не трогать.