Files
contracts/History/provenance-columns.md
2026-06-23 09:07:26 +04:00

2.2 KiB
Raw Permalink Blame History

Provenance Columns — Opus Round 2

Дата: 2026-06-23 | Версия: v1.0.114 | Связано: spec_events, apply_events.cfm, convert_server.py


Что сделано

Добавлены две колонки в spec_events, рекомендованные Opus (раунд 2, ответ 6):

Колонка Тип Откуда берётся Зачем
source_document_id UUID FK→documents convert_server.py — из JOIN supplements+documents Прямая ссылка на исходный документ (provenance). Без неё — только через supplement_id, что хрупко.
raw_llm_response JSONB convert_server.py — полный llm_result (mode + ops) Аудит: что модель ВООБЩЕ ответила vs что мы применили. Воспроизводимость.

Вместе с prompt_version (v1.0.113) — полный комплект provenance для каждой операции.

Почему

Opus: «Добавилась услуга X за 15000» без источника — бесполезно. «Добавилась услуга X ← допник №3, п.2.4, вот абзац» → проверка за 2 секунды.

Три колонки закрывают:

  • Каким промптом (prompt_version)
  • Из какого документа (source_document_id)
  • Что модель ответила (raw_llm_response)

Что изменилось

convert_server.py

  • SQL запрос supplements: добавлен d.id as document_id
  • apply_events POST: добавлены document_id и raw_llm_response

apply_events.cfm

  • 3× ALTER TABLE ADD COLUMN IF NOT EXISTS (prompt_version, source_document_id, raw_llm_response)
  • Все 7 INSERT INTO spec_events: +2 колонки с <cfif len(...)>

Что НЕ изменилось

  • Логика сравнения
  • spec_current
  • UI
  • Старые строки — NULL в новых колонках, ни на что не влияет

Риски

  • Нулевые. Колонки опциональные (NULL разрешён), чисто аддитивные.