textmachine/docs/ORDER_FORM_SESSION_PROMPT.md

18 KiB
Raw Blame History

Промт пака: ФОРМА ЗАКАЗА ПЕРЕВОДА — деньги, объём и вердикт ДО клика

Пак делает ОДНА ПЛАТФОРМЕННАЯ СЕССИЯ. Канон docs/architecture/14-api-contract/ правит ТОЛЬКО оркестратор — зона предъявляет состав минора ОТЧЁТОМ, своей рукой канон не трогает. Никто не коммитит: деревья готовятся и передаются оркестратору textmachine-main-27. Соседний worktree /home/ubuntu/projects/textmachine не трогать. .env не читать никогда.

КАРТА ЧТЕНИЯ — ЗАКОН, пять позиций

  1. CLAUDE.md — цели, зоны, гардрейлы.
  2. ^## D39.196 — решение владельца о форме заказа. Читать ВМЕСТЕ с эрратой 05.09-д в шапке журнала (греп Эррата 05.09-д): её пункт 5 велит «движковую половину первой» — она УЖЕ ПОСТРОЕНА.
  3. ^## D39.203 — владелец разрешил движку говорить «сколько добавить»; поле ПЕРЕИМЕНОВЫВАЕТСЯ.
  4. Строки бэклога 276 · 279 · 280 · 281 · 282 · 283 (греп ^| 276 | и так далее).
  5. docs/architecture/15-money-path.md — путь денег от гранта до расчёта, целиком. ⚠ Голову журнала целиком НЕ читать; подномер собственного тела не имеет — грепай родителя.

ЗАЧЕМ ЭТОТ ПАК

Сегодня человек не может внятно КУПИТЬ перевод. Владелец 05.09 назвал форму: на аккаунте баланс в ДЕНЬГАХ и он виден; потолок тянется ползунком в деньгах; рядом — ответ на настоящий вопрос покупателя: хватает ли на всю книгу; второй ползунок — ОБЪЁМ (главы, если структура распозналась; знаки, если нет, и о нераспознавании говорим ЯВНО); отдельная кнопка «книга целиком»; вердикт ДО клика, старт = холд.

ЧТО УЖЕ ПОСТРОЕНО — НЕ ЗАКАЗЫВАТЬ ЗАНОВО

Строки 277 и 278 ЗАКРЫТЫ лендингом 81a89e9 (акт D39.206) и сняты из таблицы: · отказ резервации защёлкивает волну, а не роняет книгу; обязательный вызов ЖДЁТ, когда ожидание может помочь; · движок публикует проекцию ценыexpected_usd по главам, book_once_usd, step_max_usd, а также source_chars по юниту и structure: detected|declared|none — всё в manifest --json/status --json, аддитивно, версию манифеста не двигая. ⇒ Платформа этих чисел СЕГОДНЯ НЕ ЧИТАЕТ (git grep -lE "StepMax|step_max" -- platform/ → пусто). Взять их — половина работы этого пака.

ЖИВАЯ ПРОБЛЕМА, КОТОРУЮ ПАК ОБЯЗАН СНЯТЬ, И ОНА НЕ ТА, ЧТО В СТАРЫХ ДОКАХ

Стена «книга короче десяти глав не переводится» СНЯТА движком. Остался ПОЛ: прирост потолка считается chaptersLeft × $0.03, и даже при одном воркере 2 × $0.03 = $0.06 меньше одной редакторской резервации (~$0.07) ⇒ последние ~2 главы ЛЮБОЙ книги не покупаются. Это и есть живая половина PD-440. Снимается строкой 280 — потолок ДЕНЬГАМИ вместо «глав × ставка». ⚠ Пол ВЫВЕДЕН, не замерен (платного прогона не было): подтвердить замером — часть работы.

СОСТАВ — ЧЕТЫРЕ ПОЗИЦИИ

