115 lines
11 KiB
Markdown
115 lines
11 KiB
Markdown
# Записка-план — пак «ДЕНЬГИ И ЧЕСТНОСТЬ ВЫДАЧИ» (§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% больше потерь, чем было.
|