textmachine/eval/dovodka/PLAN-21-08.md

27 KiB
Raw Blame History

ПЛАН 21.08 — ДОФИКСЫ И ДОСНЯТИЕ. Заказ владельца 21.08

Заводится по прямому слову владельца: «завести актуальный план, куда ты дампнешь все необходимые дофиксы, и мы пойдём доделывать и доснимать проблемные места… заодно получится следовать ровно по этому плану и не ошибиться». Предыдущие слои: PLAN-17-08.md (курс, частью исполнен) · HANDOFF-21-08.md · SESSION2-LOG.md §16 · отчёт docs/experiments/23-editor-tier.md секции Д21Д29. Читать ЦЕЛИКОМ, не грепом.


0. ПОРЯДОК РАБОТ. Он важнее содержания и меняется по сравнению с прошлым планом

Сначала ГЛОБАЛЬНОЕ РЕВЬЮ (шаг 1), потом фиксы (шаги 2+). Основание — не осторожность, а арифметика: за 21.08 найдено ПЯТЬ дефектов класса «реализация не то, чем названа», и ни одного из них не поймал ни один гейт. Склейку поймал владелец вопросом; конфигурацию glm-5 — я случайно, глядя в счета; ошибку в собственном отчёте — только когда владелец потребовал расшифровать термины. Значит плотность необнаруженных дефектов этого класса ненулевая, и чинить до ревью — значит чинить не то и потом пере-ревьюить изменённое.


1. ШАГ 1 — ГЛОБАЛЬНОЕ АДВЕРСАРИАЛЬНОЕ РЕВЬЮ ВСЕГО ЭКСПЕРИМЕНТА ($0, воркфлоу)

Заказ владельца 21.08: «надо какое-то после плана запланировать воркфлоу ревью всего экспа, глобальное. На поиск подобных проблем».

Прецедент, показывающий, что это работает: адверсариальная приёмка другим модельным семейством за прошлую сессию нашла 8 дефектов замера и 4 неверных утверждения в моём же отчёте.

1.1 Что ревью обязано проверять — по классам найденных дефектов, а не «вообще»

класс образец, уже случившийся что искать
промт не то, чем назван склейка с мета-фразой «редактора после тебя не будет» подавалась как продуктовая однопроходка ПРОЧИТАТЬ полный текст системного промта КАЖДОГО арма; искать мета-фразы про наш конвейер, указания про несуществующие тексты, следы измерительного происхождения
конфигурация модели ≠ фон ростер гасил размышление glm-5; вывод «промт не переносим» был бы ложным наоборот для каждого арма распечатать call_kwargs и сверить с ролью: reasoning, температура, потолок вывода
число в отчёте ≠ число в данных опубликовано ×1.05/×1.08 объёма промта, намерено ×1.24/×1.28; вывод «конфаундер не воспроизводится» ложен пере-считать КАЖДОЕ число отчёта Д17Д29 из сырья; расхождение = находка
арм не отличается от другого арма Z7 побайтно равен ZP на 12 главах из 15 сверить тексты армов ПОПАРНО во всех панелях
клетка негодна, но гейта нет contour.base_a0 читает content без проверки finish; оборванная клетка попала в панель пройти ВСЕ источники текстов армов и проверить наличие гейта годности
гейт сертифицирует не то гейт покрытия засчитал правило словом из ПРОТИВОПОЛОЖНОГО правила для каждого гейта: что он ЗАЯВЛЯЕТ и что реально проверяет; уронить на заведомо больном входе
инструмент признан негодным, а ссылки на него живут promptdiff.py, canon.py, material_ja.py объявлены негодными внутри ревизии; на promptdiff ссылается шапка английского пар-пакета как на гейт найти все ссылки на негодные инструменты как на основание
обязательство закрыто артефактом, а не действием «выпущено/ждёт владельца» вместо исполнения сверить обязательства сессий против фактов на диске

