Задания, отчёты и патчи, лежавшие в 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>
5.1 KiB
5.1 KiB
Реализация 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 создаёт инцидент;
- негативный тест: разработческая роль не может получить элемент личного контура ни при какой конфигурации политик;
- урок без объявленной формы влияния не попадает в контекст.