Archive the bought-means-delivered prompt with its outcome banner, remove the two rows it closes, retarget stale anchors, and recount the queue bulletin
This commit is contained in:
parent
af88680366
commit
5490a8e442
12 changed files with 87 additions and 27 deletions
File diff suppressed because one or more lines are too long
|
|
@ -45,7 +45,7 @@
|
||||||
| 2 | **платформа** | правда у двери: `PD-455` · `PD-448` (разбор) · `PD-162` | $0 | ✅ **ЗАКРЫТ АКТОМ `D39.246`** с дофиксом по двум находкам приёмки |
|
| 2 | **платформа** | правда у двери: `PD-455` · `PD-448` (разбор) · `PD-162` | $0 | ✅ **ЗАКРЫТ АКТОМ `D39.246`** с дофиксом по двум находкам приёмки |
|
||||||
| 3 | ~~полигон~~ | **прогон A**: настоящая книга до ФАЙЛА, платный провайдер | **факт $0.419424** | ✅ **ЗАКРЫТ АКТОМ `D39.247`**; строка 16 закрыта замером; ⚠ зона ВНЕ СКОУПА с 11.09 |
|
| 3 | ~~полигон~~ | **прогон A**: настоящая книга до ФАЙЛА, платный провайдер | **факт $0.419424** | ✅ **ЗАКРЫТ АКТОМ `D39.247`**; строка 16 закрыта замером; ⚠ зона ВНЕ СКОУПА с 11.09 |
|
||||||
| 4 | **бэкенд** | ⛔ **КОНСИСТЕНТНОСТЬ, КОТОРУЮ МОЖНО ПРЕДЪЯВИТЬ**: ряды **406** · **407** · **408** · **409**, плюс купленные прогоном **417** (закон банка не виден в тексте) и **419** (стеммер: 11 из 18 промахов — ложные) | пак, почти весь $0 | ✅ **ЗАКРЫТ АКТОМ `D39.249`** с дофиксом |
|
| 4 | **бэкенд** | ⛔ **КОНСИСТЕНТНОСТЬ, КОТОРУЮ МОЖНО ПРЕДЪЯВИТЬ**: ряды **406** · **407** · **408** · **409**, плюс купленные прогоном **417** (закон банка не виден в тексте) и **419** (стеммер: 11 из 18 промахов — ложные) | пак, почти весь $0 | ✅ **ЗАКРЫТ АКТОМ `D39.249`** с дофиксом |
|
||||||
| 5 | **бэкенд** | «ВЫДАЧА, КОТОРУЮ ВИДИТ ЧИТАТЕЛЬ» — ⛔ **РАЗОБРАН 11.09 ЧТЕНИЕМ РЯДОВ И РАЗВЕДЁН НА ДВА ПАКА, один ряд закрыт замером.** **(а) `291` ВЫДАН** — `BACKEND_BOUGHT_MEANS_DELIVERED_SESSION_PROMPT.md`, решено владельцем (`D39.204` с «Эрратой 15.09-а»), дефект был жив на 11.09 (возврат ошибки из цикла попыток до `UpsertChunkStatus`, `backend/internal/pipeline/stagerun.go`); акт ОДИН с платформенной половиной (⚠ испр. 15.09: платформенная половина пуста по замеру сессии, отдельного промта нет). **(б) `307` ЗАКРЫТ, а не заказан:** честная форма ПОСТРОЕНА и запинена коммитом `6ceb133` — `runOrderedChapters = (case when r.ordered_units is not null then null else r.ceiling_chapters end)`, плюс `TestACharacterOrdersVolumeIsPublishedInTheUnitItWasSoldIn`; ряд снят с таблицы. Заказать его значило бы заказать готовое — мой повторяющийся класс. **(в) `283` + `284` + `201` — СЛЕДУЮЩИЙ пак «структура и заголовки», и он идёт ПОСЛЕ прогона B:** 283 требует единственного окна пере-снапшота, а пере-снапшот двигает НАРЕЗКУ ⇒ единицы A и B станут несравнимыми, и B ответит на другой вопрос (поправка старшего коллеги, принята). У 284 сверх того нет слова владельца о ПОДПИСИ стадии | пак, $0 | ⛔ (а) сессия b1 ПОТЕРЯНА 15.09, пак не завершён — передаётся свежей сессии разделом ред. 5; конструкция пере-решена владельцем 11.09: стандартная остановка, не флаг (эррата 15.09-а к `D39.204`) · (б) закрыт · (в) прогон B принят (`D39.252`), заперт теперь слотом и порядком — см. пункт 10 |
|
| 5 | **бэкенд** | «ВЫДАЧА, КОТОРУЮ ВИДИТ ЧИТАТЕЛЬ» — ⛔ **РАЗОБРАН 11.09 ЧТЕНИЕМ РЯДОВ И РАЗВЕДЁН НА ДВА ПАКА, один ряд закрыт замером.** **(а) `291` ЗАКРЫТ актом `D39.255`** — промт в `archive/prompts/BACKEND_BOUGHT_MEANS_DELIVERED_SESSION_PROMPT.md` с баннером-исходом, решено владельцем (`D39.204` с «Эрратой 15.09-а»), дефект был жив на 11.09 (возврат ошибки из цикла попыток до `UpsertChunkStatus`, `backend/internal/pipeline/stagerun.go`); акт ОДИН с платформенной половиной (⚠ испр. 15.09: платформенная половина пуста по замеру сессии, отдельного промта нет). **(б) `307` ЗАКРЫТ, а не заказан:** честная форма ПОСТРОЕНА и запинена коммитом `6ceb133` — `runOrderedChapters = (case when r.ordered_units is not null then null else r.ceiling_chapters end)`, плюс `TestACharacterOrdersVolumeIsPublishedInTheUnitItWasSoldIn`; ряд снят с таблицы. Заказать его значило бы заказать готовое — мой повторяющийся класс. **(в) `283` + `284` + `201` — СЛЕДУЮЩИЙ пак «структура и заголовки», и он идёт ПОСЛЕ прогона B:** 283 требует единственного окна пере-снапшота, а пере-снапшот двигает НАРЕЗКУ ⇒ единицы A и B станут несравнимыми, и B ответит на другой вопрос (поправка старшего коллеги, принята). У 284 сверх того нет слова владельца о ПОДПИСИ стадии | пак, $0 | ✅ (а) **ПРИНЯТ 16.09 актом `D39.255`**, лендинг `af88680` (29 путей, $0): закрыты ряды **291** и **379** (379 — ЗАМЕРОМ, мутант 8/8 против 7/8 в ряду), остаток — 375 · 232 · 453–456. Пак пережил ПОТЕРЮ сессии b1 и доведён `textmachine-main-b1` разделом ред. 5; конструкция пере-решена владельцем 11.09: стандартная остановка, не флаг (эррата 15.09-а к `D39.204`). **Слот бэкенда СВОБОДЕН** · (б) закрыт · (в) прогон B принят (`D39.252`), заперт теперь слотом и порядком — см. пункт 10 |
|
||||||
| 6 | **фронт** | поверхность показа | пак | разморозка + пункты 1–5 |
|
| 6 | **фронт** | поверхность показа | пак | разморозка + пункты 1–5 |
|
||||||
| 7 | ~~полигон~~ | ⛔ **ЗОНА ВНЕ СКОУПА — слово владельца 11.09**; четыре промта уведены в `archive/prompts/` с баннерами | — | снято |
|
| 7 | ~~полигон~~ | ⛔ **ЗОНА ВНЕ СКОУПА — слово владельца 11.09**; четыре промта уведены в `archive/prompts/` с баннерами | — | снято |
|
||||||
| 8 | **бэкенд/деньги** | ⛔ **«ПАДЕНИЕ, КОТОРОЕ ВИДНО»** — четверть COGS в одном механизме (**415**), слепые приборы отказа (**414**, **422**), молчащая подстановка цены. ⚠ Пин цены **413** из пака ВЫНУТ: это данные и отдельное решение | пак, $0 | ✅ **ЗАКРЫТ АКТОМ `D39.251`** (испр. 15.09; дальше — запись 11.09) · ✍️ **НАПИСАН 11.09** — `BACKEND_FAILURE_YOU_CAN_SEE_SESSION_PROMPT.md`; выдаётся СВЕЖЕЙ сессии сразу по закрытии 4 ⛔ **КРИТЕРИЙ ПРИЁМКИ ПАКА — МЕХАНИЗМ, А НЕ ПРОПОРЦИЯ** (поправка старшего коллеги 11.09): лекарство есть распространение ратифицированного образца `D2` п.3 на вторую причину, и оно верно при 25 % и при 5 % — пропорция задаёт очерёдность, не форму. ⇒ судить по строкам «ни одного удвоения без вердикта о вырождении; каждая выброшенная попытка — строкой леджера с причиной», а не по «с 25.4 % до X». Значит прогон B пак не гейтит и паком не гейтится.|
|
| 8 | **бэкенд/деньги** | ⛔ **«ПАДЕНИЕ, КОТОРОЕ ВИДНО»** — четверть COGS в одном механизме (**415**), слепые приборы отказа (**414**, **422**), молчащая подстановка цены. ⚠ Пин цены **413** из пака ВЫНУТ: это данные и отдельное решение | пак, $0 | ✅ **ЗАКРЫТ АКТОМ `D39.251`** (испр. 15.09; дальше — запись 11.09) · ✍️ **НАПИСАН 11.09** — `BACKEND_FAILURE_YOU_CAN_SEE_SESSION_PROMPT.md`; выдаётся СВЕЖЕЙ сессии сразу по закрытии 4 ⛔ **КРИТЕРИЙ ПРИЁМКИ ПАКА — МЕХАНИЗМ, А НЕ ПРОПОРЦИЯ** (поправка старшего коллеги 11.09): лекарство есть распространение ратифицированного образца `D2` п.3 на вторую причину, и оно верно при 25 % и при 5 % — пропорция задаёт очерёдность, не форму. ⇒ судить по строкам «ни одного удвоения без вердикта о вырождении; каждая выброшенная попытка — строкой леджера с причиной», а не по «с 25.4 % до X». Значит прогон B пак не гейтит и паком не гейтится.|
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -24,7 +24,7 @@
|
||||||
- **Активные хендофф-промты — какой файл ТВОЙ** (состав обновляется при каждом лендинге, D39.80; хроника, причины и статусы РАБОТ — CURRENT-STATE и D-лог):
|
- **Активные хендофф-промты — какой файл ТВОЙ** (состав обновляется при каждом лендинге, D39.80; хроника, причины и статусы РАБОТ — CURRENT-STATE и D-лог):
|
||||||
| Роль | Активный промт | Статус |
|
| Роль | Активный промт | Статус |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| **Бэкенд · КУПЛЕНО — ЗНАЧИТ ДОСТАВЛЕНО** | [BACKEND_BOUGHT_MEANS_DELIVERED_SESSION_PROMPT.md](BACKEND_BOUGHT_MEANS_DELIVERED_SESSION_PROMPT.md) | ⛔ **ВЫДАН 15.09 СВЕЖЕЙ СЕССИИ `textmachine-main-b1`** — разделом ПЕРЕДАЧИ (ред. 5) в начале того же промта; жду эхо. Сессия `textmachine-b1` построила пак почти целиком и ПОТЕРЯНА при переезде окружения, не объявив работу завершённой; сдача лежит застейдженной в индексе. Предмет решён владельцем — `D39.204` **с эрратой 15.09-а**: отказ резервации на ретрае — СТАНДАРТНАЯ ОСТАНОВКА (кадр `ceiling` с недостачей, не-терминальная метка позиции, пополнение и резюм доделывают юнит), а не флаг. Платформенная половина пуста по замеру сессии, акт один. $0 |
|
| **Бэкенд · КУПЛЕНО — ЗНАЧИТ ДОСТАВЛЕНО** | активного НЕТ | пак ОТРАБОТАН и **ПРИНЯТ 16.09 С НАЗВАННЫМ ОСТАТКОМ** — акт **`D39.255`**; промт в [archive/prompts/](archive/prompts/BACKEND_BOUGHT_MEANS_DELIVERED_SESSION_PROMPT.md) с баннером-исходом. Лендинг `af88680`, 29 путей, $0. Закрыты строки **291** и **379** (вторая — ЗАМЕРОМ: мутант 8/8 против 7/8 в ряду). ⛔ Пак пережил ПОТЕРЮ сессии: `textmachine-b1` построила почти всё и исчезла при переезде окружения, доводила `textmachine-main-b1` разделом ПЕРЕДАЧИ ред. 5. ⚠ Остаток — строки **375** · **232** · **453**–**456**; три опубликованных ключа качества сменили смысл (п.5 акта). **Слот бэкенда СВОБОДЕН** |
|
||||||
| Сквозной · ХОЛОДНЫЙ ПРОГОН B | активного НЕТ | пак ОТРАБОТАН и **ПРИНЯТ 11.09** — акт **D39.252**; промт в [archive/prompts/](archive/prompts/COLD_RUN_B_SESSION_PROMPT.md) с баннером-исходом. Книга второй раз от двери до ФАЙЛА, факт **$0.396657**. ⭐ Две меры денежной дыры разошлись в РАЗНЫЕ стороны на одних данных; **85.7 % оплаченного выхода — размышление, а не текст**. ⛔ Прибор приоритета №1 солгал вердиктом по подписанному имени героя. Качество впервые судилось по ОРИГИНАЛУ рядом с переводом: 26 находок, 1 крит |
|
| Сквозной · ХОЛОДНЫЙ ПРОГОН B | активного НЕТ | пак ОТРАБОТАН и **ПРИНЯТ 11.09** — акт **D39.252**; промт в [archive/prompts/](archive/prompts/COLD_RUN_B_SESSION_PROMPT.md) с баннером-исходом. Книга второй раз от двери до ФАЙЛА, факт **$0.396657**. ⭐ Две меры денежной дыры разошлись в РАЗНЫЕ стороны на одних данных; **85.7 % оплаченного выхода — размышление, а не текст**. ⛔ Прибор приоритета №1 солгал вердиктом по подписанному имени героя. Качество впервые судилось по ОРИГИНАЛУ рядом с переводом: 26 находок, 1 крит |
|
||||||
| Оркестратор | [ORCHESTRATOR_SESSION_PROMPT.md](ORCHESTRATOR_SESSION_PROMPT.md) | роль и нормы; счётчик роли — CURRENT-STATE |
|
| Оркестратор | [ORCHESTRATOR_SESSION_PROMPT.md](ORCHESTRATOR_SESSION_PROMPT.md) | роль и нормы; счётчик роли — CURRENT-STATE |
|
||||||
| Консилиум · БАНК ПАМЯТИ ДЛИННОЙ КНИГИ | [BANK_MEMORY_CONSILIUM_SESSION_PROMPT.md](BANK_MEMORY_CONSILIUM_SESSION_PROMPT.md) | пак ОТРАБОТАН и **ПРИНЯТ 16.09 С ДОФИКСОМ И ОСТАТКОМ** — акт **`D39.253`**; итог — [research/35-bank-memory-consilium.md](research/35-bank-memory-consilium.md), ход работы и таблица проверки — `research/35-bank-memory-consilium/00-protocol.md`. Сдан по правилу остановки (три круга: 2·21·34 → 0·16·17 → 1·7·13); приёмка — пять осей вне консилиума, 50 находок, дофикс и узкий закрывающий круг. Пять вопросов владельцу — §6 итога. Не пак кодовой зоны: совет агентов (Fable 5 — 1–2), $0 по моделям проекта, пишет только `research/35-bank-memory-consilium.md` и одноимённый каталог. Входы — [archive/reports/BANK_CONSILIUM_INPUTS_2026-09-15/](archive/reports/BANK_CONSILIUM_INPUTS_2026-09-15/README.md): отозванный проект оркестратора и сверка того, что репозиторий уже решил и построил по банку |
|
| Консилиум · БАНК ПАМЯТИ ДЛИННОЙ КНИГИ | [BANK_MEMORY_CONSILIUM_SESSION_PROMPT.md](BANK_MEMORY_CONSILIUM_SESSION_PROMPT.md) | пак ОТРАБОТАН и **ПРИНЯТ 16.09 С ДОФИКСОМ И ОСТАТКОМ** — акт **`D39.253`**; итог — [research/35-bank-memory-consilium.md](research/35-bank-memory-consilium.md), ход работы и таблица проверки — `research/35-bank-memory-consilium/00-protocol.md`. Сдан по правилу остановки (три круга: 2·21·34 → 0·16·17 → 1·7·13); приёмка — пять осей вне консилиума, 50 находок, дофикс и узкий закрывающий круг. Пять вопросов владельцу — §6 итога. Не пак кодовой зоны: совет агентов (Fable 5 — 1–2), $0 по моделям проекта, пишет только `research/35-bank-memory-consilium.md` и одноимённый каталог. Входы — [archive/reports/BANK_CONSILIUM_INPUTS_2026-09-15/](archive/reports/BANK_CONSILIUM_INPUTS_2026-09-15/README.md): отозванный проект оркестратора и сверка того, что репозиторий уже решил и построил по банку |
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
# Реестр D-нот — карта актуальности v2 (D1–D39.254; титул — носитель головы, бампать при каждом аппенде)
|
# Реестр D-нот — карта актуальности v2 (D1–D39.255; титул — носитель головы, бампать при каждом аппенде)
|
||||||
|
|
||||||
> ⚠ **Колонку «тело» `counts.py --check` НЕ сторожит по устройству:** он сверяет полноту НОМЕРОВ, а не
|
> ⚠ **Колонку «тело» `counts.py --check` НЕ сторожит по устройству:** он сверяет полноту НОМЕРОВ, а не
|
||||||
> место тела, поэтому колонка держится дисциплиной лендинга. Не нашёл тело по колонке — иди в слайсы,
|
> место тела, поэтому колонка держится дисциплиной лендинга. Не нашёл тело по колонке — иди в слайсы,
|
||||||
|
|
@ -313,3 +313,4 @@
|
||||||
| D39.252 | 11.09 | **АКТ: СКВОЗНОЙ ПРОГОН B ПРИНЯТ** — книга второй раз от двери до ФАЙЛА, факт **$0.396657** при ожидании ≈$0.42 (санкция владельца «разрешаю» получена ДО траты). ⭐ **Две меры денежной дыры разошлись в РАЗНЫЕ стороны на одних данных:** по ЕДИНИЦАМ 23.5 %→**41.2 %**, по ДЕНЬГАМ 25.4 %→**21.1 %**; первичной объявлена замороженная пре-регом мера по единицам. ⭐ **85.7 % оплаченного выхода книги — РАЗМЫШЛЕНИЕ, а не текст** (153 942 из 179 613; у 5 из 7 выброшенных потолок съеден целиком) ⇒ ряд 422 закрыт числом. ⛔ **Прибор приоритета №1 солгал на первом живом прогоне:** вердикт `split` по подписанному имени героя при 58 вхождениях в 4 падежах и НУЛЕ конкурентов — имя вердикта утверждает больше, чем меряет предикат ⇒ числа консистентности B базовой линией НЕ являются. ⭐ Качество впервые судилось по ОРИГИНАЛУ рядом с переводом: 26 находок (1 крит — подмена референта, пере-проверен мною), адъюдикация цитат 10/10, три числа читателя исправлены. Скаляр оценки — ЦИТАТОЙ с четырьмя границами, не ратификацией. Ряды 434, 436, 437, 438 | полигон/приёмка |
|
| D39.252 | 11.09 | **АКТ: СКВОЗНОЙ ПРОГОН B ПРИНЯТ** — книга второй раз от двери до ФАЙЛА, факт **$0.396657** при ожидании ≈$0.42 (санкция владельца «разрешаю» получена ДО траты). ⭐ **Две меры денежной дыры разошлись в РАЗНЫЕ стороны на одних данных:** по ЕДИНИЦАМ 23.5 %→**41.2 %**, по ДЕНЬГАМ 25.4 %→**21.1 %**; первичной объявлена замороженная пре-регом мера по единицам. ⭐ **85.7 % оплаченного выхода книги — РАЗМЫШЛЕНИЕ, а не текст** (153 942 из 179 613; у 5 из 7 выброшенных потолок съеден целиком) ⇒ ряд 422 закрыт числом. ⛔ **Прибор приоритета №1 солгал на первом живом прогоне:** вердикт `split` по подписанному имени героя при 58 вхождениях в 4 падежах и НУЛЕ конкурентов — имя вердикта утверждает больше, чем меряет предикат ⇒ числа консистентности B базовой линией НЕ являются. ⭐ Качество впервые судилось по ОРИГИНАЛУ рядом с переводом: 26 находок (1 крит — подмена референта, пере-проверен мною), адъюдикация цитат 10/10, три числа читателя исправлены. Скаляр оценки — ЦИТАТОЙ с четырьмя границами, не ратификацией. Ряды 434, 436, 437, 438 | полигон/приёмка |
|
||||||
| D39.253 | 16.09 | **АКТ: КОНСИЛИУМ «БАНК ПАМЯТИ ДЛИННОЙ КНИГИ» ПРИНЯТ С ДОФИКСОМ И ОСТАТКОМ.** Решение банка выработано советом девяти агентов (три проекта разных углов и моделей, пять ролей совета, судья другой моделью); сдано по правилу остановки — три круга 2·21·34 → 0·16·17 → 1·7·13. Приёмка оркестратора — пять осей вне консилиума, 50 находок (14 мажоров): деньги 24/24 и эмпирическое ядро 14/14 сошлись, противоречий ратифицированному нет, выдумок в цитатах нет. ⭐ Совет нашёл то, мимо чего прошли оба отозванных проекта: ратифицированный ответ на смену пола (D5 п.1, D7 правка 1, D19 п.3(в)) и что ответ на растущую книгу лежит в ВЫБОРКЕ улик, а не в новом событии. ⛔ Остаток назван: правки круга 3 судила приёмка, а не консилиум; 20 из 164 якорей поедут с лендингом бэкенд-сдачи | ЖИВОЕ: пак принят, Д-1…Д-18 в очереди оркестратора, ряды 441–450 заведены | жив | банк |
|
| D39.253 | 16.09 | **АКТ: КОНСИЛИУМ «БАНК ПАМЯТИ ДЛИННОЙ КНИГИ» ПРИНЯТ С ДОФИКСОМ И ОСТАТКОМ.** Решение банка выработано советом девяти агентов (три проекта разных углов и моделей, пять ролей совета, судья другой моделью); сдано по правилу остановки — три круга 2·21·34 → 0·16·17 → 1·7·13. Приёмка оркестратора — пять осей вне консилиума, 50 находок (14 мажоров): деньги 24/24 и эмпирическое ядро 14/14 сошлись, противоречий ратифицированному нет, выдумок в цитатах нет. ⭐ Совет нашёл то, мимо чего прошли оба отозванных проекта: ратифицированный ответ на смену пола (D5 п.1, D7 правка 1, D19 п.3(в)) и что ответ на растущую книгу лежит в ВЫБОРКЕ улик, а не в новом событии. ⛔ Остаток назван: правки круга 3 судила приёмка, а не консилиум; 20 из 164 якорей поедут с лендингом бэкенд-сдачи | ЖИВОЕ: пак принят, Д-1…Д-18 в очереди оркестратора, ряды 441–450 заведены | жив | банк |
|
||||||
| D39.254 | 16.09 | **РЕШЕНИЯ ВЛАДЕЛЬЦА ПО ПЯТИ ВОПРОСАМ КОНСИЛИУМА 35.** (1) Держать решение банка между покупками — ДА (ряд 130 закрыт в этой части). (2) ⚠ Отказ терминолога ПЕРЕ-ОПРЕДЕЛЁН: «фоллбек на другую модель или переспросить… банк памяти — максимально умный участок»; по факту у банк-ролей нет ни ретрая, ни регенерации (ряд 438), эскалация выключена нулём (ряд 435) ⇒ выбор (а)/(б) снят как преждевременный. Граница: совет МОДЕЛЕЙ закрыт D39.102 п.2 замером, открыты детерминированный ансамбль и рецензент на спорных кластерах (остаток ряда 5). (3) При невозможной безродовой форме — перестроить фразу, иначе «как лучше читается»; адресность уже построена, меняется текст `injection.txt:12`. (4) Богаче контекст — ДА, величина решается замером M4. (5) Голос и ты↔вы — СТРОИТЬ, «продуманно алгоритмически»; вариант «не трогать» отменён | ЖИВОЕ: несущее для банк-паков | жив | банк владелец |
|
| D39.254 | 16.09 | **РЕШЕНИЯ ВЛАДЕЛЬЦА ПО ПЯТИ ВОПРОСАМ КОНСИЛИУМА 35.** (1) Держать решение банка между покупками — ДА (ряд 130 закрыт в этой части). (2) ⚠ Отказ терминолога ПЕРЕ-ОПРЕДЕЛЁН: «фоллбек на другую модель или переспросить… банк памяти — максимально умный участок»; по факту у банк-ролей нет ни ретрая, ни регенерации (ряд 438), эскалация выключена нулём (ряд 435) ⇒ выбор (а)/(б) снят как преждевременный. Граница: совет МОДЕЛЕЙ закрыт D39.102 п.2 замером, открыты детерминированный ансамбль и рецензент на спорных кластерах (остаток ряда 5). (3) При невозможной безродовой форме — перестроить фразу, иначе «как лучше читается»; адресность уже построена, меняется текст `injection.txt:12`. (4) Богаче контекст — ДА, величина решается замером M4. (5) Голос и ты↔вы — СТРОИТЬ, «продуманно алгоритмически»; вариант «не трогать» отменён | ЖИВОЕ: несущее для банк-паков | жив | банк владелец |
|
||||||
|
| D39.255 | 16.09 | **АКТ: бэкенд-пак «КУПЛЕНО — ЗНАЧИТ ДОСТАВЛЕНО» ПРИНЯТ С НАЗВАННЫМ ОСТАТКОМ** (29 путей, +3634/−168, $0). Пак пережил потерю сессии и сдан по правилу остановки П4. Приёмка — пять приборов: батарея 23/23 · **мой собственный полный каталог 441/441, 0 unexpected, 437 пойманных и 4 записанные выжившие, `tree_sha` совпал с её прогоном** · две оси агентов вне сдачи (26 подтверждений и 79 пере-снятых чисел, мажоров 0). ⛔ Деньги: пере-классификация `cancelled` с `rework` на `carried` меняет счёт слотов у книг В ПОЛЕ — шире, чем заявляла сдача; исход 15.09 в силе, семантика переноса — ряд 232. ⭐ Ратифицировано снятие гейта `DispFlagged` у эдит-числителя (эррата к `D39.19` п.4): гейт прятал ОПЛАЧЕННОЕ эхо; цена — несопоставимость замеров через правку. ⚠ Три опубликованных ключа качества сменили смысл, остаток называл два | ЖИВОЕ: ряды 291 и 379 закрыты (379 — ЗАМЕРОМ: на мутанте `answered &&` пин падает 8/8 против 7/8 в ряду, п.9); остаток — ряды 375, 232 и новые 453–456 | жив | бэкенд деньги |
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
# Журнал решений оркестратора — контракт D1–D39.254 (живой файл: карта · эрраты · живые тела · голова D39.124+ (подрезка D39.139); тела закрытых эр — в слайсах `docs/archive/architecture/`, указатель ниже; реестр всех нот — `05-decisions-index.md`)
|
# Журнал решений оркестратора — контракт D1–D39.255 (живой файл: карта · эрраты · живые тела · голова D39.124+ (подрезка D39.139); тела закрытых эр — в слайсах `docs/archive/architecture/`, указатель ниже; реестр всех нот — `05-decisions-index.md`)
|
||||||
|
|
||||||
> **⟶ КАРТА АКТУАЛЬНОСТИ (ревизия D31, продлена до D38.2 [12.07]; исторические записи ниже НЕ переписываются — дисциплина D23.3).** Работая с контрактом (греп номера: живой файл → слайсы, целиком НЕ читать — D39.125), держи под рукой, что чем перекрыто:
|
> **⟶ КАРТА АКТУАЛЬНОСТИ (ревизия D31, продлена до D38.2 [12.07]; исторические записи ниже НЕ переписываются — дисциплина D23.3).** Работая с контрактом (греп номера: живой файл → слайсы, целиком НЕ читать — D39.125), держи под рукой, что чем перекрыто:
|
||||||
> ⚠ **Эррата 09.08 (D39.125):** D39.111 п.1 предписывал промту S3 «максимум = баланс МИНУС открытые холды» — формула ОШИБОЧНА (вычитание дважды), исправлена D39.115 п.2(а): максимум = Balance КАК ЕСТЬ; тело D39.111 — в слайсе `../archive/architecture/05-decisions-D39-106-123.md` (испр. 05.09: прежнее «живёт ниже в этом файле» протухло подрезкой D39.139) (голова D39.106+).
|
> ⚠ **Эррата 09.08 (D39.125):** D39.111 п.1 предписывал промту S3 «максимум = баланс МИНУС открытые холды» — формула ОШИБОЧНА (вычитание дважды), исправлена D39.115 п.2(а): максимум = Balance КАК ЕСТЬ; тело D39.111 — в слайсе `../archive/architecture/05-decisions-D39-106-123.md` (испр. 05.09: прежнее «живёт ниже в этом файле» протухло подрезкой D39.139) (голова D39.106+).
|
||||||
|
|
@ -3360,9 +3360,9 @@ bought NOTHING». ⇒ **`tmctl manifest` есть НИЖНЯЯ граница,
|
||||||
|
|
||||||
**2. Что из этого следует для заказа.** Пак движка ПАРНЫЙ платформенному и порознь не лендится (`D39.233` п.5: `stopGrace` 600 с < 1240 с, и мягкий SIGTERM без правки грейса означал бы SIGKILL по законному ожиданию — а SIGKILL не оставляет ни пометки, ни сеттла). В движковый пак входят строки **381**, **382**, **377**, **372**, **375** и **379**(а); платформенная половина — `mode` у `/stop`, грейс, путь второго сигнала и ЧТЕНИЕ оценочных строк. Промты не написаны; это следующий ход очереди.
|
**2. Что из этого следует для заказа.** Пак движка ПАРНЫЙ платформенному и порознь не лендится (`D39.233` п.5: `stopGrace` 600 с < 1240 с, и мягкий SIGTERM без правки грейса означал бы SIGKILL по законному ожиданию — а SIGKILL не оставляет ни пометки, ни сеттла). В движковый пак входят строки **381**, **382**, **377**, **372**, **375** и **379**(а); платформенная половина — `mode` у `/stop`, грейс, путь второго сигнала и ЧТЕНИЕ оценочных строк. Промты не написаны; это следующий ход очереди.
|
||||||
|
|
||||||
**3. ⛔ АКТ `D39.232` ОБЪЯВИЛ СТРОКИ ЗАКРЫТЫМИ И ОСТАВИЛ ИХ В ТАБЛИЦЕ.** Пункт 1 писал «закрыты строки 360 и 369, попутно 78» — и все три сутки простояли в бэклоге живыми. Это ровно та норма, которую эта же смена записала себе в ролевой промт («сверка носителей — тем же движением, что и акт»), и она не сработала на собственном акте автора. Пере-снято и закрыто сегодня: **78** (оплаченный `2xx` с нечитаемым телом теперь пишет СВОЮ строку `request_log` и помечается оценкой — `backend/internal/pipeline/cutcall.go:133`=`rl.Estimated, rl.EstTokens = cost > 0`), **369** (дедлайн выводится из бюджета вызова — `backend/internal/llm/attemptcut.go:269`=`func (p RetryProfile) deriveDeadline`, и эскалация, удвоившая `max_tokens`, удваивает время), **360** (предмет пака). Эррата 10.09-б в шапке.
|
**3. ⛔ АКТ `D39.232` ОБЪЯВИЛ СТРОКИ ЗАКРЫТЫМИ И ОСТАВИЛ ИХ В ТАБЛИЦЕ.** Пункт 1 писал «закрыты строки 360 и 369, попутно 78» — и все три сутки простояли в бэклоге живыми. Это ровно та норма, которую эта же смена записала себе в ролевой промт («сверка носителей — тем же движением, что и акт»), и она не сработала на собственном акте автора. Пере-снято и закрыто сегодня: **78** (оплаченный `2xx` с нечитаемым телом теперь пишет СВОЮ строку `request_log` и помечается оценкой — `backend/internal/pipeline/cutcall.go:154`=`rl.Estimated, rl.EstTokens = cost > 0`), **369** (дедлайн выводится из бюджета вызова — `backend/internal/llm/attemptcut.go:269`=`func (p RetryProfile) deriveDeadline`, и эскалация, удвоившая `max_tokens`, удваивает время), **360** (предмет пака). Эррата 10.09-б в шапке.
|
||||||
|
|
||||||
**4. И ЧЕТВЁРТАЯ строка, закрытая тем же паком, которую не заметил никто, — 331** (движковая половина `PD-441`). Её условие закрытия — «сеттл оценки при отмене ушедшего вызова + публикация оценочных строк в `status --json`» — исполнено обеими половинами: сеттл — `cutcall.go`, публикация — `backend/internal/pipeline/status.go:911`=`rep.EstimatedRows, rep.EstimatedUSD = estimatedSpend(usage, committed)`, и оператору она печатается (`backend/cmd/tmctl/render.go:444`=`estimated-cost rows:`). ⚠ **С НАЗВАННЫМ СУЖЕНИЕМ:** различитель строки был «факт УХОДА запроса», а дерево книжит по «провайдер ОТВЕТИЛ 2xx», что уже; направление сужения — недосчёт, ратифицированный `D39.196` п.2а, и остаток несёт строка **376**. Платформенная половина «сказать больше, чем ≥» — строка **382**.
|
**4. И ЧЕТВЁРТАЯ строка, закрытая тем же паком, которую не заметил никто, — 331** (движковая половина `PD-441`). Её условие закрытия — «сеттл оценки при отмене ушедшего вызова + публикация оценочных строк в `status --json`» — исполнено обеими половинами: сеттл — `cutcall.go`, публикация — `backend/internal/pipeline/status.go:942`=`rep.EstimatedRows, rep.EstimatedUSD = estimatedSpend(usage, committed)`, и оператору она печатается (`backend/cmd/tmctl/render.go:448`=`estimated-cost rows:`). ⚠ **С НАЗВАННЫМ СУЖЕНИЕМ:** различитель строки был «факт УХОДА запроса», а дерево книжит по «провайдер ОТВЕТИЛ 2xx», что уже; направление сужения — недосчёт, ратифицированный `D39.196` п.2а, и остаток несёт строка **376**. Платформенная половина «сказать больше, чем ≥» — строка **382**.
|
||||||
|
|
||||||
**5. Инвентарь живых доков (ответ на вопрос владельца «доки актуализированы?»).** Прогнан по норме ролевого промта — ВСЕ живые доки против текущего состояния, не только тронутые сменой; прибор прочёл **94** живых `.md` вне архива. Найдено и исправлено: `docs/architecture/15-money-path.md` в ТРЁХ местах утверждал закрытый канал как открытый (пункт маршрута, строка таблицы долга, список бэклог-строк) — переписаны, и туда же внесена НОВАЯ денежная граница пака (доставка · класс `attempt_timeout` без ретрая · дедлайн из бюджета · резюм не перепокупает). Проверено и расхождений НЕ найдено: реестр требований против брифа владельца (V0–V6 разобраны все; бриф не менялся с 24.08 — контроль по `ls`), таблица активных промтов, шапка-таблица `09-target-architecture.md` (транспорт в её слои не входит), `docs/research/21` (несёт ⚠-баннер о вердикте). ⚠ Остаток, который чинить НЕ мне: 13 битых `file:line`-якорей линтера — все в чужих зонах (`backend/docs`, `docs/experiments`, `frontend/docs`) либо уехали не от моих правок; адреса пере-сняты и оставлены пингами в зонных журналах.
|
**5. Инвентарь живых доков (ответ на вопрос владельца «доки актуализированы?»).** Прогнан по норме ролевого промта — ВСЕ живые доки против текущего состояния, не только тронутые сменой; прибор прочёл **94** живых `.md` вне архива. Найдено и исправлено: `docs/architecture/15-money-path.md` в ТРЁХ местах утверждал закрытый канал как открытый (пункт маршрута, строка таблицы долга, список бэклог-строк) — переписаны, и туда же внесена НОВАЯ денежная граница пака (доставка · класс `attempt_timeout` без ретрая · дедлайн из бюджета · резюм не перепокупает). Проверено и расхождений НЕ найдено: реестр требований против брифа владельца (V0–V6 разобраны все; бриф не менялся с 24.08 — контроль по `ls`), таблица активных промтов, шапка-таблица `09-target-architecture.md` (транспорт в её слои не входит), `docs/research/21` (несёт ⚠-баннер о вердикте). ⚠ Остаток, который чинить НЕ мне: 13 битых `file:line`-якорей линтера — все в чужих зонах (`backend/docs`, `docs/experiments`, `frontend/docs`) либо уехали не от моих правок; адреса пере-сняты и оставлены пингами в зонных журналах.
|
||||||
|
|
||||||
|
|
@ -3819,3 +3819,48 @@ bought NOTHING». ⇒ **`tmctl manifest` есть НИЖНЯЯ граница,
|
||||||
**6. ДОПОЛНЕНИЕ 16.09 — ответ владельца на границу из п.2.** Слово: «В границах ратифицированного». ⇒ «умный участок» в точке банка строится ВНУТРИ закрытия D39.102 п.2: детерминированный ансамбль признаков · рецензент другой модельной семьи ТОЛЬКО на спорных кластерах (остаток ряда 5) · свежая генеративная консолидация · плюс отсутствующие сегодня ретрай банк-роли (ряд 438) и включение фоллбека на другую модель (ряд 435). Равноправный совет моделей, кросс-модельные веса, self-consistency и селекция из вариантов НЕ пере-открываются, нового платного замера под них не заказывается.
|
**6. ДОПОЛНЕНИЕ 16.09 — ответ владельца на границу из п.2.** Слово: «В границах ратифицированного». ⇒ «умный участок» в точке банка строится ВНУТРИ закрытия D39.102 п.2: детерминированный ансамбль признаков · рецензент другой модельной семьи ТОЛЬКО на спорных кластерах (остаток ряда 5) · свежая генеративная консолидация · плюс отсутствующие сегодня ретрай банк-роли (ряд 438) и включение фоллбека на другую модель (ряд 435). Равноправный совет моделей, кросс-модельные веса, self-consistency и селекция из вариантов НЕ пере-открываются, нового платного замера под них не заказывается.
|
||||||
|
|
||||||
**Что эта нота НЕ делает.** Не ратифицирует Д-1…Д-18 итога (кроме главной части Д-1, снятой словом владельца по п.3) и не заказывает паки: слот бэкенда занят паком «купленное — значит доставлено», приёмка которого отложена словом владельца 15.09.
|
**Что эта нота НЕ делает.** Не ратифицирует Д-1…Д-18 итога (кроме главной части Д-1, снятой словом владельца по п.3) и не заказывает паки: слот бэкенда занят паком «купленное — значит доставлено», приёмка которого отложена словом владельца 15.09.
|
||||||
|
|
||||||
|
|
||||||
|
## D39.255 — АКТ: БЭКЕНД-ПАК «КУПЛЕНО — ЗНАЧИТ ДОСТАВЛЕНО» ПРИНЯТ С НАЗВАННЫМ ОСТАТКОМ (16.09)
|
||||||
|
|
||||||
|
**Что принято.** 29 путей (28 `backend/` + `docs/PROGRESS.md`), +3634/−168. Пак прошёл через потерю сессии: `textmachine-b1` сдала семь кругов и была потеряна при переезде окружения 15.09; передачу доводила `textmachine-main-b1` разделом ред. 5 и сдала её **по правилу остановки П4** — круг 8 нашёл дефекты в собственных починках С1/С5/С6, круг 9 не проводился. Деньги пака: $0.
|
||||||
|
|
||||||
|
**1. Что построено.** Отказанная пере-атака оставляет позиции МЕТКУ вместо пустоты: `retry_unaffordable` с суммой, которой не хватило, и с тем, что ответила оплаченная попытка. Читатель и оператор получают про неё разные правды («НЕ ПЕРЕВЕДЕНО» против «требует проверки человеком»), эхо-метрика расщеплена по стадиям, а стережёт всё это каталог мутаций, выросший с 407 записей до 441.
|
||||||
|
|
||||||
|
**2. Чем я это проверил — пять приборов, и каждый назван.**
|
||||||
|
- **Батарея на замороженной копии:** `MAKE_EXIT=0`, линтер `0 issues.`, `go list` 23 = вердиктов 23, `comm` пуст в обе стороны, FAIL 0.
|
||||||
|
⚠ **Мой SKIP разошёлся с её: 9 против 4.** Разрыв объяснён и закрыт: пять корпусных пинов скипаются на копии, где нет доступа к книгам; прогнаны прицельно в главном дереве с корпусными переменными — **5/5 PASS**.
|
||||||
|
- **Полный каталог мутаций — мой собственный прогон:** `441 mutation(s) run, 0 unexpected outcome(s)`, `anchors swept: 0 of 441`, `TMMUTATE_EXIT=0`, `tree_sha=6c7b373c750a3db3` — совпал с её прогоном, то есть судимое дерево то же. Мои 441 лога: **437 с падением, 4 чистых, и это ровно записанные выжившие** (`G-byte-gate` · `MS-reserve-under-the-gate` · `MS-reservation-released-on-marshal-failure` · `WB62-innocent-const-must-not-be-accused`).
|
||||||
|
- **Ось «отчёт ↔ код»** (агент вне сдачи): подтверждено 26 утверждений, из них шесть исполнением; опровергнут 1; новых миноров 4; **мажоров 0**. Ключевое: «правки передачи не меняют поведение движка» подтверждено механически — вне комментариев только 78 строк нового теста.
|
||||||
|
- **Ось «деньги и остаток»** (агент вне сдачи): **79 чисел пере-снято, расхождений в величинах ноль**; все четыре денежные пробы воспроизведены на развёртке HEAD и на дереве сдачи до последнего знака; новых миноров 4; **мажоров 0**.
|
||||||
|
- **Хеши дерева** сняты до прогонов и после: индекс `166997963c95db52`, правки `backend/` `3ca827962cef38ca` — совпали с числами сдачи, дрейфа нет.
|
||||||
|
|
||||||
|
**3. ⛔ ДЕНЬГИ: СМЕНА ПОВЕДЕНИЯ ЕСТЬ, И ОНА ШИРЕ, ЧЕМ ЗАЯВЛЕНО СДАЧЕЙ.** Правило «юнит, начатый прежним прогоном, доделывается вне гранта» пред-существует (`unitCarried`, `granted()`, справка `--max-units` байт-идентична HEAD; эррата 03.09-а к `D39.170`). Для `retry_unaffordable` сдача закрывает дыру, которую сама же завела. **Но проба C — не «метка стала видимой», а ПЕРЕ-КЛАССИФИКАЦИЯ пред-существующего состояния:** `cancelled` с прежнего прогона на HEAD брал слот гранта (`rework`), в сдаче не берёт (`carried`). Это меняет счёт слотов на книгах, которые УЖЕ в поле. Направление — к тому, что обещает справка; исход 15.09 «оставить как в сдаче» в силе; семантика переноса остаётся открытым вопросом владельца (ряд 232). Формулировка отчёта «сдача не вводит нового, а делает видимым существующее» для `cancelled` неточна, и эта строка стоит здесь, а не в остатке.
|
||||||
|
|
||||||
|
**4. РАТИФИКАЦИЯ ПО БЛОКУ 4 — молчать нельзя, поэтому решаю.** `D39.19` п.(4) ратифицировал «edit-числитель gated `DispFlagged`»; вторая рука эдит-числителя этот гейт снимает. **Ратифицирую снятие:** гейт прятал эхо, за которое книга ЗАПЛАТИЛА, а метрика качества обязана считать оплаченное. `D39.19` п.(4) в этой части — **эррата**. ⚠ Цена названа: замеры эхо-метрики до и после несопоставимы, и это свойство обязано ехать с числами, а не выясняться потом.
|
||||||
|
|
||||||
|
**5. ⚠ ТРИ ОПУБЛИКОВАННЫХ КЛЮЧА КАЧЕСТВА СМЕНИЛИ СМЫСЛ, А ОСТАТОК НАЗЫВАЛ ДВА.** Нашла приёмка, пере-снял я: (а) `ProcessedUnits` теперь считает юниты с финальной строкой ЛЮБОГО рода, включая стоп-метку — код сам говорит «„REACHED THE FINAL STAGE“ … too strong now»; (б) черновиковый `EchoDraftRecovered` СУЖЕН условием `shippedText`, и комментарий признаёт «the two are not comparable across it»; (в) эдит-числитель из п.4. Заведено рядом бэклога с требованием перечня «до/после».
|
||||||
|
|
||||||
|
**6. ОСТАТОК — принят вместе с паком, назван поимённо.** Круги не сошлись: правки круга 8 читал только автор (мою приёмку они прошли). Ряд 375 расширен с `cancelled` на метку стопа: `memberDrops` считает выпавшим члена с любой флагованной черновой строкой, и читатель видит «требует проверки человеком» там, где следующий прогон доделает; предикат байт-идентичен HEAD ⇒ дефект пред-существует, пак лишь дал ему вторую достижимость. Блок 3 (сквозной пин краснеет по неверной причине) назван честно и подтверждён текстом падения. Блок 5 — пред-существующее и вне пака, проверяемое подтвердилось.
|
||||||
|
|
||||||
|
**7. ⛔ МОИ ОШИБКИ ЭТОЙ ПРИЁМКИ.** (1) Первый разбор её мутационных логов дал **ложный ноль**: я искал слова вердикта в логах записей, а вердикт пишет сводка `tmmutate`; пере-снял по наличию падения. (2) Батарею я сперва счёл расходящейся по скипам, не спросив, чем копия отличается от дерева. Оба — тот самый класс «прибор ответил на свой вопрос», который ловлю всю смену; записываю у себя, а не у зоны.
|
||||||
|
|
||||||
|
**8. Долги лендинга, исполненные этим актом:** голова в CURRENT-STATE бампнута (держала незакоммиченная сдача); 19 якорей доков, чьи цели двигала сдача, перенаведены по финальному дереву; шесть якорей вне сдачи не тронуты — среди них замороженные отчёты, которым по норме нужен штамп коммита, и чужая зона фронта. **Предмет контракта 14 пере-определён:** дописывать три причины некуда — на проводе стоит `enum: [translated, withheld, pending]`, а причина отказа не выводится вовсе; заведено рядом.
|
||||||
|
|
||||||
|
**9. КАКИЕ СТРОКИ АКТ ЗАКРЫВАЕТ, И ЧЕМ ИЗМЕРЕНО.** Закрыты **291** и **379**.
|
||||||
|
|
||||||
|
Строка **291** — предмет пака: отказанная пере-атака оставляет метку, купленное отдаётся до пере-делки. Её половина «зеркало двух зон» закрыта замером сдачи (причина на провод не выходит, платформенного промта не будет — акт один), вторая половина — «волну нельзя продолжить без ДЫРЫ в непрерывном префиксе» — снята самой меткой.
|
||||||
|
|
||||||
|
Строка **379** («два пина пака не утверждают своей посылки») закрыта **замером, а не чтением кода** — ряд нёс число, и число надо было пере-снять. Прибор: восемь ОТДЕЛЬНЫХ прогонов (`go test ./internal/llm/ -run '^TestARefusalIsNotAPurchaseEvenWhenTheReplyOutrunsTheWrite$' -v`), счёт по строкам `--- PASS/FAIL`, развёртка HEAD в отдельной копии, одна копия — один мутатор.
|
||||||
|
- **Половина (б):** чистое дерево **8/8 PASS** (ровно 1.11 с); мутант — снят `answered &&` в `backend/internal/llm/attemptcut.go:189`=`return t.wrote.Load() || (answered && t.firstByte.Load())` — **8/8 FAIL**. В ряду стояло **7 красных из 8**: пин мерил вероятность, теперь меряет гарантию. Текст падения про предмет: `backend/internal/llm/attemptcut_test.go:793`=`a call that bought nothing is retried to the end of the budget` (2 попытки вместо 3 — прямое следствие того, что отказ стал покупкой); рядом печатаются посылка (`:786`=`premise: the provider was connected to`) и контроль второго сабтеста (`:815`=`the control: delivered=`, снято `delivered=true after_headers=true billable=false cause=connection_lost`).
|
||||||
|
- ⚠ **Что этот мутант НЕ меряет, и это называется, а не умалчивается:** детерминизм даёт **гард посылки** (`:792`), а денежное утверждение (`:796`=`the provider REFUSED this request`) на нём не исполняется — гард падает раньше. Критерию ряда («печатает величину, доказывающую пройденную границу, и падает, когда сценарий не состоялся») это отвечает дословно, но денежная ветка стережётся другим мутантом.
|
||||||
|
- **Половина (а)** закрыта построением: `backend/internal/pipeline/cutcall_test.go:461`=`if row.assertBoundary` печатает `the boundary crossed: after_headers=… billable=… bytes_read=…` и падает текстом `this fixture did not build the situation the row asserts money about`; сторона границы утверждается сверкой `cut.AfterHeaders` с ожиданием строки, а не временем.
|
||||||
|
- ⛔ **Норма, которую этот разбор подтвердил своей ценой:** `time.Sleep(50 * time.Millisecond)` — токен, которым ряд описывал дефект, — **жив на прежнем месте**, и суди я по токену, ряд остался бы открытым. Разводит уже не он: для строки «after 2xx» фикстура ждёт `<-srv.flushed` с бесцветным потолком 4 с (`cutcall_test.go:446`), а сторона границы УТВЕРЖДАЕТСЯ. **Живой токен не значит живой дефект — ровно так же, как подобранный под цель токен не значит верного якоря.**
|
||||||
|
|
||||||
|
**10. ЯКОРНЫЙ ИТОГ ЛЕНДИНГА — СНЯТ КОНТРОЛЕМ, А НЕ ПАМЯТЬЮ.** На развёртке HEAD (`af88680`) линтер давал **27** протухших якорей, после лендинга — **8**, новых **ноль**. Разница разложена: четыре уехали вместе с промтом в `archive/**` (не проверяется), четырнадцать перенаведены по финальному дереву, один переписан здесь. Остаток назван поимённо, и каждый — с причиной, по которой НЕ тронут:
|
||||||
|
- `docs/architecture/05-decisions-log.md:43` — эррата 28.08-к в ШАПКЕ этого журнала; шапка сама объявляет форму якорей в телах не подлежащей правке и велит читать с поправкой. Цель «seed-FILE edit» жива на `backend/internal/pipeline/status.go:1042` и `:1201`.
|
||||||
|
- `docs/experiments/23-editor-tier.md` — четыре якоря ЗАМОРОЖЕННОГО отчёта эксперимента. Замороженному отчёту положен штамп коммита, а не перенаведённые якоря: иначе улику правят задним числом.
|
||||||
|
- Три якоря в доках фронта — ЧУЖАЯ зона. Заведён ряд **457**, и обе уехавшие цели названы в нём готовыми адресами (`14-api-contract/README.md:1138`, `openapi.yaml:1633`), потому что сами цели — в МОЕЙ зоне.
|
||||||
|
- `docs/experiments/00-provider-quirks.md:163` починен **не токеном**: там цель не «уехала», а описанное состояние ИСЧЕЗЛО — `toOpenAIMessages` перестроена 28.08 и склейку теперь делает. Подставить найденный в цели токен значило бы подгонку под зелень; адрес переведён в ИСТОРИЧЕСКИЙ, живой стоит строкой ниже (`httpllm.go:766`).
|
||||||
|
|
||||||
|
⛔ **МОЯ ОШИБКА ПРИБОРА, снятая замером (и она стоила бы ложной находки о чужой зоне).** Сверив свои восемь со списком HEAD, я насчитал ДВА новых якоря во фронте и готов был назвать их следствием лендинга. Замер сказал обратное: цели БАЙТ-ИДЕНТИЧНЫ дереву и HEAD — `14-api-contract/README.md` 1608 строк в обеих, `openapi.yaml` 3497 в обеих, токены на `:1138` и `:1633`. Новыми они не были: **линтер капит список, и контрольный прогон напечатал 25 строк из 27**. Класс — «список, из которого делаешь утверждение, не режь», с поворотом: резал не я, резал ПРИБОР, а выглядело это как факт о дереве. ⇒ у обрезанной выдачи спрашивай знаменатель даже тогда, когда обрезал её не ты.
|
||||||
|
|
|
||||||
|
|
@ -484,7 +484,7 @@ text/event-stream` по не-тестовому Go платформы — тол
|
||||||
### 2.12. Разрешающий список — ✓ инвариант, ◆ форма
|
### 2.12. Разрешающий список — ✓ инвариант, ◆ форма
|
||||||
|
|
||||||
Проекция «read-модель → фронт» строится как allowlist. Что лежит в операторских структурах
|
Проекция «read-модель → фронт» строится как allowlist. Что лежит в операторских структурах
|
||||||
(`backend/internal/pipeline/status.go:184`=`type StatusReport struct`, поля цены — `:180`=`CostUSD`;
|
(`backend/internal/pipeline/status.go:202`=`type StatusReport struct`, поля цены — `:180`=`CostUSD`;
|
||||||
⚠ якоря `:58-130`/`:37-55` протухли и пере-наведены 07.09) и не доезжает ДО ФРОНТА: пять денежных полей плюс `cost_usd` главы
|
⚠ якоря `:58-130`/`:37-55` протухли и пере-наведены 07.09) и не доезжает ДО ФРОНТА: пять денежных полей плюс `cost_usd` главы
|
||||||
· `routing` вида «stage=model», `content_labels`, `content_routing_problems` (ПТ-33) · снапшот, дрифт,
|
· `routing` вида «stage=model», `content_labels`, `content_routing_problems` (ПТ-33) · снапшот, дрифт,
|
||||||
ре-билл · `escalations`, `postcheck_misses`, `style_flags`, `glossary_miss_flagged`, `stages_skipped`,
|
ре-билл · `escalations`, `postcheck_misses`, `style_flags`, `glossary_miss_flagged`, `stages_skipped`,
|
||||||
|
|
|
||||||
|
|
@ -19,9 +19,9 @@
|
||||||
- **Гейт потолков — ПЕР-ВЫЗОВНЫЙ** (`Reserve` на каждый свежий attempt). На границе юнита сидел РЕПЭЙР-суб-бюджет — ужесточён до пер-вызовного с ценой вызова (строка 135 закрыта D39.131); эскалационный кап хоп НЕ прицениваает — перелёт ≤1 хопа, задокументирован и запинен (диспозиция D39.131 п.2д, реопен — живой инцидент). ⚠ **ТРЕТЬЕ семейство, которого перечень не знал (доп. ревизией 02.09): банк-роли несут СОБСТВЕННЫЕ КНИГО-ШИРОКИЕ бюджеты** — `gates.terminology.budget_usd` и `gates.terminology.classify_budget_usd`. Именно оно резало ОПЛАЧЕННУЮ работу на холодном прогоне 31.08 (D39.182 §4: инцидент был на классификаторе). С 31.08 (D39.182) план прохода режется ценой партии ДО первого вызова, а не обрывается посередине; усечение ВИДНО в отчёте — поля `BatchesDropped` и `ClassifyBatchesDropped` (`backend/internal/pipeline/terminologist.go`, греп `BatchesDropped`). ⚠⚠ **И сами цифры этих суб-бюджетов в книжных конфигах КАЛИБРОВАНЫ ПОД ИЮЛЬСКИЕ ЦЕНЫ** (тот же множитель ×4.47, D39.179 п.1): на холодном прогоне 31.08 `classify_budget_usd` 0.02 оборвал классификатор дважды, а поднятый до 0.08 `escalation.budget_usd` был пробит фактом до 0.103305. То есть суб-бюджеты режут ОПЛАЧЕННУЮ работу не по замыслу, а по протухшей калибровке.
|
- **Гейт потолков — ПЕР-ВЫЗОВНЫЙ** (`Reserve` на каждый свежий attempt). На границе юнита сидел РЕПЭЙР-суб-бюджет — ужесточён до пер-вызовного с ценой вызова (строка 135 закрыта D39.131); эскалационный кап хоп НЕ прицениваает — перелёт ≤1 хопа, задокументирован и запинен (диспозиция D39.131 п.2д, реопен — живой инцидент). ⚠ **ТРЕТЬЕ семейство, которого перечень не знал (доп. ревизией 02.09): банк-роли несут СОБСТВЕННЫЕ КНИГО-ШИРОКИЕ бюджеты** — `gates.terminology.budget_usd` и `gates.terminology.classify_budget_usd`. Именно оно резало ОПЛАЧЕННУЮ работу на холодном прогоне 31.08 (D39.182 §4: инцидент был на классификаторе). С 31.08 (D39.182) план прохода режется ценой партии ДО первого вызова, а не обрывается посередине; усечение ВИДНО в отчёте — поля `BatchesDropped` и `ClassifyBatchesDropped` (`backend/internal/pipeline/terminologist.go`, греп `BatchesDropped`). ⚠⚠ **И сами цифры этих суб-бюджетов в книжных конфигах КАЛИБРОВАНЫ ПОД ИЮЛЬСКИЕ ЦЕНЫ** (тот же множитель ×4.47, D39.179 п.1): на холодном прогоне 31.08 `classify_budget_usd` 0.02 оборвал классификатор дважды, а поднятый до 0.08 `escalation.budget_usd` был пробит фактом до 0.103305. То есть суб-бюджеты режут ОПЛАЧЕННУЮ работу не по замыслу, а по протухшей калибровке.
|
||||||
- **leftover-reserved зануляется write-open.** `store.Open` (путь записи, каждый `translate`) выполняет `recoverReservations` (`backend/internal/store/store.go:110`=`s.recoverReservations(ctx)`; сама функция — `backend/internal/store/store.go:278-279`=`UPDATE spend SET reserved_usd = 0`) — файл владеется одним процессом, значит любой reserved на открытии принадлежит несеттлённому прогону. `OpenReadOnly` этого прохода намеренно НЕ делает (`backend/internal/store/store.go:124`=`does not run that pass`) ⇒ **reserved, увиденный read-only `status` В МОМЕНТ СПАВНА, — остаток мёртвого процесса** (несущий факт формулы PD-158, см. §3). ⚠ Но НЕ «всегда»: `OpenReadOnly` построен ровно затем, чтобы `status` работал ВО ВРЕМЯ живого прогона (`backend/internal/store/store.go:122`=`allows concurrent readers while a writer is live`), и конкурентный `status` покажет ЖИВУЮ резервацию между `Reserve` и settle. Узко формулирует и сам код: «after a run crashes, reserved_usd stays non-zero until the next WRITE command» (`backend/internal/store/store.go:130`=`after a run crashes, reserved_usd stays non-zero`), и платформа — «at spawn there is no other writer … so anything reserved is by construction a leftover, never a live promise» (`platform/internal/runs/spawn.go`, греп `never a live promise`).
|
- **leftover-reserved зануляется write-open.** `store.Open` (путь записи, каждый `translate`) выполняет `recoverReservations` (`backend/internal/store/store.go:110`=`s.recoverReservations(ctx)`; сама функция — `backend/internal/store/store.go:278-279`=`UPDATE spend SET reserved_usd = 0`) — файл владеется одним процессом, значит любой reserved на открытии принадлежит несеттлённому прогону. `OpenReadOnly` этого прохода намеренно НЕ делает (`backend/internal/store/store.go:124`=`does not run that pass`) ⇒ **reserved, увиденный read-only `status` В МОМЕНТ СПАВНА, — остаток мёртвого процесса** (несущий факт формулы PD-158, см. §3). ⚠ Но НЕ «всегда»: `OpenReadOnly` построен ровно затем, чтобы `status` работал ВО ВРЕМЯ живого прогона (`backend/internal/store/store.go:122`=`allows concurrent readers while a writer is live`), и конкурентный `status` покажет ЖИВУЮ резервацию между `Reserve` и settle. Узко формулирует и сам код: «after a run crashes, reserved_usd stays non-zero until the next WRITE command» (`backend/internal/store/store.go:130`=`after a run crashes, reserved_usd stays non-zero`), и платформа — «at spawn there is no other writer … so anything reserved is by construction a leftover, never a live promise» (`platform/internal/runs/spawn.go`, греп `never a live promise`).
|
||||||
- **`--max-units` — ОБЪЁМНЫЙ потолок прогона, ортогональный денежному** (D39.165 §1б, принят D39.170). Ограничивает не деньги, а РАБОТУ: не больше N выходных ЮНИТОВ (гранулярность `units_total` манифеста — та же, в которой платформа продаёт главы) возьмут СЛОТ гранта в этом прогоне; юниты, отданные за $0 (резюм, ре-пин), ретраи и эскалации внутри юнита потолок не тратят. ⚠ **«Слот» ≠ «оплата», и с 03.09 это РАЗНЫЕ числа** (пак «число согласия», строка бэклога 232): юнит, который прежний прогон НАЧАЛ и не отгрузил, дописывается ВНЕ гранта, поэтому грант N оплачивает ДО 2N выходных юнитов — замерено приёмкой на живом раннере (грант 2 → `Paid()=4`, шесть вызовов провайдера). Единственный денежный бонд здесь — `--ceiling-usd`. ⛔ **Семантика переноса НЕ ратифицирована — слово владельца 03.09 «подумаем на этот счёт»**, и до его решения читать это как замеренный факт, а не как норму. Принимает только `translate`. **Остановка по объёму — ЗАВЕРШЕНИЕ (exit 0), не пауза:** словарь кодов выхода не расширялся и нового значения `Finished.Outcome` тоже нет — ⚠ **но с 31.08 признак едет ЧИСЛАМИ в кадре `finished` шва, а не только прозой** (D39.181 п.2, закон раскрытия: прозаическая строка отчёта до потребителя потока не доезжала): носитель — `Finished.Volume`, леджер доставки. Различение при этом живёт и в отчёте прогона, и в логе; отчёт разводит ДОСТАВКУ и ПЕРЕ-ДЕЛКУ. Носитель — `backend/internal/pipeline/volume.go:13`=`the VOLUME ceiling — the run's second stop`; словарь флага дословно — `backend/cmd/tmctl/invocation.go:143`=`Stopping on it is a COMPLETION (exit 0), not a pause`. ⚠ Проводка в платформу ГЕЙЧЕНА (`PD-422`): единственный писатель признака движения банка — дверь правок, рост АВТО-банка от майнинга флага не ставит.
|
- **`--max-units` — ОБЪЁМНЫЙ потолок прогона, ортогональный денежному** (D39.165 §1б, принят D39.170). Ограничивает не деньги, а РАБОТУ: не больше N выходных ЮНИТОВ (гранулярность `units_total` манифеста — та же, в которой платформа продаёт главы) возьмут СЛОТ гранта в этом прогоне; юниты, отданные за $0 (резюм, ре-пин), ретраи и эскалации внутри юнита потолок не тратят. ⚠ **«Слот» ≠ «оплата», и с 03.09 это РАЗНЫЕ числа** (пак «число согласия», строка бэклога 232): юнит, который прежний прогон НАЧАЛ и не отгрузил, дописывается ВНЕ гранта, поэтому грант N оплачивает ДО 2N выходных юнитов — замерено приёмкой на живом раннере (грант 2 → `Paid()=4`, шесть вызовов провайдера). Единственный денежный бонд здесь — `--ceiling-usd`. ⛔ **Семантика переноса НЕ ратифицирована — слово владельца 03.09 «подумаем на этот счёт»**, и до его решения читать это как замеренный факт, а не как норму. Принимает только `translate`. **Остановка по объёму — ЗАВЕРШЕНИЕ (exit 0), не пауза:** словарь кодов выхода не расширялся и нового значения `Finished.Outcome` тоже нет — ⚠ **но с 31.08 признак едет ЧИСЛАМИ в кадре `finished` шва, а не только прозой** (D39.181 п.2, закон раскрытия: прозаическая строка отчёта до потребителя потока не доезжала): носитель — `Finished.Volume`, леджер доставки. Различение при этом живёт и в отчёте прогона, и в логе; отчёт разводит ДОСТАВКУ и ПЕРЕ-ДЕЛКУ. Носитель — `backend/internal/pipeline/volume.go:13`=`the VOLUME ceiling — the run's second stop`; словарь флага дословно — `backend/cmd/tmctl/invocation.go:143`=`Stopping on it is a COMPLETION (exit 0), not a pause`. ⚠ Проводка в платформу ГЕЙЧЕНА (`PD-422`): единственный писатель признака движения банка — дверь правок, рост АВТО-банка от майнинга флага не ставит.
|
||||||
- **`--ceiling-usd` — КНИЖНЫЙ потолок, не бюджет прогона.** Дословно из флага: «the book USD ceiling in force for THIS RUN ONLY — it OVERRIDES book.yaml `ceilings.book_usd` and is never written back. It caps the book's CUMULATIVE committed+reserved spend, not this run's increment…» (`backend/cmd/tmctl/invocation.go:142`=`the book USD ceiling in force for THIS RUN ONLY`; ⚠-коммент `backend/cmd/tmctl/main.go:261`=`--ceiling-usd is NOT a per-run budget`; многоточие закрывает обрыв цитаты — во флаге дальше стоит «, and must be > 0»). Ратификация — D39.122 п.2(в): пересчёт «пользовательский прирост → абсолют» — обязанность ПЛАТФОРМЫ, вторая денежная ось не заводится. День-потолок флаг НЕ перекрывает (PD-157). Проводка внутри: `Ceilings.BookUSD` в `Reserve` и именование сработавшего потолка в ошибке — `backend/internal/pipeline/stagerun.go:612`=`BookUSD: r.bookCeilingUSD()` и `backend/internal/pipeline/stagerun.go:699`=`overrides the book's ceilings.book_usd` (стоп = `errReserveCeiling`, `backend/internal/pipeline/escalation.go:49`=`var errReserveCeiling`).
|
- **`--ceiling-usd` — КНИЖНЫЙ потолок, не бюджет прогона.** Дословно из флага: «the book USD ceiling in force for THIS RUN ONLY — it OVERRIDES book.yaml `ceilings.book_usd` and is never written back. It caps the book's CUMULATIVE committed+reserved spend, not this run's increment…» (`backend/cmd/tmctl/invocation.go:142`=`the book USD ceiling in force for THIS RUN ONLY`; ⚠-коммент `backend/cmd/tmctl/main.go:261`=`--ceiling-usd is NOT a per-run budget`; многоточие закрывает обрыв цитаты — во флаге дальше стоит «, and must be > 0»). Ратификация — D39.122 п.2(в): пересчёт «пользовательский прирост → абсолют» — обязанность ПЛАТФОРМЫ, вторая денежная ось не заводится. День-потолок флаг НЕ перекрывает (PD-157). Проводка внутри: `Ceilings.BookUSD` в `Reserve` и именование сработавшего потолка в ошибке — `backend/internal/pipeline/stagerun.go:629`=`BookUSD: r.bookCeilingUSD()` и `backend/internal/pipeline/stagerun.go:716`=`overrides the book's ceilings.book_usd` (стоп = `errReserveCeiling`, `backend/internal/pipeline/escalation.go:49`=`var errReserveCeiling`).
|
||||||
- **Потолки — wiring, не семантика:** `Ceilings` намеренно исключены из `BriefHash` («Wiring fields (paths, ceilings, db) deliberately excluded», `backend/internal/config/book.go:345`=`Wiring fields (paths, ceilings, db) deliberately excluded`; канон — `backend/internal/config/book.go:369`=`canon := struct {`) ⇒ смена ДЕНЕЖНОГО потолка не двигает ни снапшот, ни ре-билл (D39.110 п.2б). ⚠ Верно ровно про ДЕНЬГИ: потолок СЕГМЕНТАЦИИ `edit_ceiling_out` в снапшот ВХОДИТ и меняет границы чанков (`backend/internal/pipeline/snapshot.go:34`=`EditCeilingOut int`).
|
- **Потолки — wiring, не семантика:** `Ceilings` намеренно исключены из `BriefHash` («Wiring fields (paths, ceilings, db) deliberately excluded», `backend/internal/config/book.go:345`=`Wiring fields (paths, ceilings, db) deliberately excluded`; канон — `backend/internal/config/book.go:369`=`canon := struct {`) ⇒ смена ДЕНЕЖНОГО потолка не двигает ни снапшот, ни ре-билл (D39.110 п.2б). ⚠ Верно ровно про ДЕНЬГИ: потолок СЕГМЕНТАЦИИ `edit_ceiling_out` в снапшот ВХОДИТ и меняет границы чанков (`backend/internal/pipeline/snapshot.go:34`=`EditCeilingOut int`).
|
||||||
- **`status --json` отдаёт фигуры платформе:** `committed_usd`, `reserved_usd`, `book_ceiling_usd`, `ceiling_pct` = 100·(committed+reserved)/book_ceiling (`backend/internal/pipeline/status.go:324`=`book_ceiling_usd,omitempty`; арифметика `ceiling_pct` — `backend/internal/pipeline/status.go:918`=`100 * (committed + reserved)`). Дневной фигуры в status нет (PD-157 — `platform/docs/DEFECT_REGISTER.md`, греп `PD-157`).
|
- **`status --json` отдаёт фигуры платформе:** `committed_usd`, `reserved_usd`, `book_ceiling_usd`, `ceiling_pct` = 100·(committed+reserved)/book_ceiling (`backend/internal/pipeline/status.go:342`=`book_ceiling_usd,omitempty`; арифметика `ceiling_pct` — `backend/internal/pipeline/status.go:949`=`100 * (committed + reserved)`). Дневной фигуры в status нет (PD-157 — `platform/docs/DEFECT_REGISTER.md`, греп `PD-157`).
|
||||||
- **Леджер = НИЖНЯЯ граница; строка 78 снята с трекера 10.09, но её ЖИВОЙ ОСТАТОК несёт строка 377.** ⛔ **Испр. 10.09 — прежняя редакция этого пункта, написанная в тот же день, была НЕВЕРНА, и ошибка моя.** Она утверждала, будто оплаченный `2xx` с нечитаемым телом «прежде в `request_log` не попадал» и что это починил пак оборванных вызовов. Замер: ветвь `BilledDecodeError` писала свою строку с пометкой оценки ещё до пака — на `3f05fab^` это `stagerun.go:629`, введено коммитом `2f91b04` **24.07**, а пак этой ветви не касался вовсе (хитов `Estimated` в его диффе по `stagerun.go` — **0**). И носитель я процитировал ЧУЖОЙ: `backend/internal/pipeline/cutcall.go:133` обслуживает `*llm.AttemptCutError` (`backend/internal/pipeline/stagerun.go:741`), а речь шла о `*llm.BilledDecodeError` (`stagerun.go:709`) — это разные классы, и второй до `cutcall.go` не доходит. **Что пак действительно купил:** строку `request_log` за вызов, который оборвали МЫ (прежде он падал в ветвь «ничего не куплено» и получал $0-строку) — вот это `cutcall.go:133`. **Что остаётся правдой:** леджер — нижняя граница, потому что обрыв, за которым ретрай УСПЕЛ, исчезает бесследно (строка **377**). Живой замер `D39.86` — 3 вызова из 14, неизвестность $0.015111 при леджере $0.114378.
|
- **Леджер = НИЖНЯЯ граница; строка 78 снята с трекера 10.09, но её ЖИВОЙ ОСТАТОК несёт строка 377.** ⛔ **Испр. 10.09 — прежняя редакция этого пункта, написанная в тот же день, была НЕВЕРНА, и ошибка моя.** Она утверждала, будто оплаченный `2xx` с нечитаемым телом «прежде в `request_log` не попадал» и что это починил пак оборванных вызовов. Замер: ветвь `BilledDecodeError` писала свою строку с пометкой оценки ещё до пака — на `3f05fab^` это `stagerun.go:629`, введено коммитом `2f91b04` **24.07**, а пак этой ветви не касался вовсе (хитов `Estimated` в его диффе по `stagerun.go` — **0**). И носитель я процитировал ЧУЖОЙ: `backend/internal/pipeline/cutcall.go:133` обслуживает `*llm.AttemptCutError` (`backend/internal/pipeline/stagerun.go:741`), а речь шла о `*llm.BilledDecodeError` (`stagerun.go:709`) — это разные классы, и второй до `cutcall.go` не доходит. **Что пак действительно купил:** строку `request_log` за вызов, который оборвали МЫ (прежде он падал в ветвь «ничего не куплено» и получал $0-строку) — вот это `cutcall.go:133`. **Что остаётся правдой:** леджер — нижняя граница, потому что обрыв, за которым ретрай УСПЕЛ, исчезает бесследно (строка **377**). Живой замер `D39.86` — 3 вызова из 14, неизвестность $0.015111 при леджере $0.114378.
|
||||||
- **ГРАНИЦА ДЕНЕГ ЗА ОБОРВАННЫЙ НАМИ ВЫЗОВ — ФАКТ ДОСТАВКИ, а не статус-строка** (пак строки 360, акт `D39.232`; слово владельца — `D39.230`). Деньги берутся, только когда провайдер подтвердил запрос ответным объектом: `backend/internal/llm/attemptcut.go:221`=`Billable: answered && tr.afterHeaders()`. Наш собственный дедлайн даёт свой класс `attempt_timeout` без ретрая; дедлайн вычисляется ИЗ БЮДЖЕТА вызова, а не назначается (`backend/internal/llm/attemptcut.go:269`=`func (p RetryProfile) deriveDeadline`), так что эскалация, удвоившая `max_tokens`, удваивает и время. Оплаченный обрыв получает чекпойнт, и резюм его НЕ перепокупает. ⛔ Пометка «это оценка» — УСЛОВИЕ слова владельца (`D39.230` п.1) — сегодня в движке живёт ТРЕМЯ носителями (колонка `Estimated` в `request_log` — `backend/internal/store/requestlog.go:41`; пара `estimated_rows`/`estimated_usd` в `status --json` — `backend/internal/pipeline/status.go:911`; печать оператору — `backend/cmd/tmctl/render.go:402`), но НАРУЖУ не выходит ни одним каналом шва: строка **382**. ⚠ Формулировка испр. 10.09 — прежняя («живёт только в `status --json`») звала следующего чинить пометку, которая уже есть.
|
- **ГРАНИЦА ДЕНЕГ ЗА ОБОРВАННЫЙ НАМИ ВЫЗОВ — ФАКТ ДОСТАВКИ, а не статус-строка** (пак строки 360, акт `D39.232`; слово владельца — `D39.230`). Деньги берутся, только когда провайдер подтвердил запрос ответным объектом: `backend/internal/llm/attemptcut.go:221`=`Billable: answered && tr.afterHeaders()`. Наш собственный дедлайн даёт свой класс `attempt_timeout` без ретрая; дедлайн вычисляется ИЗ БЮДЖЕТА вызова, а не назначается (`backend/internal/llm/attemptcut.go:269`=`func (p RetryProfile) deriveDeadline`), так что эскалация, удвоившая `max_tokens`, удваивает и время. Оплаченный обрыв получает чекпойнт, и резюм его НЕ перепокупает. ⛔ Пометка «это оценка» — УСЛОВИЕ слова владельца (`D39.230` п.1) — сегодня в движке живёт ТРЕМЯ носителями (колонка `Estimated` в `request_log` — `backend/internal/store/requestlog.go:41`; пара `estimated_rows`/`estimated_usd` в `status --json` — `backend/internal/pipeline/status.go:911`; печать оператору — `backend/cmd/tmctl/render.go:402`), но НАРУЖУ не выходит ни одним каналом шва: строка **382**. ⚠ Формулировка испр. 10.09 — прежняя («живёт только в `status --json`») звала следующего чинить пометку, которая уже есть.
|
||||||
|
|
||||||
|
|
@ -75,7 +75,7 @@
|
||||||
| Семантика `--ceiling-usd` | D39.122 п.2в; `backend/cmd/tmctl/invocation.go:142`=`the book USD ceiling in force for THIS RUN ONLY`, `backend/cmd/tmctl/main.go:261`=`--ceiling-usd is NOT a per-run budget` |
|
| Семантика `--ceiling-usd` | D39.122 п.2в; `backend/cmd/tmctl/invocation.go:142`=`the book USD ceiling in force for THIS RUN ONLY`, `backend/cmd/tmctl/main.go:261`=`--ceiling-usd is NOT a per-run budget` |
|
||||||
| Формула аргумента потолка (без reserved) · ставка · settle-формы | D39.123 п.2б/г/д; PD-158/PD-159/PD-144 в реестре |
|
| Формула аргумента потолка (без reserved) · ставка · settle-формы | D39.123 п.2б/г/д; PD-158/PD-159/PD-144 в реестре |
|
||||||
| Код денег платформы | `platform/internal/pgstore/credits.go` · `pgstore/runs.go` · `runs/spawn.go` · `runs/reconcile.go` · `pricing/pricing.go` |
|
| Код денег платформы | `platform/internal/pgstore/credits.go` · `pgstore/runs.go` · `runs/spawn.go` · `runs/reconcile.go` · `pricing/pricing.go` |
|
||||||
| Ратификации, на которых стоит этот док | ⚠ **добавлены 05.09: `D39.203`** (владелец: движку МОЖНО говорить «сколько добавить»; наружу идёт ДО-ВЫЗОВНАЯ ОЦЕНКА, не стоимость) · **`D39.204`** (отказ резервации на ретрае деградирует во ФЛАГ; решение принято, код НЕ тронут — строка 291; ⚠ испр. 15.09: конструкция пере-решена владельцем 11.09 — СТАНДАРТНАЯ ОСТАНОВКА с меткой позиции и недостачей в кадре `ceiling`, а не флаг; «Эррата 15.09-а») · **`D39.206`** (акт приёмки денежного стопа). ⚠ **И новые движковые денежные носители того же лендинга:** `backend/internal/pipeline/reservegate.go` (шлюз резерваций и `shortfallMicroUSD`) · `priceprojection.go` (проекция цены книги) · `internal/runevents/runevents.go` (`Ceiling.ShortfallMicroUSD`, `Finished.Money`, поток 1.3). · **D39.179** (пере-пин цен 16.08, ×4.47; норма «стабилен чистый ФАЙЛ» — п.4) · **D39.181** (закон раскрытия: признак объёмного стопа едет числом) · **D39.182** (пак «деньги и честность»: план банк-ролей режется до первого вызова; порог согласия без контура банк-ролей) |
|
| Ратификации, на которых стоит этот док | ⚠ **добавлены 05.09: `D39.203`** (владелец: движку МОЖНО говорить «сколько добавить»; наружу идёт ДО-ВЫЗОВНАЯ ОЦЕНКА, не стоимость) · **`D39.204`** (отказ резервации на ретрае деградирует во ФЛАГ; решение принято и ИСПОЛНЕНО — ⚠ **испр. 16.09: пак «КУПЛЕНО — ЗНАЧИТ ДОСТАВЛЕНО» принят актом `D39.255`, строка 291 ЗАКРЫТА**, код движка тронут (метка `retry_unaffordable`, отдача купленного до пере-делки); ⚠ испр. 15.09: конструкция пере-решена владельцем 11.09 — СТАНДАРТНАЯ ОСТАНОВКА с меткой позиции и недостачей в кадре `ceiling`, а не флаг; «Эррата 15.09-а») · **`D39.206`** (акт приёмки денежного стопа). ⚠ **И новые движковые денежные носители того же лендинга:** `backend/internal/pipeline/reservegate.go` (шлюз резерваций и `shortfallMicroUSD`) · `priceprojection.go` (проекция цены книги) · `internal/runevents/runevents.go` (`Ceiling.ShortfallMicroUSD`, `Finished.Money`, поток 1.3). · **D39.179** (пере-пин цен 16.08, ×4.47; норма «стабилен чистый ФАЙЛ» — п.4) · **D39.181** (закон раскрытия: признак объёмного стопа едет числом) · **D39.182** (пак «деньги и честность»: план банк-ролей режется до первого вызова; порог согласия без контура банк-ролей) |
|
||||||
| Код денег движка | `backend/internal/store/ledger.go` · `store/store.go` · `pipeline/stagerun.go` · `pipeline/status.go` · `config/book.go` · `pipeline/rebill.go` (согласие на пере-оплату) · `pipeline/terminologist.go` (книго-широкие бюджеты банк-ролей) · `pipeline/volume.go` (объёмный потолок) |
|
| Код денег движка | `backend/internal/store/ledger.go` · `store/store.go` · `pipeline/stagerun.go` · `pipeline/status.go` · `config/book.go` · `pipeline/rebill.go` (согласие на пере-оплату) · `pipeline/terminologist.go` (книго-широкие бюджеты банк-ролей) · `pipeline/volume.go` (объёмный потолок) |
|
||||||
| Дефекты денег | `platform/docs/DEFECT_REGISTER.md` (PD-104·113·144·157·158·159) |
|
| Дефекты денег | `platform/docs/DEFECT_REGISTER.md` (PD-104·113·144·157·158·159) |
|
||||||
| Бэклог-строки | `docs/BACKLOG.md` строки 136 · 137 · **377** · **382** (⚠ 78 ЗАКРЫТА 10.09 актом `D39.232`) (⚠ испр. 05.09: **166 отсюда СНЯТА** — движковая половина оценки построена и опубликована лендингом `81a89e9`; открыта только платформенная) (135 и 165 закрыты D39.131) |
|
| Бэклог-строки | `docs/BACKLOG.md` строки 136 · 137 · **377** · **382** (⚠ 78 ЗАКРЫТА 10.09 актом `D39.232`) (⚠ испр. 05.09: **166 отсюда СНЯТА** — движковая половина оценки построена и опубликована лендингом `81a89e9`; открыта только платформенная) (135 и 165 закрыты D39.131) |
|
||||||
|
|
@ -116,7 +116,7 @@
|
||||||
3. **Менять надо ТРАКТОВКУ ОТКАЗА**, а не наличие резервации: «не начинаем новое» вместо «гасим всё».
|
3. **Менять надо ТРАКТОВКУ ОТКАЗА**, а не наличие резервации: «не начинаем новое» вместо «гасим всё».
|
||||||
|
|
||||||
⛔⛔ **ЭРРАТА 05.09 — ВСЁ НИЖЕ ОПИСЫВАЕТ ДВИЖОК ДО ПАКА «ДЕНЕЖНЫЙ СТОП» (приёмочный `81a89e9` + дофикс `616a8e4`, акт приёмки **D39.206**; ⚠ испр.: раньше здесь стояла D39.203 — это нота ВЛАДЕЛЬЦА про «сколько добавить», а не акт, и назван был только дофикс-коммит). Порог «книга короче десяти глав не переводится» СНЯТ ЛЕНДИНГОМ.** Стена стояла на том, что отказ ОДНОГО воркера ронял ВСЮ волну ⇒ резервы всех четырёх обязаны были уместиться в потолок разом. Пак это и чинил (его промт `docs/archive/prompts/BACKEND_MONEYSTOP_SESSION_PROMPT_2026-09-05.md` называл порог целью): отказ ЗАЩЁЛКИВАЕТ волну — новое не стартует, допущенное дорабатывается, — а обязательный вызов ЖДЁТ settle, когда settle может помочь. Пины: `backend/internal/pipeline/moneystop_test.go`, греп `TestUnderACeilingTheWaveFinishesWhatItAdmitted` и `TestWaitingForHeadroomDeliversTheWholeBook` («a ceiling that admits one call AT A TIME must still deliver the book»).
|
⛔⛔ **ЭРРАТА 05.09 — ВСЁ НИЖЕ ОПИСЫВАЕТ ДВИЖОК ДО ПАКА «ДЕНЕЖНЫЙ СТОП» (приёмочный `81a89e9` + дофикс `616a8e4`, акт приёмки **D39.206**; ⚠ испр.: раньше здесь стояла D39.203 — это нота ВЛАДЕЛЬЦА про «сколько добавить», а не акт, и назван был только дофикс-коммит). Порог «книга короче десяти глав не переводится» СНЯТ ЛЕНДИНГОМ.** Стена стояла на том, что отказ ОДНОГО воркера ронял ВСЮ волну ⇒ резервы всех четырёх обязаны были уместиться в потолок разом. Пак это и чинил (его промт `docs/archive/prompts/BACKEND_MONEYSTOP_SESSION_PROMPT_2026-09-05.md` называл порог целью): отказ ЗАЩЁЛКИВАЕТ волну — новое не стартует, допущенное дорабатывается, — а обязательный вызов ЖДЁТ settle, когда settle может помочь. Пины: `backend/internal/pipeline/moneystop_test.go`, греп `TestUnderACeilingTheWaveFinishesWhatItAdmitted` и `TestWaitingForHeadroomDeliversTheWholeBook` («a ceiling that admits one call AT A TIME must still deliver the book»).
|
||||||
⇒ **Честное состояние на 05.09:** движок больше НЕ требует, чтобы вся волна умещалась в потолок; короткая книга идёт по одному вызову. Остаточный пол — ОДНА резервация (`step_max_usd` ≈ $0.07 ⇒ ~3 главы по ставке $0.03; до ИСПОЛНЕНИЯ `D39.204` удвоение на ретрае поднимает это до ~5 — ⚠ решение владельца принято 05.09, но КОД ещё не тронут, работа заведена строкой 291; ⚠ испр. 15.09: по «Эррате 15.09-а» исполнение превращает отказ на ретрае в штатную остановку с меткой позиции и недостачей, а не во флаг с отгрузкой, — поэтому «до исполнения» больше не значит «после исполнения пол ниже»: снимается невидимость оплаченной половины работы, а не сам пол). ⚠ **Новый порог ВЫВЕДЕН, НЕ ЗАМЕРЕН** — отчёт пака называет это честно (`backend/docs/MONEYSTOP_REPORT.md` §9: цена защёлки не замерена, числа проекции с фактом не сверены). Замер стоит одного $0.15-прогона пятиглавой книги и передан полигону. ⚠ **Испр. 10.09: платформенная половина (потолок ДЕНЬГАМИ, D39.196) ПОСТРОЕНА, и прежний отрицательный замер здесь протух.** Та же команда сегодня: `git grep -lE "StepMax|step_max" -- platform/` → **20 файлов** (контроль: несуществующий токен — 0; файлов под `platform/` в индексе — 339), среди них боевые `platform/internal/pricing/pricing.go` (греп `func (m Model) Hold`), `platform/internal/ingest/manifest.go`, `platform/internal/pgstore/books.go`. Холд считается ИМЕННО на этих числах. ⚠ Строка **63** этого же файла предупредила об этом ещё 07.09 («вторая пережила лендинг `81a89e9`»), а фраза стояла — то есть предупреждение в доке само по себе не чинит дока.
|
⇒ **Честное состояние на 05.09:** движок больше НЕ требует, чтобы вся волна умещалась в потолок; короткая книга идёт по одному вызову. Остаточный пол — ОДНА резервация (`step_max_usd` ≈ $0.07 ⇒ ~3 главы по ставке $0.03; до ИСПОЛНЕНИЯ `D39.204` удвоение на ретрае поднимает это до ~5 — ⚠ решение владельца принято 05.09; ⚠ **испр. 16.09: КОД ИСПОЛНЕН и принят актом `D39.255`** — строка 291 закрыта, и «до исполнения» ниже читается как ИСТОРИЯ, а не как действующая стена; ⚠ испр. 15.09: по «Эррате 15.09-а» исполнение превращает отказ на ретрае в штатную остановку с меткой позиции и недостачей, а не во флаг с отгрузкой, — поэтому «до исполнения» больше не значит «после исполнения пол ниже»: снимается невидимость оплаченной половины работы, а не сам пол). ⚠ **Новый порог ВЫВЕДЕН, НЕ ЗАМЕРЕН** — отчёт пака называет это честно (`backend/docs/MONEYSTOP_REPORT.md` §9: цена защёлки не замерена, числа проекции с фактом не сверены). Замер стоит одного $0.15-прогона пятиглавой книги и передан полигону. ⚠ **Испр. 10.09: платформенная половина (потолок ДЕНЬГАМИ, D39.196) ПОСТРОЕНА, и прежний отрицательный замер здесь протух.** Та же команда сегодня: `git grep -lE "StepMax|step_max" -- platform/` → **20 файлов** (контроль: несуществующий токен — 0; файлов под `platform/` в индексе — 339), среди них боевые `platform/internal/pricing/pricing.go` (греп `func (m Model) Hold`), `platform/internal/ingest/manifest.go`, `platform/internal/pgstore/books.go`. Холд считается ИМЕННО на этих числах. ⚠ Строка **63** этого же файла предупредила об этом ещё 07.09 («вторая пережила лендинг `81a89e9`»), а фраза стояла — то есть предупреждение в доке само по себе не чинит дока.
|
||||||
⚠ **Класс ошибки, ради которого эррата написана так подробно: оркестратор заленджил пак, чей промт заказывал снятие этой стены, принял его — и в тот же час предупредил владельца о стене как о действующей, читая ЭТОТ абзац.** Канон, не обновлённый лендингом, врёт громче, чем отсутствующий.
|
⚠ **Класс ошибки, ради которого эррата написана так подробно: оркестратор заленджил пак, чей промт заказывал снятие этой стены, принял его — и в тот же час предупредил владельца о стене как о действующей, читая ЭТОТ абзац.** Канон, не обновлённый лендингом, врёт громче, чем отсутствующий.
|
||||||
|
|
||||||
**ЧИСЛА, В КОТОРЫХ ЧТЕНИЯ РАСХОДИЛИСЬ (ДО-ПАКОВАЯ АРХЕОЛОГИЯ) — и оба верны на своём числе воркеров.** Зона платформы: стена
|
**ЧИСЛА, В КОТОРЫХ ЧТЕНИЯ РАСХОДИЛИСЬ (ДО-ПАКОВАЯ АРХЕОЛОГИЯ) — и оба верны на своём числе воркеров.** Зона платформы: стена
|
||||||
|
|
|
||||||
|
|
@ -61,7 +61,7 @@
|
||||||
|
|
||||||
3. **Каждый JSON-выход глагола несёт версию документа — п. ИСПОЛНЕН, асимметрии нет:** `tm-bank-v1`
|
3. **Каждый JSON-выход глагола несёт версию документа — п. ИСПОЛНЕН, асимметрии нет:** `tm-bank-v1`
|
||||||
(`pipeline/bankexport.go:30`=`const bankExportVersion = "tm-bank-v1"`), `tm-manifest-v2` (`pipeline/manifest.go:46`=`const manifestVersion = "tm-manifest-v2"`)
|
(`pipeline/bankexport.go:30`=`const bankExportVersion = "tm-bank-v1"`), `tm-manifest-v2` (`pipeline/manifest.go:46`=`const manifestVersion = "tm-manifest-v2"`)
|
||||||
и `status --json` (`backend/internal/pipeline/status.go:155-156`=`const statusVersion = "tm-status-v1"`, проставляется `:485`).
|
и `status --json` (`backend/internal/pipeline/status.go:173`=`const statusVersion = "tm-status-v1"`, проставляется `:485`).
|
||||||
|
|
||||||
4. **Незнакомый флаг = громкий отказ при спавне.** Сегодня это так по устройству разбора аргументов
|
4. **Незнакомый флаг = громкий отказ при спавне.** Сегодня это так по устройству разбора аргументов
|
||||||
(`backend/cmd/tmctl/invocation.go:128`=`flag.NewFlagSet(cmd, flag.ContinueOnError)`); зафиксировать законом, а не полагаться на случайность.
|
(`backend/cmd/tmctl/invocation.go:128`=`flag.NewFlagSet(cmd, flag.ContinueOnError)`); зафиксировать законом, а не полагаться на случайность.
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,14 @@
|
||||||
|
> ⚠ **ОТРАБОТАН И ПРИНЯТ 16.09 — акт `D39.255`, лендинг `af88680` (29 путей, $0).**
|
||||||
|
> Инструкции ниже НЕ исполняются: пак закрыт. Закрыты строки **291** и **379**. Остаток — строки
|
||||||
|
> **375** · **232** · **453**–**456**, и он принят вместе с паком.
|
||||||
|
> ⛔ Пак пережил ПОТЕРЮ СЕССИИ: `textmachine-b1` построила его почти целиком и исчезла при переезде
|
||||||
|
> окружения, не объявив работу завершённой; доводила `textmachine-main-b1` разделом ПЕРЕДАЧИ (ред. 5),
|
||||||
|
> он и был сильнее тела. Сдача пришла по правилу остановки П4 — круги НЕ сошлись, и это объявлено честно.
|
||||||
|
> ⭐ Строка **379** закрыта не чтением, а замером: на мутанте `answered &&` пин падает **8 из 8**, тогда
|
||||||
|
> как ряд фиксировал 7 из 8 — вероятность стала гарантией (п.9 акта).
|
||||||
|
> ⚠ Три опубликованных ключа качества сменили смысл (`ProcessedUnits`, `EchoDraftRecovered`,
|
||||||
|
> эдит-числитель) — п.4 и п.5 акта; `D39.19` п.4 получил эрратой снятие гейта `DispFlagged`.
|
||||||
|
|
||||||
# ⟶ ПЕРЕДАЧА ПАКА 15.09 (ред. 5) — ЧИТАЙ ЭТО ПЕРВЫМ
|
# ⟶ ПЕРЕДАЧА ПАКА 15.09 (ред. 5) — ЧИТАЙ ЭТО ПЕРВЫМ
|
||||||
|
|
||||||
> Оркестратор №23; прежняя сессия оркестратора `textmachine-11` оборвалась, адрес нынешней — в канале (П8).
|
> Оркестратор №23; прежняя сессия оркестратора `textmachine-11` оборвалась, адрес нынешней — в канале (П8).
|
||||||
|
|
@ -233,7 +244,7 @@
|
||||||
греп `EstimateUSD`) — промпт и аддитивный буфер НЕ удваиваются. Значит «попытка 1 стоит ×2» — неправда, и
|
греп `EstimateUSD`) — промпт и аддитивный буфер НЕ удваиваются. Значит «попытка 1 стоит ×2» — неправда, и
|
||||||
окно, в котором отказ неизбежен на ≥1 и невозможен на 0, считается по РЕАЛЬНОЙ оценке.
|
окно, в котором отказ неизбежен на ≥1 и невозможен на 0, считается по РЕАЛЬНОЙ оценке.
|
||||||
|
|
||||||
Дальше происходит вот что, и это проверяется одной строкой: **`backend/internal/pipeline/stagerun.go:204`=`infra failure; the cancelled-position mark`** — ЛЮБАЯ ошибка попытки уходит наверх из цикла, **РАНЬШЕ `UpsertChunkStatus`**.
|
Дальше происходит вот что, и это проверяется одной строкой: **`backend/internal/pipeline/stagerun.go:216`=`infra failure; the cancelled-position mark`** — ЛЮБАЯ ошибка попытки уходит наверх из цикла, **РАНЬШЕ `UpsertChunkStatus`**.
|
||||||
|
|
||||||
**Следствия два, и оба стоят денег читателя:**
|
**Следствия два, и оба стоят денег читателя:**
|
||||||
|
|
||||||
|
|
@ -301,7 +312,7 @@
|
||||||
остановка И ЕСТЬ настоящая. Публикуй через штатный путь.
|
остановка И ЕСТЬ настоящая. Публикуй через штатный путь.
|
||||||
3. ⛔ **НАСТОЯЩИЙ ДЕФЕКТ — УЖЕ, чем я написал, и он назван в самом дереве.** Механизм «отметить
|
3. ⛔ **НАСТОЯЩИЙ ДЕФЕКТ — УЖЕ, чем я написал, и он назван в самом дереве.** Механизм «отметить
|
||||||
остановленную позицию» построен ИМЕННО против невидимых дыр:
|
остановленную позицию» построен ИМЕННО против невидимых дыр:
|
||||||
`backend/internal/pipeline/stagerun.go:142`=`THE MARK FOR A STOPPED POSITION IS ATTACHED TO EVERY EXIT`,
|
`backend/internal/pipeline/stagerun.go:160`=`THE MARK FOR A STOPPED POSITION IS ATTACHED TO EVERY EXIT`,
|
||||||
и его комментарий приводит замер прежнего инцидента — «прогон, остановленный на эскалационном хопе,
|
и его комментарий приводит замер прежнего инцидента — «прогон, остановленный на эскалационном хопе,
|
||||||
рассчитал деньги и не оставил строки вовсе: `committed=0.001176`, `chunk_status_rows=0`». **Но метка —
|
рассчитал деньги и не оставил строки вовсе: `committed=0.001176`, `chunk_status_rows=0`». **Но метка —
|
||||||
no-op для всего, что не «доставленный вызов, который остановил человек»** (`recordCancelledStage`).
|
no-op для всего, что не «доставленный вызов, который остановил человек»** (`recordCancelledStage`).
|
||||||
|
|
@ -424,7 +435,7 @@
|
||||||
ПОПЫТКЕ**, а не по итогу вызова.
|
ПОПЫТКЕ**, а не по итогу вызова.
|
||||||
|
|
||||||
**Половина (а) — её первая редакция промта не заказывала вовсе.** Тот же ряд 379 несёт вторую половину:
|
**Половина (а) — её первая редакция промта не заказывала вовсе.** Тот же ряд 379 несёт вторую половину:
|
||||||
две строки таблицы девяти в `backend/internal/pipeline/cutcall_test.go:402`=`time.Sleep(50 * time.Millisecond)`
|
две строки таблицы девяти в `backend/internal/pipeline/cutcall_test.go:451`=`time.Sleep(50 * time.Millisecond)`
|
||||||
разводятся ОКНОМ СТЕННЫХ ЧАСОВ, и по какую сторону границы заголовков сел `cancel()`, не утверждается
|
разводятся ОКНОМ СТЕННЫХ ЧАСОВ, и по какую сторону границы заголовков сел `cancel()`, не утверждается
|
||||||
ничем — замер приёмки дал **2 красных из 8**. **Ряд закрывается ТОЛЬКО вместе с этой половиной.**
|
ничем — замер приёмки дал **2 красных из 8**. **Ряд закрывается ТОЛЬКО вместе с этой половиной.**
|
||||||
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -105,7 +105,7 @@ UNKNOWN 1 — её, дошёл один раз до правок; десять
|
||||||
| 8 | бэкенд | за одну единицу платим дважды | textmachine-61 | ✅ своими словами, 4 возражения — и первое ПЕРЕВЕРНУЛО посылку пака | ✅ закрыт актом `D39.251` с дофиксом |
|
| 8 | бэкенд | за одну единицу платим дважды | textmachine-61 | ✅ своими словами, 4 возражения — и первое ПЕРЕВЕРНУЛО посылку пака | ✅ закрыт актом `D39.251` с дофиксом |
|
||||||
| 9 | бэкенд | купленное доставлено (ряд 291 + приложение 379) | textmachine-b1 | — | ⛔ сессия ПОТЕРЯНА 15.09 при переезде окружения, пак не завершён → строка 11 |
|
| 9 | бэкенд | купленное доставлено (ряд 291 + приложение 379) | textmachine-b1 | — | ⛔ сессия ПОТЕРЯНА 15.09 при переезде окружения, пак не завершён → строка 11 |
|
||||||
| 10 | сквозной | ХОЛОДНЫЙ ПРОГОН B, платный, с вычиткой всего текста | textmachine-82 | ✅ своими словами, 5 опасностей — три исправили промт | ✅ **ПРИНЯТ актом `D39.252`**, факт $0.396657 |
|
| 10 | сквозной | ХОЛОДНЫЙ ПРОГОН B, платный, с вычиткой всего текста | textmachine-82 | ✅ своими словами, 5 опасностей — три исправили промт | ✅ **ПРИНЯТ актом `D39.252`**, факт $0.396657 |
|
||||||
| 11 | бэкенд | ДОВОДКА пака 9 после потери сессии — раздел ПЕРЕДАЧИ ред. 5 того же промта | textmachine-main-b1 | ✅ своими словами, хеш индекса сверен, +5 недоделок сверх семи (две протухшие строки отчёта · цвет пинов снят не на HEAD · противоречие счёта читателей · §4.5(а) без исполнения · редрайв без катчера) — исходы отправлены | выдан 15.09 после трёх кругов опровергателя (21 → 3 мажора → 0) и confirm владельца · ⏸ **СДАН 15.09 по правилу остановки П4**, приёмка отложена словом владельца «Не отвлекайся пока от банка памяти, работай по нему» |
|
| 11 | бэкенд | ДОВОДКА пака 9 после потери сессии — раздел ПЕРЕДАЧИ ред. 5 того же промта | textmachine-main-b1 | ✅ своими словами, хеш индекса сверен, +5 недоделок сверх семи (две протухшие строки отчёта · цвет пинов снят не на HEAD · противоречие счёта читателей · §4.5(а) без исполнения · редрайв без катчера) — исходы отправлены | выдан 15.09 после трёх кругов опровергателя (21 → 3 мажора → 0) и confirm владельца · ⏸ СДАН 15.09 по правилу остановки П4, приёмка отложена словом владельца «Не отвлекайся пока от банка памяти, работай по нему» · ✅ **ПРИНЯТ актом `D39.255`** 16.09 по слову «Да, начинай приёмку»: пять осей приёмки (батарея 23/23 · мой полный каталог мутаций 441/441 · её логи пере-разобраны моим прибором 437+4 · ось «отчёт↔код» 26 подтверждений, 0 мажоров · ось денег 79 чисел, все четыре пробы точны). Лендинг `af88680`, 29 путей, $0. ⚠ Мои ложные нули смены — в п.7 акта |
|
||||||
| 12 | — (вне кодовых зон) | КОНСИЛИУМ «банк памяти длинной книги — как строить»: наследует банковую работу смены после отзыва проекта оркестратора; совет агентов, Fable 1–2 | textmachine-main-1e | ✅ своими словами; три опасности: шесть открытых решений против лимита в пять вопросов · исход «не термин» против закрытия D39.102 п.2 · угол «журнал с окнами» против почти пустых окон — все по делу, ответы отправлены | ✅ **ПРИНЯТ актом `D39.253`** 16.09: сдан по правилу остановки, приёмка — пять осей вне консилиума (50 находок, 14 мажоров), затем круг дофикса и узкий закрывающий. ⭐ Совет нашёл ратифицированный ответ на заглавный кейс владельца (D5 п.1, D7 правка 1), мимо которого прошли оба отозванных проекта. ⚠ Мои ошибки смены — в п.6 акта. Выдан 16.09 после механической сверки 13 блоков и ЧЕТЫРЁХ кругов опровергателя: 4 мажора + 15 миноров → 1 + 7 → 1 + 2 → 0 + 2, миноры последнего внесены. ⭐ Опровергатель нашёл то, мимо чего прошли оба отозванных проекта: ратифицированный ответ на заглавный кейс владельца (D5 п.1, D7 правка 1) и что у движковых строк банка окон почти нет (`since_ch` > 0 у 2 строк на книгу, `until_ch` = 0 у всех). ⚠ Дважды мажор родила МОЯ правка: цитата о заморозке без её предмета · баннер выписки, объявивший опровергнутым верное утверждение |
|
| 12 | — (вне кодовых зон) | КОНСИЛИУМ «банк памяти длинной книги — как строить»: наследует банковую работу смены после отзыва проекта оркестратора; совет агентов, Fable 1–2 | textmachine-main-1e | ✅ своими словами; три опасности: шесть открытых решений против лимита в пять вопросов · исход «не термин» против закрытия D39.102 п.2 · угол «журнал с окнами» против почти пустых окон — все по делу, ответы отправлены | ✅ **ПРИНЯТ актом `D39.253`** 16.09: сдан по правилу остановки, приёмка — пять осей вне консилиума (50 находок, 14 мажоров), затем круг дофикса и узкий закрывающий. ⭐ Совет нашёл ратифицированный ответ на заглавный кейс владельца (D5 п.1, D7 правка 1), мимо которого прошли оба отозванных проекта. ⚠ Мои ошибки смены — в п.6 акта. Выдан 16.09 после механической сверки 13 блоков и ЧЕТЫРЁХ кругов опровергателя: 4 мажора + 15 миноров → 1 + 7 → 1 + 2 → 0 + 2, миноры последнего внесены. ⭐ Опровергатель нашёл то, мимо чего прошли оба отозванных проекта: ратифицированный ответ на заглавный кейс владельца (D5 п.1, D7 правка 1) и что у движковых строк банка окон почти нет (`since_ch` > 0 у 2 строк на книгу, `until_ch` = 0 у всех). ⚠ Дважды мажор родила МОЯ правка: цитата о заморозке без её предмета · баннер выписки, объявивший опровергнутым верное утверждение |
|
||||||
|
|
||||||
⛔ **ПОЛИГОН СНЯТ ВЛАДЕЛЬЦЕМ 11.09.** Я предлагал пак трижды — `ed`, `5c` (обе отработавшие, отказались ПО НОРМЕ и были правы) и свежей `37`, — после чего владелец сказал «полигон не надо выдавать». Выдача `37` ОТОЗВАНА тем же часом. ⚠ Урок не про полигон: **я трижды искал адресата для заказа, приоритет которого не подтверждал у владельца.** Слот зоны свободен ≠ работу зоны надо заказывать.
|
⛔ **ПОЛИГОН СНЯТ ВЛАДЕЛЬЦЕМ 11.09.** Я предлагал пак трижды — `ed`, `5c` (обе отработавшие, отказались ПО НОРМЕ и были правы) и свежей `37`, — после чего владелец сказал «полигон не надо выдавать». Выдача `37` ОТОЗВАНА тем же часом. ⚠ Урок не про полигон: **я трижды искал адресата для заказа, приоритет которого не подтверждал у владельца.** Слот зоны свободен ≠ работу зоны надо заказывать.
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue