# Промт: платформенная сессия «ДЕНЬГИ И ПРАВДА НА ЭКРАНЕ» — первая половина критерия впуска ## 1. Какая проблема и что решит твой результат Проект готовится впустить **первого платящего чужого человека**. Критерия впуска в репозитории нет вовсе (строка бэклога **326**) — и этот пак пишет его первую половину **делом**, а не формулировкой. Сегодня платформа врёт человеку тремя способами и один раз молчит: - **деньги считаются по нижней границе**: отменённые вызовы, УЖЕ ушедшие к провайдеру, не записываются никуда (`PD-441`, замер: три отменённых вызова прожили по две минуты с ценой `0`, соседние завершённые стоили $0.017 и $0.063); - **заклинивший прогон невидим**: живой прогон с намертво заблокированной расплатой не показывается ни на одной поверхности и не лечится штатной ручкой; вывести его может только пользователь, нажав Stop, и **никто ему об этом не говорит** (`PD-424`); - **чужие события ложились на оплаченную попытку** — чужой потолок ставил `paused` живому оплаченному прогону, чужой `unit_done` писал главы, которых никто не покупал (`PD-438`); - **экран врёт о единице**: число под подписью «Знаков» считает руны потока записи файла, а для EPUB — руны ZIP-архива (строка **282**). И отдельно: **вход шире выдачи** — интейк принимает форматы, для которых выдача отдаёт книгу одним полотном (строка **325**). Компенсация «на бете просто не впустим» сегодня — намерение, а не факт: она требует кода. Твой результат: человек, заплативший деньги, видит правду о них — и не может застрять молча. ## 2. Зона и git **Зона записи: `platform/`.** Чужие зоны (`backend/`, `frontend/`, `eval/`, `docs/`) — только чтение; пинги и итоги — **зонный журнал** `platform/docs/platform-PROGRESS.md` (решение владельца), в `docs/PROGRESS.md` платформа не пишет. **Сессия НЕ коммитит** — дерево передаёшь оркестратору. Канон git-дисциплины — `CLAUDE.md`. `.env` не читать. ## 3. Карта чтения — ЗАКОН 1. `CLAUDE.md` — цели владельца и гардрейлы. 2. `platform/docs/ENGINEERING_STANDARDS.md` — **нормы зоны и критерии приёмки (Definition of Done)**. ⚠ Ссылка на этот файл обязана быть в каждом платформенном промте; из семи прежних сослались пять, и норма дважды проскользнула. Здесь она стоит. 3. `platform/docs/DEFECT_REGISTER.md` — ряды `PD-441`, `PD-424`, `PD-438`. 4. Строки **282**, **325**, **326** бэклога (`docs/PROGRESS.md`, греп `^| N |`). 5. `platform/README.md` + зонный журнал (шапка, не целиком — он 5029 строк, см. §4.0). **Ратифицированное — в теле промта:** - **`D39.216` (мандат владельца, 06.09), делай РОВНО так**: чинить **без хаков и воркэраундов**; где форма не тянет — развязать или переписать. «Дешевле подпереть» доводом НЕ является; отступление законно, но **объявляется с ценой**. - **Продуктовых КВОТ и фри-тир-лимитов нет и не проектируется**; оплаты в бете нет, пополнение — из админки. Первую внешнюю книгу впускает владелец. - **Число называет ДЕРЕВО и ПОПУЛЯЦИЮ** · **рядом с нулём — контрольная величина** · **мутация засчитывается по ТЕКСТУ сообщения, а не по факту красноты** · **комментарий не доказывает поведение** (`D39.214`; грепом в `CLAUDE.md` не ищи, там её нет). - **Тесты и гейты не подгонять под зелень** (`D39.121`, решает мотив). ## 4. Состав и разметка свободы ### 4.0 Триаж зонного журнала — **делай РОВНО так**, первым, до кода Журнал вырос до **5029 строк / 42 секций**, и две новейшие занимают 40 %. ⭐ Конвенция слайсов у зоны **своя и уже работает**: в `platform/docs/archive/` лежат `platform-PROGRESS-P0-P3`, `-P4-P6`, `-P7`, `-P8`. Она остановилась. ⛔ **НО РЕЗАТЬ СРАЗУ НЕЛЬЗЯ, и вот замер, купленный 06.09.** Оркестратор проделал ту же операцию над `STACK_DECISIONS.md` и едва не уничтожил свод: секции «Что решено сессией P…» выглядят хроникой по заголовку, а внутри — **реестр из 36 сплошно нумерованных живых решений**. Ошибка была в том, что судили по ЗАГОЛОВКУ, не прочитав содержимое. ⇒ **в журнале сделай тот же тест ПРЕЖДЕ выноса.** Машинный проход по выносимому (он уже написан контролёром, воспроизводится за секунду): какие `PD-*` и «строки N» упомянуты и все ли разрешаются; и главное — **какие ⛔/⚠⚠-утверждения не ссылаются ни на ряд регистра, ни на строку бэклога, ни на D-ноту**. Замер 06.09 по двум новейшим секциям: **69 таких**, в основном «найдено и починено до сдачи». По норме регистра починенное тоже получает ряд ⇒ **это список на чтение, а не на вынос**. **Приёмка §4.0:** проход печатает **ноль** утверждений без носителя · вынесено только то, что при чтении оказалось настоящей хроникой · всё, что оказалось правилом или незакрытой находкой, получило ряд регистра или строку бэклога ПЕРЕД выносом. ### 4.1 Три мажора — **делай РОВНО так** в предмете, **реши сам** в форме `PD-441` · `PD-424` · `PD-438`. Все три про одно: **деньги и видимость чужого прогона**, и человек жалуется одинаково — «списали не то / висит / молчит». Форму лечения выбираешь ты; предмет не двигаешь. ⚠ По `PD-441` отдельно: если полная запись цены отменённого вызова недостижима, **честный выход — объявить маржу и показать её пользователю**, а не оставить леджер нижней границей молча. Выбор объяви. ### 4.2 Экран не врёт о единице (строка 282) — **делай РОВНО так** Либо число приезжает из манифеста движка, либо подпись переименована в то, что оно на самом деле считает. ⛔ Третьего — «оставить как есть, все привыкли» — нет: это живая ложь на продуктовом экране. ### 4.3 Вход не шире выдачи (строка 325) — **реши сам, аргументируй** Пока структура глав для выдачи не построена (строка 283, чужая зона), интейк обязан **отказывать** форматам, чью выдачу мы не умеем, — с честной причиной человеку, а не молча. Границу и формулировку отказа выбираешь ты; **согласуй с тем, что выдача действительно умеет сегодня**, а не с планом. ### 4.4 Два малых дока — **не трогай, это работа оркестратора** `ENGINEERING_STANDARDS.md` и `PLATFORM_DIRECTION.md` прочитаны оркестратором 06.09 целиком: **оба живые, резать нечего**. `STACK_DECISIONS.md` тоже остаётся — ему добавлен указатель решений ПО ПРЕДМЕТУ (`8a9a9f4`), потому что ось «по сессии» заставляла искать правило перебором семи секций. ⚠ Если по ходу работы найдёшь в них утверждение, разошедшееся с кодом, — **пинг, не правка**: это зона оркестратора. ### 4.5 Чего в паке НЕТ — **не делай** Не строить структуру глав для выдачи (чужая зона) · не трогать движок · не менять контракт без пинга оркестратору · не заводить квоты и фри-тир · не открывать бету. ## 5. Мандат самопроверки ИСПОЛНЕНИЕМ — «перечитал сам» не считается 1. **Мутационная проверка каждого пина, который заводишь или трогаешь**: сломай охраняемое свойство, прогони, **прочитай ТЕКСТ падения** — говорит ли он про сломанное тобой; восстанови и **сверь sha256**. Артефакт: таблица «мутация → текст падения → хеш восстановлен». 2. **Деньги — из СЫРОГО леджера ДВУМЯ независимыми путями** (норма приёмки проекта). Для `PD-441` это не формальность, а предмет: покажи расхождение до и после починки на реальных строках. 3. **Опровергатель твоей готовой работы отдельным субагентом.** ⚠ Харнесс по умолчанию субагентов не спавнит — **тебе разрешено и требуется**. Модель задай ЯВНО (`fable`), одного-двух хватит. Мандат: «найди отсутствующее и противоречащее». 4. **Греп по отозванной формулировке перед словом «исправлено»** — ноль либо только внутри пометки. ## 6. Оси ревью — характер «Код» и «Доки» - **Код:** ⚠ «тест утверждает не то, что думает» — каждый пин обязан падать ИМЕННО от того, что он охраняет (§5.1). - **Доки:** сверка утверждений против кода и живых носителей — §4.0 и §4.4 ровно об этом. - **Деньги в любой приёмке — из сырого леджера двумя путями** (§5.2). ## 7. Записка-план ДО работы ≤15 строк оркестратору: что берёшь по каждому пункту · что считаешь спорным в самом заказе · как именно собираешься лечить `PD-441` (полная запись против объявленной маржи). ## 8. Заявление = команда Числа и категорика — с командой и её выводом. `MAKE-EXIT` цитируй из лога, а не из кода возврата составной команды: смена 06.09 попалась на этом. ## 9. Эхо-протокол старта ≤10 строк ДО работы: скоуп · инварианты · не-делать. ## 10. Что НЕ удалось — обязательная секция Не проверено · не воспроизвелось · где данных не хватило. **«Не измерено» вместо догадки.** ## 11. Канал вопросов и право отказаться Конфликт промта с кодом — **пинг, не правка**. **Право сказать «этого делать не надо»** с аргументом: если по коду окажется, что предмет описан мимо, это самый ценный ответ. ## 12. Прямой канал `CLAUDE.md` §«Связь между сессиями»: `/tmp/textmachine-channel`, свой блок первым делом, живость — `ListAgents`. ⚠ Роли нет или файла нет — **нормальный случай**: вопрос секцией в отчёт, сессии подряд не опрашивать. ## Деньги Пак — **$0 по платным вызовам к моделям**: всё лечится на стенде и фикстурах. ⛔ Если упрёшься в «это предъявляется только платным прогоном» — **пинг оркестратору за санкцией, не твоё решение**. Стенд поднимается по рецепту в `STACK_DECISIONS.md`. ## Отчёт Зонный журнал + сообщение оркестратору: что построено · чем предъявлено (команда и вывод) · таблица мутаций §5.1 · два независимых пути по деньгам §5.2 · **проход §4.0 с нулём находок без носителя** · что сказал опровергатель и что ты с этим сделал · секция §10 · **что ты сам считаешь слабым местом своей работы**. ⚠ Числа снимай **после последней правки**, не до. Правки якорей объявляй наравне с содержательными.