(1) Контракт, минор (строка 279) — состав берётся ИЗ СТРОКИ ЦЕЛИКОМ, ниже только несущее. ⚠ Первая редакция промта сузила его до четырёх позиций и тем противоречила собственной карте чтения; в строке есть ещё: PausedReason += причина исчерпания лимита, Run += заказано/доставлено глав, оценка {expected, hold}, границы денежного ползунка {min: step_max, max: balance}, ТРИ вида заказа, упрощение резюма, «фразы данными». Заказ ОБЪЁМОМ: ceiling_chapterschapters со смыслом объёма (null = вся книга); CeilingBoundsOrderOptions{chapters_left, affordable_chapters, verdict: covers_all|covers_part|covers_none, blocked}; баланс и холд выходят ДЕНЬГАМИ. Поле недостачи в событии ceiling НЕ зеркалить под нынешним именем: владелец выбрал форму «сколько добавить», значит shortfall_micro_usd станет ЛОЖНЫМ именем — величина max(shortfall, step_max headroom), кандидат top_up_micro_usd, StreamVersion 1.3→1.4 (строка 294, D39.203). Зеркалить приговорённое имя — значит покупать второй минор. (2) Платформа (строка 280).PD-422 берётся В ТОТ ЖЕ ПАК — так велит сама строка 280 (это её предусловие, не соседняя работа). ⚠ И знай заранее: комментарий platform/internal/ingest/resync.go (греп waits on a decision of its own) описывает гейт оркестратора на проводку --max-unitsэтой строкой гейт СНЯТ, читая комментарий буквально, ты встанешь на пустом месте. Заказ живёт на КНИГЕ (ordered_through_chapter, null = вся книга), холд считается ОТ ПРОЕКЦИИ движка, --max-units наконец едет в argv. (3) Честность числа знаков (строка 282). Подпись «Знаков» сегодня лжёт для EPUB — считаются руны ZIP-архива. Источник построен: source_chars в манифесте. ⚠ Форму признака точности ратифицировал ОРКЕСТРАТОР актом приёмки D39.201 п.5(б) — зона подала две законные формы и выбор оставила ему; слова владельца тут нет (испр. по ревью до выдачи): признак РЯДОМ с числом, а НЕ смена семантики nullnull уже значит «ещё грузится». (4) Замер (строка 281) — ⚠ ЗОНА ПОЛИГОН, не твоя; он ГЕЙТ коэффициента холда для (2). Пока его нет, коэффициент называет оркестратор явным числом. Не начинай его сам и не жди молча — скажи, что упёрся. Сколько наших денег стоит тысяча ПЛОТНЫХ и тысяча РАЗРЕЖЁННЫХ знаков по стадиям. ⚠ Цель — НЕ константа (это прямо запрещено), а дисперсия проекции: коэффициент для холда и честность вердикта «хватает / не хватает».

ЧТО В ПАК НЕ ВХОДИТ

· Строка 283 (структура глав для не-CJK и EPUB) — свой пак, окно пере-снапшота. · Правка канона своей рукой · включение гейта глоссария · переименование поля недостачи (это движковая работа строки 294) · решение, ЧТО печатать на титуле (закрыто D39.205: копия без пометки = книга без единого пропуска, пропущенный КУСОК главы критичен).

ЧТО ПРИДЁТСЯ СЛОМАТЬ НАМЕРЕННО — НАЗЫВАЮ ЗАРАНЕЕ, ЧТОБЫ ТЫ НЕ ВСТАЛА НА ПИНГ

Тест платформы ПИНИТ отозванный запрет: platform/internal/httpapi/v0_test.go, греп на денежные суффиксы в проводе книги — он краснеет на ЛЮБОЙ сумме. Владелец запрет отозвал (D39.196), значит правка теста ЗАКАЗАНА, а не самовольна: по D39.183 это обслуживание, но объявляется в отчёте — что изменилось в поведении, какой тест это описывал, куда уехала гарантия. Носители того же отозванного запрета, которые пак обязан закрыть (их называет D39.196 п.2): platform/docs/ENGINEERING_STANDARDS.md (зонный) · frontend/docs/api-contract/openapi.yaml и frontend/docs/API_CONTRACT_INPUT.md §4.8 (зеркало ЗАМОРОЖЕННОЙ зоны — правит оркестратор, скажи ему) · комментарии на пути провода в platform/internal (греп D39.84).

⚠ ПРЕДУСЛОВИЯ ХОСТА — проверь ДО работы, иначе зелень будет ложной

· батарея зоны требует Postgres: без TM_PLATFORM_TEST_DSN тесты хранилища и бэкапа СКИПАЮТСЯ, и скип читается как зелень (D39.202 п.2); · бинарь движка — не старше 81a89e9, иначе манифест не несёт цен; · фикстуры manifest --json снимать РЕАЛЬНЫМ бинарём, а не рукописные.

⚠ ЧТО ПЛАТФОРМА ОТДАЁТ ДО ПЕРЕИМЕНОВАНИЯ ПОЛЯ — РЕШИ И НАЗОВИ

Строка 294 (переименование в форму «сколько добавить») сегодня не выдана никому, а поток на 1.3 уже несёт старое имя. ⇒ реши явно и запиши в отчёт: считать величину самой, отдавать null или не показывать блок — и предъяви довод. Молчание здесь станет третьим носителем расхождения.

РАЗМЕТКА СВОБОДЫ — что решено за тебя, а что решаешь ты

