212 lines
21 KiB
Markdown
212 lines
21 KiB
Markdown
# 18. Редакторский провод под доктриной закона (D39.104) + фронтир-пасс по голду
|
||
|
||
**Полигон-сессия 04.08.2026.** Исполнение `docs/POLYGON_EDITOR_WIRE_PROBE_SESSION_PROMPT.md`
|
||
(оркестратор №13, санкции владельца D39.103/104). Зона: `eval/bank_arbitration/` + этот файл + пинг
|
||
в PROGRESS «Полигон». Сырьё durable `~/books/gu-zhenren/bank-arbitration/`, префикс `edp-*`.
|
||
Не закоммичено, кроме пре-рег-фриза (CLAUDE.md, единственное исключение полигона).
|
||
Потолки: проба A ≤ $0.30, проба C ≤ $0.50.
|
||
|
||
---
|
||
|
||
## §0. ПРЕ-РЕГИСТРАЦИЯ (записано ДО первого платного вызова этой сессии; норма D39.46/D39.61)
|
||
|
||
Дата фиксации: 2026-08-04, до любых платных вызовов. Всё ниже — фриз; расхождение исполнения с
|
||
этим текстом печатается как девиация с обоснованием.
|
||
|
||
### 0.1 Провод пробы A (byte-faithful edit-стадии `pipeline-c1.yaml`)
|
||
|
||
| Поле | Значение | Провенанс |
|
||
|---|---|---|
|
||
| модель | `deepseek-v4-pro` | `pipeline-c1.yaml` stages[edit].model (ИНТЕРИМ D39.22) |
|
||
| промпт | `backend/prompts/zh-ru/editor.md`, блок `---FEWSHOT---` ДРОПНУТ | stages[edit].few_shot: false |
|
||
| temperature | `0.4` (шлётся; thinking-режим её молча игнорирует — quirks 00) | stages[edit].temperature |
|
||
| reasoning | параметр **НЕ шлётся вовсе** ⇒ вендор-дефолт `high` | deepseek = `ReasoningNone` (`llm/capability.go:177-180`), stages[edit].reasoning:"off" ⇒ ключа на проводе нет; quirks 00 §3а |
|
||
| max_tokens | `16000` | `models.yaml:166` capabilities.min_max_tokens (флор v4-pro) |
|
||
| раскладка | `system(editor.md core)` → `system(банк-блок)` → `user(text+draft)` | `render.go` MessagesWithInjection |
|
||
| формат строк блока | `- src → «dst»` | `membank/memory.go:815` editorLines |
|
||
|
||
**Байт-сверка провода — исполнением, ДО платных вызовов.** Overlay-тест (`go test -overlay`, файлы
|
||
живут в скрэтчпаде, в `backend/` не пишутся) прогнал РЕАЛЬНЫЕ `LoadPromptTemplate`+`SystemFor(false)`+
|
||
`MessagesWithInjection` и `RenderEditorConstraintBlock` на окне w3 и напечатал sha256 каждого
|
||
сообщения. Совпадение с Python-харнессом побайтное:
|
||
|
||
```
|
||
Go WPMSG 0 role=system sha=cef8aba86410f996ab4624f6839f2acbf98a31ededa6a12a8070c03abb739645
|
||
Py PYMSG 0 role=system sha=cef8aba86410f996ab4624f6839f2acbf98a31ededa6a12a8070c03abb739645
|
||
Go WPMSG 1 role=system sha=775604eddb3346c0b566ff01d0affd7b222d00fd37684afa9104639ae83e107d
|
||
Py PYMSG 1 role=system sha=775604eddb3346c0b566ff01d0affd7b222d00fd37684afa9104639ae83e107d
|
||
Go WPMSG 2 role=user sha=547d516465c885890438b4e001c8d6d6a7c48641ce28701b6b6385bad66940fa
|
||
Py PYMSG 2 role=user sha=547d516465c885890438b4e001c8d6d6a7c48641ce28701b6b6385bad66940fa
|
||
Go WPBLOCK sha=775604eddb3346c0b566ff01d0affd7b222d00fd37684afa9104639ae83e107d (RenderEditorConstraintBlock, текущий editor_header)
|
||
```
|
||
|
||
Сверялся блок с ДЕЙСТВУЮЩИМ `editor_header`; кандидат-заголовок §B отличается от него ровно
|
||
вставкой оговорки (ниже дословно), строки блока не трогает.
|
||
|
||
### 0.2 Окна и черновики
|
||
|
||
Те же 6 окон источника, что `inject_probe.py` (`pick_windows()`, детерминирован, `coldrun-a` только
|
||
чтение): w0@para534 · w1@para709 · w2@para488 · w3@para372 · w4@para101 · w5@para274.
|
||
Черновики — **арм B того же сырья** (`inj-w{k}-B.json`, транслятор под ВЕРНЫМ законом, $0, уже
|
||
персистированы, все `finish=stop`): канон-конформный черновик = сильнейший тест вытеснения.
|
||
|
||
### 0.3 Заголовки (кандидат-редакции §B промта; в движок НЕ вносятся)
|
||
|
||
База — действующий `editor_header` (`backend/internal/lang/data/injection.txt` строка 7), дословно.
|
||
|
||
**Единый закон-блок с оговоркой области** (армы A1, A2, AM-clause):
|
||
> КАНОНИЧЕСКИЕ ПЕРЕВОДЫ имён и терминов (в черновике термин исходника слева ДОЛЖЕН быть передан именно указанной формой справа — приводи к ней любые расхождения, склоняя по контексту; не вводи иных вариантов и не меняй ничего другого; глоссарий обязателен для употреблений термина КАК термина: игру слов, разбор знаков, буквальное прочтение передавай по смыслу пассажа, сохраняя узнаваемость канонической формы):
|
||
|
||
**Закон БЕЗ оговорки** (арм AM-noclause) = действующий `editor_header` без единой правки:
|
||
> КАНОНИЧЕСКИЕ ПЕРЕВОДЫ имён и терминов (в черновике термин исходника слева ДОЛЖЕН быть передан именно указанной формой справа — приводи к ней любые расхождения, склоняя по контексту; не вводи иных вариантов и не меняй ничего другого):
|
||
|
||
Секция `editor_unverified_header` НЕ рендерится (двухсекционка сворачивается в одну — §B промта);
|
||
маркер `⟨проверить⟩` на проводе НЕ рендерится (поведенчески пуст, research/24 §C).
|
||
|
||
### 0.4 Армы (26 платных вызовов v4-pro + 1 транслятор-вызов на черновик AM)
|
||
|
||
| Арм | Вызовов | Блок | Что мерит |
|
||
|---|---|---|---|
|
||
| **A0** | 6 | нет | изолированный контроль (его не было НИКОГДА) |
|
||
| **A1** | 6 | закон+оговорка, все строки ВЕРНЫЕ | исполнение закона на редакторе |
|
||
| **A2** | 6 | закон+оговорка, строка `元海 → «Юаньхай»` НЕВЕРНАЯ | цена неверного закона + межоконная консистентность |
|
||
| **AM** | 2 | закон+оговорка / закон без оговорки | работает ли оговорка области и не течёт ли |
|
||
| **A5** | 6 | нет | чинит ли редактор дефекты черновика |
|
||
|
||
**Девиация от дизайна §C (обоснованная):** research/24 §C РОТИРОВАЛ неверный терм по окнам. Здесь
|
||
неверная строка ОДНА И ТА ЖЕ во всех 6 окнах — `元海`, единственный терм, присутствующий во всех
|
||
шести окнах (пересечение множеств термов = {元海}) и отрендеренный верной формой во всех шести
|
||
черновиках. Без этого метрика «судьба ОДНОЙ строки одинакова во всех 6 окнах» (§A промта)
|
||
неизмерима. Инъецируемая неверная форма — `Юаньхай` (реестр `TERMS` `inject_probe.py`).
|
||
|
||
**AM — метаязыковое окно, НАТУРАЛЬНОЕ (не синтетика):** параграфы 517–521 источника — выбор
|
||
本命蛊 в шкафу гу. Несёт (а) `蛊名月光` — имя названо КАК ИМЯ («имя гу — Лунный свет»), при том что
|
||
канон-форма `月光蛊 → «Гу лунного света»`; (б) `弯弯如月` — буквальное «изогнут, как месяц»;
|
||
(в) обычные терминные употребления `月光蛊` в тех же 5 строках. Блок окна содержит ровно те термы
|
||
реестра, что встречаются в окне.
|
||
Черновик AM: 1 вызов транслятором проводом арма B (`deepseek-v4-flash`, `reasoning_effort:"low"`,
|
||
temp 0, ВЕРНЫЙ блок), тег `edp-AMdraft`. **Правило ветвления, фиксируется ЗДЕСЬ:** если черновик
|
||
передаёт `蛊名月光` ПО СМЫСЛУ (не приклеивает канон-форму к слову «имя») — идёт как есть; если
|
||
канонизировал — сажаю смысловой вариант «Имя этому гу — Лунный свет» и объявляю посадку в отчёте
|
||
(файл `edp-AMdraft-planted.txt`), результат помечается как посаженный.
|
||
|
||
### 0.5 A5 — посаженные дефекты черновика (дословный список)
|
||
|
||
По одному дефекту каждого класса в каждое из 6 окон, итого 6+6. Арм без банк-блока.
|
||
к1 = слово-абракадабра (несуществующее слово); к2 = смысловое искажение против ОРИГИНАЛА.
|
||
|
||
| Окно | Класс | Было в черновике | Стало (посадка) | Против чего в исходнике |
|
||
|---|---|---|---|---|
|
||
| w0 | к1 | `также поразительна` | `также взгрумительна` | — |
|
||
| w0 | к2 | `они не выдержат такого непрерывного расхода` | `они легко выдержат такой непрерывный расход` | 再多的元石也**经不起**…消耗 |
|
||
| w1 | к1 | `сокровище природы` | `мреязное сокровище природы` | — |
|
||
| w1 | к2 | `на глазах неуклонно поднимался` | `на глазах неуклонно опускался` | 元海水位…不断**攀升** |
|
||
| w2 | к1 | `словно натянутая струна` | `словно натянутая струмель` | — |
|
||
| w2 | к2 | `Увы, тот так и не показался` | `Увы, тот в первую же ночь и показался` | 可惜,**就是不见**那酒虫 |
|
||
| w3 | к1 | `но при этом необычайно густой` | `но при этом необычайно гущавой` | — |
|
||
| w3 | к2 | `Фан Юань, не оборачиваясь, развернулся и пошёл обратно` | `Фан Юань обернулся и остался стоять на месте` | 方源直接**转身往回走** |
|
||
| w4 | к1 | `волна дерзновенной отваги` | `волна дерзновяжной отваги` | — |
|
||
| w4 | к2 | `была вполне приемлемой платой` | `была совершенно недопустимой утратой` | 春秋蝉的损失**完全可以接受** |
|
||
| w5 | к1 | `оттенок суровой удали` | `оттенок суровяглой удали` | — |
|
||
| w5 | к2 | `он наконец не смог идти дальше` | `он зашагал ещё быстрее` | 一直走到三十六步,终于**走不动了** |
|
||
|
||
Скоринг A5: regex-предпроход («дефект ещё в выходе» / «смысл восстановлен») + **обязательная
|
||
глазная сверка каждой из 12 единиц; при расхождении авторитет — глаз**, regex печатается рядом.
|
||
|
||
### 0.6 Скоринг A0/A1/A2 и развязка regex-конфаунда
|
||
|
||
Метод — тот же regex-скорер, что `inject_probe.py --score` (нормализация NFKC · casefold · ё→е ·
|
||
схлоп пробелов). **Найденный и развязанный конфаунд (проверка потребована промтом на классе
|
||
元海/真元):** голд-rx `真元` = `истинн\w* ци` матчится ВНУТРИ верной формы `元海` = «море истинной ци».
|
||
Развязка: перед поиском `真元` из нормализованного выхода вырезаются все вхождения голд-формы `元海`.
|
||
Ре-ран research/24 §C по персистированному сырью ОБОИМИ методами — числа §C не двигаются
|
||
(см. §A.0 ниже); конфаунд задевает 2 клетки (w1 армы C/D), и обе лежат в колонке НЕВЕРНОГО терма,
|
||
которая в знаменатель «верных строк» не входит.
|
||
|
||
Знаменатели: «верные строки» = все термы блока кроме `元海` = 21 клетка (6+6+5+4+3+3 = 27 минус 6).
|
||
|
||
### 0.7 Критерии (успех/провал, зафиксированы ДО запуска)
|
||
|
||
1. **«Закон исполняется»** — A1 ≥ **5/6** окон, где ВСЕ верные строки окна пришли канонической
|
||
формой. Печатается также поклеточно (x/21) для сравнимости с §C.
|
||
2. **«Цена ошибки»** — A2: принятие неверной формы и вытеснение верной печатаются ЧИСЛОМ без
|
||
порога (это цена, не экзамен).
|
||
3. **«Консистентность держится»** — единогласие ≥ **5/6** однонаправленных решений по строке `元海`
|
||
в A2 (все 6 окон приняли ЛИБО все 6 отвергли).
|
||
4. **«Оговорка работает»** — метаязыковый пассаж передан ПО СМЫСЛУ при законе+оговорке И сломан
|
||
(канон-форма приклеена) при законе-без-оговорки.
|
||
5. **«Оговорка ТЕЧЁТ»** — ≥ **2/6** окон A1/A2 с отклонением от закона по ВЕРНЫМ строкам ⇒
|
||
формулировку сузить и пере-гнать ТОТ арм, где leakage зафиксирован (в потолке).
|
||
6. **A5** — «X из Y» по каждому классу, порога НЕТ (первый замер класса).
|
||
7. Средние исходы (ровно 4/6 и т.п.) — «неопределённо на N=6», печатаются, не абсорбируются.
|
||
|
||
### 0.8 Смета пробы A (напечатана ДО первого платного вызова)
|
||
|
||
Калибровка токенизатора: cl100k → фактические `prompt_tokens` DeepSeek ×**0.612** (по 6 вызовам
|
||
сырья §C, разброс 0.597–0.622). Вход всех 26 вызовов ≈ **52 602** ток. → **$0.0229**.
|
||
Выход: нижняя оценка (только содержательный текст) 23 400 ток. → **$0.0432**; ожидаемая
|
||
104 000 ток. → **$0.1134**; абсолютный потолок (ВСЕ 26 вызовов упираются в 16 000) 416 000 ток. →
|
||
$0.3848. **Ожидаемая смета $0.11–0.14 < потолка $0.30.** Абсолютный потолок выше $0.30 достижим
|
||
только при 26/26 упоров в cap, поэтому в харнесс вшит **живой стоп $0.28**, проверяемый ПЕРЕД
|
||
каждым вызовом ⇒ потолок непробиваем механизмом, а не дисциплиной. Плюс 1 транслятор-вызов на
|
||
черновик AM ≈ $0.002.
|
||
|
||
---
|
||
|
||
## §0C. ПРЕ-РЕГИСТРАЦИЯ ПРОБЫ C (фронтир-пасс по голду; потолок $0.50, «go» владельца D39.103 п.3)
|
||
|
||
**Слаги — live `/models` 04.08.2026, не со слуха.** Владелец назвал «терра»/«луна»; в листинге
|
||
OpenAI (124 слага) присутствуют ровно `gpt-5.6-terra` и `gpt-5.6-luna` (плюс `gpt-5.6-sol`, которого
|
||
владелец НЕ называл — в пробу не берётся). Опознание однозначное, СТОП+релей не требуется.
|
||
DeepSeek-листинг: `deepseek-v4-flash`, `deepseek-v4-pro` — прежние два.
|
||
|
||
**Цены — ТОЛЬКО прайс-страница вендора** `developers.openai.com/api/docs/pricing` (снято 04.08.2026),
|
||
за 1M токенов, короткий контекст / длинный контекст:
|
||
|
||
| Слаг | in | cached in | out | (long) in | cached | out |
|
||
|---|---|---|---|---|---|---|
|
||
| `gpt-5.6-terra` | $2.00 | $0.20 | $12.00 | $4.00 | $0.40 | $18.00 |
|
||
| `gpt-5.6-luna` | $0.20 | $0.02 | $1.20 | $0.40 | $0.04 | $1.80 |
|
||
| `gpt-5.6-sol` (не в пробе) | $5.00 | $0.50 | $30.00 | $10.00 | $1.00 | $45.00 |
|
||
| `deepseek-v4-pro` | $0.435 | $0.003625 | $0.87 | — | — | — |
|
||
|
||
(v4-pro — `models.yaml`, prices_checked 2026-07-10, подтверждено quirks 00 «цены пост-катовера не
|
||
изменились».) Батчи ростера ≈4.5k ток. ⇒ применяется КОРОТКИЙ контекст-тир.
|
||
|
||
**Протокол** — тот же, что research/24 §B3: `consilium_probe.py`-ростер (45 голд-термов в банке +
|
||
18 экстра-поверхностей = 63 строки), 5 батчей, engine-faithful `RenderBatch`, боевой
|
||
`terminologist.md`, добавка CONF_NUM (как у пасса `glm1`, иначе несравнимо), temp 0 где применимо.
|
||
Чемпион для сравнения — `glm1` = **25/45** (пере-считано из сырья: ds1 20 · ds2 20 · ds3 21 ·
|
||
dsw 18 · glm1 25 · mis1 23 · gro1 12).
|
||
|
||
**Wire-квирк, который НЕ гадаю (правило двух направлений, quirks 00 шапка):** вендор-дока GPT-5.6
|
||
описывает `reasoning.mode` + `reasoning.effort` (none…max) для **Responses API**; поддержка плоского
|
||
`reasoning_effort` в Chat Completions в доке не заявлена, а прецедент exp08 (xAI) — вложенная форма в
|
||
Chat Completions МОЛЧА ГЛОТАЕТСЯ. Поэтому ДО основных вызовов идёт **микро-wire-проба** (≈$0.002):
|
||
на каждом слаге по 2 крошечных вызова с эффортами `none` и `high`; ручка считается ЖИВОЙ, только если
|
||
`reasoning_tokens` между ними различаются. Транспорт основного прогона выбирается по её результату
|
||
(Chat Completions при живой ручке; иначе Responses API), выбор печатается в отчёт.
|
||
Прочее по квиркам: `max_completion_tokens` вместо `max_tokens`, `temperature` не слать.
|
||
Эффорт основного прогона: **low** для terra/luna (дешёвый тир, зеркало ds1); для `deepseek-v4-pro`
|
||
reasoning-параметр НЕ шлётся (`low` на pro маппится в `high` — ручки бюджета у pro нет, quirks 00 §3а).
|
||
|
||
**Смета C:** вход ≈19k ток. на пасс. v4-pro: $0.008 вход + выход (высокий эффорт, оценка 30k ток.)
|
||
$0.026 ≈ **$0.034**. luna: $0.004 + $0.048 ≈ **$0.05**. terra: $0.038 + (оценка 8k ток.) $0.096 ≈
|
||
**$0.13**. Итого ожидаемо **≈$0.22** при потолке $0.50; живой стоп харнесса **$0.45**.
|
||
|
||
**Критерий (фриз):** «фронтир оправдан для роли» — парное преимущество кандидата над `glm1`
|
||
(термы «кандидат прав ∧ glm1 неправ» минус обратные) ≥ **+5** на 45 голд-термах **И** названа
|
||
цена/книга по методике research/24 §B5. Меньше +5 — «не оправдан» (легитимный исход).
|
||
|
||
**Data-sharing** на ключе OpenAI отключён — слово владельца, D39.103 п.3 (со слов промта
|
||
оркестратора; сессия это не верифицировала).
|
||
|
||
---
|
||
|
||
## §A. Проба A — результаты
|
||
|
||
*(заполняется после прогона)*
|
||
|
||
## §C. Проба C — результаты
|
||
|
||
*(заполняется после прогона)*
|