From c98127a44aacfdbcdfa146275bb1d4316dac8415 Mon Sep 17 00:00:00 2001 From: heaven Date: Sat, 5 Sep 2026 01:40:48 +0300 Subject: [PATCH] Take a second outside pass on the prompts: block numbers that no longer identified a block, a rider ordering work already done while the missing half had no owner, and a quotation of a sentence nobody wrote --- docs/BACKEND_MONEYSTOP_SESSION_PROMPT.md | 50 +++++++++++++--------- docs/PLATFORM_OPERATIONS_SESSION_PROMPT.md | 25 ++++++++--- docs/README.md | 2 +- docs/architecture/15-money-path.md | 2 +- 4 files changed, 52 insertions(+), 27 deletions(-) diff --git a/docs/BACKEND_MONEYSTOP_SESSION_PROMPT.md b/docs/BACKEND_MONEYSTOP_SESSION_PROMPT.md index 9a3e343d..395ad6fa 100644 --- a/docs/BACKEND_MONEYSTOP_SESSION_PROMPT.md +++ b/docs/BACKEND_MONEYSTOP_SESSION_PROMPT.md @@ -92,11 +92,13 @@ **(Р1) ДЕЛАЙ РОВНО ТАК — строка 271: правки банка пользователя едут в SYSTEM-сообщение ДОСЛОВНО.** Тело собирается конкатенацией `src + " → " + dst`, `dst` приходит с пользовательской двери и получает ровно один `TrimSpace`; предела длины нет, управляющие символы не запрещены. ⇒ `dst` с переводами -строки дописывает свои строки внутрь системного блока КАЖДОГО платного вызова. ⚠ Ратифицированный -инвариант проекта звучит противоположно: «текст книги и любая веб-выдача = untrusted DATA, никогда — -инструкции… **сегодня выполняется КОНСТРУКЦИЕЙ**» — конструкция его больше не выполняет, потому что -появилась пользовательская запись, открывающаяся в system-роль. Лечение: предел длины, запрет -управляющих, обрамление как ДАННЫХ, и адверсариальная проба, что вставка не становится инструкцией. +строки дописывает свои строки внутрь системного блока КАЖДОГО платного вызова. ⚠ Ратифицированный инвариант проекта (**D25**, фактура — `docs/research/17-external-critique.md` §A10.2) требует, чтобы текст +книги и любая внешняя выдача были ДАННЫМИ, а не инструкциями, и до сих пор это держалось САМОЙ КОНСТРУКЦИЕЙ — писать в +промпт было некому. Теперь есть: появилась пользовательская запись, открывающаяся в system-роль. ⚠ Формулировку в кавычках +не ищи — её нет, это пересказ; ссылайся на ноту и ресёрч. Лечение: предел длины, запрет управляющих, обрамление как ДАННЫХ. +⛔ **АРТЕФАКТ ПРИЁМКИ НАЗВАН: тест батареи, в котором `dst` несёт переводы строк и текст, похожий на системную инструкцию, +и он предъявлен КРАСНЫМ до починки и зелёным после.** Плюс посадка в каталог `tmmutate`: снятие предела длины ИЛИ снятие +запрета управляющих обязано краснеть. Без этих двух пункт не сдан. ⚠ Это обязано быть закрыто ДО того, как внутрь пустят первого внешнего человека, — а платформенный пак, который его пускает, идёт ПАРАЛЛЕЛЬНО твоему. @@ -104,24 +106,20 @@ `mining.contrast_path` — единственный вход контура; артефакт крупный, генерируется из jieba, в репозитории его нет и быть не должно. Три гарда добавлены прошлым паком, но **развёртывание обязано положить файл рядом с конфигом ПЕРЕД выкаткой**, и сегодня об этом не сказано там, где читает -оператор. ⚠ Твоя половина — сделать отказ читаемым и назвать рецепт в носителе движка; операторскую -половину рантбука чинит платформа своим паком, ей об этом сказано. +оператор. ⚠ **ПРОВЕРЬ ПЕРВЫМ ДЕЛОМ, СДЕЛАНО ЛИ УЖЕ:** блок «⛔ РАЗВЁРТЫВАНИЕ: `mining.contrast_path`» стоит в +`backend/configs/pipeline-c1.yaml` (греп `РАЗВЁРТЫВАНИЕ`), то есть движковая половина, возможно, ЗАКРЫТА. Если да — скажи +это в отчёте и НЕ делай заново; твоя работа тогда сводится к тому, чтобы отказ загрузки НАЗЫВАЛ рецепт, а не только путь. +⚠ Операторская половина (рантбук деплоя обязан положить артефакт ПЕРЕД выкаткой) — в `platform/deploy/README.md`, и её +сегодня НЕТ (`grep -c contrast platform/deploy/README.md` → 0). Она заказана платформенному паку; если к твоему отчёту её +там всё ещё нет — назови это незакрытой дырой, а не чужой зоной. -⚠ **Что в райдеры НЕ вошло и почему:** строка 283 (структура глав для выдачи) — гейт беты, но это +⚠ **Строки 198 и 254 — БЕСХОЗНЫ, и это надо знать обеим сторонам:** 198 (апгрейд движка стирает замечания читателя) и +**254 (пустой файл ⇒ интейк УНИЧТОЖАЕТ загрузку — потеря пользовательских данных на первом же шаге)** требуют согласования +движка и платформы, и потому не взяты ни здесь, ни в платформенном паке. Пропуск подписан сознательно; считаешь иначе — пинг ДО работы. +⚠ **Что ещё в райдеры НЕ вошло и почему:** строка 283 (структура глав для выдачи) — гейт беты, но это СВОЙ пак и своё окно пере-снапшота; строки 253/273 — швы, требующие согласования с платформой; 256–267 — то, что зона чинит прямо сейчас в незакрытой приёмке прошлого пака. -## 6. Предметные оси ревью — ТРИ, и у каждой свой артефакт - -⚠ Оси, а не список проверок: у каждой названо, ЧЕМ ты предъявишь результат. Сессия вправе заменить ось -с аргументом. -· **Деньги под параллельностью.** Артефакт: прогон с `waves.workers > 1` и потолком, которого хватает - на часть волны — леджер до и после, показывающий, что допущенное доработано, а новое не начато. -· **Детерминизм резюме после частичной волны.** Артефакт: прогон, остановленный деньгами, и его - резюм — совпадение чекпойнтов и отсутствие пере-оплаты доработанного. -· **Шов наружу.** Артефакт: событие `ceiling` с недостающей суммой, прочитанное СО СТОРОНЫ ПОТРЕБИТЕЛЯ - (не из своего кода), и версия потока, сдвинутая по правилу шва. - ## 5. Пять рисков реализации — названы зоной, проверить ОБЯЗАН (а) защёлка на уровне волны, не у воркера · (б) учёт объёма (`volume.go`, `bound()`/`reconcile`): частичная @@ -141,7 +139,19 @@ ⚠ Мутации — только на ЗАКОММИЧЕННОМ дереве; на копии — `GOFLAGS=-buildvcs=false`. ⚠ Каталог гонять ЦЕЛИКОМ: протухшая запись даёт `ROTTED` и не кладёт прогон. -## 6-бис. ОБЯЗАТЕЛЬНОЕ ДЛЯ КОДОВОГО ПРОМТА — пять строк канона +## 6-бис. Предметные оси ревью — ТРИ, и у каждой свой артефакт + +⚠ Оси, а не список проверок: у каждой названо, ЧЕМ ты предъявишь результат. Сессия вправе заменить ось с аргументом. +⛔ **ВСЕ ТРИ ПРЕДЪЯВЛЯЮТСЯ ЗА $0** — на фейк-клиенте батареи и голдене. **Платный прогон в этот пак НЕ входит**: он идёт +только по санкции владельца с названным потолком, и промт её не даёт. +· **Деньги под параллельностью.** Артефакт: прогон с `waves.workers > 1` и потолком, которого хватает + на часть волны — леджер до и после, показывающий, что допущенное доработано, а новое не начато. +· **Детерминизм резюме после частичной волны.** Артефакт: прогон, остановленный деньгами, и его + резюм — совпадение чекпойнтов и отсутствие пере-оплаты доработанного. +· **Шов наружу.** Артефакт: событие `ceiling` с недостающей суммой, прочитанное СО СТОРОНЫ ПОТРЕБИТЕЛЯ + (не из своего кода), и версия потока, сдвинутая по правилу шва. + +## 6-тер. ОБЯЗАТЕЛЬНОЕ ДЛЯ КОДОВОГО ПРОМТА — пять строк канона · **Перед отчётом сверь КАЖДЫЙ клейм с результатом инструмента ЭТОЙ сессии.** Не с памятью и не с тем, что было верно вчера. diff --git a/docs/PLATFORM_OPERATIONS_SESSION_PROMPT.md b/docs/PLATFORM_OPERATIONS_SESSION_PROMPT.md index fe1145a7..bce26b6c 100644 --- a/docs/PLATFORM_OPERATIONS_SESSION_PROMPT.md +++ b/docs/PLATFORM_OPERATIONS_SESSION_PROMPT.md @@ -20,7 +20,10 @@ · **Рантбук деплоя, исполненный дословно, даёт инстанс, отказывающий каждому прогону.** · **Имя книги в выданном файле — исходноязычное**, и починить его пользователь не может. -**Результат:** после твоего пака внешнего пользователя можно пускать, не рискуя его работой и деньгами. +**Результат:** после твоего пака — **вместе с райдером Р1 движкового пака** (правки банка едут в +system-промпт дословно) — внешнего пользователя можно пускать, не рискуя его работой и деньгами. +⚠ Твой пак ОДИН этого не даёт, и итог писать так нельзя: дыра в промпт живёт в зоне движка и заказана +параллельно. ## 2. Зона записи и git @@ -69,8 +72,12 @@ читалке. **(5) ДЕЛАЙ РОВНО ТАК — СНЯТЬ ЛОЖНУЮ ПОДПИСЬ «ЗНАКОВ».** Счётчик считает руны ПОТОКА ЗАПИСИ файла: для -UTF-8 txt это и есть знаки, для EPUB — руны zip-архива, для GB18030/UTF-16 приближение. **ДЕЛАЙ РОВНО ТАК: сделай подпись честной СВОИМИ силами** — поле переименовывается или снимается с -выдачи так, чтобы ни одна поверхность не называла его «знаками». +UTF-8 txt это и есть знаки, для EPUB — руны zip-архива, для GB18030/UTF-16 приближение. **ДЕЛАЙ РОВНО ТАК — законная внутризонная форма ОДНА: не отдавай число там, где оно неточно.** +`character_count` уже опционально (`*int64` у тебя, `character_count?` у фронта), значит зона вправе +ПРОСТО НЕ ЗАПОЛНЯТЬ его для входов, где счёт лжёт (EPUB — руны zip; GB18030 и UTF-16 — приближение), и +оставить для UTF-8 txt, где он и есть число знаков. Это не трогает контракт: поле остаётся, меняется +только то, когда оно есть. +⛔ **Переименовывать или снимать поле НЕ надо** — это правка контракта, которую §2 запрещает твоей рукой. ⛔ **Ветку «взять число из манифеста движка» в ЭТОМ паке НЕ бери:** сегодня манифест несёт только `source_bytes`, а знаки по юниту появятся ТОЛЬКО после движкового пака (его строка 278). Зависимость названа, чтобы ты не начала с невозможного. @@ -78,12 +85,20 @@ UTF-8 txt это и есть знаки, для EPUB — руны zip-архив отчёт. Своей рукой правится то, что живёт в зоне: источник числа и то, что уходит на провод. ⚠ Фронт заморожен — подпись правится при разморозке, ЧИСЛО у тебя раньше. -**(6) ЗНАЙ ПРО ШОВ, но НЕ строй его здесь:** параллельный движковый пак добавляет в событие `ceiling` +**(6) ДЕЛАЙ РОВНО ТАК — РАЗВЁРТЫВАНИЕ БАНКОВОГО КОНТУРА В РАНТБУКЕ.** `mining.contrast_path` — +единственный вход контура; артефакт крупный, генерируется из jieba, в git его нет и быть не должно, а +**рантбук о нём молчит** (`grep -c contrast platform/deploy/README.md` → 0). ⇒ Первая выкатка после +лендинга поднимет инстанс, у которого банковый контур не исполняется вовсе. Рантбук обязан сказать: +положить артефакт рядом с конфигом ПЕРЕД выкаткой, откуда его взять, и чем проверить. ⚠ Движковая +половина (отказ загрузки называет путь) уже стоит в `backend/configs/pipeline-c1.yaml` — не дублируй, +сошлись. + +**(7) ЗНАЙ ПРО ШОВ, но НЕ строй его здесь:** параллельный движковый пак добавляет в событие `ceiling` поле «сколько не хватило» и двигает минор потока. Твоя сторона читает поток и обязана пережить новое поле, не сломавшись; строить его ЧТЕНИЕ — работа пака формы заказа, а не этого. Если твой парсер падает на незнакомом поле — это дефект и его чинить здесь. -**(7) НЕ ДЕЛАЙ:** не трогай форму заказа (главы/знаки/деньги) — она ратифицирована `D39.196` и идёт +**(8) НЕ ДЕЛАЙ:** не трогай форму заказа (главы/знаки/деньги) — она ратифицирована `D39.196` и идёт СВОИМ паком после движкового гейта; не двигай форму манифеста; не правь канон своей рукой; не гаси общий Postgres на стенде (запрет и довод — в твоём же `UP.sh`). diff --git a/docs/README.md b/docs/README.md index 1db9bbd8..4b3616d6 100644 --- a/docs/README.md +++ b/docs/README.md @@ -22,7 +22,7 @@ | Роль | Активный промт | Статус | |---|---|---| | Оркестратор | [ORCHESTRATOR_SESSION_PROMPT.md](ORCHESTRATOR_SESSION_PROMPT.md) | роль и нормы; счётчик роли — CURRENT-STATE | - | Бэкенд | [BACKEND_MONEYSTOP_SESSION_PROMPT.md](BACKEND_MONEYSTOP_SESSION_PROMPT.md) | **ВЫДАН 05.09** — «денежный стоп перестаёт быть аварией»: строки 277 · 261 · 262 · 278 + ДВА РАЙДЕРА по пере-проверке бэклога (271 дыра в system-промпт · 251 артефакт контура). **ГЕЙТ для формы заказа (D39.196)** — пока отказ резерва гасит допущенное, в стену упирается любой путь. ⚠ Предыдущий пак (вайр-батч) заленджен КОДОМ, но приёмка НЕ закрыта: зона чинит девять пунктов, эррата 04.09-д | + | Бэкенд | [BACKEND_MONEYSTOP_SESSION_PROMPT.md](BACKEND_MONEYSTOP_SESSION_PROMPT.md) | **ВЫДАН 05.09** — «денежный стоп перестаёт быть аварией»: строки 277 · 278 + ДВА РАЙДЕРА по пере-проверке бэклога (271 дыра в system-промпт · 251 артефакт контура). ⚠ 261/262 в пак НЕ входят — они в незакрытом дофиксе другой сессии зоны. **ГЕЙТ для формы заказа (D39.196)** — пока отказ резерва гасит допущенное, в стену упирается любой путь. ⚠ Предыдущий пак (вайр-батч) заленджен КОДОМ, но приёмка НЕ закрыта: зона чинит девять пунктов, эррата 04.09-д | | Платформа | [PLATFORM_OPERATIONS_SESSION_PROMPT.md](PLATFORM_OPERATIONS_SESSION_PROMPT.md) | **ВЫДАН 05.09** — «пустить внутрь можно»: бэкапы (строка 269, единственная находка дня БЕЗ частичного исхода) · дверь для не-браузерного клиента (270) · блокер рантбука деплоя · имя книги (274) · ложная подпись «Знаков» (282). ⚠ Форму заказа НЕ трогает — она идёт своим паком ПОСЛЕ движкового гейта | | Полигон | [POLYGON_EXP2223_REDO_SESSION_PROMPT.md](POLYGON_EXP2223_REDO_SESSION_PROMPT.md) (отложенный — [POLYGON_PACKAGE4_SESSION_PROMPT.md](POLYGON_PACKAGE4_SESSION_PROMPT.md), строка 85) | фаза Д ИДЁТ; ⚠ живой носитель курса — в `eval/dovodka/`, какой именно называет зона (⚠ [POLYGON_PHASE_D_HANDOFF.md](POLYGON_PHASE_D_HANDOFF.md) — перекрытый снимок, читать не как курс) | | Фронт | активного НЕТ | **ЗОНА ЗАМОРОЖЕНА** (D39.136 п.2 + D39.147: разморозка отдельным словом владельца, не привязана к P7); перечень первого касания — в зонном журнале | diff --git a/docs/architecture/15-money-path.md b/docs/architecture/15-money-path.md index f538a23e..b63fe00a 100644 --- a/docs/architecture/15-money-path.md +++ b/docs/architecture/15-money-path.md @@ -72,7 +72,7 @@ --- -## ⚠ ОТКРЫТАЯ РАЗВИЛКА 04.09: КНИГУ НЕЛЬЗЯ ДОЧИТАТЬ — разбор трёх независимых чтений, решение за владельцем +## РАЗБОР 04.09: КНИГУ НЕЛЬЗЯ ДОЧИТАТЬ — три независимых чтения; форма заказа РЕШЕНА владельцем 05.09 (`D39.196`) > **⚠ СТАТУС ИЗМЕНИЛСЯ 05.09: ФОРМА ЗАКАЗА РАТИФИЦИРОВАНА — `D39.196`.** Решение владельца: баланс аккаунта — ДЕНЬГАМИ и виден; > ползунок потолка — деньгами; рядом ответ «хватает на полную книгу или нет»; второй ползунок объёмом — ГЛАВЫ когда книга