textmachine/docs/BACKEND_CONSISTENCY_SESSION_PROMPT.md

14 KiB
Raw Blame History

Промт: бэкенд-сессия «ЗАКОН БАНКА — ЧЕСТНО» (пак одного предмета)

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 · что ты сам считаешь слабым местом своей работы.

⚠ Числа батареи снимай после последней правки, не до.