Реализация ADR-0004, ADR-0007, ADR-0012. Разделы ТЗ 35 и 39.

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

## Зачем

Поведение агентов сейчас невоспроизводимо: ответы моделей не сохраняются,
промпты не версионируются, контекст собирается недетерминированно. Следствие:
регрессионных тестов агентов не существует, инцидент нельзя расследовать,
сравнение моделей нечестное — каждый прогон расходится после первого токена.

## Что сделать

### Кассеты (ADR-0004, ТЗ 35.2-35.3)

- запись каждого модельного вызова: run_id, step_id, agent_role, attempt,
  prompt_hash, полный запрос и ответ, model_id, версия профиля модели, версия
  промпта, sampling и seed, токены, стоимость, латентность, checksum
  контекстного пакета;
- хранение в object storage как неизменяемые объекты, ссылка из Run Timeline и
  audit log, наследование privacy class проекта;
- маскирование секретов теми же правилами, что для логов;
- режимы live / record / replay, переключение конфигурацией;
- ключ разрешения (run_id, step_id, attempt) для точного реплея и
  (agent_role, prompt_hash) для фикстур;
- отсутствие кассеты в replay — жёсткая ошибка, тихий переход к живому вызову
  запрещён;
- политика хранения и удаление вместе с проектом.

### Реестр промптов (ADR-0007, ТЗ 35.4)

- промпт как трекаемый файл с манифестом: prompt_id, версия, content_hash,
  ожидаемые входы, выходной контракт роли, совместимые capabilities, changelog;
- runtime резолвит промпты только через реестр, инлайн-литералы запрещены
  проверкой;
- каждый шаг запуска фиксирует prompt_id и версию;
- прошлые версии остаются разрешимыми, иначе записанные запуски перестают быть
  воспроизводимыми.

### Жизненный цикл контекста (ADR-0012, ТЗ 39)

- бюджет контекста в токенах на роль, компактификация вместо молчаливого
  усечения;
- якоря, которые не суммаризируются и переутверждаются после каждой
  компактификации: контракт задачи, allowed/forbidden paths, Definition of Done,
  действующие approvals, политика безопасности;
- сохранение состояния до компактификации как checkpoint-артефакт;
- класс происхождения у каждого элемента контекста; недоверенное содержимое
  отделяется и помечается как данные; инструкции внутри данных не выполняются, а
  фиксируются как событие безопасности;
- детерминированность сборки и компактификации при одинаковых входах.

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

- прогон пайплайна в режиме record, затем повторный прогон в replay даёт
  идентичную последовательность шагов и нулевую стоимость;
- реплей доступен из Run Timeline одним действием;
- проверка в CI: ни одного инлайн-промпта вне реестра;
- тест: сборка контекста дважды на одних входах даёт одинаковый checksum.