1.2 Обязательные правила ревью

  • Author ≠ reviewer. Ревьюит НЕ та сессия, что писала. Модельное семейство — другое.
  • Грунтовать file:line или цитатой из сырья. «Выглядит подозрительно» — не находка.
  • Три исхода, а не два: подтверждено · опровергнуто · НЕ ПРОВЕРЕНО (упал по лимиту, не хватило доступа). Урок приёмки П7: 55 находок сочли опровергнутыми, а рефутеры просто упали, и оба блокера были среди них. Сверять agents_done против agent_count.
  • Ревью читает ТЕКСТЫ, а не хеши. Все пять дефектов 21.08 невидимы для проверки «файл на месте, длина сходится, побайтно совпало».
  • Результат — список находок с диспозицией, вливается в этот план как шаг 2а.

1.3 Чего ревью НЕ решает

Оно не судит переводы и не переоценивает вердикты. Его предмет — реализация и отчётность, а не качество перевода.


2. РЕЕСТР УЖЕ НАЙДЕННЫХ ДЕФЕКТОВ — чинить ПОСЛЕ ревью, порядком ниже

Статусы: ФИКС — правка кода/доков · ЗАМЕР — надо доснять · ВОПРОС — решает владелец.

2.1 Ошибки в собственных отчётах (ФИКС, $0)

что где почему это важно
Ф-1 Опубликовано «объём промта ×1.05 zh / ×1.08 en, конфаундер эксп-21 не воспроизводится». Намерено по 32 главам: ×1.28 и ×1.24. Вывод ЛОЖЕН Д23.1 это ровно тот конфаундер, ради снятия которого строилась склейка; смягчает лишь то, что лишний объём играл ЗА новый промт, и он всё равно не обошёл склейку
Ф-2 Английские армы названы «продакшеном». В backend/prompts/ есть только zh-ru; английский пар-пакет живёт ТОЛЬКО в eval/role_topology/prompts/en-ru/ и в бэкенд не лендился Д24, Д26, Д28, Д29 сравнение внутри панели не портится (пакет у всех один), но слово неверное: это кандидатский пакет, а не прод
Ф-3 «Z7ZP на 10 главах» — на самом деле на 12: ещё 2 главы фиксер ЗВАЛСЯ, был оплачен и вернул побайтно тот же текст исправлено 21.08 в Д23.6 ⚠ уже поправлено, оставлено в реестре как образец класса
Ф-4 «gemini заблокирован материалом, срабатывания массовые» — неверно. Как переводчик: 172 клетки, 0 отказов. Как СУДЬЯ: 318 клеток, 12 отказов (3.8%), все на одной главе, дата 08.08 сказано владельцу устно 21.08 поправка внесена в разговоре, в отчёт НЕ внесена — долг

2.2 Дефекты кода (ФИКС/ВОПРОС)

что статус
К-1 contour.base_a0 читает content БЕЗ проверки finish (в отличие от соседнего base_draft, где гейт есть на обеих ветках). Через щель в китайскую панель прошла клетка finish=length. Масштаб: 1 из 22 ВОПРОС ВЛАДЕЛЬЦУ. Функция питает ВСЕ прошлые замеры фазы; тихая правка рассогласует их с уже вынесенными вердиктами. Гейт сборки (--verify-read, ловит короткие тексты) уже заведён и закрывает класс на входе в панель
К-2 Ростер шлёт gpt-5.6-luna с reasoning_effort: "low". Замер Д28: ослабленное размышление роняет качество РАЗЛИЧИМО ФИКС ДО ПОКУПКИ. Правка того же вида, что сделана для glm-5 (арм RGT): гонять с вендор-дефолтным размышлением. Иначе получим ложное «luna не годится» — второй раз подряд той же ошибкой
К-3 Фильтр замечаний критика выбрасывает 20.7% строк на китайском (304 из 1469) против 0.6% на английском (1 из 178). Что выброшенное — действительно согласия, НЕ ПРОВЕРЕНО ЗАМЕР $0. Прочитать выброшенные строки. Асимметрия ×34 между парами подозрительна сама по себе; у фильтра уже была история — прошлая редакция ела отрицательные формы как согласия и выбросила 10 настоящих находок. И это ровно та пара, где «критик → перепис» берёт больше всех первых мест
К-4 promptdiff.py признан негодным внутри ревизии (расхождение матчится по префиксу строки; отсутствующий файл пар-пакета гейт не роняет). При этом шапка английского translator.md ссылается на него как на гейт, удостоверяющий «расхождение РОВНО одно» ФИКС. Утверждение 21.08 перепроверено НЕЗАВИСИМО и подтвердилось (переводчик: 1 расхождение; редактор: 7, все — парные замены того же правила, ничего не выброшено). Ссылку на негодный гейт заменить на ссылку на эту проверку
К-5 Три инструмента зоны негодны, гейты числят их зелёными: promptdiff.py · canon.py (снятая ревью классификация всё равно пишется в артефакт) · material_ja.py (фильтр AI-меток объявлен механическим, кода не существует) ФИКС/ВОПРОС — вскрывать перед любой опорой

