27 KiB
ПЛАН 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 | «Z7 ≡ ZP на 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). $0. Находки вливаются сюда как §2.6.
- Шаг 2 — фиксы отчётов Ф-1, Ф-2, Ф-4 (§2.1). $0. Делать ПОСЛЕ ревью: оно может добавить.
- Шаг 3 — фиксы кода К-2 (обязателен ДО покупок), К-3 (замер $0), К-4. К-1 — ВОПРОС.
- Шаг 4 — гейт «промт на провод» (§3). $0. Ставится ДО покупок шага 5.
- Шаг 5 — покупки З-1…З-5 по санкции владельца и поднятому потолку.
- Шаг 6 — второе чтение З-6. $0. Даёт разброс прибора, которого нет ни у одного вывода фазы.
- Шаг 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 ⛔ ЧТО ОСТАЛОСЬ ПОСЛЕ ПОЧИНОК — по убыванию тяжести
- Клетки
dv-b-e2-*(en) иdv-c-j2-*(ja) сделаны заражённым промтом. Код починен, данные нет. Несущий контраст Д23RN/ZPсравнивал новый промт со СЛОМАННОЙ базой — базу надо пере-купить, иначе вывод о промте-роли остаётся условным. RKTне куплен — пока его нет, вердикт «промт не переносим на grok» читается как свойство связки «grok + low», и вывод Д28.5 «дешёвого вендора не нашлось» под риском (~$0.25–0.30).- Вердикт H-4 на английской и японской ногах НЕ УСТАНОВЛЕН (армы
E6/J6шли с нулём размышления). На японской конфаундер направлен против напечатанного порядка. - Чувствительность вердиктов Д4/Д1 к выбросу единицы
41599f30dfне замерена никем. promptdiff.pyиcanon.pyнегодны, а на них висят живые строки реестра. Гейты якорить на полную пару строк;canon.pyлибо не писать классы, либо метить артефакт.- Ценовая таблица Д29.1 не пере-считана к одной шкале; переворот «критик→перепис против glm-5» надо печатать полосой, а не числом.
- Незакрытые клетки замера З-1…З-7 из §2.3 — по ним ничего не менялось.
6.4 Порядок дальше
Шаг 2 (фиксы отчётов) и шаг 3 (фиксы кода) ИСПОЛНЕНЫ в объёме блокеров. Следующее по плану —
шаг 4 (гейт провода) ИСПОЛНЕН, значит открыт шаг 5: покупки. Перед первой покупкой прогнать
--wire и прочесть вслух; санкции владельца и поднятого потолка ФД-N по-прежнему нет.