9.1 KiB
Промт сессии: БЭКЕНД — «число согласия на пути второй покупки»
Роль: бэкенд. Зона записи:
backend/. Не коммитишь — дерево готовишь и передаёшь на лендинг оркестратору. Чужие зоны читаешь, не правишь. Норматив стиля —docs/architecture/12-go-style-notes.md.
Какая проблема и что изменит твой результат
Продукт продаёт главы частями. Покупатель берёт кусок, потом ещё кусок — и на этом пути число, которым движок спрашивает согласия на оплату, врёт в трёх местах, а один юнит может быть оплачен дважды. После пака покупатель, берущий книгу частями, видит число, которое не занижает при смене модели стадии, признаётся, какая его часть — старые деньги, и не платит второй раз за юнит, который уже двигал.
Карта чтения — пять позиций, дальше только по их ссылкам
- Шапка-таблица
docs/architecture/09-target-architecture.md— что построено. backend/README.md·docs/architecture/03-implementation-notes.md(через баннер).docs/architecture/15-money-path.md— денежный путь целиком, включая §2 «согласие на пере-оплату».- Строка 197 единого бэклога (
docs/PROGRESS.md) — фикс-лист ФЧ-1…ФЧ-8, и строка 232. - Нота D39.150 — тело ратификации ФЧ-5 (греп
^## D39.150).
Состав — четыре пункта, в этом порядке
1. ФЧ-5 — ось МОДЕЛИ в числе согласия. Ратифицирован 17.08 (D39.150 п.1) и НЕ построен.
Ратифицировано дословно: прайсить по модели, которую стадия резолвит сейчас; при незнании
округлять вверх; оговорка в тексте согласия. Нота помечает это обязательным до первого
пере-прогона со сменой модели стадии. Сегодня первый же такой пере-прогон занижает число согласия
молча — ровно тот вред, ради которого чинилась строка 181.
⚠ Проверь исходное состояние САМ и не бери с моих слов: оркестратор утверждал, что «шапка
rebill.go заявляет обратное ратифицированному», и это не подтвердилось — в шапке речь про
$0 model. Формулируй по коду, который увидишь.
2. Строка 232, ВТОРАЯ половина. Первая (читающий метод store.AnnouncedOnceKeys()) исполнена
31.08. Живой остаток: юнит, прерванный МЕЖДУ волнами, тратит слот объёмного гранта повторно —
покупатель платит за N глав и получает меньше. Разбор — backend/docs/MONEY_HONESTY_REPORT.md §4.5.
⚠ Оговорка веса, проверь её: платформа сегодня продаёт денежным потолком (--ceiling-usd), а
--max-units не передаёт вовсе — то есть вред пока не доезжает до пользователя через платформу.
Это меняет приоритет, но не отменяет дефект.
3. ФЧ-4 — раскрытие «часть суммы — старые деньги» не доезжает до status --json:
HistoricalRows теряется на границе. Покупатель не может отличить новую трату от уже оплаченной.
4. ФЧ-1 — посадки на гарантии, чьи мутации ПЕРЕЖИВАЮТ зелёную батарею. ⚠ Ограничь тремя, поимённо: D39.149 п.5 называет три HIGH. Не превращай в бесконечный список — это последний пункт, и он берётся, если осталось время.
Границы — что НАМЕРЕННО не берём
- Строка 160 «структура глав, Этап 0» — хотя слово владельца 15.08 ставит её ближайшим паком и её
блокер закрыт 30.08. Причина техническая: строка требует бампа формы манифеста, а параллельно
идёт платформенный пак, и незнакомая форма манифеста отправляет КАЖДУЮ новую книгу в
rejected. Берётся отдельно, со стоп-миром. - Читающая сторона банка (строки 221 · 224 · 226 · 228 · 230) — крупнейшая продуктовая дыра зоны, но её гейт не техника, а слово владельца. Вопрос вынесен ему отдельно.
- Следующий платный замер — не в этом паке: у его оси «эффорт off против low» не разрешено предусловие (см. ниже), и до решения владельца он не заказывается.
⚠ ПОРЯДОК ДЕПЛОЯ — почему пак безопасен параллельно платформе
Зоны независимы по коду, но не по деплою: форма манифеста требует «платформа первой», схема хранилища v16 — «движок первым». Пак НЕ меняет форму манифеста, схему хранилища и версию контракта. Понадобилось — стоп и пинг, не «сделаю аккуратно».
Свобода и её разметка
«Делай РОВНО так» — порядок пунктов · границы выше · запрет на три вещи из порядка деплоя · ограничение ФЧ-1 тремя посадками. Решаешь сам и аргументируешь: форма хранения и проводки модели в числе согласия, форма раскрытия исторических строк, состав посадок.
Мандат самопроверки — исполнением
make battery — не отчёт, а предусловие. Обязательны: дифф ^func Test исполнением, не памятью ·
собственные адверсариальные посадки ВНЕ списка выше · отдельный проход по СВОЕЙ ГОТОВОЙ работе
свежим контекстом. Субагенты разрешены явно; модель задавай ИМЕНЕМ.
⚠ Править или удалять тест ради зелени — недопустимо. Правка, вызванная сменой поведения, которая
заказана этим промтом, — обслуживание, и она объявляется в отчёте: что изменилось в поведении,
какой тест это описывал, куда уехала гарантия.
⚠ Перед отчётом сверь каждый клейм с результатом инструмента ЭТОЙ сессии. Последний абзац —
план или обещание? Сделай сейчас.
Отчёт
Записка-план ДО работы (эхо: скоуп · инварианты · не-делать) в секцию «Бэкенд» docs/PROGRESS.md.
Итог — туда же, каждое число с командой получения. Обязательная секция «Что НЕ удалось и что
НЕ проверено». Конфликт промта с кодом — пинг через владельца, не интерпретация.
Прямой канал
Механизм — CLAUDE.md, секция «Связь между сессиями». Свой блок в /tmp/textmachine-channel —
первым делом. ⚠ Адрес из файла не доказательство, что сессия жива: сверяйся с ListAgents.
Нужной роли нет ⇒ канала нет, это НОРМАЛЬНЫЙ случай, вопрос секцией в отчёт.