Суть
Каждый слой по отдельности выглядит осмысленно: трассировка есть, политики есть, оценки есть, канареечная выкатка есть. Проблема возникает в момент, когда нужно ответить на вопрос про конкретный запуск: почему он был разрешён, что решила политика, кто подтвердил, какой оценкой он был покрыт и повлиял ли он на решение о раскатке.
Если ответ собирается вручную сопоставлением времени между четырьмя системами, слои есть, а записи нет.
Минимальный набор идентификаторов
То, что делает один запуск проверяемым насквозь: идентификатор запуска и трассы, субъект и арендатор (Agent Identity), идентификатор решения политики, идентификатор подтверждения, ключ идемпотентности и статус побочного эффекта (Idempotency For Agents), ссылка на версии артефактов (Trusted Artifacts), связь с оценочным сценарием.
Ключевое свойство — не количество полей, а сквозная связанность: по любому из них должна собираться вся история, а не её фрагмент.
Стандарт задаёт тот же набор с другой стороны — как обязательные к журналированию события, и перечень почти совпадает: взаимодействие с моделью пишется с контекстом сессии (AISVS C12.1.1); решения фильтрации и политик — с подробностью, достаточной для аудита и разбора (C12.1.2); запись о вызове модели идёт по структурированной схеме и содержит как минимум идентификатор модели, расход токенов на вход и выход, имя провайдера и тип операции (C12.1.3); события извлечения в RAG пишутся вместе с запросом, найденными документами и источником знания (C12.1.4); для подтверждений требуется личность подтвердившего, отметка времени, параметры действия и исход решения (C12.4.2).
Два пункта оттуда стоит перенести в набор выше, потому что их обычно не заводят: структурированная схема записи вместо свободного текста — иначе сквозная сборка по идентификатору упирается в разбор строк, — и отдельное журналирование срабатываний аварийного выключателя и команд переопределения (C12.4.3), которые иначе остаются единственным непрослеживаемым действием в системе.
Manifest фиксирует не только события, но и denominator
Обычная трасса показывает, что произошло. Для пакетного или параллельного запуска этого недостаточно: она не доказывает, что ни один выбранный элемент не исчез до создания события. Поэтому OpenCodeReview сначала регистрирует весь scope, затем запечатывает его до диспетчеризации и только после этого разрешает исполнение.
Manifest хранит алгебру покрытия selected = completed ∪ reused ∪ failed ∪ waived, требует непересекающихся исходов и выводит общий статус из покрытия. Это устраняет два ложных успеха: «воркеры завершились» при потерянном элементе и «комментариев нет» при фактически не запущенном анализе. Ошибка получает тип (provider, timeout, cancelled, configuration, input, budget, panic, unknown), а не растворяется в одном warning.
Для воспроизводимости scope привязывается к разрешённым commit SHA и хешу входного артефакта; рядом сохраняются версия исполнителя, provider/model, concurrency, хеши правил и runtime-конфигурации. Resume доверяет сохранённому исходу только тогда, когда его подтверждает финальный manifest родителя. Таким образом evidence spine начинается до первого model call: сначала фиксирует, что обязано быть проверено, затем связывает с этим фактические события (Batch Close Protocol, Agent Code Review).
Зачем это нужно на практике
Три вопроса, ради которых цепочка и строится:
- Разбор инцидента. Что именно произошло и на каком основании — восстанавливается, а не пересказывается (Agent Audit Log).
- Решение о выпуске. Просадка в канареечной когорте связывается с конкретным изменением артефакта, а не с «новой версией вообще» (Change Classification Agent).
- Ответ регулятору или заказчику. Утверждение «система работала по правилам» подкрепляется записью, а не убеждённостью команды (AI Fairness).
Признак, что цепочки нет
Полезный тест на зрелость, не требующий инструментов: взять один недавний неудачный запуск и попробовать за пять минут ответить, какая версия инструкции в нём работала, какое правило политики сработало и попал ли он в набор оценок. Если это занимает день, цепочки нет независимо от того, сколько дашбордов построено.
Связано с
- Agent Audit Log — состав следа и связки между событиями
- Agent SLO — измерения здоровья, опирающиеся на ту же запись
- Canary Release LLM — решение о раскатке как звено цепочки
- Trusted Artifacts — версии, на которые ссылается запись
- W3C Trace Context — сквозной идентификатор как технический носитель
- Change Classification Agent — привязка просадки к изменению
- Incident Management AI — процесс, потребляющий цепочку
- Batch Close Protocol — закрытие параллельной партии по исчерпывающему набору исходов
- Agent Code Review — конкретная реализация sealed coverage manifest