192 lines
20 KiB
Markdown
192 lines
20 KiB
Markdown
# Эксперимент 16. Банк-майнинг W1.5 (полигон-стадия research/20 §D)
|
||
|
||
> **Статус:** полигон-сессия exp16 (2026-07-18), исполняет пре-рег дизайн **research/20 §D** (дизайн-оф-рекорд,
|
||
> D39.6). Зона: `eval/exp16/` + этот файл. Артефакты — ВНЕ git (`/home/ubuntu/books/gu-zhenren/exp16/`).
|
||
> **Коммичу ТОЛЬКО пре-рег фриз** (единственный коммит, ДО первого платного вызова — D30.10/D37); результаты
|
||
> сдаются этим отчётом, лендит оркестратор. Бюджет платных армов: жёсткий кап **$10** (решение владельца 17–18.07).
|
||
>
|
||
> Структура: **§0** пре-задача (ре-аудит exp14b, D39.9) · §1 пре-рег фриз · §2 GT/материал · §3 результаты по
|
||
> армам · §4 решающие правила + маршрутизация слепых зон · §5 деньги · §6 самопроверка + отклонения.
|
||
|
||
---
|
||
|
||
## §0. Пре-задача ($0, ДО фриза): ре-аудит exp14b исправленными правилами (D39.9)
|
||
|
||
**Мандат (промт §пре-задача):** Q4a (D39.9) вскрыл, что (i) правила скорера exp14b
|
||
(`rule_counterfactual`/`polarity_envy`/`b1`) дефектны, а исправленные оверрайды лежат в
|
||
[q4a_traps.py](../../eval/exp15/q4a_traps.py); (ii) харнес [exp14_common.call](../../eval/exp14/exp14_common.py#L104-L113)
|
||
НЕ отклоняет `finish=length` — усечённый выход возвращается как валидный (`err=None`). Задача: (1) пере-скорить
|
||
СОХРАНЁННЫЕ exp14b-выходы исправленными правилами; (2) свип `finish_reason=length` по exp14/14b-леджерам;
|
||
(3) отчёт-дельта: какие пер-класс вердикты D38 сдвинулись. **Флип любого несущего → СТОП + пинг оркестратору
|
||
(errata — его зона).**
|
||
|
||
Код (аддитивный, риг exp14/14b НЕ тронут — импорт read-only): [reaudit_14b.py](../../eval/exp16/reaudit_14b.py),
|
||
[length_sweep.py](../../eval/exp16/length_sweep.py). Length-гейт для СВОИХ будущих генераций чинится у себя
|
||
(exp16-харнес), риг exp14 не трогаю.
|
||
|
||
### §0.1. Результат ре-скоринга (задача 1) — D38 DET-ядро ДЕРЖИТСЯ
|
||
|
||
D38 (`14b-meaning-battery.md` §2.1) скорил DET **ручной span-читкой** (авто-скорер был само-отвергнут как
|
||
бракованный). Исправленный `q4a_traps` — это тот самый скорер, но починенный (предложение-скоуп, исправленные
|
||
a1/a2/b1/b2/c1/d1/d2; звук b2, c2=`rule_grade_bing`, c3=`rule_patriarch` реюзаны verbatim). Self-test
|
||
корректных правил: 19/19 pass. Ре-скор всех сохранённых выходов арма C/F/X/D/M (+ K где есть, + P0-референс):
|
||
|
||
| Трап (класс) | glm-5 C | gpt-5.4 F | grok X | deepseek-pro D | mistral M | сходится с D38? |
|
||
|---|---|---|---|---|---|---|
|
||
| **a1** двойн.отриц (крит) | fail | **fix** (лок.gap→разрешён) | fail | fix | fix | ✅ все |
|
||
| **a2** 无不 | fix | fix | fix | fix | fix | ✅ все |
|
||
| **b2** 四成四=44% | fix | fix | fix | fix | fix | ✅ все |
|
||
| **c1** 人上之人 (крит) | fix | **fix** (лок.gap→разрешён) | fail | fail | fix* | ✅ (M: `?`→fix, апгрейд) |
|
||
| **c3** 族长 (глосс-конфаунд) | fail | fix | fix | fix | fail | ✅ все |
|
||
|
||
**Каждая ячейка, которую исправленный скорер СМОГ локализовать, совпадает с ручным вердиктом D38 дословно** —
|
||
включая паттерн глосс-конфаунда c3 (C/M=fail «старейшина», F/X/D=fix «глава») и c1 M=`?`. Единственные два
|
||
расхождения — **a1 F** и **c1 F**: D38=fix → исправленный скорер=`?` (пустой span). Это НЕ семантический флип,
|
||
а **пробел покрытия локатора** q4a на перефразе gpt-5.4 (окно story→knowledge 90 симв. перелетело; `над людьми`
|
||
разорвано словом `обычными`). `?` = «не локализовано / не классифицируемо — ИСКЛЮЧЕНО из ставок, НИКОГДА не
|
||
тихий pass». Разрешение span-читкой (мануально + независимо, §0.3): gpt-5.4 верно рендерит оба
|
||
(«…не было ни одного человека, который бы его не знал» = верная двойная негация; «…подняться над обычными
|
||
людьми» = верное 人上之人). **D38 «fix» стоит.**
|
||
|
||
Исправленные fix-rate по армам (9 DET-инстансов, `?` исключён из знаменателя): C 7/9 · F 5/6 · X 7/9 ·
|
||
D 7/9 · M 5/7 · P0 4/5. (b1/c2/d1/d2 не были в ручной D38-таблице §2.1 — свежие данные, не «сдвиги».)
|
||
|
||
**Несущие выводы D38 под исправленными правилами — БЕЗ изменений:**
|
||
- «Только gpt-5.4 чинит смысл» **опровергнуто**: a1 чинят F, **D и M**; валят glm(C) и grok(X). Провалы
|
||
РАЗБРОСАНЫ по модель×конструкция (a1: C+X; c1: X+D; c3-глосс: C+M). Нет модели безупречной/безнадёжной.
|
||
- c3 = **глоссарий-енфорсмент**, не способность (C/M подтянули approved-сосед `家老→старейшина` к draft-целевому
|
||
`四代族长`) — подтверждено внутренней консистентностью (ни один арм не мешает глава/старейшина).
|
||
|
||
### §0.2. Свип finish_reason=length (задача 2) — ни одна несущая DET-ячейка не заражена
|
||
|
||
8 леджеров, 477 записей: `stop` 413 · `length` **32** · `(none)` 32. Разбор 32 `length`-записей:
|
||
|
||
| Источник | n | Приняты как валидные? | Затрагивает несущую DET-ячейку? |
|
||
|---|---|---|---|
|
||
| gemini-3.1-pro (G-base/G-disc, exp14) | 11 | да (баг-гейт) | **нет** — gemini ДРОПНУТ как арм (exp14b §1.1); не в C/F/X/D/M |
|
||
| kimi-k2.6 (K-арм + судьи, exp14/14b) | 19 | 2 приняты (10.1/11.1), 17 отвергнуты (empty) | **нет** — K-арм ДРОПНУТ (D38); 10.1/11.1 не несущие |
|
||
| deepseek-v4-pro **D 2.1** (exp14b) | 1 | **да** (comp_tok=8000, оборван на «…Ступа[й]») | **нет** — 2.1 = e2 (SOFT/судейский), не DET; **НОВАЯ находка** |
|
||
| gpt-5-mini (regate-судья) | 1 | нет (отвергнут empty) | нет — судья, не редактор |
|
||
|
||
Прямая проверка длин 7 несущих DET-чанков (7.0/17.0/16.0/6.0/9.1/10.1/19.0) по C/F/X/D/M: все консистентны и
|
||
завершены (ни один аномально короткий, ни один в свипе). **Несущие DET-вердикты сидят на полных выходах.**
|
||
D 6.0 (упомянут в D38 как оборванный→перегнан на 16k) — сохранённый файл полный (10054 симв, `stop`); в свипе
|
||
как `length` не значится (финальная перезапись). **Новая находка:** D 2.1 (e2, SOFT) — принятая усечёнка;
|
||
судьи e2 скорили оборванный выход D. Влияния на несущее нет (e2-вердикт D38 = «большинство correct,
|
||
чэнъюй-сплющивание универсально» — усечёнка не рождает ложную катастрофу), но фиксирую как риг-гигиену.
|
||
|
||
### §0.3. Независимая верификация несущих (author≠reviewer) + дельта-вердикт (задача 3)
|
||
|
||
Промт требует: «несущие a1-вердикты span-верифицированы независимо». Исполнено воркфлоу из 4 независимых
|
||
refute-by-default ридеров (a1 ×2, c1, c3), читавших СЫРЫЕ выходы армов, вердикт fix/fail/omit + цитата-span.
|
||
**Все 4 подтвердили каждую несущую ячейку**, включая двойное подтверждение a1 F=fix и c1 F=fix (моё
|
||
разрешение локатор-gap'ов независимо подтверждено). a1: C=fail×2, F=fix×2, X=fail×2, D=fix×2, M=fix×2. c1:
|
||
C/F/M=fix, X/D=fail. c3: C/M=fail, F/X/D=fix.
|
||
|
||
**ДЕЛЬТА-ВЕРДИКТ:** **0 семантических флипов несущих вердиктов D38.** DET-ядро D38 держится под исправленными
|
||
правилами, тройно подтверждено (D38-ручной × исправленный авто-скорер × независимый refute-by-default ридер).
|
||
Два расхождения (a1 F, c1 F) — пробелы покрытия локатора, разрешены в `fix`; одно улучшение (M c1 `?`→fix).
|
||
**СТОП-гейт НЕ сработал; пинг оркестратору по флипу НЕ требуется** (условие пинга — флип, его нет).
|
||
|
||
**Риг-находки в реестр (не блокеры, для протокола):** (а) исправленный `q4a_traps`-локатор имеет пробелы
|
||
покрытия на не-S2′ материале → выдаёт `?` (безопасно: не тихий pass) — подтверждает правоту D38 скорить DET
|
||
ручной span-читкой; (б) харнес exp14 принял усечёнку D 2.1 (e2 SOFT) — единственная новая жертва length-бага
|
||
вне дропнутых армов; (в) для СВОИХ генераций exp16 length-гейт реализуется в exp16-харнесе (отклонять
|
||
`finish=length` как reject/flag) — §1.
|
||
|
||
Артефакты: `exp16/reaudit_14b.json`, `exp16/length_sweep.json`, `exp16/pretask_independent_verify.json`.
|
||
|
||
**⟶ Гейт пройден: ядро держится. Перехожу к пре-рег фризу (§1).**
|
||
|
||
---
|
||
|
||
## §1. Пре-рег фриз (miner-v1) — коммит ДО первого платного вызова (D30.10/D37)
|
||
|
||
Замораживается дословно из research/20 §D + конкретизации. Детектор-код детерминирован (сортировки,
|
||
версия `miner-v1`, версионированные словари) — повторный прогон байт-в-байт (§D4-е).
|
||
|
||
### 1.1. Материал и Ground Truth
|
||
- **GT = сид v2 пост-reseed**, `guzhenren-seed-v2.yaml` **sha256 `175a67ad2f05…c408f4`** (совпадает с
|
||
реф-хешем промта; 人祖=male, 古月=n-a подписаны — exp15-преп). **GT = 57 термов + 2 алиас-поверхности.**
|
||
- **Фильтр вхождения (§D1):** каждый GT-терм имеет ≥1 вхождение src/алиаса в source (Aho-Corasick-эквивалент
|
||
БЕЗ suppressContained, D24.2). Проверено исполнением: 57/57 проходят **с** аннотацией, 54/57 **без**.
|
||
- **BLURB-ПРАВИЛО (решение полигона, пре-рег):** аннотация гл.1/чанк0 СЧИТАЕТСЯ вхождением ⇒ **GT=57**.
|
||
3 blurb-терма (血颅蛊 since193, 一气金光虫/青丝蛊 since47) встречаются по 1 разу только в аннотации ⇒
|
||
страта **f<3**. (Альтернатива «аннотация ≠ вхождение» дала бы GT=54; репортим f<3-recall в обоих
|
||
разрезах для этих 3 термов.) **Частотные страты GT (incl. аннотация): f≥10 — 40 · f3-9 — 7 · f<3 — 10.**
|
||
- **(source, draft) пары:** `rerun/records.json` **sha256 `3de49eaf…928d`** — 57 чанков (гл.1–25),
|
||
черновики deepseek-v4-flash. ⚠ **Конфаунд инъекции (§D1):** черновики генерились С глоссарий-инъекцией
|
||
сида (budget 800, `pipeline-rerun.yaml`) ⇒ спред на GT подавлен ⇒ метрики спреда/канона на них =
|
||
НИЖНЯЯ граница; несущие выводы — по cold-start срезу (§1.6).
|
||
|
||
### 1.2. Армы (A1–A3+абл)
|
||
| Арм | Детектор | Определение |
|
||
|---|---|---|
|
||
| **A1** | V-A | Han-n-граммы 1–6 × частотный floor 3 × c-value (nested-дисконт, g(L)=log₂(L+1)) × weirdness (контраст с общим zh) |
|
||
| **A2** | V-B | A1 + translation-spread (Dice/LTCR по ru-черновикам, pymorphy3-леммы) + dst-варианты |
|
||
| **A3** | V-C | A2 + паттерны: 百家姓-якорь, титул/топо-суффиксы, rank/grade-композиция, продуктивная морфология (авто-формант по over-rep), Палладий ru-канал |
|
||
| **A3-абл** | V-C, λ=0 | V-C без spread-сигнала — изолирует вклад каждого сигнала (§D2) |
|
||
|
||
### 1.3. Замороженные пороги (miner-v1) — выбраны на тюнинг-половине ch1–15, ±50%-стабильны
|
||
`freq_floor=3` (§A1 C-value канон) · `subsume_alpha=0.80` (nested-консолидация ранжирования; 0.5
|
||
слишком агрессивно роняет GT) · `ngram_max=6` · `formant_min_over_rep=15.0` · `formant_min_partners=3`
|
||
· `lam=0.0` на инъектированных черновиках (spread вредит ранжированию — конфаунд §D1; на cold-start λ
|
||
свипается) · pattern-бонусы `{name/place 140, title 120, term 80}` × source-weight. **Свип ±50% (§1
|
||
tuning_sensitivity.json): A3@f≥3=1.0 инвариантно по ВСЕМ настройкам; catastrophe PASS везде.**
|
||
|
||
### 1.4. Метрики (все детерминированные, $0, кроме адъюдикации)
|
||
1. **recall@PROPOSED** (членство в кандидат-сете = ось «где арм слеп», §D3) — первичная recall-метрика,
|
||
по типам (name/title/place/term/nickname) и стратам (f≥10/3-9/<3).
|
||
2. **recall@top-K + pseudo-precision@K** (ось ранжирования/точности) + trade-off кривая.
|
||
3. **precision@30 адъюдицированная** (топ-30 не-сидовых A3): владелец по карте ИЛИ кросс-семейный судья
|
||
закалённого паттерна `judges.py` (per-vote, оба порядка, полно-evidence) — precision@сид НЕ метрика (§D1).
|
||
4. **canon-recovery** (§C2): покрытие подписанных лемм предложением канона; несущее — на cold-start.
|
||
5. **алиас-precision** рёбер R1–R3 (entity-B³, не MUC) + мини-голд владельца для recall (§E-1 тачпойнт).
|
||
6. **стабильность порогов** ±50%. 7. **A6b** accuracy верификации/линковки.
|
||
|
||
### 1.5. Порог-дисциплина 60/40 (анти-подгонка, §D1)
|
||
Тюнинг = ch1–15, тест = ch16–25. Пороги выбраны на тюнинге, заморожены этим коммитом; **первичный
|
||
репортируемый результат — тест-половина**; full-срез — вторичка (catastrophe/trade-off/дамп).
|
||
|
||
### 1.6. Cold-start срез (пре-рег фиксирует главы)
|
||
**Главы [1, 4, 5, 7, 9]** (жадное GT-покрытие: **52/57** сущностей, **14 чанков** — 6 в гл.1). Свежие
|
||
flash-черновики БЕЗ глоссарий-инъекции, 2 конфига: `plain` (=срез, spread+canon-recovery) и `banknote`
|
||
(§B3-инструкция, канал сноски A4). Промт translator — `backend/prompts/translator.md` **sha256
|
||
`35d3ad6e…`**, brief из `rerun/book.yaml`, БЕЗ инъекц-блока (порт `coldstart_gen.py`). ⚠ **DeepSeek-долина
|
||
обязательна** (пики UTC 01–04/06–10 ×2, D39.7 — `coldstart_gen.in_deepseek_peak()` отказывает в пик).
|
||
|
||
### 1.7. Катастроф-скрин (§D4-в)
|
||
方源 · 蛊 · 蛊师 · 古月 обязаны быть в **топ-50 победителя**; промах = провал арма. **Пройден на full
|
||
(ranks 0/1/2/13/…)** — g(L)=log₂(L+1) держит одночарный 蛊 (nested в 蛊师/蛊虫/月光蛊) на ранге 1.
|
||
|
||
### 1.8. Карта независимости сигналов (§D4-а — против manufactured convergence)
|
||
Сигналы репортятся РАЗДЕЛЬНО: A1(частота×контраст), spread(A2−A1 / A3−A3абл), паттерны(A3−A1). Сведение
|
||
«N сигналов сходятся» — только с leave-one-out. Spread на инъектированных = ~0/негатив (изолирован),
|
||
измеряется экологически лишь на cold-start.
|
||
|
||
### 1.9. Бюджет и порядок (§D5)
|
||
Платный кап **$10** (владелец 17–18.07), per-call gate + hard-cap (`exp15_llm.Spender`). Порядок:
|
||
A1–A3+абл ($0) → алиас ($0) → A6/A6b (стенд $0) → cold-start (копейки) → A4/A5 (платные, последними,
|
||
отменяемы). **Length-гейт (D39.9):** ВСЕ свои генерации отклоняют `finish=length` (не наследуем баг exp14).
|
||
|
||
### 1.10. Хеши (версионирование детектора)
|
||
- Код `miner-v1` (SHA256): exp16_common `92bc737a` · detectors `89059e53` · patterns `7ac8240c` ·
|
||
spread `5422415f` · palladius `a071295e` · arms `a5ed2ae2` · run_arms `c4e3e17d` · banknote `069ad8fe` ·
|
||
coldstart_gen `70c8d9c1` · alias `354172fa` · canon `e947ebf3` · reaudit_14b `8d95ad58` · length_sweep `59a60b15`.
|
||
- Словарь-артефакт (контраст): `data/jieba_dict_general_zh.txt` **sha256 `7197c321…e12a8`** (jieba 0.42.1
|
||
`dict.txt`, общий zh word-freq; вне git — воспроизводим из jieba 0.42.1, SHA пиннится здесь).
|
||
- Сид `175a67ad…` · records `3de49eaf…` · translator.md `35d3ad6e…` · бэкенд HEAD `b9e62a7`.
|
||
|
||
### 1.11. Решения владельца, вшитые (17–18.07, НЕ пересматривать)
|
||
Жанр-паки НЕ строятся (V-C только универсальные каналы; авто-формант, не хардкод 蛊). Майнер НИКОГДА
|
||
не пишет `approved` (auto/draft + карта подписи); канон = по ВСЕМ вхождениям × Палладий-конформность ×
|
||
полнота леммы. Пол в сиде подписан (人祖=male, 古月=n-a); счётчики 他/她 = evidence, вердикт = владелец.
|
||
ja→ru реплика — след-за-§D (отдельный мини-фриз).
|
||
|
||
**⟶ Фриз коммитится. Результаты (§3+) — ПОСЛЕ, лендит оркестратор.**
|
||
|
||
---
|
||
|
||
## §2. GT и материал (см. §1.1) · §3. Результаты по армам · §4. Решающие правила + слепые зоны · §5. Деньги · §6. Самопроверка
|
||
|
||
*(заполняются после прогонов; тест-половина — первичка)*
|