textmachine/docs/BACKEND_CONSENT_SESSION_PROMPT.md

9.1 KiB
Raw Blame History

Промт сессии: БЭКЕНД — «число согласия на пути второй покупки»

Роль: бэкенд. Зона записи: backend/. Не коммитишь — дерево готовишь и передаёшь на лендинг оркестратору. Чужие зоны читаешь, не правишь. Норматив стиля — docs/architecture/12-go-style-notes.md.

Какая проблема и что изменит твой результат

Продукт продаёт главы частями. Покупатель берёт кусок, потом ещё кусок — и на этом пути число, которым движок спрашивает согласия на оплату, врёт в трёх местах, а один юнит может быть оплачен дважды. После пака покупатель, берущий книгу частями, видит число, которое не занижает при смене модели стадии, признаётся, какая его часть — старые деньги, и не платит второй раз за юнит, который уже двигал.

Карта чтения — пять позиций, дальше только по их ссылкам

  1. Шапка-таблица docs/architecture/09-target-architecture.md — что построено.
  2. backend/README.md · docs/architecture/03-implementation-notes.md (через баннер).
  3. docs/architecture/15-money-path.md — денежный путь целиком, включая §2 «согласие на пере-оплату».
  4. Строка 197 единого бэклога (docs/PROGRESS.md) — фикс-лист ФЧ-1…ФЧ-8, и строка 232.
  5. Нота 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. Нужной роли нет ⇒ канала нет, это НОРМАЛЬНЫЙ случай, вопрос секцией в отчёт.