ДЕЛАЙ РОВНО ТАК (ратифицировано, отступление = пинг, не правка): баланс и потолок наружу ДЕНЬГАМИ · второй ползунок ОБЪЁМОМ (главы при распознанной структуре, знаки при none, о нераспознавании говорим ЯВНО) · вердикт ДО клика · старт = холд · признак точности РЯДОМ с числом знаков, а НЕ смена семантики null · поле недостачи под нынешним именем в контракт НЕ зеркалить · канон своей рукой не трогать. РЕШАЕШЬ САМА (назови довод в отчёте): форма хранения заказа на книге · как считается холд от проекции и с каким запасом · что отдавать в поле доплаты ДО переименования · порядок работ внутри пака · какие тесты несущие · где ставить ручные посадки. СПРАШИВАЕШЬ ОРКЕСТРАТОРА (не решаешь молча): конфликт этого промта с кодом или каноном · любая правка вне platform/ · платный прогон и его сумма · коэффициент холда, пока не сделан замер строки 281 · всё, что двигает форму манифеста или версию потока.

ЭХО-ПРОТОКОЛ СТАРТА — первым делом, ≤10 строк

Впиши свой блок в /tmp/textmachine-channel и пришли оркестратору эхо: скоуп своими словами · инварианты, которые держишь · чего НЕ делаешь · чем предъявишь результат. Если в эхо скоуп разошёлся с промтом — значит промт написан неясно, и это ловится ДО работы, а не после.

ЗАПИСКА-ПЛАН И КОМПЛЕКТНОСТЬ ПРОТИВ ЗАКАЗА

До кода — короткая записка-план в зонный журнал: что делаешь, в каком порядке, чем предъявишь. Перед сдачей — механическая сверка комплектности: пройди состав промта пункт за пунктом и назови, что сделано, что нет и почему. ⚠ Это не формальность: 05.09 обе сессии нашли в своих промтах по два дефекта именно этой сверкой, и один заказ был внутренне противоречив.

OBSTACLE REPORTING — обязательная секция отчёта

«Что НЕ удалось · что не проверено · где вывод ПРАВДОПОДОБЕН, но исполнением не подтверждён · чего не хватило (доступ, данные, санкция)». Пустая секция — сама по себе подозрительна: за смену 05.09 не было ни одного пака без честного остатка. «Не проверено» ≠ «опровергнуто», и молчание здесь дороже находки.

ОБЯЗАТЕЛЬНЫЕ НОРМЫ СДАЧИ

  1. Ревью ИСПОЛНЕНИЕМ своего кода и результатов; «проверено» без команды и её вывода — не утверждение.
  2. Адверсариальный проход по своей работе. Уязвимое место названо: вердикт «хватает», выданный по проекции, которая врёт. Атакуй его короткой книгой, книгой без структуры и книгой с дырами.
  3. NAMED-АРТЕФАКТ: OF-verdict-lies — вердикт «хватает» при недостаточном балансе, предъявить КРАСНЫМ.Мутационного каталога у платформы НЕТ (tmmutate — движковый инструмент). Форма прежних паков зоны и она же обязательна здесь: ручная посадка в КОПИИ дерева + отчёт строкой «file:line · что подменено · какой тест покраснел ИМЕНЕМ · был ли DSN». Без DSN тест мог скипнуться — тогда это не красный.
  4. Своё воркфлоу-ревью — часть сдачи. Fable 5 — ОДИН-ДВА агента, модель задавать явно.
  5. Сверить промт с заказанным и НАЗВАТЬ расхождения, а не исполнять молча.
  6. Состав контрактного минора — ОТЧЁТОМ, канон своей рукой не трогать. ⚠ Ратификация, порождающая обязанность в зоне, выдаётся зоне ЯВНО и тем же актом — иначе минор сутки живёт ложным на проводе (это уже стоило дня, эррата 04.09-в).
  7. Нормы смены — ^## D39.202, прочесть целиком. Особенно: прибор отвечает на СВОЙ вопрос, а читают его как ответ на твой; и четыре вида одинаково зелёного отчёта.
  8. Деньги. Платный прогон — только по санкции оркестратора, с названной суммой ДО запуска.

ПРИЁМКА

Два верификатора: №1 судит заказ и дифф не читая отчёт, №2 ищет ВНЕ карты отчёта; каждой находке — скептик с заданием СНЯТЬ её. Верификаторам выдаётся ГОТОВЫЙ ПУТЬ отдельного рабочего дерева. ⚠ Пак делает ОДНА платформенная сессия, а состав контрактного минора идёт ОТЧЁТОМ оркестратору — отдельной «контрактной сессии» нет: у неё не было бы ни зоны записи, ни журнала (испр. по ревью до выдачи). Отчёт — в зонный журнал platform/docs/platform-PROGRESS.md (платформа в docs/PROGRESS.md не пишет). ⚠ Канал сессий — /tmp/textmachine-channel, адрес сверять ListAgents.