# Промт: бэкенд-сессия «ЗАКОН БАНКА — ЧЕСТНО» (пак одного предмета) ## 1. Какая проблема и что решит твой результат Приоритет владельца №1 — **консистентность терминов и голосов на всю книгу**. Она держится на банке памяти: строка «термин → перевод» едет в промпт как ЗАКОН для каждой роли. Сегодня закон исполняется, но **три места описывают его неверно, а одно не исполняет собственный совет**. Цена — не поломка, а хуже: мы не можем узнать правду о собственной работе. Метрика «промахов нет» означает «банк исполнен», а читается как «исполнен ВЕРНО» — и ровно в случае, которого владелец боится (вложили неверный перевод, модель послушалась), прибор молчит надёжнее всего. Твой результат: закон банка описан тем, что код делает, и один настоящий пробел в нём закрыт. ## 2. Зона и git **Зона записи: `backend/`.** Чужие зоны (`platform/`, `frontend/`, `eval/`, `docs/`) — только чтение; расхождения — пингом в секцию «Бэкенд» файла `docs/PROGRESS.md`. **Сессия НЕ коммитит** — готовое дерево передаёшь оркестратору. Канон git-дисциплины — `CLAUDE.md`. `.env` не читать. Не работать под `/tmp`. ## 3. Карта чтения — ЗАКОН, дальше только по её ссылкам 1. `CLAUDE.md` — цели владельца и гардрейлы. 2. Строки бэклога **267**, **318**, **320** (`docs/PROGRESS.md`, греп `^| N |`). 3. `backend/README.md` — механика движка. 4. `docs/architecture/03-implementation-notes.md` — через баннер. 5. `docs/architecture/12-go-style-notes.md` — только больные места. **Ратифицированное, что нужно для работы, — в теле промта, чтобы не искать (`D39.216` требует так):** - **Закон банка (`D39.104`)**: строка на проводе — закон для КАЖДОЙ роли и КАЖДОЙ строки, независимо от статуса. ⛔ Ослаблять его этот пак НЕ предлагает: он ратифицирован, доказательств против нет ни у одного голоса. Предмет — исполнение и честность описания. - **`D39.216` (мандат владельца, 06.09), делай РОВНО так**: проектировать и чинить **без хаков и воркэраундов**; где нынешняя форма не тянет — **развязать или переписать**, а не обложить заплатой. «Дешевле подпереть» доводом НЕ является. Отступление законно, но **объявляется с ценой**. - **Комментарий не доказывает поведение** (`D39.214` п.3): источник утверждения о СМЫСЛЕ — тест или прогон. ⚠ Эту норму НЕ ищи грепом в `CLAUDE.md` — её там нет, она живёт нотой. - **Число называет ДЕРЕВО и ПОПУЛЯЦИЮ**: приводишь счёт — назови коммит и что именно посчитано. - **Рядом с нулём — контрольная величина**: «0 совпадений» неотличимо от «искал не там» (`CLAUDE.md`). - **Мутация засчитывается по ТЕКСТУ сообщения, а не по факту красноты** (`CLAUDE.md`): правый вердикт по неправой причине — дыра, а не поимка. - **Тесты и гейты не подгонять под зелень** (`D39.121`, мотив решает). ## 4. Состав и разметка свободы ### 4.1 Гард перекрытия окон при слиянии (строка 267) — **делай РОВНО так** Один термин в одном смысле может нести две конкурирующие формы, и обе доезжают на оба провода — дыра в проверке схлопывания. Решение владельца 05.09 состоялось, строка несёт разбор. Закрыть. ### 4.2 Совет, который движок не исполняет (строка 320а) — **реши сам, аргументируй** Диагностика советует оператору пометить одну строку статусом, а гвард полисемии **статус не смотрит вовсе**. Два честных выхода: привести совет к тому, что код делает, **или** научить гвард смотреть статус. **Выбор объяви и обоснуй; молча не решай.** ⚠ Второй вариант меняет поведение — тогда это смена заказа, и нужен пинг, а не правка. ### 4.3 Комментарий постчека — привести к поведению (строка 318) — **делай РОВНО так** Комментарий обещает ловить и случай «вложили неверный перевод, модель исполнила»; код при найденной форме делает `continue` ⇒ промаха нет. Приведи текст к поведению **и поставь пин**, чтобы описание больше не могло разойтись молча. ⛔ **Детектор правильности ЗНАЧЕНИЯ здесь НЕ строить.** Он живёт строкой **286**, упирается в замер точности, а не в код, и его постройка тут будет расширением заказа. ### 4.4 Два ложных комментария — снять (строки 321 и 322) — **делай РОВНО так** - Оправдание `nil`-переноса в редакторской волне («единица есть глава или её часть») — **ложно**: глава регулярно делится на несколько правочных единиц. ⛔ **Сам перенос НЕ строить** — по строке 321 сначала замер дрейфа, инцидентов пока ноль. Здесь только честный комментарий. - Утверждение, что обычный резюм перезаписывает строку статуса, — **ложно**: он выходит раньше, пишет только ре-пин. ### 4.5 Чего в паке НЕТ и почему — **не делай** - **Строка 322 (история принятой редактуры)** — другой предмет: жизненный цикл чекпойнтов и схема, а не закон банка. Отдельным паком. - **Строка 295 (подать подписанный канон в прогон)** — снята из этого пака: у бэкенд-сессии нет ни книги, ни стенда, ни санкции на деньги. Если найдёшь чисто бэкендовую половину — **назови её пингом**, но не бери. - **Перекрой структуры глав (161/283)** — отдельный дизайн-пак. ## 5. Мандат самопроверки ИСПОЛНЕНИЕМ — механизм назван, и пустое исполнение его не удовлетворяет ⛔ «Перечитал сам» **не считается**. Обязательны все три: 1. **Мутационная проверка каждого пина, который ты заводишь или трогаешь.** Механизм: сломай проверяемое свойство, прогони пин, **прочитай ТЕКСТ падения** и убедись, что он говорит про сломанное тобой, а не про что-то соседнее; восстанови файл и **сверь sha256** с исходным. Артефакт: таблица «мутация → текст падения → хеш восстановлен». 2. **Опровергатель твоей готовой работы отдельным субагентом.** ⚠ Харнесс по умолчанию субагентов не спавнит — **тебе это РАЗРЕШЕНО и требуется**. Модель задай ЯВНО (`fable` — контролёр проекта), знай, сколько их у тебя работает; одного-двух достаточно. Мандат ему: «найди в этой работе отсутствующее и противоречащее», а не «проверь, всё ли хорошо». 3. **Греп по отозванной формулировке перед словом «исправлено»**: `grep -c "<снятая фраза>" <файл>` — ноль либо только внутри пометки. Смена 06.09 попалась на этом трижды. ## 6. Оси ревью — характер работы «Код» и «Доки» Из таблицы приёмки, две оси, обе твои: - **Код:** ⚠ «тест утверждает не то, что думает» — проверь, что каждый твой пин падает ИМЕННО от того, что он охраняет (см. §5.1). - **Доки:** сверка утверждений против кода и живых носителей — весь этот пак ровно об этом. ## 7. Записка-план ДО работы До первой правки пришли оркестратору ≤15 строк: что берёшь по каждому из четырёх пунктов · где ждёшь сопротивления · что считаешь спорным в самом заказе. Это дешевле, чем разойтись на готовом. ## 8. Заявление = команда Любое число и любая категорика в отчёте — **с командой, которой получены**, и её выводом, а не пересказом. «Батарея зелёная» без команды и её кода возврата — не факт. ## 9. Эхо-протокол старта ДО работы пришли ≤10 строк: **скоуп** (что берёшь) · **инварианты** (что обязано уцелеть) · **не-делать** (что в паке запрещено). Если эхо разойдётся с моим заказом — лучше здесь, чем в приёмке. ## 10. Что НЕ удалось — обязательная секция отчёта Что не проверено · что не воспроизвелось · где данных не хватило. **«Не измерено» вместо догадки.** ## 11. Канал вопросов и право отказаться Конфликт промта с кодом или доками — **пинг, не правка**. И у тебя есть **право сказать «этого делать не надо»** с аргументом: если по коду окажется, что предмет описан мимо, это самый ценный ответ. ## 12. Прямой канал Механизм — `CLAUDE.md` §«Связь между сессиями»: файл `/tmp/textmachine-channel`, свой блок впиши первым делом, адреса других ролей — оттуда, живость сверяй `ListAgents`. ⚠ **Нужной роли нет или файла нет — это НОРМАЛЬНЫЙ случай**: вопрос секцией в отчёт, сессии подряд не опрашивать. ## Деньги **Этот пак — $0.** Платных вызовов к моделям в нём нет ни одного: все четыре предмета — код, комментарии и пины на фикстурах. ⛔ Если по ходу окажется, что предъявить что-то можно только платным прогоном — **это пинг оркестратору за санкцией, а не твоё решение**. Санкции на деньги промт не несёт. ## Отчёт Секция «Бэкенд» в `docs/PROGRESS.md` + сообщение оркестратору: что построено · чем предъявлено (команда и вывод) · таблица мутаций из §5.1 · что сказал опровергатель и что ты с этим сделал · двигает ли что-нибудь из сделанного снапшот, хеш запроса, ключ манифеста или версию встроенных данных · секция §10 · **что ты сам считаешь слабым местом своей работы**. ⚠ Числа батареи снимай **после последней правки**, не до.