Re-point six anchors in the engine's own docs, five of them broken before the pack and hidden until the docs joined the lint roots

This commit is contained in:
heaven 2026-09-05 15:33:13 +03:00
parent f71c4dcca3
commit e7d6b3f8bb
2 changed files with 15 additions and 8 deletions

View file

@ -37,11 +37,11 @@
⚠ **И закон не импортируется извне — он уже наполовину написан В ЭТОМ КОДЕ, просто применён точечно.**
Две нормы живут в комментариях и не имеют ни имени, ни гейта:
1. **«unknown, not zero»** — `internal/pipeline/quality.go:228`=`the UNSIGNED BANK count is unknown, not zero`,
`internal/pipeline/status.go:684`=`the unsigned-term count is unknown, not zero`,
`internal/pipeline/status.go:733`=`reported as unknown, not as none`,
`internal/pipeline/bookbuild.go:221`=`(reported as unknown, not as none)`.
2. **Фигура едет С БАЗИСОМ**`RebillBasis` (`internal/pipeline/status.go:249`=`RebillBasis string`),
1. **«unknown, not zero»** — `internal/pipeline/quality.go:233`=`the UNSIGNED BANK count is unknown, not zero`,
`internal/pipeline/status.go:768`=`the unsigned-term count is unknown, not zero`,
`internal/pipeline/status.go:851`=`reported as unknown, not as none`,
`internal/pipeline/bookbuild.go:227`=`(reported as unknown, not as none)`.
2. **Фигура едет С БАЗИСОМ**`RebillBasis` (`internal/pipeline/status.go:275`=`RebillBasis string`),
четыре значения `pending|stored|none|failed`
(`internal/pipeline/bankmaterialize.go:360-363`), и её докстринг формулирует ровно закон:
*«RebillBasis says WHAT the two figures above are a projection of, because the number alone cannot

View file

