diff --git a/docs/architecture/05-decisions-log.md b/docs/architecture/05-decisions-log.md index dd50866b..3c30f1f0 100644 --- a/docs/architecture/05-decisions-log.md +++ b/docs/architecture/05-decisions-log.md @@ -39,6 +39,7 @@ > далёк в обоих случаях, вывод приёмки не меняется, но в каноне стоит число из гейта, а не из грепа. > ⚠ **Эррата 02.09-а (D39.182, «три блокера приёмки закрыты») — у ТРЕТЬЕГО блокера не осталось носителя.** Заголовок и §1 ноты держат счёт «3 блокера», но отчёт пака называет сегодня только два: ревизия доков 02.09 сняла из `backend/docs/MONEY_HONESTY_REPORT.md` разделы «Сверка с заказом по пунктам» и «ПРИЁМКА: три блокера и пять дофиксов» (проверка: греп `^## 9.11` и `^## 1\.` по файлу — пусто, при живом `^## 6.2`). **Третий блокер — вердикт «предъявлено» поверх неработающего пути:** в снятом §1 отчёта вердикты **A0** и **A6** стояли «предъявлено» на НЕПОЛНОЙ проверке и были сняты вместе с блокером 2, а пере-предъявлены посадками `TestAHealthyGlossaryPassIsNotReportedAsALoss` и `TestTheCONSENTGateSeesAnInPlaceSourceEdit` (грепаются по `backend/`). Дословный текст снятых разделов — `git show bd2077b:backend/docs/MONEY_HONESTY_REPORT.md`. Тело ноты не переписывается (D23.3). +> ⚠ **Эррата 04.09-в (D39.194 п.3) — МИНОР 0.10.0 БЫЛ РАТИФИЦИРОВАН БЕЗ СВОЕЙ КОДОВОЙ ПОЛОВИНЫ, и это дефект акта оркестратора, а не зоны.** Канон уехал на `0.10.0` (`58bca19`), а сборка платформы продолжала объявлять `0.9.0`, потому что константу и рукописную карту причин никто не поднял: ратификация создала обязанность ВНУТРИ зоны и осталась жить только в голове оркестратора. Цена названа замером зоны — **один рабочий день, всё это время код на проводе был ложным**: шестнадцатая причина `off_target_lang` доезжала читателю как `unspecified` со ступенью «взгляд», хотя канон уже объявлял `wrong_language`. Поймала ЗОНА своей пере-проверкой ПОСЛЕ того, как оркестратор сказал «приёмка закончена»; гейт `platform/internal/gates/contract_test.go` сравнивает константу сборки с каноном НА ДИСКЕ и покраснел сразу — второй копии числа в зоне нет, и это окупилось. Починено `7e204db` (5 файлов). ⚠ **Класс, предсказанный `PD-246` и потому НЕ закрытый им:** словарь причин движковый, карта платформы рукописная, релизы независимые — окно рассинхрона закрывает механизм, которого нет. **Норма:** ратификация, порождающая обязанность в зоне, выдаётся зоне ЯВНО и тем же актом; «я решил, значит зона узнает» — не передача. > ⚠ **Эррата 04.09-б (D39.191) — ЧЬЯ ЭТО ПЕТЛЯ. Тело ноты не назвало исполнителя, и оркестратор №22 прочитал её как СВОЮ обязанность; владелец поправил в тот же час: «я имел в виду не твоё ревью, а ревью от самого бэкенда — зачем тебе то ревьювить, если это не твоя зона».** Читать так: **петлю крутит ЗОНА над своей же работой** — сессия, сдавшая пак, обязана поднять независимый адверсариальный круг по СВОЕМУ дофиксу против ИСХОДНЫХ пунктов заказа и повторять, пока круг не вернётся чистым с предъявленными посадками. Приёмка оркестратора при этом НЕ отменяется и петлёй не является: она второй рубеж при ЛЕНДИНГЕ (пост-хок адверсариальная верификация, мандат промтов), и её задача — судить сданное, а не вести зону за руку по её же коду. Разделение важно ценой: оркестратор, ревьюирующий чужую зону вместо неё, становится узким местом и отнимает у зоны обязанность, которую она несёт лучше — она знает свой код. Тело ноты не переписано (D23.3). > ⚠ **Эррата 04.09-а (D39.189 п.2б) — «обязательный `--ceiling-usd` на движковом вызове» верно для ПРЯМОГО прогона движка и НЕИСПОЛНИМО на пути через API платформы.** Там флаг никто не ставит руками: платформа выводит число сама — `bookCap = committed + increment` (`platform/internal/runs/spawn.go`, греп `func (m meter) bookCap`), где `increment` считается по ставке `DefaultPerChapter = 30_000` ($0.03, `platform/internal/pricing/pricing.go`), заниженной ×4.47 (D39.179 п.1). Сессия, исполняющая букву ноты, полезла бы крутить `TM_PLATFORM_USD_PER_CHAPTER` — хак под тест, запрещённый каноном. **Читать так:** потолок платного пака на API-пути задаётся ГРАНТОМ тест-аккаунту на объявленную сумму (`tmplatformctl grant --user --usd `) — холд делает перерасход невозможным по построению, — а путь до завершённой книги идёт цепочкой «покупка → пауза по потолку → пополнение → новый прогон», что и есть третий сценарий строки 216 и D39.176 п.3. Тело ноты не переписано (D23.3). Найдено контролёром при сверке плана, пере-проверено оркестратором по коду.