Record the acceptance of the platform fix pack, its four new register rows and the pack order that came out inverted

This commit is contained in:
Claude (backend session) 2026-08-22 17:38:59 +03:00
parent ab3e22be1e
commit 6b0e064463
4 changed files with 46 additions and 5 deletions

File diff suppressed because one or more lines are too long

View file

@ -1,4 +1,4 @@
# Реестр D-нот — карта актуальности v2 (D1D39.153; строка 167; титул — носитель головы, бампать при каждом аппенде — испр. оркестратором №17 15.08 по аудиту: отставал на четыре ноты)
# Реестр D-нот — карта актуальности v2 (D1D39.154; строка 167; титул — носитель головы, бампать при каждом аппенде — испр. оркестратором №17 15.08 по аудиту: отставал на четыре ноты)
> Одна строка на КАЖДУЮ ноту журнала решений: № · дата · суть · статус · где тело · темы. Ведёт оркестратор при лендингах: новая нота = новая строка ТЕМ ЖЕ коммитом (полноту сторожит `docs/scripts/counts.py --check`). Суть и статус здесь — НАВИГАЦИЯ, не контракт: при конфликте побеждает ТЕЛО ноты (живой [`05-decisions-log.md`](05-decisions-log.md) → слайсы `../archive/architecture/05-decisions-*.md`). Несущие эрраты к фактам старых нот живут в шапке живого D-лога — их читать ОБЯЗАТЕЛЬНО, реестр их не дублирует. Темы (для грепа оси «какой закон по X»): деньги · шов · банк · промпт · судья · гейты · контракт · платформа · фронт · полигон · ToS · общность · процесс · нарезка · голос · инфра · модели.
> Родословная: прозаическая карта D1D39.28 (ревизии D31D38.2) пересобрана в реестр докс-паком 167 (09.08.2026, №16): извлечение 6+6 агентов по worksheet `../archive/reports/DOC_AUDIT_INVENTORY_2026-08-09.md`, полнота сверена скриптом против заголовков всех шести файлов. «тело: жив» = живой D-лог; «слайс N» = `../archive/architecture/05-decisions-N.md`.
@ -206,3 +206,4 @@
| D39.151 | 17.08 | Владелец выбрал вариант А: маркер поколения отдельной колонкой на `checkpoints` НЕ строится, строка 195 закрыта как самостоятельная стройка и переселена осью (г) «идентичность оплаченной работы» в дизайн-пак 124 (гейт — его триггеры: 185/МАСШТАБ/внешний потребитель числа); внешний разбор опроверг две посылки оркестратора — колонка НЕ даёт тождества ($0-пере-пин законно несёт старую цену на новом снапшоте, бэкфилла нет ⇒ вывод остаётся навсегда) и «семья 49+124+195» слишком широка (49 = легальность переиспользования, 195 = честность учёта); настоящий корень — отсутствие связи «строка ↔ оплатившие её вызовы»; срочности нет под контрактом D39.150, остаток чинится без схемы строками 197/194 (194 миграции НЕ требует — RoleSpentUSD ключуется по роли) | ЖИВОЕ: ось (г) пака 124; строки 197/194 | жив | деньги владелец бэкенд |
| D39.152 | 20.08 | Контракт API v0 **0.4.0 РАТИФИЦИРОВАН** (синк с платформой по её записке, 14 пунктов AN; author≠ratifier соблюдён контрактной сессией; условие закрытия PD-327 наступило, САМА строка регистра ждёт правки зоной — пункт 10 фикс-листа); рубеж исполнен ревьюером другой модели (чтение обеих версий целиком, «ратифицировать с правками», корневой enum 16 значений не тронут); четыре текстовые правки внесены оркестратором при ратификации (сеттер `stop_requested` в `stopRun` · стухшая фраза компаньона §6в A против его же аддендума · «cleared by УСПЕШНЫЙ resume» · приписка третьего случая к таблице резюма); пункт G («сделано» = последний проход этого деплоя) ратифицирован как шаг-независимый — рамка снята владельцем 20.08 требованием, чтобы форма пайплайна не была видна клиенту; ⚠ клейм зоны «ломающая правка одна» верен для диффа ТИПОВ и неточен поведенчески — против 0.3.0 расходятся ЧЕТЫРЕ места; оговорка про пер-термные решения расширена с `decline` на всю ручку (временная, снимается строкой 199а); следующий минор (сквозная полоса, 200) не втиснут — пока фронт заморожен, миноры бесплатны | ЖИВОЕ: канон 0.4.0 | жив | контракт платформа фронт владелец |
| D39.153 | 20.08 | Приёмка и лендинг P7 платформы (пять актов, читающая поверхность): **ПРИНЯТ С ФИКС-ЛИСТОМ**; шесть линз в изоляции + пере-раны и 8 собственных посадок оркестратора (поймано 7); батарея 18 пакетов EXIT=0 скипов 0, реестр 327/65 открытых без major, тестов 532 (не 533), семь удалённых имён имеют преемников; замер разворота 00016→00022 пере-выведен независимо (джойн 14.6 · счётчик 5.3 · без счётчика 2.9 мс) — разворот законен, но процент назван тремя носителями по-разному; НЕ поймана дыра: снятие `structure_version`/`revision` из `emitFrame` проходит всю батарею; ратифицированы долг-с-арендой на материализацию (§33/§34), `edit_wave` как монотонное свойство КНИГИ от объявления движка (§35), владелец клейма идемпотентности + тождество дайджестом, halt с аккаунта, счётчик замечаний на главе, демонтаж гейта полноты банка; новые строки 198203; решения владельца — sqlc берём (+ разбор собранных запросов Postgres'ом, которого в предложении зоны не было), живой прогон ПОСЛЕ холодного, сквозная полоса прогресса; ⚠ эррата к D39.144 п.2 (пер-термная формула рождена в ДВИЖКЕ 19.07 как лечение ливлока, контрактная линия изобрела из неё ГЕЙТ 04.08); `ContractVersion` оркестратором НЕ правился — первый пункт зонного фикс-листа | ЖИВОЕ: фикс-лист в пинге №18 зонного журнала; строки 198203 | жив | платформа приёмка контракт шов деньги |
| D39.154 | 22.08 | Приёмка и лендинг P8-FIX платформы (фикс-лист приёмки P7 + врезанный первым блокер свипа): **ПРИНЯТ**; `PD-169` — единственная строка регистра, солгавшая ДВУМ приёмкам, — закрыт четырьмя механизмами (разделение прохода на фазы · отсрочка с бэкоффом на выбравший бюджет прогон · порог `StalledAfter` с гейджем и `runs --stalled` · терминальный вердикт оператора `run abandon`), оба числа стали ручками и `RunBudget` присвоен впервые; вся цепь пере-проверена ЖИВОЙ пробой оркестратора (`FAILS 6` → гейдж 1 → `--stalled` с настоящей ошибкой движка), деньги двумя путями из сырого леджера сошлись до цента и холд вернулся целиком; батарея 18 пакетов EXIT=0, линтер 0 issues, тестов 561 против 532; ⚠ «скипов 0» НЕ воспроизведён — третий, неназванный гейт батареи (менеджер systemd), `PD-374`; одиннадцать собственных посадок мутаций, убито восемь, выжили три и различены руками: `StalledAfter` законно (носитель один), `maxAttempts``PD-373` (второй носитель прозой в рантбуке), `truncateReason` в `DeferRun``PD-372` (пин на функции, ни один из четырёх вызовов не проверен); находка вне карты `PD-371` (исключение «стоп перевешивает отсрочку» без границы, измерено живьём); ⚠ объявлена ОШИБКА харнесса приёмки — две посадки дали ложное «выжила» из-за не того пакета; спил пер-термной подписи банка принят, пол поверхности 15→14 сдвинут явно и гейт СРАБОТАЛ; `PD-370` уезжает открытым мажором (контрактная половина — ломающий минор 0.4.0→0.5.0); порядок паков вышел ОБРАТНЫМ очереди — названная цена перестановки НЕ заплачена, зато §4.7 релея пуст | ЖИВОЕ: `PD-370`/`PD-371`/`PD-372`/`PD-373`/`PD-374`; строка 199(а) ждёт ратификации; читающий пак не запускался | жив | платформа приёмка свип деньги мутации |

View file

@ -1,4 +1,4 @@
# Журнал решений оркестратора — контракт D1D39.153 (живой файл: карта · эрраты · живые тела · голова D39.124+ (подрезка D39.139); тела закрытых эр — в слайсах `docs/archive/architecture/`, указатель ниже; реестр всех нот — `05-decisions-index.md`)
# Журнал решений оркестратора — контракт D1D39.154 (живой файл: карта · эрраты · живые тела · голова D39.124+ (подрезка D39.139); тела закрытых эр — в слайсах `docs/archive/architecture/`, указатель ниже; реестр всех нот — `05-decisions-index.md`)
> **КАРТА АКТУАЛЬНОСТИ (ревизия D31, продлена до D38.2 [12.07]; исторические записи ниже НЕ переписываются — дисциплина D23.3).** Работая с контрактом (греп номера: живой файл → слайсы, целиком НЕ читать — D39.125), держи под рукой, что чем перекрыто:
> ⚠ **Эррата 09.08 (D39.125):** D39.111 п.1 предписывал промту S3 «максимум = баланс МИНУС открытые холды» — формула ОШИБОЧНА (вычитание дважды), исправлена D39.115 п.2(а): максимум = Balance КАК ЕСТЬ; тело D39.111 живёт ниже в этом файле (голова D39.106+).
@ -580,3 +580,27 @@
**(з) Диагноз, который важнее списка.** Самодиагноз оркестратора («триаж глазами вместо машинной сверки») объясняет три находки из двадцати трёх и уводит от причины: остальные двадцать — это места, где рекомендация БЫЛА исполнена ровно один раз, и машинная сверка их бы не поймала. Настоящая форма: **стандарт держится в КОДЕ и обрушивается в ПРОЗЕ О ФАКТАХ** — единственной среде, где утверждение не опровергнет ни компилятор, ни тест, ни гейт. Все код-якоря оркестратора резолвятся, отказ править `ContractVersion` был верным, дыра `emitFrame` найдена им же — а рядом в прозе рождается «ручка появилась 13.08» со ссылкой на молчащую ноту. ⚠ И форма ЗАРАЗНА: линза-аудитор с чек-листом пометила два самых ложных клейма репозитория как ЗАКРЫТЫЕ, потому что проверила, что ПРАВКА СУЩЕСТВУЕТ, а не что КЛЕЙМ ИСТИНЕН. Отсюда норма, которую эта нота вносит: **«ревью исполнением» значит исполнить САМ КЛЕЙМ** — открыть цитируемую строку, пере-мерить число, дойти до первоисточника ссылки, — а не подтвердить, что редактирование приземлилось; и применять это к прозе о фактах ровно так же строго, как к коду.
**10. Что НЕ проверено (obstacle приёмки).** Живого перевода через платформу не было НИ РАЗУ — всё после «прогон стартовал и остановился» покрыто батареей против живого Postgres, но с движком-заглушкой (строка 202). Четыре оси не смотрел никто и никогда: деньги и леджер целиком · вход/сессии/CSRF · очередь и джобы · метрики — пак их не менял, а все приёмки смотрели дифф; это отдельная работа, не довесок. PD-297 зона не взяла осознанно (мерить на корпусной книге). Сессия P7 ЗАКРЫТА владельцем 20.08; промт отработан → `platform/docs/archive/` с баннером-исходом. (20.08.2026, оркестратор №18) ✅
## D39.154 — ПРИЁМКА И ЛЕНДИНГ P8-FIX ПЛАТФОРМЫ (фикс-лист приёмки P7 + врезанный первым блокер свипа; лендинг `31f1f82`, токен якоря `ab3e22b`): **ПРИНЯТ**; блокер PD-169 закрыт четырьмя механизмами и вся его цепь пере-проверена живой пробой оркестратора; одиннадцать собственных посадок мутаций, четыре новые строки регистра; порядок паков вышел обратным очереди (22.08). ✅
**1. Что принято.** Пункты 17 и 913 фикс-листа (п. 8 — заказ читающего пака), врезанный первым блокер свипа, вторая волна ревью и спил пер-термной подписи банка. Батарея на моём стенде: 18 пакетов, exit 0, линтер «0 issues». Тестов **561** против 532 на HEAD — сверено исполнением, `git show HEAD:<файл>` по всем `_test.go` против дерева. Оба док-гейта зелёные.
**2. Блокер PD-169 закрыт, и это единственная строка регистра, которая солгала ДВУМ приёмкам.** Она стояла `fixed(P5)`, а её пин гонял `Sweep` вообще без дедлайна прохода — по построению не мог увидеть проход. Живое свойство: проход 2 минуты против прогона 60 секунд, двух зависших прогонов хватало съесть проход, после чего `UnsettledRuns` — единственный ретрай отложенного расчёта — не звался ВООБЩЕ: для всей инсталляции, каждый проход, потому что `order by started_at` ставит заклиненный прогон в голову детерминированно. Лечение — не подъём константы: (1) проход разделён на фазы, реконсиляция берёт половину; (2) прогон, ВЫБРАВШИЙ бюджет или упавший, получает отсрочку с растущим бэкоффом и перестаёт держать голову; (3) после `StalledAfter` неудач — гейдж и `tmplatformctl runs --stalled`; (4) терминальный вердикт остаётся у ОПЕРАТОРА (`run abandon`). Оба числа стали ручками, `RunBudget` присвоен впервые за свою жизнь.
**3. Цепь пере-проверена не по отчёту, а моей живой пробой.** Свой дев-демон на дереве пака, своя БД, настоящий `tmctl`. Отсрочка копит неудачи между проходами (`FAILS 6`), переходит порог → `tm_platform_runs_stalled 1` на проводе → `--stalled` называет прогон, счёт, что держит и НАСТОЯЩУЮ ошибку движка. **Деньги — двумя путями из сырого леджера:** до `run abandon --release-hold` кэш `account_balances` = 24910000 и `sum(credit_ledger)` = 24910000 при одном открытом холде 90000; после — 25000000 и 25000000, холдов 0, строки `grant · hold · hold_release`. Книга разморозилась: следующий прогон принят 202. Обе новые ручки печатаются на буте с источником — норма PD-114 держится.
**4. Одиннадцать собственных посадок вне списка автора; выжили три, и различать их пришлось руками.** Убиты восемь: разделение фазы · «бюджет выбран = отказ» · очистка счёта тишиной · бэкофф · пропуск фазы расчёта · версия контракта · пол идентичностей манифеста · «стоп перевешивает отсрочку». **`StalledAfter` выжила ЗАКОННО** — носитель один, пин ездит на константе, второй экземпляр числа был бы лишним местом забыть. **`maxAttempts` выжила и это находка (`PD-373`)** — у неё есть второй носитель прозой в рантбуке («После пяти неудач»), и подъём константы делает рантбук лгущим молча. **`truncateReason` в `DeferRun` выжила и это находка (`PD-372`)** — пин ездит на самой функции, ни один из четырёх вызовов не проверен, а комментарий этой же функции называет цену: невалидный UTF-8 из stderr движка Postgres отвергает, отказ не считается, попытка держит голову вечно — то есть механизм отключается тем самым текстом, ради которого заведён.
**5. Находка вне карты пака — `PD-371`.** Исключение «стоп перевешивает отсрочку» не имеет границы: прогон с запрошенным стопом выбирается КАЖДЫМ проходом независимо от `reconcile_after`. Видно живьём: `NEXT TRY` стоял на ~30 минут вперёд, а счётчик рос каждые 15 секунд — отсрочка не действовала ни разу. На дешёвой ошибке безвредно, на дорогой класс PD-169 внутри фазы возвращается, и запускает его ЛЮБОЙ пользователь кнопкой «остановить». Комментарий у `RunsToReconcile` называет цену НЕ-исключения и молчит о цене исключения. Не блокер: расчёт денег живёт во второй фазе, счётчик растёт, гейдж и `run abandon` работают.
**6. Ошибка МОЕГО харнесса приёмки, объявленная вслух.** Две посадки дали ложное «выжила»: я гонял не тот пакет — мутация лежала в `internal/pgstore`, а пин в `internal/runs`. Пере-прогнано, обе убиты. Норма отсюда: **посадка мутации обязана называть пакет, где ищется пин, а не пакет, где лежит правка**; необъявленная ошибка харнесса приёмки — это находка, которой нет, и она опаснее пропущенной, потому что выглядит как результат.
**7. «Скипов 0» не воспроизведён, и виноват не пак.** У меня три скипа: `systemdOrSkip` гейтит три теста `internal/runner` достижимостью пользовательского менеджера systemd, а на этом хосте `/run/user/1000` не существует. Отчёт зоны мерил на хосте с живым менеджером и честен. Незакрытым остаётся `PD-374`: рецепт объявляет у батареи ДВА гейта, а их три, и сама цель `check` над списком скипов печатает «set TM_PLATFORM_TEST_DSN» — отправляя читателя к ручке, которая тут ни при чём.
**8. Спил пер-термной подписи банка принят, контрактная половина открыта.** D39.144 отменил модель 16.08, зона сняла write-путь 22.08 по слову владельца: маршрут, хендлер, wire-типы, метод интерфейса, `BankDecision`/`BankReceipt`, `UnknownTermError` и их пины. Пол размера поверхности 15 → 14 сдвинут ЯВНО и с причиной в комментарии — гейт СРАБОТАЛ и поймал спил, а не был подогнан; проверено, что 14 равно реальной длине таблицы, то есть запаса не оставлено. Три исчезнувших имени теста — тесты снятого кода, одно переписано на сохранившееся свойство. Пометка на месте write-пути честна: её клейм про `action NOT NULL` с чек-констрейнтом на отменённый глагол сверен по миграциям 00002 и 00016. **`PD-370` уезжает открытым мажором и это правильно:** канон 0.4.0 несёт путь, три схемы и глагол — правка канона это ломающий минор 0.4.0 → 0.5.0, работа контрактной сессии, и закрывать её в зоне было бы подгонкой под критерий приёмки. До неё деплой обслуживает на одну ручку меньше, чем объявляет — цена, названная заранее.
**9. Порядок паков вышел ОБРАТНЫМ моей очереди, и последствия несимметричны.** Промт P8-FIX строкой 3 требует запуска «ПОСЛЕ пака P8-REVIEW»; запущен он был раньше. **В плюс:** цена, названная мной вслух при перестановке 21.08 — «блокер свипа живёт всё время читающего пака» — НЕ заплачена, блокер закрыт первым, и это лучший исход, чем планировала очередь. **В минус:** §4.7 (аддендум релеем) пуст и честно назван таковым в отчёте, а читающий пак пойдёт теперь по коду, который этот пак только что переписал. Ось 3 его промта зона пере-нацелила сама (константы переехали, якоря починены, правка ЧУЖОГО документа раскрыта прямо) — правку утверждаю: якоря умерли по вине пака, пак их починил и сказал об этом, вместо того чтобы обойти красный гейт. Остальные три оси не затронуты.
**10. Что зона сдала вопросами, а не решениями, и это засчитано.** Строка 199(а): развилка владения `book.yaml` не решалась, сдана четырьмя вариантами с ценой — ждёт ратификации. `PD-367` (пол интейка односторонний: манифест с пустым списком глав материализатор отвергает, а интейк заводит книгу, по которой можно СТАРТОВАТЬ и ОПЛАТИТЬ прогон) — лекарство ломает запиненный контракт интейка, нужно решение. `PD-368` (когерентность пары бюджетов) · `PD-369` (`ClaimIdempotency` отдаёт 500 под конкуренцией, файл вне диффа пака). П-19 (sqlc) — отдельной сессией по слову владельца 22.08; вместо него построен гейт, который планирует КАЖДЫЙ собранный запрос против мигрированной схемы, и это лучше sqlc ровно там, где зону дважды укусило: sqlc видит только целиком-литеральный SQL, а оба рантайм-падения были в запросах, собранных из фрагментов.
**11. Что НЕ проверено (obstacle приёмки).** Сквозного живого перевода по-прежнему не было — строка 202 гейчена холодным прогоном движка. `PD-297` зона не мерила осознанно (нужен корпусный текст). Четыре оси читающего пака по-прежнему не смотрел никто. Мою живую пробу я вёл на хосте без systemd-шины, поэтому путь «юнит поднялся и живёт» в ней не участвовал — он покрыт батареей там, где менеджер есть. (22.08.2026, оркестратор №18) ✅

View file

@ -2,6 +2,20 @@
> Выдан №18 21.08.2026 после лендинга P7 (D39.153). Запуск — по слову владельца.
> ⚠ Это пак ЧТЕНИЯ. Кода он не меняет. Чинит найденное следующий пак — `PLATFORM_P8_FIX_SESSION_PROMPT.md`.
>
> ⚠ **ОБНОВЛЕНО 22.08 при лендинге P8-FIX (D39.154): порядок вышел ОБРАТНЫМ.** Этот промт писался в
> расчёте, что читающий пак идёт ПЕРВЫМ и отдаёт находки дофиксу релеем; на деле дофикс отработал и
> заленджен раньше (`31f1f82`). Что это меняет для тебя — три вещи, и ни одна не отменяет пак.
> **(1) Ось 3 читает уже ПЕРЕПИСАННЫЙ код:** блокер закрыт четырьмя механизмами (фазы прохода ·
> отсрочка с бэкоффом · порог `StalledAfter` · `run abandon`), константы переехали в
> `internal/config`, появились `RunsToReconcile`/`DeferRun`/`ClearRunDeferral` и миграция 00025.
> Абзац про найденный блокер ниже оставлен как описание НАЙДЕННОГО — зона пере-нацелила его якоря и
> сказала об этом прямо. Ищи сиблингов класса, но теперь И в самом лечении: оно свежее, его смотрели
> ревьюеры зоны и приёмка, и у него уже есть четыре открытых строки — `PD-371``PD-374`.
> **(2) Оси 1, 2 и 4 (деньги и леджер · вход/сессии/CSRF · метрики) не тронуты вообще** — там пак
> по-прежнему первый взгляд, и он и есть главная ценность этого захода.
> **(3) §4.7 работает В ОБРАТНУЮ СТОРОНУ:** релея тебе ждать не от кого, твои находки поедут в
> СЛЕДУЮЩИЙ кодовый пак — тем же протоколом, через оркестратора, с эхо-подтверждением.
## 0. Зачем