textmachine/eval/exp15/Q4A_POLYGON_ADDENDUM.md

6.9 KiB
Raw Blame History

ПОЛИГОН-АДДЕНДУМ к docs/POLYGON_Q4A_MINI_SESSION_PROMPT.md (exp15/Q4a)

Приложить к промту оркестратора при запуске Q4a-мини-сессии. НЕ отменяет и НЕ пере-сочиняет замороженный дизайн (pro-пин, два арма, сравнение с A0-flash, судьи, §D5-правило — всё в силе). Это только методологическая дисциплина — прямые уроки коррекции exp15 REV.2 (2026-07-18), где артефакт рига (HEAD_CHARS=1100) и пропущенный шум-пол дали ложный заголовок «0.564», пойманный лишь пост-хок верификацией оркестратора. Цель аддендума — чтобы Q4a не повторил это. При конфликте с промтом оркестратора — промт побеждает; спорное — пингом оркестратору ДО спенда.

1. ШУМ-ПОЛ ОБЯЗАТЕЛЕН (пре-рег §1.5) — самый дорогой урок сессии

Метрики Q4a — «доля flash-провалов, что pro-draft чинит» и «дельта (а)(б)» — floor-чувствительны: судья флипает вердикт на ЭКВИВАЛЕНТНЫХ входах (в основном прогоне mean|Δ| судьи на A0 vs A0 = 0.126, БОЛЬШЕ всех интересующих эффектов). Без пола любую дельту примешь за реальную (ровно то, что сломало Q1b/Q3a).

  • Померить пол ДО интерпретации: судить одну и ту же пару драфтов повторно (test-retest) ИЛИ flash-seed1 vs flash-seed2 на тех же fidelity-трапах → доля «ложных починок» (судья зовёт wrong→correct на идентичном/эквивалентном тексте). Это и есть false-positive-rate метрики «pro чинит».
  • Правило: «pro чинит X%» и «(а)(б)» интерпретируются ТОЛЬКО как превышение над этим полом. Эффект ≤ пола = «не отличим от судейского шума», НЕ ратифицируется (даже если точка красивая).
  • Дельта (а)(б) особенно уязвима (разница двух редакторских исходов на близких входах) — репортить с CI.

2. АДВЕРСАРИАЛЬНЫЙ РЕВЬЮ q4a_*.py ДО ПЕРВОГО ПЛАТНОГО ВЫЗОВА (2-рубежная дисциплина)

Артефакт HEAD_CHARS пережил self-review-1; пойман только внешней верификацией. Для Q4a — 34-линзовый адверс-ревью нового драйвера ДО спенда (линзы: видимость трап-спана ОБОИМ драфтам без усечения; per-vote персист вердиктов; бюджет-кап/гейт; маппинг трап→чанк корректен и не роняет трапы молча). Дёшево, окупилось.

3. СКОУП ТРАП-МАТЕРИАЛА — РАЗРЕШИТЬ ЯВНО ДО ГЕНЕРАЦИИ (реальная развилка)

Батарея exp14b лежит на материале exp14 (/home/ubuntu/books/gu-zhenren/exp14/), НЕ на S2. А сравнение Q4a = pro-draft vs A0-flash на ТЕХ ЖЕ чанках = S2 flat-чанки (flat_a0_30). Два несовместимых пути:

  • (A) локализовать трап-ТИПЫ exp14b (a1 двойное-отрицание, классы инверсий, T-inv-контроль) в S2 flat-чанках (майнинг/детект) → сопоставимо с exp15-анкорами; ИЛИ
  • (B) гнать Q4a на материале exp14, реюзя точные трап-определения → сопоставимо с exp14b, но НЕ с S2. «Реюз exp14b-батареи» в промте не различает (A)/(B). Выбрать явно и записать в §7-Q4a-аддендум как девиацию; при сомнении — пинг оркестратору. (Логика сравнения «на тех же чанках, что A0-flash» → по умолчанию склоняет к (A).)

4. Практические (экономят деньги/wall-clock)

  • Flash-драфты УЖЕ есть: anchors/flat_a0_30.db stage='draft' (порт-валидирован байт-в-байт, §7.2). Q4a генерит только pro-драфты; flash НЕ пере-гонять. Один pro-draft-набор питает оба арма (арм (б) = сам pro-draft; арм (а) = pro-draft → editor glm-5).
  • mistral throttling: интервал уже поднят 1.3→2.6s в exp15_llm.py (был 48% retry@1.3s, max lat 64.7s на полн-чанке). НЕ пере-тюнить. Судейские прогоны медленные (~12 мин/ячейка полн-чанк) — заложить wall-clock, длинные джобы чекать периодически (не ждать пассивно финальную нотификацию).
  • Свой Spender: кап $2, seed=0. НЕ наследовать глобальный seed $9.82 / потолок $14.5 из judge_run.py (это кап exp15; Q4a — отдельный бюджет ВНЕ него). Леджеры q4a_*.jsonl, персистить ВЕСЬ спенд вкл. пробы.
  • Windowing тут менее опасен, чем в Q1b: pro и flash на ОДНОЙ нарезке → трап в одной позиции у обоих → симметрично, оракул-подобной асимметрии нет. Всё равно полно-evidence (не HEAD_CHARS-класс); переиспользуй judge_run.py-хелперы (db_drafts, excerpt(...,full=True), judge_cell с per-vote), НЕ редактируя их.

5. Что переиспользовать из готового (не писать заново)

  • Судейский слой: judges.py (per-vote персист, gate-block≠parse-fail, cat/ev нормализация — уже пофикшены).
  • LLM/бюджет: exp15_llm.py (MODELS['deepseek-v4-pro'] заведён; additive-биллинг grok/kimi; предикт-гейт).
  • Полн-evidence/анкор-guard/full-режим: judge_run.py (как образец; для Q4a — свой q4a_judge.py, additively).
  • Провенанс v1/v2 и §7-структуру отчёта — как шаблон аддендума §7-Q4a.