Files
contracts/History/opus-vision-es.md

4.6 KiB

Opus 4.8 — Видение: LLM-driven Event Sourcing нового поколения

Дата: 2026-06-23


Оценка текущей архитектуры

Частично соответствует лучшим практикам ES. Нарушает две аксиомы:

1. Событие должно быть фактом, а не интерпретацией

Классика: событие — «что произошло» (PriceChanged), объективный факт. У нас: ADD/UPDATE/DELETE — интерпретация документа моделью, не факт. Настоящий факт: «загружен допник №3 с таким текстом».

2. События должны быть детерминированы

Классика: реплей даёт то же состояние. У нас: та же модель + тот же документ = могут быть другие ops (стохастичность LLM).

Вывод: прагматичный гибрид. Не «неправильно», но неклассически.


Двухслойный лог (ключевая идея)

  • Слой 1 — сырые факты: DocumentIngested(text_hash, bytes, order). Детерминированные, реплеятся идеально.
  • Слой 2 — интерпретация: SpecChangeProposed с метаданными (model_id, prompt_version, input_hash, raw_response, temperature).
  • spec_current — проекция слоя 2.

Даёт: перепрогнать слой 1 новой моделью без потери истории.


Неизведанные идеи

1. Версионная ре-интерпретация

Апгрейд модели → перепрогон всего потока → параллельная spec_current_v2 → сравнение дрейфа на истории. Версионирование понимания данных.

2. Provenance каждой строки

«Эта услуга пришла из допника №3, вот исходный абзац, reasoning LLM, confidence 0.82». UI «почему здесь эта цифра».

3. Human-correction как событие → flywheel

Правка юзера = SpecChangeCorrected(by=user) = regression-тест + размеченный пример. Бесплатный датасет качества.

4. «Prompt CI» — промпты как код с тестами

Из human-corrections → golden dataset. Изменение промпта → eval-харнесс. Регрессионные тесты для промптов.

5. Confidence-gating + self-consistency

N прогонов (или 2-3 модели) → консенсус. Согласные ops → авто. Расхождения → ручная проверка. Лечит нестохастичность.

6. Эмбеддинги вместо name_hash

Векторный матчинг сущностей внутри event-проекции. «Аренда стойко-места…» с разными тире → один вектор.

7. Temporal queries — «спецификация на дату»

UI-ползунок по времени: «как выглядел договор на 2025-03-01». Технически возможно уже сейчас.

8. Outbox/Saga + idempotency keys

Exactly-once через HTTP-границы Lucee↔Python↔LLM. Для надёжности при мульти-юзерах.

9. Constrained decoding (GBNF-грамматика)

Форсировать валидный JSON ops на уровне декодера LLM. Убирает ошибки парсинга.


Приоритеты (от Opus)

Приоритет Идея Зачем
🔥 Высокий Двухслойный лог Чинит детерминизм, открывает всё
🔥 Высокий Provenance-метаданные Аудит, доверие, миграция моделей
🔥 Высокий Human-correction как событие Flywheel: бесплатный eval-датасет
Средний Эмбеддинги для матчинга Решает name_hash надёжнее
Средний Temporal UI Killer-фича почти даром
Средний Confidence-gating Убирает тихие ошибки
🧪 Исслед. Версионная ре-интерпретация Сравнение моделей на истории