server-monitor-manager/agents/hermes/notes/salvage-2026-08-18/hermes-desktop-attachments/desktop-attachments/a4-control-plane-tests.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

2.7 KiB
Raw Blame History

Правила работы: прочитай C:\Users\Ochenstarik\kagent-tasks\hermes-work-protocol.md.

Каталог: services/control-plane/src/. Выполняется после задачи A3.

Дефект

В package.json объявлено "test": "vitest run", но тестовых файлов в пакете нет. Vitest завершается с кодом 1, из-за чего падает pnpm test для всего монорепозитория.

Что сделать

Добавить файлы *.test.ts рядом с исходниками. Минимальный набор:

domain.test.ts — таблица переходов TASK_TRANSITIONS:

  • разрешённый переход принимается;
  • запрещённый переход отклоняется;
  • терминальные статусы done и cancelled не имеют исходящих переходов;
  • каждый статус присутствует в таблице.

auth.test.ts:

  • hashPassword и verifyPassword: корректный пароль проходит, неверный не проходит;
  • испорченный хеш возвращает false, а не бросает исключение;
  • два хеша одного пароля различаются (соль случайна);
  • validateAccessToken: валидный токен разбирается, подделанная подпись отклоняется, истёкший токен отклоняется;
  • authMiddleware: без заголовка 401, с чужой схемой 401, с валидным токеном принципал попадает в запрос.

Тесты не обращаются к сети, к PostgreSQL и к внешним сервисам. Для истёкшего токена используй подмену времени средствами vitest, а не ожидание.

Ограничение

Тесты пишутся по описанному поведению, а не подгоняются под текущий код. Если тест обнаруживает дефект — не правь тест. Зафиксируй тест как падающий, опиши дефект комментарием к карточке и предложи отдельную карточку. Причина — docs/adr/0005-test-oracle-integrity.md.

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

pnpm --filter @kagent/control-plane test
pnpm --filter @kagent/control-plane typecheck

Обе команды проходят, вывод приложить к отчёту.