textmachine/docs/experiments/18-editor-wire-probe.md

21 KiB
Raw Blame History

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 — метаязыковое окно, НАТУРАЛЬНОЕ (не синтетика): параграфы 517521 источника — выбор 本命蛊 в шкафу гу. Несёт (а) 蛊名月光 — имя названо КАК ИМЯ («имя гу — Лунный свет»), при том что канон-форма 月光蛊 → «Гу лунного света»; (б) 弯弯如月 — буквальное «изогнут, как месяц»; (в) обычные терминные употребления 月光蛊 в тех же 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.5970.622). Вход всех 26 вызовов ≈ 52 602 ток. → $0.0229. Выход: нижняя оценка (только содержательный текст) 23 400 ток. → $0.0432; ожидаемая 104 000 ток. → $0.1134; абсолютный потолок (ВСЕ 26 вызовов упираются в 16 000) 416 000 ток. → $0.3848. Ожидаемая смета $0.110.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 — результаты

(заполняется после прогона)