18 KiB
Промт пака: ФОРМА ЗАКАЗА ПЕРЕВОДА — деньги, объём и вердикт ДО клика
Пак делает ОДНА ПЛАТФОРМЕННАЯ СЕССИЯ. Канон
docs/architecture/14-api-contract/правит ТОЛЬКО оркестратор — зона предъявляет состав минора ОТЧЁТОМ, своей рукой канон не трогает. Никто не коммитит: деревья готовятся и передаются оркестраторуtextmachine-main-27. Соседний worktree/home/ubuntu/projects/textmachineне трогать..envне читать никогда.
КАРТА ЧТЕНИЯ — ЗАКОН, пять позиций
CLAUDE.md— цели, зоны, гардрейлы.^## D39.196— решение владельца о форме заказа. ⛔ Читать ВМЕСТЕ с эрратой 05.09-д в шапке журнала (грепЭррата 05.09-д): её пункт 5 велит «движковую половину первой» — она УЖЕ ПОСТРОЕНА.^## D39.203— владелец разрешил движку говорить «сколько добавить»; поле ПЕРЕИМЕНОВЫВАЕТСЯ.- Строки бэклога 276 · 279 · 280 · 281 · 282 · 283 (греп
^| 276 |и так далее). 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_chapters → chapters со смыслом объёма
(null = вся книга); CeilingBounds → OrderOptions{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(б) — зона подала две законные формы и выбор оставила ему; слова владельца тут нет (испр. по ревью до выдачи): признак РЯДОМ с числом, а НЕ смена семантики null — null уже значит «ещё грузится».
(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 не было ни одного пака без честного остатка. «Не проверено» ≠ «опровергнуто», и молчание здесь дороже находки.
ОБЯЗАТЕЛЬНЫЕ НОРМЫ СДАЧИ
- Ревью ИСПОЛНЕНИЕМ своего кода и результатов; «проверено» без команды и её вывода — не утверждение.
- Адверсариальный проход по своей работе. Уязвимое место названо: вердикт «хватает», выданный по проекции, которая врёт. Атакуй его короткой книгой, книгой без структуры и книгой с дырами.
- NAMED-АРТЕФАКТ:
OF-verdict-lies— вердикт «хватает» при недостаточном балансе, предъявить КРАСНЫМ. ⚠ Мутационного каталога у платформы НЕТ (tmmutate— движковый инструмент). Форма прежних паков зоны и она же обязательна здесь: ручная посадка в КОПИИ дерева + отчёт строкой «file:line· что подменено · какой тест покраснел ИМЕНЕМ · был ли DSN». Без DSN тест мог скипнуться — тогда это не красный. - Своё воркфлоу-ревью — часть сдачи. Fable 5 — ОДИН-ДВА агента, модель задавать явно.
- Сверить промт с заказанным и НАЗВАТЬ расхождения, а не исполнять молча.
- Состав контрактного минора — ОТЧЁТОМ, канон своей рукой не трогать. ⚠ Ратификация, порождающая обязанность в зоне, выдаётся зоне ЯВНО и тем же актом — иначе минор сутки живёт ложным на проводе (это уже стоило дня, эррата 04.09-в).
- Нормы смены —
^## D39.202, прочесть целиком. Особенно: прибор отвечает на СВОЙ вопрос, а читают его как ответ на твой; и четыре вида одинаково зелёного отчёта. - Деньги. Платный прогон — только по санкции оркестратора, с названной суммой ДО запуска.
ПРИЁМКА
Два верификатора: №1 судит заказ и дифф не читая отчёт, №2 ищет ВНЕ карты отчёта; каждой находке —
скептик с заданием СНЯТЬ её. Верификаторам выдаётся ГОТОВЫЙ ПУТЬ отдельного рабочего дерева.
⚠ Пак делает ОДНА платформенная сессия, а состав контрактного минора идёт ОТЧЁТОМ оркестратору — отдельной «контрактной сессии» нет: у неё не было бы ни зоны записи, ни журнала (испр. по ревью до выдачи). Отчёт — в зонный журнал platform/docs/platform-PROGRESS.md (платформа в docs/PROGRESS.md не пишет).
⚠ Канал сессий — /tmp/textmachine-channel, адрес сверять ListAgents.