textmachine/backend/docs/MONEY_HONESTY_PLAN-NOTE.md

11 KiB
Raw Blame History

Записка-план — пак «ДЕНЬГИ И ЧЕСТНОСТЬ ВЫДАЧИ» (§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 — пока жду ратификации (не зависит от закона и его не предрешает)

  1. A1 — дефолт эхо-регена. Гейтится вердиктом §0 выше.
  2. A9 — строка 233 (трата терминолога масштабируется книгой).
  3. A11 — строка 232 (ось «свежий/пере-делка» из полноты строк, а не из факта отгрузки).

Порядок 6→7→8 — как велит промт §2 («A9A11 по остатку ресурса, в этом порядке» — с поправкой, что A1 идёт раньше: он назван в §1 как то, что берётся «пока ждёшь», и он самый дешёвый по риску).

Если ратификация придёт

  1. Применяю закон к десяти экземплярам. Если не придёт — сдаю фазу 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>011 строк, $0.12316089, при SUM(cost_usd) книги $0.4361096628.24%. Цифры промта подтверждены.
  • estimated=10 строк (биллящихся 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% больше потерь, чем было.