2.3 Незакрытые клетки замера (ЗАМЕР, деньги названы)

что доснять почему цена
З-1 новый промт + канон-фиксер в панели фиксер стоял над СТАРОЙ склейкой; лучший промт с детерминированной страховкой не пробован ни разу ~$0.10
З-2 критик → ТОЧЕЧНАЯ правка над хорошим переводом это ядро V6 владельца. Мерился только фиксер над ДЕШЁВЫМ черновиком, и переносить тот отрицательный вывод сюда наш же план ЗАПРЕЩАЕТ: «там фиксер чинил дешёвый черновик, в V6 он чинит перевод хорошей модели — другая работа» ~$0.35
З-3 gpt-5.6-luna в роли однопроходки выход втрое дешевле dspro; в дорогой роли не мерен ни разу; в черновиках — ничья. Единственная оставшаяся крупная экономия ~$0.14
З-4 gemini-3.1-flash-lite в роли однопроходки то же; и как переводчик Gemini не отказывал ни разу (172 клетки) ~$0.18
З-5 две недостающие клетки RGT гард отказал на потолке ФД-N; панель собрана на 13 главах вместо 15 $0.11
З-6 вторая пятнадцатка читателей на те же пакеты разброс ПРИБОРА не мерен ни разу. Все выводы предполагают, что читатель устойчив; проверено только косвенно (близнецов не разводил, 12 тождественных пар связал знаком =) $0
З-7 gemini-3.6-flash — единственная непроверенная фронтир-модель опционально; старший pro-preview закрыт как «не лучше, ×30 по цене» ~$0.88

Потолок ФД-N: $2.40 → $3.30 покрывает З-1…З-5. С З-7 — до $4.20. Пакетный резерв $1.96. Поднимать потолок решением сессии ЗАПРЕЩЕНО: суммы названы, слово за владельцем.

2.4 Долги фазы, не двигающие знание, но без них фаза не сдаётся

Перенесены из PLAN-17-08.md §4, статус на 21.08 не изменился: адъюдикация английской оси (блокирует единственный несущий вывод фазы) · 65 находок ревизии · секция Д5 (ручная пере-классификация 24 мест) · синхронизация отчёта (сводка Д9 против Д15Д20, деньги в Д17 протухли, тела эрраты Э-17.1 нет) · реестр требований (строк на Д17Д20 нет, 16 самореферентных улик, R64 красный) · пинг в docs/PROGRESS.md, последняя запись 15.08 · селфтесты sud.py красные на трёх осях (⚠ MIN_FLOOR["d6"]=3 — константа под зелень, НЕ править, вопрос владельцу) · E1 побайтно равен черновику на 5 единицах из 16 · эррата zh-канона · chtenie.py --score-calib не пере-считывает число, ради которого объявлен.

Долг ЧУЖОЙ ЗОНЕ (пинг оркестратору обязателен): английский экстрактор pair_en.raw_text сносит из epub все теги, включая </p>: в книге 11 447 абзацев, а модели едет один блок. Чинить на месте НЕЛЬЗЯ — uid = sha1(source.strip()), правка пробелов переименует всё и повесит 289 оплаченных клеток на $2.64. Починка сделана НА ПОДАЧЕ (podacha.restore_paragraphs), настоящая — в бэкенде. Сюда же Ф-2: английского пар-пакета в бэкенде нет вовсе.

