Rework both prompts against the block list an outside pass ran: a missing review axis, five canon lines absent from each, an unmarked middle, and a pack that ordered a field while forbidding its version bump

This commit is contained in:
heaven 2026-09-05 01:31:49 +03:00
parent c348c2bdbc
commit 80125b9379
3 changed files with 101 additions and 15 deletions

View file

@ -26,9 +26,15 @@
## 3. Карта чтения — ПЯТЬ позиций, дальше только по ссылкам отсюда
1. `docs/architecture/15-money-path.md` — §«ОТКРЫТАЯ РАЗВИЛКА 04.09» целиком: разбор трёх независимых
чтений, все числа с носителями.
2. `docs/PROGRESS.md`, строки бэклога **277 · 261 · 262 · 278** — твой состав, формулировки зоны.
1. `docs/architecture/05-decisions-log.md`, нота **`D39.196`** — РАТИФИЦИРОВАННАЯ форма заказа, ради которой
этот пак и есть гейт; затем `docs/architecture/15-money-path.md` §«ОТКРЫТАЯ РАЗВИЛКА 04.09» — разбор, из
которого решение выросло (все числа с носителями). ⚠ Читать в этом порядке: разбор без ноты читается как
открытый вопрос.
2. `docs/PROGRESS.md`, строки бэклога **277 · 278** — твой состав, формулировки зоны.
**Строки 261 и 262 в ЭТОТ пак НЕ входят** — они назначены дофиксу, который прямо сейчас доделывает ДРУГАЯ сессия зоны
(эррата 04.09-д: «зона чинит и держит сдачу; строки 256264 закрываются её лендингом»). Две сессии в одном `stagerun.go`
это конфликт, а не параллельность. ⚠ Если к твоему старту дофикс уже заленджен — спроси оркестратора пингом, брать ли их;
сам не бери.
3. `backend/internal/pipeline/volume.go`, греп `THE STOP IS A COMPLETION, NOT A HALT` — **прецедент
внутри твоего же пакета**: объёмный потолок уже построен с нужной семантикой и САМ противопоставляет
себя денежному.
@ -61,6 +67,10 @@
`step_max_usd` (самый крупный неделимый резерв). Считается из СВОИХ цен и фертильности, **без константы
за главу**. Плюс `structure: detected|declared|none` — признак доверия к нарезке. Всё аддитивно, версию
манифеста НЕ двигает.
**РЕШАЕШЬ САМ И АРГУМЕНТИРУЕШЬ (промт форму НЕ задаёт):** как считается `expected_usd` — по
отрендеренному промпту с инъекциями или по сырому тексту, какие стадии входят, учитывать ли ретраи и
эскалации; по какому признаку выставляется `structure: detected|declared|none`; какую форму имеет
леджер сделанного и отложенного в `finished`. Каждый выбор — с доводом в отчёте.
**(4) РЕШАЕШЬ САМ И АРГУМЕНТИРУЕШЬ:** форма защёлки; где именно ждать settle; как назвать поля;
сеттлить ли оценкой поздно отменённый вызов и по какому различителю (латентность — кандидат, порог
@ -69,7 +79,7 @@
**(5) НЕ ДЕЛАЙ:** не убирай резервацию — она единственная гарантия «не потратим больше, чем дано»;
не резервируй «ожидаемое» вместо worst-case; не ужимай `max_tokens` под остаток (двигает `request_hash`
⇒ снапшот и детерминизм, и даёт `finish=length` ценой целой генерации); не трогай кумулятивную
семантику `--ceiling-usd`; не двигай `manifestVersion`, `StreamVersion`, схему и контракт.
семантику `--ceiling-usd`; не двигай `manifestVersion`, схему и контракт. ⚠ **`StreamVersion` — ИСКЛЮЧЕНИЕ и его двигать НАДО:** добавление поля в кадр — минорный бамп по правилу шва (`internal/runevents/runevents.go`, греп `IT WAS ALMOST NOT BUMPED` — там записана ровно эта ловушка). Прежняя редакция промта запрещала бамп и заказывала поле одновременно; противоречие снято 05.09.
## 4-бис. ДВА РАЙДЕРА — и вот почему они здесь, а не в другом паке
@ -101,17 +111,29 @@
СВОЙ пак и своё окно пере-снапшота; строки 253/273 — швы, требующие согласования с платформой;
256267 — то, что зона чинит прямо сейчас в незакрытой приёмке прошлого пака.
## 6. Предметные оси ревью — ТРИ, и у каждой свой артефакт
⚠ Оси, а не список проверок: у каждой названо, ЧЕМ ты предъявишь результат. Сессия вправе заменить ось
с аргументом.
· **Деньги под параллельностью.** Артефакт: прогон с `waves.workers > 1` и потолком, которого хватает
на часть волны — леджер до и после, показывающий, что допущенное доработано, а новое не начато.
· **Детерминизм резюме после частичной волны.** Артефакт: прогон, остановленный деньгами, и его
резюм — совпадение чекпойнтов и отсутствие пере-оплаты доработанного.
· **Шов наружу.** Артефакт: событие `ceiling` с недостающей суммой, прочитанное СО СТОРОНЫ ПОТРЕБИТЕЛЯ
(не из своего кода), и версия потока, сдвинутая по правилу шва.
## 5. Пять рисков реализации — названы зоной, проверить ОБЯЗАН
(а) защёлка на уровне волны, не у воркера · (б) учёт объёма (`volume.go`, `bound()`/`reconcile`): частичная
волна под потолком — НОВАЯ форма для этих счётчиков, и они уже дважды ловили ложные числа · (в) событие
`ceiling` и exit 4/`paused` обязаны сработать так же и не задержаться · (г) дневной потолок делит ветку с
книжным — проверить явно · (д) эскалационный хоп: убедиться, что его деградация не опирается на саму отмену.
**Каждый из пяти предъявляется ЯВНО:** в отчёте — команда и её вывод либо посадка и её цвет. «Проверил» без артефакта не считается: это ровно та вырожденная форма, которую канон велит ловить в промтах.
## 6. Мандат самопроверки ИСПОЛНЕНИЕМ
Батарея + **собственные адверсариальные посадки ВНЕ списка автора** через `cmd/tmmutate` (каталог 151
запись — пополняешь). **Субагенты РАЗРЕШЕНЫ явно**, модель называй имени. Обязательное условие приёмки:
Батарея + **собственные адверсариальные посадки ВНЕ списка автора** через `cmd/tmmutate` (каталог 152
записи — пополняешь). **Субагенты РАЗРЕШЕНЫ явно**, модель называй имени. Обязательное условие приёмки:
посадка **«под потолком волна погасила допущенный вызов» предъявлена КРАСНОЙ**.
**SURVIVED не является находкой, пока не показано, что посадка ВООБЩЕ меняет поведение** — норма
@ -119,6 +141,19 @@
⚠ Мутации — только на ЗАКОММИЧЕННОМ дереве; на копии — `GOFLAGS=-buildvcs=false`.
⚠ Каталог гонять ЦЕЛИКОМ: протухшая запись даёт `ROTTED` и не кладёт прогон.
## 6-бис. ОБЯЗАТЕЛЬНОЕ ДЛЯ КОДОВОГО ПРОМТА — пять строк канона
· **Перед отчётом сверь КАЖДЫЙ клейм с результатом инструмента ЭТОЙ сессии.** Не с памятью и не с тем,
что было верно вчера.
· **Последний абзац отчёта — план или обещание? Сделай это СЕЙЧАС**, а не пиши как намерение.
· **Править или удалять тест/голден/гейт ради зелени — НЕДОПУСТИМО.** Несогласие с тестом — пинг, не
правка. ⚠ Запрет про МОТИВ (`D39.183`): правка, вызванная сменой поведения, которая ЗАКАЗАНА этим
промтом, — обслуживание, и держать протухший тест не нужно; такая правка ОБЪЯВЛЯЕТСЯ в отчёте — что
изменилось в поведении, какой тест это описывал, куда уехала гарантия.
· **Дифф `^func Test` — ИСПОЛНЕНИЕМ, не по памяти:** приложи вывод, а не утверждение «тестов стало больше».
· **Интервальная самоверификация субагентом** в длинной сессии, против ЯВНЫХ критериев, а не «посмотри,
всё ли хорошо».
## 7. Записка-план ДО работы
Комплектность против заказа — механически, таблицей: пункт → файл → тест → посадка. До первой правки.

View file

@ -30,7 +30,7 @@
## 3. Карта чтения — ПЯТЬ позиций
1. `platform/docs/platform-PROGRESS.md` — секция «⚠ ПИНГ ОРКЕСТРАТОРА №22 (04.09, вечер)» и твой же
«ОТВЕТ НА ПИНГ №22»: одиннадцать пунктов ревизии, из них один опровергнут зоной.
«ОТВЕТ НА ПИНГ №22»: ⚠ читай ЗАГОЛОВОК ответа буквально: «ЧЕТЫРЕ ЕЁ ПУНКТА ОКАЗАЛИСЬ ЧАСТИЧНО НЕВЕРНЫ», один опровергнут целиком (`PD-439`); «одиннадцать» там — число НАХОДОК, а не пунктов.
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`.
@ -46,12 +46,15 @@
зовутся ни разу — проверь сам и используй, если подходят. Восстановление обязано быть **предъявлено
исполнением**, а не описано: подними копию из бэкапа и покажи, что книга и баланс на месте. ⚠ Без
предъявленного восстановления бэкап — это вера, а не механизм.
**РЕШАЕШЬ САМ И АРГУМЕНТИРУЕШЬ:** куда складывать, с какой частотой, сколько поколений держать, чем
проверять целостность копии. Промт задаёт ТРЕБОВАНИЕ (переживаемость потери диска и предъявленное
восстановление), а не режим.
**(2) ДЕЛАЙ РОВНО ТАК — ПОЧИНИ РАНТБУК ДЕПЛОЯ.** Он ставит CLI в одно место и велит указать переменную
на другое, которого не создаёт ⇒ `MarkerArgv` пуст ⇒ **`503` на каждый старт и резюм**. ⚠ Без переменной
вовсе всё работало бы (сиблинг-дефолт). Там же объяснение отсутствия переменной описывает симптом,
которого в коде нет. **Условие приёмки: рецепт исполнен ДОСЛОВНО на чистой машине или в контейнере, и
прогон стартовал.** Заодно — остальные пункты ревизии, подтверждённые твоей же проверкой.
прогон стартовал.** **РЕШАЕШЬ САМ И АРГУМЕНТИРУЕШЬ, что из остатка ревизии брать в этот пак:** зона уже отработала её и закрыла бо́льшую часть своим лендингом `9e978d6`; здесь остаётся то, что она пометила как незакрытое. Возьми, назови поимённо взятое и подпиши пропущенное пропуском — «остальное» без списка промтом не заказывается.
**(3) РЕШАЕШЬ САМ И АРГУМЕНТИРУЕШЬ — ДВЕРЬ ДЛЯ НЕ-БРАУЗЕРНОГО КЛИЕНТА.** Развилка: выдавать
`bearerToken` (контракт его объявляет) ЛИБО признать, что до разморозки фронта единственный путь —
@ -60,32 +63,77 @@
Выбор — твой, довод — в отчёт, канон правит оркестратор.
**(4) ДЕЛАЙ РОВНО ТАК — ИМЯ КНИГИ.** `updateBook` описан в каноне и не смонтирован (`PATCH` в роутере
ноль). Смонтировать; титул уезжает в выданный файл. ⚠ Это первое, что видит человек, открыв книгу в
ноль). Смонтировать. ⚠ **РЕШАЕШЬ САМ И АРГУМЕНТИРУЕШЬ:** как новое имя доезжает до `dc:title` (движок берёт
его из `book.yaml`, который платформа пишет с `O_EXCL` и никогда не перезаписывает) и что происходит с
уже собранными выдачами — пере-собирать, помечать или оставить. ⚠ Это первое, что видит человек, открыв книгу в
читалке.
**(5) ДЕЛАЙ РОВНО ТАК — СНЯТЬ ЛОЖНУЮ ПОДПИСЬ «ЗНАКОВ».** Счётчик считает руны ПОТОКА ЗАПИСИ файла: для
UTF-8 txt это и есть знаки, для EPUB — руны zip-архива, для GB18030/UTF-16 приближение. Либо переименуй
в размер файла, либо возьми число из манифеста движка. ⚠ Фронт заморожен — подпись правится при
UTF-8 txt это и есть знаки, для EPUB — руны zip-архива, для GB18030/UTF-16 приближение. **ДЕЛАЙ РОВНО ТАК: сделай подпись честной СВОИМИ силами** — поле переименовывается или снимается с
выдачи так, чтобы ни одна поверхность не называла его «знаками».
**Ветку «взять число из манифеста движка» в ЭТОМ паке НЕ бери:** сегодня манифест несёт только
`source_bytes`, а знаки по юниту появятся ТОЛЬКО после движкового пака (его строка 278). Зависимость
названа, чтобы ты не начала с невозможного.
**Переименование ПОЛЯ КОНТРАКТА своей рукой не делай** — §2 это запрещает: состав минора выносишь в
отчёт. Своей рукой правится то, что живёт в зоне: источник числа и то, что уходит на провод. ⚠ Фронт заморожен — подпись правится при
разморозке, ЧИСЛО у тебя раньше.
**(6) НЕ ДЕЛАЙ:** не трогай форму заказа (главы/знаки/деньги) — она ратифицирована `D39.196` и идёт
**(6) ЗНАЙ ПРО ШОВ, но НЕ строй его здесь:** параллельный движковый пак добавляет в событие `ceiling`
поле «сколько не хватило» и двигает минор потока. Твоя сторона читает поток и обязана пережить новое
поле, не сломавшись; строить его ЧТЕНИЕ — работа пака формы заказа, а не этого. Если твой парсер
падает на незнакомом поле — это дефект и его чинить здесь.
**(7) НЕ ДЕЛАЙ:** не трогай форму заказа (главы/знаки/деньги) — она ратифицирована `D39.196` и идёт
СВОИМ паком после движкового гейта; не двигай форму манифеста; не правь канон своей рукой; не гаси
общий Postgres на стенде (запрет и довод — в твоём же `UP.sh`).
## 5. Мандат самопроверки ИСПОЛНЕНИЕМ
Батарея зоны при всех условиях хоста + **живая проба каждой построенной поверхности**. **Субагенты
Батарея зоны при всех условиях хоста + **живая проба каждой построенной поверхности, с командой и её
выводом В ОТЧЁТЕ**. Названо поимённо, чтобы букву не удовлетворяло «дёрнул и посмотрел»:
· бэкап — восстановление из копии, и книга с балансом предъявлены на восстановленном;
· рантбук — исполнен ДОСЛОВНО на чистой машине или в контейнере, прогон стартовал;
· дверь — вход в ПРОД-конфигурации (не `dev-login`) и один защищённый запрос под этим входом;
· имя книги — EPUB, скачанный через дверь, с новым `dc:title` внутри. **Субагенты
разрешены явно**, модель называй именем. ⚠ **Правка документации — изменение с побочными эффектами и
требует ревью исполнением ровно как код**: норма куплена твоим же замером — восемь агентов по СВОЕЙ
работе нашли больше, чем одиннадцать по чужой, и «якоря пере-нацелены» протухло от следующей же правки.
**Утверждение о проверке живёт ровно до следующей правки** — гоняй линтер ЦИКЛОМ до чистоты, а не
одним проходом.
## 5-бис. ЧТО В ПАК НЕ ВОШЛО — подписано пропуском
⚠ Канон велит подписывать пропуск пропуском, а не умалчивать. Того же класса «можно ли пускать
человека», но НЕ здесь:
· **строка 271** (правки банка едут в system-промпт дословно) — ЗОНА ДВИЖКА, идёт райдером в
параллельном движковом паке. ⚠ **Пока она открыта, обещание «внешнего пользователя можно пускать»
неполно** — знай это, когда будешь писать итог.
· **строка 198** (апгрейд движка стирает замечания читателя) и **строка 254** (пустой файл → интейк
уничтожает загрузку) — та же природа, отложены сознательно: обе требуют согласования с движком.
· **`PD-424`** (живой прогон с намертво заблокированной расплатой невидим — деньги висят) и **`PD-438`**
(владение потоком не переживает свип) — открытые major твоей зоны. Не утверждаю, что они не первые;
утверждаю, что пропуск сознателен, и если ты считаешь иначе — скажи пингом ДО работы.
## 6. Предметные оси ревью
Восстановление из бэкапа (исполнением, не чтением) · рантбук на чистой машине · путь входа в
прод-конфигурации · побочные эффекты доковых правок.
## 6-бис. ОБЯЗАТЕЛЬНОЕ ДЛЯ КОДОВОГО ПРОМТА — пять строк канона
Этот пак пишет код (бэкап, монтирование ручки, вход), значит они действуют.
· **Перед отчётом сверь КАЖДЫЙ клейм с результатом инструмента ЭТОЙ сессии** — не с памятью и не с
тем, что было верно вчера. ⚠ У тебя есть свежий замер, зачем это: твои же восемь агентов по СВОЕЙ
работе нашли больше, чем одиннадцать по чужой.
· **Последний абзац отчёта — план или обещание? Сделай это СЕЙЧАС.**
· **Править или удалять тест/гейт ради зелени — НЕДОПУСТИМО.** Несогласие — пинг. ⚠ Запрет про МОТИВ
(`D39.183`): правка, вызванная ЗАКАЗАННОЙ этим промтом сменой поведения, — обслуживание, и она
ОБЪЯВЛЯЕТСЯ в отчёте.
· **Дифф `^func Test` — ИСПОЛНЕНИЕМ, не по памяти:** приложи вывод.
· **Интервальная самоверификация субагентом** против ЯВНЫХ критериев. ⚠ И твоя же норма, купленная
вчера: **утверждение о проверке живёт ровно до следующей правки** — линтер и гейты гонять ЦИКЛОМ до
чистоты, а не одним проходом.
## 7. Записка-план ДО работы
Комплектность против заказа таблицей: пункт → носитель → проба, которой предъявишь.

View file

@ -74,8 +74,11 @@
## ⚠ ОТКРЫТАЯ РАЗВИЛКА 04.09: КНИГУ НЕЛЬЗЯ ДОЧИТАТЬ — разбор трёх независимых чтений, решение за владельцем
> **Статус: НЕ РАТИФИЦИРОВАНО.** Это разбор, а не контракт: ниже нет ни одного решения, только сходящаяся
> фактура и названная развилка. Носитель дефекта — `PD-440`/`PD-441` в регистре платформы. Собрано по
> **СТАТУС ИЗМЕНИЛСЯ 05.09: ФОРМА ЗАКАЗА РАТИФИЦИРОВАНА — `D39.196`.** Решение владельца: баланс аккаунта — ДЕНЬГАМИ и виден;
> ползунок потолка — деньгами; рядом ответ «хватает на полную книгу или нет»; второй ползунок объёмом — ГЛАВЫ когда книга
> распозналась, ЗНАКИ когда нет (о нераспознавании говорим ЯВНО); старт = холд с баланса; отдельная кнопка «книга целиком».
> Тем же решением ОТОЗВАН запрет «денежных полей в UI нет вовсе». Строки исполнения — 276283.
> **Ниже — РАЗБОР, из которого решение выросло.** Он не контракт: при конфликте с `D39.196` побеждает нота. Носитель дефекта — `PD-440`/`PD-441` в регистре платформы. Собрано по
> прямому указанию владельца «посоветуйся с зонами и со старшей моделью»: читали независимо зона движка,
> зона платформы и внешний рецензент другой модели; расхождения между ними названы, а не сглажены.