26 KiB
Бэкенд-пак: ДВИЖОК УЖЕ ЗНАЕТ, ЧТО ОТВЕТ БАНК-РОЛИ НЕГОДЕН — И ВЫБРАСЫВАЕТ ЭТОТ ВЕРДИКТ
✅ АРХИВ — ПАК ОТРАБОТАН И ПРИНЯТ 17.09: акт
D39.264(лендинг10d245a, 18 путей, $0 — платных вызовов моделей пак не делал). Петля повторной попытки вынесена в общий контур (internal/pipeline/attemptladder.go), банк-роли подключены к вердикту, который движок вычислял и ВЫБРАСЫВАЛ, у роли появилась своя политика допуска. Инструкции отсюда НЕ ИСПОЛНЯТЬ (правило архива): живое — в акте и в рядах 481 · 484 · 487 · 488.⛔ ДВА ПУНКТА ЗАКАЗА ЗАКРЫТЫ ОТКАЗОМ С ЗАМЕРОМ, и оба отказа приняты. §4.3 эскалация банк-ролей не строится: измеренная болезнь — размышление, съевшее полный потолок, а другая модель потолка не лечит; класс, для которого хоп осмыслен, имеет на банк-ролях популяцию ноль. Пять причин нулевого хопа записаны СПЕЦИФИКАЦИЕЙ на случай, если владелец хоп закажет. §4.4 ключ батча не трогается: посылка ряда 478 опровергнута прибором в дереве.
⚠ Числа этого промта устарели ещё при исполнении: он называл каталог в 478 записей и 267 в гейте — на сдаче 492 и 281. Состав полей тоже правился зоной по замеру. Числа промта считать историей, брать из акта.
⭐ Что пак купил сверх кода: полный прогон каталога нашёл то, чего не увидел ни один более дешёвый прибор — рефактор МОЛЧА обездвижил чужой пин при СОВПАДАЮЩЕМ якоре и зелёном контроле целостности. Срежь зона прогон по времени или по памяти — находки в дереве бы не было, а отчёт бы молчал.
1. Какая проблема и что решит твой результат
Книга переводится дёшево, но термины — имена героев, гор, сект, техник — решает отдельная дорогая роль: терминолог предлагает передачу, классификатор ставит тип. Тип не косметика: он форсирует способ передачи, и ошибка в нём означает, что название места транслитерировано вместо перевода — и так в каждом вхождении по всей книге. Это прямой удар по цели №1: издательское художественное качество и связные термины на всю книгу.
Замер прогона B: на попытке 1 классификатор ответил по 4 строкам из 22 и по 0 из 24 — 42 терма из 66 остались без машинного типа, оба батча оплачены (≈$0.0126 и ≈$0.0121), регенерации не было. У черновой стадии та же беда лечится и вылечена.
⛔⛔ И вот предупреждение, без которого ты объявишь «дефекта нет». Число 42 из 66 снято на ПОПЫТКЕ 1 и в артефактах невидимо: у неотвеченного кандидата остаётся ЭВРИСТИЧЕСКИЙ тип, поэтому в проекции банка все 66 строк выглядят типизированными, а сводка консолидации показывает «полно, выброшено 0, без ответа 0». Носитель числа — docs/experiments/25-door-to-file-b.md (попытка 1), а не проекция. ⇒ мерить эффект пака по проекции нельзя; мерило — журнал запросов прогона (asked/answered по батчам). Побочно это вскрывает дефект наблюдаемости, которого пак НЕ заказывает: человек на подписи не отличает машинный тип от эвристического.
⛔ Главное, ради чего пак заказан. Движок уже вычисляет вердикт о негодности такого ответа: попытка классифицирует выход банк-роли — именно так в журнале запросов появились пометки «упёрся в потолок» и «пустой». Но код, зовущий банк-роль, читает из попытки только текст и вердикт роняет на пол. ⇒ это не новый механизм, а подключение существующего вердикта к существующей лестнице.
Ряды трекера, которые пак закрывает: 451 (умный участок в точке банка — слово владельца, D39.254 п.2), 438 (банк-роли мимо обеих ветвей лечения; там же готовая формулировка денежной мины с адресами), 435 (эскалация выключена данными), 478 (ординал батча в ключе покупки). ⚠ Ряд 451 записан как «дизайн-пак, затем стройка» — оркестратор сознательно берёт строительную часть сразу, потому что разбор уже сделан консилиумом и этим промтом; если по ходу увидишь, что без отдельного дизайна не выходит, это законный пинг.
2. Зона записи и git
Твоя зона — backend/ плюс секция «Бэкенд» в docs/PROGRESS.md. Больше в docs/ ничего не трогай. Ты не коммитишь — готовишь дерево и передаёшь оркестратору. Git-дисциплина целиком — CLAUDE.md §«Git-координация мультисессий», он в карте чтения ниже.
3. Карта чтения — ЗАКОН, пять позиций
CLAUDE.mdв корне — канон проекта целиком.backend/internal/pipeline/stagerun.go— цикл попытки: счётчики, ветви «меньше думать» и «больше потолок», эхо-регенерация. Читать целиком, включая комментарии: там объявлено различение, на котором стоит §4.1.backend/internal/pipeline/terminologist.go— банк-роли: сборка батча, вызов попытки, что делается с ответом.backend/internal/config/internal_call.go— почему у внутренних вызовов хоп эскалации нулевой. Комментарий несущий.docs/architecture/18-bank-ontology.md— что такое банк и чьё слово в нём живёт.
⚠ Числа и адреса этого промта сняты оркестратором и советчиками; те, на которых ты строишь решение, пере-снимай сама — заимствованное число улики не заменяет.
4. Что построить
4.1. Вынести лестницу попытки в общий контур — НАПРАВЛЕНИЕ задано, форма твоя
⛔ Чего делать НЕЛЬЗЯ: звать runStage из терминолога. Это единица «одна стадия одного ЧАНКА до терминальной диспозиции»: работа по главе, пин снапшота, рендер из шаблона, резюм через статус чанка, запись статуса в конце. У банк-батча нет ни чанка, ни статуса чанка, ни шаблона. Проложить это флагами — заплатка, запрещённая словом владельца.
Чистый разрез: цикл попытки — отдельная функция с двумя вызывающими. runStage = резюм + лестница + эскалация + диспозиция; банк-роль = лестница + разбор ответа. Второй копии цикла не появляется.
⛔⛔ ЕДИНСТВЕННОЕ, ЧТО ЗДЕСЬ ЗАДАНО ЖЁСТКО, И ЭТО ДЕНЬГИ: ступень ключуется ЧИСЛОМ УДВОЕНИЙ, а НЕ номером попытки. В дереве потолок — функция числа удвоений бюджета, а номер попытки считает КЛЮЧИ, и файл из позиции 2 карты чтения объявляет это различение несущим: «escalations counts BUDGET DOUBLINGS; attempt counts KEYS. They come apart on TWO paths». Номер попытки вдобавок не растёт линейно — попытка перешагивает сожжённые ключи. ⇒ отображение «номер попытки → потолок» есть смена ключа покупки и пере-оплата уже купленных чекпойнтов. Перечислитель ступеней делай один на всех, но параметром берёт число удвоений.
Что ещё обязано стать параметром:
- допуск ступени — «можно ли купить следующую»: у стадии книжный потолок, у банк-роли её собственный ролевой суб-бюджет;
- судья ступени — у стадии вердикт даёт классификатор выхода, у банк-роли он приходит после разбора таблицы (ответ на чужом языке, доля отвеченных ниже порога). Без этого хоп на другую модель по «упёрся в потолок» бессмыслен: другая модель потолка не лечит.
⛔ И честно про регресс-сеть, потому что первая редакция этого промта врала. Пинов, фиксирующих ЗНАЧЕНИЕ хеша запроса, у нас нет: существующие проверяют только, что хеш МЕНЯЕТСЯ при смене поля, а сквозной пин детерминизма банк-проход не гоняет вовсе. ⇒ зелёный гейт НЕ докажет, что ты не сдвинула ключ покупки. Первым делом построй то, что покраснеет от сдвига: голден значения хеша банк-батча. Полезный существующий якорь — тест шва, который пишет чекпойнт под хешем, выведенным продакшн-путём: он ловит расхождение пробы с попыткой, но не сдвиг обеих разом.
4.2. Ступень мимо бюджета — ДЕЛАЙ РОВНО ТАК
Проба «этот вызов уже оплачен» спрашивает только про нулевую попытку. Как только лестница начнёт покупать ступень номер один, эта ступень уйдёт мимо пробы и мимо ролевого суб-бюджета. Допуск и проба обязаны говорить об одних и тех же ступенях — это условие, а не совет.
4.3. Эскалация банк-ролей — РЕШИ САМА, прочитав, что защищает нулевой хоп
Банк-роли не доходят до эскалации намеренно. Прежде чем менять, прочти комментарий в internal_call.go и назови в отчёте, что именно он защищает: причин там несколько, и как минимум одна про чужие деньги — общий пул эскалации принадлежит черновой стадии.
⇒ Фоллбек банк-роли на другую модель обязан: не тратить чужой пул, считаться против ролевого суб-бюджета, оцениваться по цене той модели, на которую идёт. Ключ конфигурации — аддитивный, по образцу стадий. ⚠ Возьми у образца не форму, а гарантию: посмотри, чем соседний механизм себя стережёт, и перенеси это тоже.
4.4. Тождество банк-батча — ⛔ ПУНКТ СНЯТ 17.09 ОТКАЗОМ СЕССИИ, и отказ принят.
Посылка ряда 478 пере-мерена на настоящем батчере и НЕ подтвердилась: снятие одного решённого кандидата даёт ноль сдвигов из 246, при боевом размере батча — ноль и на 66, и на 300 кандидатах, при положительном контроле 18 из 19. ⇒ ключ покупки не трогать. Класс остаётся латентным и оживает лишь при мелком размере батча. Ниже — исходная формулировка заказа, оставлена как история:
Ключ покупки включает порядковый номер куска, а банк-батчи нумеруются по порядку ⇒ стоит фильтру снять одну решённую строку, номера всех последующих сдвигаются, и они покупаются заново при неизменном тексте (ряд 478).
Почему в одном паке с лестницей: любая правка ключа один раз пере-покупает уже оплаченные банк-чекпойнты; два пака — две пере-чеканки и дважды переписанные пины.
⚠ Развилка, и цена у неё разная. Номер куска сегодня — целое число, оно же колонка в хранилище, ось лога и носитель инварианта «два батча не столкнутся на одном чекпойнте». Свернуть отпечаток состава в это целое — коллизии и потеря смысла колонки; завести отдельную ось в запросе — смена ФОРМАТА ключа, а она пере-чеканит не только банк, но все стадии. Обещание «пере-покупает один раз» верно только для первой ветви. Выбери ветвь, назови цену обеих числом и предъяви, что пере-чеканка произойдёт однажды, а не на каждом прогоне.
4.5. Счёт ответов — вторая половина той же дыры
Доля ответов считается и пишется построчным предупреждением по каждому батчу; чего нет — так это её в итоговой строке и в проекции, а итоговая строка печатает число батчей, выброшенных бюджетом, что читается как «сколько термов без ответа». ⚠ Не заводи третий счётчик рядом: подними существующий до итога и разведи два смысла честно.
4.6. Стандарт работы — слово владельца 17.09, ратифицировано D39.258 п.3
Писать «согласно нашим проектным высоким стандартам по решению проблемы художественного перевода»: чистый код, рефакторинг там, где он нужен, никаких заплаток поверх неработающих решений, техдолг не копить. ⚠ Это проверяемый пункт, а не лозунг: отчёт называет, что было отрефакторено и почему (см. §13).
Чего НЕ делать: ансамбль моделей, кросс-модельные веса и селекцию из вариантов — закрыто ратификацией и замером, в этом паке не пере-открывается · платформу и контракт не трогать · эхо-эскалацию черновика не чинить (она выключена данными по причине ряда 435, и это отдельный предмет).
5. Самопроверка ИСПОЛНЕНИЕМ
Гейт зоны (make battery) обязателен и самопроверкой не является. Сверх него — адверсариальный проход по своей готовой работе; субагентов поднимать разрешаю явно. Глубину выбираешь сама, направление даю я — четыре места, где этот пак мягок:
- Сдвиг ключа покупки (§4.1) — у тебя нет пина, который это ловит, пока ты его не построишь. Проверь посадкой, а не цветом гейта.
- Ложная регенерация на банке. Прозовые правила вердикта гасит предикат роли (не флаг конфигурации), и он гасит именно эхо-проверку и экран целевого языка, а классификатор потолка и пустоты работает всегда. ⚠ Не снимай предикат мутацией — это правка ПРАВИЛА, и она пометит здоровые таблицы дефектными, то есть покраснеет про другой предмет. Утверди ПОСЫЛКУ: здоровая таблица терминов не должна вызывать регенерацию, иначе это ложная регенерация за деньги.
- Ступень мимо суб-бюджета (§4.2) — фикстура, где ступень номер один обязана быть отвергнута бюджетом роли.
- Пере-чеканка ключа (§4.4) — доказать исполнением, что она происходит один раз.
⚠ Мутации: записей каталога, трогающих два твоих главных файла, — 39 из 478, и 35 из них уже в гейте (в гейте всего 267 из 478). ⇒ полный прогон каталога после рефактора обязателен и по времени оценим. Новые посадки вводи в гейт, иначе «поймана» — разовый прогон смены, а не рубеж проекта.
6. Оси ревью
Две-три, можешь заменить с аргументом: денежная (ни один путь не покупает дважды и мимо бюджета) · качество перевода (стало ли термов с машинным типом больше — мерило журнал запросов, не проекция) · рефакторинг без регресса (что переехало и чем доказано, что поведение прежнего вызывающего не изменилось).
7. Записка-план
До первой правки кода — короткая записка в свою секцию журнала: какой разрез выбрала, какие параметры вынесла, что решила по эскалации и по развилке §4.4.
8. Эхо-протокол старта
Первым действием — десять строк своими словами: скоуп, инварианты, чего не делаешь. Дословный пересказ промта подтверждает канал, но не понимание.
9. Что не удалось — и где прибор слеп
Секция «не удалось / не проверено» обязательна. ⚠ И вторая половина: «где мой прибор слеп и я это знаю» — что невидимо, почему не чинила, чем закрывается. Норма зоны: в коде названо, в отчёте нет — значит для следующей смены не названо.
10. Канал вопросов, право отказа, советчик
Конфликт промта с кодом — пинг, не интерпретация; право сказать «этого делать не надо» с аргументом у тебя есть. Прямой канал — механизм в CLAUDE.md §«Связь между сессиями»: впиши свой блок первым делом, эхо отправь по адресу оркестратора оттуда же. Тебе разрешён один старший советчик (model: "fable" явно) для развилки, которую не закрывает своё суждение; досылай вопросы ему, а не поднимай новых — его контекст и есть ценность. Он советчик, не источник истины.
11. Критерий завершённости — проверяемый
- у каждого пункта заказа исход: сделано · не делаю с доводом · пинг;
- круги сошлись: последний не дал новых находок, прежние закрыты таблицей «находка → что сделано → чем предъявлено»;
- таблица мутаций полная, выжившие названы поимённо, полный прогон каталога пройден;
- список «что отрефакторено и почему» — либо явное «рефакторинга не потребовалось» с доводом (§4.6);
- числа сняты после последней правки, у каждого команда повторения; всё живое — в дереве;
- гейт зоны зелёный целиком (сверка списком целей, а не отсутствием слова FAIL);
- сказано явно: «работа завершена, править не планирую».
АДДЕНДУМ ВЛАДЕЛЬЦА 17.09 (передан сессии релеем; ратифицирован D39.258 п.9)
- Тщательно проектируй решение — замысел раньше кода, и он предъявляется запиской-планом.
- Комментарии только нужные, без странных гарантий. Не пиши гарантию, которой не стережёт ни один пин; комментарий, несущий ВЫВОД, обязан назвать условие, при котором вывод перестаёт держаться.
- Прозы в коде нет. Комментарий объясняет ПОЧЕМУ, а не пересказывает, что делает строка.
- Решение общее для книг и языков. Go-логика не ветвится по паре или книге: пара-специфика — в данных и языковых пакетах, книжные каноны — в сиде и брифе. Ревью-вопрос по умолчанию: «заработает ли пара, которой в репозитории ещё НЕТ, без правки Go?»
- Советчиков разрешено ДО ДВУХ (прежняя норма — один), с ПОСТОЯННЫМ контекстом; вопросы досылаются тем же агентам. Советоваться предписано на ПРОЕКТИРОВАНИИ и на ПРИЁМКЕ, а не только при затруднении.
- Грепать
docs/,research/,experiments/можно в любое время — карта чтения промта это МИНИМУМ, а не потолок.
⇒ приём аддендума эхо-подтверждается, и в отчёте он идёт ОТДЕЛЬНЫМ пунктом.
⭐ Мы не «чиним ретраи». Мы делаем так, чтобы книга не получила героев с неверно переданными именами из-за того, что движок знал о негодном ответе и промолчал.