Commit the stray Q4a polygon addendum note left untracked from the mini-session

This commit is contained in:
Claude (backend session) 2026-07-19 00:25:13 +03:00
parent 667eec0dc5
commit aaa4e12bf8

View file

@ -0,0 +1,52 @@
# ПОЛИГОН-АДДЕНДУМ к `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.