Apply the controller's dofix in the backend zone: restore what the cut lost and repair what it broke, including places where the text asserted the wrong thing about the code
This commit is contained in:
parent
40730551e1
commit
e031b23b49
2 changed files with 24 additions and 9 deletions
|
|
@ -5,7 +5,9 @@
|
|||
она не переписывается задним числом (дополнения помечаются датой и словом «дописано»).
|
||||
|
||||
> ⚠ **Дописано 02.09 — указатели и исходы; тело записки НЕ переписывается (это пре-регистрация).**
|
||||
> Промт переехал: `docs/archive/prompts/BACKEND_MONEY_HONESTY_SESSION_PROMPT.md`. Прожитый дамп пака из
|
||||
> ⚠ Путь `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**.
|
||||
> ⚠ Два места ниже опровергнуты собственной же работой пака, и оба разобраны в отчёте:
|
||||
|
|
|
|||
|
|
@ -21,8 +21,12 @@
|
|||
|
||||
⚠ **Батарея НЕ детерминированно зелена на этой машине, и это НЕ пак** — читай до пере-рана, иначе
|
||||
красное будет отнесено на пак. Два пред-существующих `-race`-флейка в `internal/store` (§10 п.7)
|
||||
срабатывают примерно раз на 2–4 полных прогона. **Красное ИМЕННО в этих двух тестах ожидаемо; любое
|
||||
другое красное — регрессия.** Полное объяснение их поведения и атрибуция ЗАМЕРОМ против HEAD — §31.
|
||||
срабатывают примерно раз на 2–4 полных прогона: замерено `go test ./... -race -count=1` ×4 → прогон 1
|
||||
чист, прогон 2 — `TestKillMinus9LosesAtMostOneCall`
|
||||
(`backend/internal/store/kill9_test.go:201=func TestKillMinus9LosesAtMostOneCall`). **Красное ИМЕННО в
|
||||
этих двух тестах ожидаемо; любое другое красное — регрессия.** ⚠ Частота — из ЭТОГО замера, а не из §31:
|
||||
там ДРУГОЙ прогон (чередующийся A/B против HEAD, 5 раундов, обе стороны 5×FAIL), и он закрывает
|
||||
АТРИБУЦИЮ — «флейк пред-существует паку», — а не частоту.
|
||||
|
||||
На дереве пака: `make battery` — `EXIT=0` на чистом прогоне (skip: `TestMinerFullBookParity`,
|
||||
`TestHelperEventsRun`, `TestHelperKillLoop`); `make battery-stand` **без единого `TM_*_DIR`** — `EXIT=2`,
|
||||
|
|
@ -592,7 +596,7 @@ YAML не накладывает ничего. Новый гоняет прои
|
|||
| **4.7** алиас судится по НАБОРУ | ✅ сделано; **углублено по §30 п.2** | проверка перенесена ПОСЛЕ свёртки и судит РЕЗУЛЬТАТ — именно поэтому два отказа (терм + его алиас) остаются законными: к концу вызова алиасом никто не владеет. ⚠ Побега «своя поверхность проверяется по ВХОДНОМУ документу» в коде НЕТ — он был заведён и снят как вредный (§30 п.2), заводить заново не надо. Мутации P, AB |
|
||||
| **4.8** перевёрнутое окно глав | ✅ сделано | отказ с цитатой окна; открытая верхняя граница законна. Мутация O |
|
||||
| **4.9** честность про непогасший стоп | ✅ **исполнено фактом, не предсказанием** | `signature{map,surfaces,undecided}` по правилу самого прогона; `undecided>0` — факт, `undecided==0` — явно не обещание. Аргумент в §22. Мутация U |
|
||||
| **4.10** SIGTERM | ✅ сделано; сомнение записки СНЯТО замером; **довод в комментарии исправлен по ревью** | ctx проверяется дважды, стоп не пишет ничего, exit 5. Несущий довод — НЕ длина непрерываемого участка (её оценка была неверна в 15 раз), а то, что записи идут последними и атомарно: убитый где угодно до них процесс не записал ничего. Мутация S (пин целится именно во вторую проверку) |
|
||||
| **4.10** SIGTERM | ✅ сделано; сомнение записки СНЯТО замером; **довод в комментарии исправлен по ревью** | ctx проверяется дважды, стоп не пишет ничего, exit 5. Несущий довод — НЕ длина непрерываемого участка (первая редакция назвала её «≈20 с, два порядка внутри stop grace»; замер §29 п.1 дал **308.2 с** на 28 900 минимальных `decline`, которые байтовый кап пускает, — оценка неверна в 15 раз), а то, что записи идут последними и атомарно: убитый где угодно до них процесс не записал ничего. Мутация S (пин целится именно во вторую проверку) |
|
||||
| **4.11** десять посадок, пин на каждую | ✅ 9 из 10 + доказательство по десятой | A–H, E1–E3 краснеют своими пинами; **G недостижима за первым гейтом — доказано, не предположено** (§17), вместо поведенческого пина запинен контракт функции |
|
||||
| **4.12** цепь в репозитории | ✅ сделано | `internal/pipeline/bankchain_test.go`, $0 на фейковом провайдере, ОДИН проект от стопа до погасшего стопа; форма фикстуры (2 терма = 1 approve + 1 decline) проверяется как ПРЕМИСА; ограничение синтетики названо в комментарии; карта подписи после погасшего стопа зафиксирована явно |
|
||||
| **4.13** девять мелочей | ✅ по каждой решение и довод | §21: починено 3, отклонено с аргументом 5, пингом 1 |
|
||||
|
|
@ -780,11 +784,14 @@ nil, …)` → true и **записала бы файл нулевой длин
|
|||
|
||||
### Что ревью подтвердило исполнением (не переделывал)
|
||||
|
||||
Нормализация идемпотентна на 50-строчном адверсариальном корпусе и КОПИРУЕТ · ложного провала
|
||||
`renderProved` найти не удалось (400 000 случайных строк по алфавиту управляющих/пунктуации/CJK,
|
||||
невалидный UTF-8, NUL, C0/C1, одиночные суррогаты) · оба капа не off-by-one · после второй проверки
|
||||
контекста ничего не пишется, `defer lock.Release()` стоит сразу за захватом · общности не нарушено ни
|
||||
одной новой строкой · `TestDecisionByBankID` и пин на инъективность действительно независимы ·
|
||||
Нормализация идемпотентна на 50-строчном адверсариальном корпусе и КОПИРУЕТ (проверено мутацией выхода
|
||||
при неподвижном входе) · ложного провала `renderProved` найти не удалось (400 000 случайных строк по
|
||||
алфавиту управляющих/пунктуации/CJK, невалидный UTF-8, NUL, C0/C1, одиночные суррогаты) · оба капа не
|
||||
off-by-one · после второй проверки контекста ничего не пишется, `defer lock.Release()` стоит сразу за
|
||||
захватом · общности не нарушено ни одной новой строкой · `TestDecisionByBankID` и пин на инъективность
|
||||
действительно независимы (все три константы пере-считаны в Python по спецификации из комментария
|
||||
`TermID`, а не из его же выхода —
|
||||
`backend/internal/membank/decisions_test.go:348=Computed outside Go, from the spec in TermID's own comment`) ·
|
||||
`SeedProblems.Error()` побайтно равен прежнему склеенному сообщению.
|
||||
|
||||
⚠ **Унаследованное замечание, не дефект пака:** всё, на чём эта дверь ключуется, проходит через
|
||||
|
|
@ -1183,6 +1190,12 @@ retired-ключи ловятся полями, а не голым strict-decode
|
|||
- **Клауза «ничего не произошло» у классов 10–14 сужена до «состояния КНИГИ»**: пред-полётный бэкап
|
||||
`translate` пишется ДО отказа 12/13. И **`preexisting_problems: []` в кап-отчёте ≠ «проверено чисто»** —
|
||||
оговорено на самом поле: при отказе по капу проверка не выполнялась.
|
||||
- **Баннер стопа выдавал РАЗМЕР карты за число НОВЫХ термов** — под моделью флажка карта намеренно
|
||||
смешивает новое и ранее предъявленное-нерешённое, поэтому счётчик не имеет права называться «new».
|
||||
`WaveSignatureStop.Error` переписан, а `renderSignatureStop` печатает нейтральное
|
||||
`backend/cmd/tmctl/render.go:171=(%d term(s) in the map)`; довод стоит рядом с кодом
|
||||
(`backend/cmd/tmctl/render.go:169=must not be labelled «new»`). ⚠ Поимённой разметки новизны в карте
|
||||
НЕТ — продуктовая поверхность, не этот пак; сюда и ссылается §41.
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue