Предусловие ко всему этапу 0.9. Пока сборка основной ветки красная, ни одно последующее изменение не проверяемо. Репозиторий: https://github.com/ochenstarik-ui/kagent (локально C:\Users\Ochenstarik\kagent) Контекст решений: PR #2 — ADR-0004..0016 и разделы ТЗ 35-41. ## Что сломано сейчас 1. Node-job CI падает на шаге setup-node: в репозитории нет pnpm-lock.yaml. Следствие: pnpm typecheck / test / build никогда не выполнялись. 2. services/gateway/src/main.rs:184 — get_request_id() вызывает .or_else() на String. У String такого метода нет, это ошибка компиляции E0599. CI до неё не доходит: раньше падает cargo fmt --check. 3. Там же: структура RateLimiter объявлена (строки ~37-75), но нигде не создаётся, и в обработчике live() не используется параметр State(state). При clippy -D warnings это dead_code и unused_variables. 4. services/control-plane/src/main.ts:9 — logger.transport.target "pino-pretty", пакета нет в зависимостях, сервис падает при старте. 5. services/control-plane/src/auth.ts:65 — внутри ESM-модуля вызывается require("node:crypto"). В ESM require не определён, регистрация и логин падают в рантайме. 6. services/control-plane объявляет "test": "vitest run", но тестовых файлов там нет, vitest выходит с кодом 1. 7. Пять Python-сервисов (~1700 строк) не покрыты CI вообще: Python-job в .github/workflows/ci.yml отсутствует. 8. scripts/validate_repository.py существует, но не вызывается из CI. 9. В индексе лежит бинарник services/reasoning-engine/src/__pycache__/engine.cpython-311.pyc. ## Что сделать - закоммитить pnpm-lock.yaml; - починить get_request_id, привести код к cargo fmt, подключить RateLimiter к роутеру как middleware либо удалить его вместе с упоминанием в CHANGELOG; - добавить pino-pretty в зависимости control-plane либо убрать transport; - заменить require на статический импорт pbkdf2 из node:crypto; - добавить unit-тесты control-plane (минимум: переходы статусов задачи, hashPassword/verifyPassword round-trip, 401 без токена) — vitest должен находить тесты; - добавить в CI job python: ruff + pytest, и шаг запуска scripts/validate_repository.py; - git rm --cached удалить .pyc из индекса. ## Критерий приёмки - зелёный CI на ветке и на main: node, rust, python; - cargo clippy --all-targets -- -D warnings проходит без правок warning-уровня; - docker compose up -d поднимается, control-plane отвечает 200 на /health/live, POST /v1/auth/register и POST /v1/auth/login работают против PostgreSQL; - в PR перечислено, что именно было сломано и чем это подтверждено. ## Ограничения - не отмечать пункты roadmap выполненными без доказательства (ADR-0016); - существующие тесты не изменять без явного согласования (ADR-0005); - секреты в трекаемые файлы не помещать.