2.5 Открытые нормы и отступления

  • П-1 «два судейских семейства» не исполняется — решение владельца 20.08 (Sol запаркован). Объявленное отступление, писать рядом с каждым выводом.
  • P42 снят с повестки, но НЕ решён: два пре-рег-правила о маржевом гейте противоречат.
  • Пре-рег Д23 разошёлся с панелью (RN2/RG/RK обещаны, куплены RC/RB) — объявлено девиацией Д23.5; собственного пола замера (RN/RN2) не существует, полом служит чужая пара Z0/ZF.

3. ЧТО ЗАВЕСТИ, ЧТОБЫ КЛАСС БОЛЬШЕ НЕ ПРОХОДИЛ (ФИКС, $0)

Гейт «промт на провод». Перед КАЖДОЙ покупкой печатать ПОЛНЫЙ ТЕКСТ системного промта каждого арма и требовать, чтобы его ПРОЧЛИ: сессия вслух в отчёте плюс приёмка другим семейством. Не хеш, не длину, не «расхождение одно» — сам текст.

Обязательные пункты той же сверки, обе — из ошибок 21.08:

  • что реально уходит по проводуcall_kwargs каждого арма (reasoning, температура, потолок);
  • сколько знаков инструкции у каждого арма, отношение к базе контраста.

Почему это, а не ещё один структурный гейт: склейка несла прямым текстом «отдельного редактора после тебя НЕ БУДЕТ». Никакой механический гейт этого не увидит, а человек видит с первой строки. Все пять дефектов 21.08 — этого класса.


4. ПОРЯДОК ИСПОЛНЕНИЯ

  1. Шаг 1 — глобальное ревью (§1). $0. Находки вливаются сюда как §2.6.
  2. Шаг 2 — фиксы отчётов Ф-1, Ф-2, Ф-4 (§2.1). $0. Делать ПОСЛЕ ревью: оно может добавить.
  3. Шаг 3 — фиксы кода К-2 (обязателен ДО покупок), К-3 (замер $0), К-4. К-1 — ВОПРОС.
  4. Шаг 4 — гейт «промт на провод» (§3). $0. Ставится ДО покупок шага 5.
  5. Шаг 5 — покупки З-1…З-5 по санкции владельца и поднятому потолку.
  6. Шаг 6 — второе чтение З-6. $0. Даёт разброс прибора, которого нет ни у одного вывода фазы.
  7. Шаг 7 — долги фазы (§2.4), начиная с адъюдикации английской оси и пинга в PROGRESS.md.

5. ЧЕГО НЕ ДЕЛАТЬ

  • Не покупать до шага 4. Гейт «промт на провод» стоит $0 и ловит класс, стоивший фазе двух ложных выводов за один день.
  • Не чинить base_a0 тихо. Он питает все прошлые замеры; правка без слова владельца рассогласует их с вынесенными вердиктами.
  • Не поднимать потолки решением сессии. Суммы названы, слово за владельцем.
  • Не переносить отрицательный вывод по точечным контурам на З-2. Там фиксер чинил дешёвый черновик; здесь — перевод хорошей модели. Другая работа, и это записано ещё в прошлом плане.
  • Не называть английские армы продакшеном до тех пор, пока пар-пакет не залендён в бэкенд.

6. ИТОГ ШАГА 1 — РЕВЬЮ ИСПОЛНЕНО, И ЧТО УЖЕ ПОЧИНЕНО

Ревью отработало целиком: 231 агент, 0 отказов, каждая находка через трёх адверсариальных скептиков. 51 дефект: 11 блокеров, 22 важных, 18 мелочей. Находок «не проверено» — НОЛЬ. Полный свод — REVIEW-21-08.md. Эррата в отчёте — секция Д30, баннеры на девяти ложных утверждениях в их родных местах.

6.1 Починено в коде (сделано 22.08)

