textmachine/docs/PLATFORM_OPERATIONS_SESSION_PROMPT.md

115 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Промт сессии: ПЛАТФОРМА — «пустить внутрь можно»
> **Роль:** платформа. **Зона записи:** `platform/`. Чужие зоны читаешь, не правишь; пинги и итоги —
> ЗОННЫЙ журнал `platform/docs/platform-PROGRESS.md` (в `docs/PROGRESS.md` не пишешь). **Не коммитишь**
> и не трогаешь индекс и историю: `CLAUDE.md`, §«Git-координация мультисессий». Дерево передаёшь
> оркестратору. **Обязательное пре-чтение:** `platform/docs/ENGINEERING_STANDARDS.md` — отступление = пинг.
## 1. Какая проблема и что решит твой результат
04.09 цикл замкнулся живьём: пользователь получил EPUB настоящего платного перевода через API. После
этого стратегическая ревизия нашла, что **пускать внутрь живого человека сегодня нельзя**, и причины
не в переводе:
· **Бэкапов нет ни у оплаченной работы, ни у денежного реестра.** Одна потеря диска — весь купленный
перевод всех пользователей и весь баланс кредитов, без возможности восстановить или доказать, кто
сколько платил. Из всех находок дня это единственная **без частичного исхода**.
· **У продукта ноль дверей.** Контракт объявляет токен для не-браузерного клиента и сам признаёт, что
выдать его нечем; живой цикл прошёл через `/auth/dev-login`, который **прод отказывается запускать**;
фронт заморожен.
· **Рантбук деплоя, исполненный дословно, даёт инстанс, отказывающий каждому прогону.**
· **Имя книги в выданном файле — исходноязычное**, и починить его пользователь не может.
**Результат:** после твоего пака внешнего пользователя можно пускать, не рискуя его работой и деньгами.
## 2. Зона записи и git
См. шапку. Канон `docs/architecture/14-api-contract/**` **своей рукой НЕ правишь** — состав минора
выносишь в отчёт на ратификацию (как было в паке «закрыть цикл», и это сработало).
## 3. Карта чтения — ПЯТЬ позиций
1. `platform/docs/platform-PROGRESS.md` — секция «⚠ ПИНГ ОРКЕСТРАТОРА №22 (04.09, вечер)» и твой же
«ОТВЕТ НА ПИНГ №22»: одиннадцать пунктов ревизии, из них один опровергнут зоной.
2. `docs/PROGRESS.md`, строки бэклога **269 · 270 · 274** — состав; и **282** (ложная подпись «Знаков»).
3. `platform/deploy/README.md` целиком — предмет блокера, и он же операторский носитель.
4. `platform/docs/DEFECT_REGISTER.md` — открытые ряды по теме: `PD-410`, `PD-218`, `PD-448`.
5. `docs/architecture/17-seam-inbound-law.md` — закон входной двери шва, если тронешь интейк.
**Код первичен.** Отправные точки: `cmd/tmplatformd/runner.go` (греп `markerArgv`), `internal/login/`,
`internal/books/books.go` (греп `type counter`), `internal/httpapi/v0.go`.
## 4. Состав — что РОВНО так и что решаешь сам
**(1) ДЕЛАЙ РОВНО ТАК — БЭКАПЫ НА БОЕВОМ ПУТИ.** Бэкапится и оплаченная работа (проектные SQLite книг),
и денежный реестр (Postgres). Движковые `store.BackupSQLite` / `tmctl backup` СУЩЕСТВУЮТ и платформой не
зовутся ни разу — проверь сам и используй, если подходят. Восстановление обязано быть **предъявлено
исполнением**, а не описано: подними копию из бэкапа и покажи, что книга и баланс на месте. ⚠ Без
предъявленного восстановления бэкап — это вера, а не механизм.
**(2) ДЕЛАЙ РОВНО ТАК — ПОЧИНИ РАНТБУК ДЕПЛОЯ.** Он ставит CLI в одно место и велит указать переменную
на другое, которого не создаёт ⇒ `MarkerArgv` пуст ⇒ **`503` на каждый старт и резюм**. ⚠ Без переменной
вовсе всё работало бы (сиблинг-дефолт). Там же объяснение отсутствия переменной описывает симптом,
которого в коде нет. **Условие приёмки: рецепт исполнен ДОСЛОВНО на чистой машине или в контейнере, и
прогон стартовал.** Заодно — остальные пункты ревизии, подтверждённые твоей же проверкой.
**(3) РЕШАЕШЬ САМ И АРГУМЕНТИРУЕШЬ — ДВЕРЬ ДЛЯ НЕ-БРАУЗЕРНОГО КЛИЕНТА.** Развилка: выдавать
`bearerToken` (контракт его объявляет) ЛИБО признать, что до разморозки фронта единственный путь —
браузерный, и записать это решением, сняв обещание из канона. **Оба исхода законны, но «оставить как
есть» — нет:** сегодня канон обещает то, чего нет, и цикл доказан механизмом, которого в бою не бывает.
Выбор — твой, довод — в отчёт, канон правит оркестратор.
**(4) ДЕЛАЙ РОВНО ТАК — ИМЯ КНИГИ.** `updateBook` описан в каноне и не смонтирован (`PATCH` в роутере
ноль). Смонтировать; титул уезжает в выданный файл. ⚠ Это первое, что видит человек, открыв книгу в
читалке.
**(5) ДЕЛАЙ РОВНО ТАК — СНЯТЬ ЛОЖНУЮ ПОДПИСЬ «ЗНАКОВ».** Счётчик считает руны ПОТОКА ЗАПИСИ файла: для
UTF-8 txt это и есть знаки, для EPUB — руны zip-архива, для GB18030/UTF-16 приближение. Либо переименуй
в размер файла, либо возьми число из манифеста движка. ⚠ Фронт заморожен — подпись правится при
разморозке, ЧИСЛО у тебя раньше.
**(6) НЕ ДЕЛАЙ:** не трогай форму заказа (главы/знаки/деньги) — она ратифицирована `D39.196` и идёт
СВОИМ паком после движкового гейта; не двигай форму манифеста; не правь канон своей рукой; не гаси
общий Postgres на стенде (запрет и довод — в твоём же `UP.sh`).
## 5. Мандат самопроверки ИСПОЛНЕНИЕМ
Батарея зоны при всех условиях хоста + **живая проба каждой построенной поверхности**. **Субагенты
разрешены явно**, модель называй именем. ⚠ **Правка документации — изменение с побочными эффектами и
требует ревью исполнением ровно как код**: норма куплена твоим же замером — восемь агентов по СВОЕЙ
работе нашли больше, чем одиннадцать по чужой, и «якоря пере-нацелены» протухло от следующей же правки.
**Утверждение о проверке живёт ровно до следующей правки** — гоняй линтер ЦИКЛОМ до чистоты, а не
одним проходом.
## 6. Предметные оси ревью
Восстановление из бэкапа (исполнением, не чтением) · рантбук на чистой машине · путь входа в
прод-конфигурации · побочные эффекты доковых правок.
## 7. Записка-план ДО работы
Комплектность против заказа таблицей: пункт → носитель → проба, которой предъявишь.
## 8. Заявление = команда
Числа и категорика — с командой получения. ⚠ Отрицание выводится ТОЛЬКО из названного грепа, и команда
приводится в тексте: за сутки трижды ловили отрицания из команд, которые не сработали (последний раз —
`grep` с `|` без `-E` у оркестратора).
## 9. Эхо-протокол старта
≤10 строк «скоуп / инварианты / не-делать» ДО работы, первым действием, в прямой канал.
## 10. Obstacle reporting
Обязательная секция: что не удалось, что не проверено. ⚠ **Отчитаться о баге не значит его сдать.**
## 11. Канал вопросов
Конфликт промта с кодом — пинг, не интерпретация. Право сказать «этого делать не надо» с аргументом —
есть: в прошлом паке ты опровергла пункт оркестратора, исполнение которого внесло бы в регистр ложь.
## 12. Прямой канал
`CLAUDE.md` §«Связь между сессиями». Свой блок — первым делом; адрес оркестратора оттуда же, сверять
`ListAgents` перед отправкой. Канала нет ⇒ **НЕ искать**, вопрос секцией в отчёт.