Шлюз должен писать не «кто-то вызвал модель», а проверяемую запись: request_id, модель и её версию, версию политики, timestamp, token counts, SHA-256 канонического входа после локальной PII-санитизации и ответа. Каждый хеш — 32 байта; событие связано с предыдущим. Сырые тексты в журнал не складываем. Если аудит требует прочитать содержимое, храните его отдельно, зашифрованным ключом внутри вашего контура, с собственными правами доступа и сроком хранения. Хеш подтверждает целостность предъявленного текста, но не восстанавливает его. События пишутся в append-only журнал. Каждую секунду или после 10 000 событий шлюз строит Merkle-корень и подписывает его локальным HSM; подпись Ed25519 — 64 байта. Проверка цепочки и подписей работает офлайн. Измеряйте p95/p99 задержки и окно до фиксации подписи на своём потоке, а не верьте обещаниям «нулевого overhead». Считайте TCO на миллион запросов: локально — CPU, SSD и обслуживание HSM; в облаке — KMS-вызовы, ingest и хранение логов, egress. Подписыв...