server-monitor-manager/agents/hermes/notes/salvage-2026-08-18/hermes-desktop-attachments/desktop-attachments/0.9.5-boundaries.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

5.1 KiB
Raw Blame History

Реализация ADR-0011, ADR-0014, ADR-0015. Разделы ТЗ 38 и 40.

Репозиторий: https://github.com/ochenstarik-ui/kagent Зависит от задачи 0.9.0 (зелёный trunk).

Зачем

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

Слой уроков существует как хранилище без механизма влияния на поведение.

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

Что сделать

Контракт человеческого решения (ADR-0011, ТЗ 38)

  • типизированный объект вопроса: question_id, run_id, task_id, kind (approval / choice / clarification / conflict), urgency, statement, options, default, ttl, on_timeout (park / abort / assume_default), evidence, channels;
  • постановка вопроса освобождает worker и lease после checkpoint, ожидающая задача не потребляет ёмкость и не держит бюджетный резерв;
  • контекст возобновления в checkpoint, а не в памяти процесса;
  • assume_default допустим только при объявленном default и обратимом действии;
  • единая очередь решений по всем проектам, доставка по настроенным каналам;
  • blocking-вопрос с истёкшим TTL порождает инцидент;
  • ответ в audit log с идентичностью ответившего, воспроизводимый как вход запуска.

Исполняемые уроки (ADR-0014, ТЗ 40.1)

  • урок переходит в active только если объявляет форму влияния: исполняемая проверка (правило линта, политики, запрещённый шаблон, eval-случай), изменение контракта, либо правило контекста с триггером и стоимостью в токенах;
  • урок без формы остаётся candidate и не попадает ни в один контекст;
  • проверка на противоречие с действующими уроками, разрешение через supersedes;
  • дата пересмотра, переход в stale, прекращение применения;
  • счётчики срабатываний и предотвращённых дефектов, вывод бесполезных guardrails из обращения.

Изоляция личного контура (ADR-0015, ТЗ 40.2)

  • отдельное хранилище, отдельный поисковый индекс, отдельный bucket;
  • отдельные ключи шифрования в vault: проектные credentials не расшифровывают личный материал;
  • Context Builder не имеет личный контур в списке адресуемых источников для ролей разработки, независимо от конфигурации политик;
  • к личному контуру обращается только Personal Assistant Agent, без инструментов записи в репозиторий;
  • перенос в проект — явное аудируемое действие пользователя, не результат поиска;
  • маршрутизация по умолчанию на локальные модели, облако требует явного согласия по категории данных;
  • удаление личных данных независимо от удаления проектов, распространяется на кассеты, кэш и checkpoints.

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

  • тест: задача, задавшая вопрос, освобождает воркер и корректно возобновляется после ответа через сутки;
  • тест: blocking-вопрос с истёкшим TTL создаёт инцидент;
  • негативный тест: разработческая роль не может получить элемент личного контура ни при какой конфигурации политик;
  • урок без объявленной формы влияния не попадает в контекст.