блокер что было что стало
Б1 contour.a2_mandate грузила editor.md по захардкоженному zh-пути → на en/ja в промт уезжали 时辰, чэнъюй, «китайский паратаксис» грузит по PAIR_DIR своей пары. Проверено: английский промт чист, китайский свои правила сохранил, селфтест контура печатает zh-проводку как no-op (39/66 → 39/66)
Б6/Б7/В22 ростер кодирует одним режимом none вендор-дефолт HIGH у dspro и LOW у grok; glm-5 гасился нашим кодом молча; luna пинилась на low уровень размышления объявляется ПОАРМНО и ЗНАЧЕНИЕМ (rol.THINK_LEVEL), печатается гейтом провода. Заведены армы RKT (grok на high), RL (luna), RE (gemini-flash-lite) — все с явным уровнем
Б8 base_a0 читал content без проверки finish; селфтест был слеп по построению гейт на СБОРКЕ панели (emit_read спрашивает contour.a0_ok), плюс громкое имя дефекта в base_a0
§3 плана гейта «промт на провод» не существовало rol.py --wire <пара> [--arm=X] печатает ПОЛНЫЙ текст инструкций, тело вызова и отношение объёмов по каждому арму

Урок, купленный внутри самой починки Б8 и записанный в код: первая редакция гасила текст в base_a0, как это делает base_draft. Проверка исполнением показала, что это ХУЖЕ болезни: негодная единица выпала из pool(), а chosen() берёт N_UNITS от хеша — на её место молча встала другая, и «те же 16 глав» перестали быть теми же. Гейт годности обязан стоять на сборке панели, а не на источнике текста.

6.2 Починено в отчёте

Секция Д30 (одиннадцать подпунктов) плюс баннеры ⛔ ЛОЖНО, СМ. ЭРРАТУ Д30 на девяти местах: объём промта ×1.05/×1.08 · числа банка в Д23.0 · «обогащение вредит» в Д24.3 и Д26.2 · «совпадающих армов нет» в Д26 · вердикт по grok в Д28.2 · подпись «один прайс» в Д29.1 · главное число фазы · живой ложный вывод про парафраз в Д14.6. Та же ложная строка про банк вычищена из шапки rol.py.

6.3 ЧТО ОСТАЛОСЬ ПОСЛЕ ПОЧИНОК — по убыванию тяжести

  1. Клетки dv-b-e2-* (en) и dv-c-j2-* (ja) сделаны заражённым промтом. Код починен, данные нет. Несущий контраст Д23 RN/ZP сравнивал новый промт со СЛОМАННОЙ базой — базу надо пере-купить, иначе вывод о промте-роли остаётся условным.
  2. RKT не куплен — пока его нет, вердикт «промт не переносим на grok» читается как свойство связки «grok + low», и вывод Д28.5 «дешёвого вендора не нашлось» под риском (~$0.250.30).
  3. Вердикт H-4 на английской и японской ногах НЕ УСТАНОВЛЕН (армы E6/J6 шли с нулём размышления). На японской конфаундер направлен против напечатанного порядка.
  4. Чувствительность вердиктов Д4/Д1 к выбросу единицы 41599f30df не замерена никем.
  5. promptdiff.py и canon.py негодны, а на них висят живые строки реестра. Гейты якорить на полную пару строк; canon.py либо не писать классы, либо метить артефакт.
  6. Ценовая таблица Д29.1 не пере-считана к одной шкале; переворот «критик→перепис против glm-5» надо печатать полосой, а не числом.
  7. Незакрытые клетки замера З-1…З-7 из §2.3 — по ним ничего не менялось.

6.4 Порядок дальше

Шаг 2 (фиксы отчётов) и шаг 3 (фиксы кода) ИСПОЛНЕНЫ в объёме блокеров. Следующее по плану — шаг 4 (гейт провода) ИСПОЛНЕН, значит открыт шаг 5: покупки. Перед первой покупкой прогнать --wire и прочесть вслух; санкции владельца и поднятого потолка ФД-N по-прежнему нет.