# Записка-план — пак «ДЕНЬГИ И ЧЕСТНОСТЬ ВЫДАЧИ» (§7.1 промта) Сессия `textmachine-main-8a`, роль БЭКЕНД. Промт — `docs/BACKEND_MONEY_HONESTY_SESSION_PROMPT.md` (оркестратор №21, 31.08). Написана **ДО первой правки** дерева; ниже — состояние на момент написания, она не переписывается задним числом (дополнения помечаются датой и словом «дописано»). > ⚠ **Дописано 02.09 — указатели и исходы; тело записки НЕ переписывается (это пре-регистрация).** > ⚠ Путь `docs/BACKEND_MONEY_HONESTY_SESSION_PROMPT.md` в шапке ВЫШЕ мёртв — файла по нему нет; тело > записки не переписывается, поэтому адрес живёт здесь: промт переехал в > `docs/archive/prompts/BACKEND_MONEY_HONESTY_SESSION_PROMPT.md`. Прожитый дамп пака из > секции «Бэкенд» `docs/PROGRESS.md` снят 02.09 — исходы живут в `MONEY_HONESTY_REPORT.md`. > Пак ЗАЛЕНДЖЕН `bb541a8` и принят **D39.182**; закон раскрытия ратифицирован **D39.181**. > ⚠ Два места ниже опровергнуты собственной же работой пака, и оба разобраны в отчёте: > «22.6%» (§4) — ответ на ДРУГОЙ вопрос, величина завышения = **29.2%** (отчёт §5.4); пред-регистрированная > посадка A9 (§2, «воспроизведение перерасхода фикстурой + посадка») НЕ написана — долг назван прямо > в отчёте §8 п.1. **Личность старта.** HEAD `9d27c0b`, дерево ЧИСТО (`git status --short` → пусто). Go-модуль `backend/`. Пак **$0**: платных вызовов не содержит и не планирует. --- ## 0. ВЕРДИКТ ПО СНАПШОТУ ДЛЯ A1 — первым пунктом, как велит §7.1 **Вопрос:** двигает ли снапшот правка дефолта `regenerate_echo_before_escalate`? **Ответ: НЕ ДВИГАЕТ.** Основание — определение промта §5 («снапшот-движущее = всё, что попадает в payload `buildSnapshotID`»), проверенное ИСПОЛНЕНИЕМ, а не памятью: ``` $ grep -c 'Retries' backend/internal/pipeline/snapshot.go 0 ``` Полный перечень полей payload снят командой (`sed -n '/^\tsnap := struct {/,/^\t}{/p' … | grep 'json:"'`) — 22 верхнеуровневых поля плюс `[]stageSnap`; ни `Retries`, ни `RegenerateBeforeEscalate`, ни `RegenerateEchoBeforeEscalate` среди них нет, и в `repairSnap` их тоже нет. ⚠ **Грепа МАЛО, и я это знаю:** он проверяет ИМЯ, а не поведение. Поэтому вердикт получает МАШИННУЮ проверку по §5: snapshot ID снимается на фикстуре **ДО** моего диффа и **ПОСЛЕ** него, и равенство предъявляется в отчёте командой. До предъявления равенства вердикт считается PLAUSIBLE, а не подтверждённым. ⇒ A1 остаётся в ярусе A и делается в этом паке. --- ## 1. Что беру и в каком порядке Пак ДВУХФАЗНЫЙ (§1 промта), и порядок продиктован стоп-точкой: ### ФАЗА 1 — ЗАКОН РАСКРЫТИЯ (главный результат, НЕ ратифицирую сама) 1. Корпус из десяти строк (A0·A2·A3а·A3б·A4·A5·A6·A7·A8·A10) грунтуется В КОДЕ — по агенту на строку, каждый с адверсариальным проверяющим поверх (веер описан в отчёте). 2. Карта потребителей и каналов снимается ГРЕПОМ по `platform/internal/` (read-only) — промт прямо велит проверить перечень самой, потому что его автор один раз уже назвал его неверно. 3. Закон пишется файлом `backend/docs/DISCLOSURE_LAW_DESIGN.md`: классы фактов · назначение потребитель→канал · гейт · разбор ВСЕХ десяти строк корпуса. 4. Специально ищу **ОДИННАДЦАТЫЙ экземпляр** вне таблицы промта — это лучший результат фазы (§1). 5. Дизайн уезжает ПИНГОМ оркестратору №21 (`textmachine-main-5f`, жив по `ListAgents`) и секцией отчёта. **К правкам A0/A2/A3/A4/A5/A6/A7/A8/A10 не приступаю до ответа.** ### ФАЗА 2 — пока жду ратификации (не зависит от закона и его не предрешает) 6. **A1** — дефолт эхо-регена. Гейтится вердиктом §0 выше. 7. **A9** — строка 233 (трата терминолога масштабируется книгой). 8. **A11** — строка 232 (ось «свежий/пере-делка» из полноты строк, а не из факта отгрузки). Порядок 6→7→8 — как велит промт §2 («A9–A11 по остатку ресурса, в этом порядке» — с поправкой, что A1 идёт раньше: он назван в §1 как то, что берётся «пока ждёшь», и он самый дешёвый по риску). ### Если ратификация придёт 9. Применяю закон к десяти экземплярам. Если не придёт — сдаю фазу 1 + три пункта, и это ПОЛНОЦЕННЫЙ результат (§1 дословно). **Закон сама не изобретаю, чтобы успеть.** ## 2. Чем докажу каждое — оси предъявления (§6) | пункт | чем предъявляю | |---|---| | A1 | (а) равенство snapshot ID на фикстуре ДО/ПОСЛЕ диффа — командой; (б) посадка на САМУ ручку: сегодня у `RegenerateEchoBeforeEscalate` **НОЛЬ тестов** (`grep -rn RegenerateEchoBeforeEscalate --include=*_test.go` → пусто), значит тест ловит и то, что ручка вообще работает; (в) экономика — числами, ПЕРЕ-СНЯТЫМИ мной из БД прогона read-only, а не из отчёта | | A9 | воспроизведение перерасхода фикстурой + посадка | | A11 | посадка: конфиг с ДОБАВЛЕННОЙ стадией на дочитанной книге обязан перестать печатать «N unit(s) NEVER delivered» | | фаза 1 | закон обязан объяснить ВСЕ десять строк и назвать канал каждой; гейт — исполнимый, а не намерение | **Дисциплина посадок (§6, D39.171):** каждая посадка сажается на состояние ДО правки и обязана краснеть АДРЕСНО. Посадка на ТЕКСТ сообщения обязана предъявить, что она краснеет при подмене именно этой строки, — ассерт по подстроке в общем лог-буфере даёт тихо-зелёное. ## 3. Чего НЕ делаю (границы, объявленные заранее) - **Ничего снапшот-движущего** — ярус B не трогаю: эффорт редактора, потолок вывода (`finish=length` как ПРИЧИНА в A0), свёртка числа ре-генов, метка-из-хеша в A8. - **Новый код выхода не завожу** (A5 — пинг с домашней заготовкой). - **Числами прогона ставку не калибрую** (n=3, `D39.165 ⛔г`) — экономика A9 идёт как механизм, не как число. - **Не коммичу** — лендит оркестратор. Пишу только в `backend/` и в свою секцию «Бэкенд» в `docs/PROGRESS.md`. - `books/gu-zhenren/coldrun-v16/` — только чтение, БД только `file:…?mode=ro`. - Тест/голден/гейт ради зелени не правлю; несогласие — пинг. ## 4. Что уже сделано на момент записки (чтения, не правки) Карта чтения §4 пройдена целиком (5 позиций). Пере-снято мной из БД прогона read-only (`sqlite3 'file:…?mode=ro'`), а не взято из отчёта: - `ok=0 AND cost_usd>0` — **11 строк, $0.12316089**, при `SUM(cost_usd)` книги **$0.43610966** ⇒ **28.24%**. Цифры промта подтверждены. - `estimated=1` — **0 строк** (биллящихся decode-fail не было). - Эскалационные хопы: **5**, `$0.10330452`, средний `$0.02066090`. - Эхнутые черновые попытки (flash, `ok=0`): **5**, `$0.01070788`, средняя `$0.00214158`. - Успешные черновые flash: **15**, средняя `$0.00382851`. ⚠ **И находка, которой в промте НЕТ** (заведена как кандидат в одиннадцатый экземпляр): срез `ok=0 AND cost_usd>0` **НЕ ЕСТЬ «оплаченный впустую»** — в нём смешаны три разные вещи, и на живых деньгах все три присутствуют: `degraded=cjk_artifact` у роли **classifier** (3 строки, `$0.00918827`) — это МИС-ВЕРДИКТ (строка бэклога 105), вызовы удались; `degraded=sanitizer_stripped` у редактора (1 строка, `$0.01865424`) — текст ОТГРУЖЕН; и только остальное (`$0.09531838`) действительно выброшено. Наивная поверхность A0 назвала бы оператору на 22.6% больше потерь, чем было.