@ -1,6 +1,6 @@
# Отчёт бэкенд-пака «денежный стоп перестаёт быть аварией» (05.09)
> **Промт:** `docs/BACKEND_MONEYSTOP_SESSION_PROMPT.md`. **Зона записи:** `backend/` + своя секция
> **Промт:** `docs/archive/prompts/BACKEND_MONEYSTOP_SESSION_PROMPT_2026-09-05.md` (сдан и заархивирован 05.09, `D39.206`). **Зона записи:** `backend/` + своя секция
> `docs/PROGRESS.md`. **Дерево НЕ закоммичено, лендинг за оркестратором.**
>
> ⚠ **В рабочем дереве лежат ЧУЖИЕ правки — вся `platform/`** (параллельный платформенный пак
@ -197,7 +197,8 @@ $ git grep -c "StepMax" HEAD -- backend/internal/runevents/ # 0
- `docs/product-requirements.md` (ПТ-35): отзывая 05.09 «запрет денег на экране», владелец оставил
остальное дословно — «цены моделей, стоимость стадий **и вызовов**». Сузить это до «пользовательской
поверхности» зона не вправе, и я это сужение приняла.
- `docs/BACKEND_MONEYSTOP_SESSION_PROMPT.md:78` применяет запрет к **ПРОВОДУ**, а не к экрану: «Наружу —
- `docs/archive/prompts/BACKEND_MONEYSTOP_SESSION_PROMPT_2026-09-05.md:82`=`цены моделей, стадий и вызовов не выходят`
применяет запрет к **ПРОВОДУ**, а не к экрану: «Наружу —
только НЕДОСТАЮЩАЯ сумма; цены моделей, стадий и вызовов не выходят». ⇒ замер верификатора попал не в
реализацию поля, а **в посылку ЗАКАЗА**, а на этот случай норма однозначна: стоп и вопрос владельцу.
- ссылка на ратификацию «D39.106 §2» — овер-атрибуция: `05-decisions-index.md:167` говорит, что D39.106 —
@ -513,6 +514,8 @@ $ grep -rh '^func Test' backend --include=*_test.go | wc -l # 1213
| 54 | ⛔ **ПОЧИНКУ V2-7 НЕ ДЕРЖАЛ НИ ОДИН ТЕСТ — предъявила ВЫЖИВШАЯ ПОСАДКА, а не чтение.** В `internal/chunk/*_test.go` слова `Structure` не было вовсе; два случая в `priceprojection_test.go:144-146` — КРАЙНИЕ (только form feed → `declared`, только заголовки → `detected`), а СМЕШАННОГО — одного случайного `\f` среди найденных заголовками глав — не держал никто. Ровно в нём дефект и жил | ПОЧИНЕНО — `TestTXTStructureIsDeclaredOnlyWhenTheFormatDrewEVERYBoundary` (вся линейка из трёх), посадка красна именно подтестом `one_stray_form_feed_among_matched_headers`. ⚠ Класс: **починка, у которой есть посадка, но нет теста, выглядит как покрытая ровно до полного прогона каталога** |
| 55 | ⛔ **МОЯ СОБСТВЕННАЯ ПРОВЕРКА «отличаются только комментариями» ДАЛА ЛОЖНУЮ ЗЕЛЕНЬ.** Утилита-стриппер не собралась (`error obtaining VCS status`), оба выхода вышли ПУСТЫМИ, `diff` сравнил пустоту с пустотой и напечатал «ИДЕНТИЧНО» — и я чуть не оперлась на это, доказывая законность склейки двух прогонов | ПОЧИНЕНО — размер выхода печатается рядом с вердиктом, пустой выход стал отдельной красной ветвью; результат пере-снят и верен (5020/5020 и 2710/2710 байт). ⚠ Тот же класс, что §6.4, но теперь на ИНСТРУМЕНТЕ ПРОВЕРКИ: **проверка, которая не умеет провалиться, ничего не проверяет** |
| 56 | ⛔ **ДВА КОММЕНТАРИЯ ОДНОГО КОММИТА ПРОТИВОРЕЧИЛИ ДРУГ ДРУГУ О ФОЛБЭКЕ ЦЕНЫ (F7 приёмки).** `manifest.go` объявлял фолбэк ИНВАРИАНТОМ («без него книга без сайдкара молча отчитывается без цены»), а `status.go` в шапке того же поля утверждал обратное: «absent when there is no current manifest — у фолбэка есть текст, но нет гарантии сайдкара, что он описывает ЭТУ резку». Второе описывало код ровно до того момента, как ТОТ ЖЕ коммит добавил фолбэк и сюда не вернулся. Потребитель построил бы «нет сайдкара ⇒ нет цены» и показал бы покупателю пустоту на той самой поверхности, с которой тот и спрашивает | ПОЧИНЕНО — шапка `StatusReport.Price` пере-написана: цена есть и БЕЗ сайдкара; совпадение двух поверхностей держится тем, что оба конца гоняют ОДНУ деривацию (`readModelPrice``projectBook`), а не тем, что один отказывается отвечать; и фолбэк описывает эту резку ПО ПОСТРОЕНИЮ, а не по гарантии. ⚠ Правка комментарная, предъявлено машинно: `status.go` без комментариев побайтно идентичен (20012 vs 20012) |
| 57 | ⛔ **ЯКОРНЫЙ ЛИНТ ДОКОВ Я НЕ ГОНЯЛА НИ РАЗУ ЗА СМЕНУ, а свой — после каждого касания кода.** Проверяла `mutations.json` собственным скриптом и не заметила, что у зоны есть ВТОРОЙ корпус якорей и готовый гейт на него (`docs/scripts/counts.py --lint`, зовётся пре-коммит-хуком при ЛЮБОМ коммите с непустым индексом). На дереве он показывал **6 битых якорей в `backend/docs/`**, из них 5 — долг зоны, старше моего пака (замерено: `RebillBasis string` стоял на 275 ещё в `81a89e9^`, а якорь звал 249), и 1 — свежая, от переноса промта в архив | ПОЧИНЕНО — все шесть пере-нацелены по СОДЕРЖИМОМУ, линт `0 проблемных якорей в 113 живых доках`, сверяемых по токену стало 194 → 200. ⚠ Класс: **у зоны было ДВА множества якорей и одна привычка** — та, которую я завела сама, а не та, под которую в репозитории уже стоял гейт. Собственная дисциплина вытеснила существующую |
| 58 | ⛔ **МОЯ ФОРМУЛИРОВКА ЛЕЧЕНИЯ КЛИНА НАЗЫВАЛА СМЕНОЙ ТО, ЧТО ЕЮ НЕ ЯВЛЯЕТСЯ.** §9 п.1 предлагал «деградацию отказа резервации на attempt 0 (**смена D2.3**)» — а `D2` УЖЕ кончается флагом («ретрай с бо́льшим `max_tokens` до капа, потом флаг»), и денежная ветка до него просто не доходит: ошибка уходит наверх из цикла попыток раньше. То есть это ДОСТРОЙКА существующей диспозиции, а не правка ратифицированного — разница решает, нужна ли ратификация вообще | ПОЧИНЕНО — сверено по телу ноты, формулировка заменена, добавлено требование оркестратора: **причина флага обязана ОТЛИЧАТЬСЯ от исчерпания регенераций**, иначе пометка врёт о причине (`D39.204`, строка бэклога 291). ⚠ Поймал оркестратор чтением журнала; я предлагала правку ратифицированной ноты, не открыв её тела |
### 6.4. ⛔ ЧЕТВЁРТЫЙ КЛАСС ЛОЖНОЙ ЗЕЛЕНИ, найденный в этой смене
@ -741,7 +744,11 @@ go test ./internal/chunk/ -run 'TestTXTStructureIsDeclaredOnly' -v
удвоенным бюджетом, юнит не доделается НИКОГДА, а прогон уходит exit 4 при полностью доставленных
купленных юнитах. Мой `step_max_usd` это НАЗЫВАЕТ (ретраи в нём именно поэтому), `Finished.Money`
называет доставленное и отложенное — но клин остаётся. Лечение: (а) деградация отказа ретрая во флаг
attempt 0 (смена D2.3) либо (б) минимальная покупка платформы ≥ `step_max_usd`. Выбор не мой и не
attempt 0 — ⚠ **и это НЕ смена D2, как я записала сперва:** тело ноты
`D2` («ретрай с бо́льшим `max_tokens` до капа, ПОТОМ ФЛАГ») уже кончается флагом, а денежная
ветка до него не доходит — ошибка уходит наверх из цикла попыток раньше. Значит это ДОСТРОЙКА
существующей диспозиции, а не её правка, и требование к ней одно: **причина флага обязана
ОТЛИЧАТЬСЯ от исчерпания регенераций**, иначе пометка врёт о причине (`D39.204`, строка 291) — либо (б) минимальная покупка платформы ≥ `step_max_usd`. Выбор не мой и не
оркестратора; строка бэклога с ОБОИМИ путями — в моей секции `docs/PROGRESS.md`.
2. ⚠ **⭐-уточнение оркестратора («защёлка на свежем, продолжение на ретрае») ОТКЛОНЕНО, и не по цене.**
Его посылка — «текст у юнита ЕСТЬ, он лишь флагован» — ложна: см. п. 1, строки `chunk_status` нет,