Ratify the operator-truth landing, record that the engine's own estimate is a floor, and name the three errors the order itself carried
This commit is contained in:
parent
e48bca27df
commit
6e14eaea97
6 changed files with 67 additions and 13 deletions
|
|
@ -3,7 +3,7 @@
|
|||
> **Единственный трекер проекта.** Здесь живут строки, на которые доки, промты и D-ноты ссылаются словами «строка N» / «строка бэклога N»: **ID строки стабилен навсегда**, не перенумеровывается и не переиспользуется (D39.80). Правки — только через оркестратора; каждая петля обязана иметь диспозицию: решено / отложено-с-записью / отклонено.
|
||||
> ⚠ **Это НЕ бэклог зоны `docs/`, а бэклог ПРОЕКТА.** У зон свои, с другими неймспейсами ID, и единый их строк не принимает (D39.84): платформа — [../platform/BACKLOG.md](../platform/BACKLOG.md) (`П-N`) и её регистр дефектов `platform/docs/DEFECT_REGISTER.md` (`PD-N`); фронт — [../frontend/docs/BACKLOG.md](../frontend/docs/BACKLOG.md) (`Ф-N`).
|
||||
> ⚠ **Состояние проекта — не здесь.** Очередь, курс, CURRENT-STATE, состояние паков и живая хроника — шапка [PROGRESS.md](PROGRESS.md). Здесь только долг и его диспозиции.
|
||||
> - **СЧЁТ ОЧЕРЕДИ на 07.09 (вечер) (скриптом по таблице — `python3 docs/scripts/counts.py`; обновлять при каждом лендинге):** всего **260** строк · зона бэкенд **129** строго / **175** широко (⚠ колонки счётчик читает С КОНЦА — испр. D39.116) · **блокеров очереди 0** (236 закрыта D39.175), платные прогоны разблокированы · «скоро» **119** (перечень — грепом по таблице, рукописный список снят D39.126) · гейт-строка эксп-22: 153 (плюс 150 — руки владельца; ⚠ 55 из гейтов СНЯТА — D39.198 п.5); строка 5 — остаток гейчен ре-пробой 74, носитель события теперь строка 188 (аудит D39.140); остальное «когда-нибудь». ⚠ Счёт — НИЖНЯЯ граница долга, не потолок (разбор — легенда таблицы ниже).
|
||||
> - **СЧЁТ ОЧЕРЕДИ на 07.09 (вечер) (скриптом по таблице — `python3 docs/scripts/counts.py`; обновлять при каждом лендинге):** всего **254** строк · зона бэкенд **123** строго / **169** широко (⚠ колонки счётчик читает С КОНЦА — испр. D39.116) · **блокеров очереди 0** (236 закрыта D39.175), платные прогоны разблокированы · «скоро» **113** (перечень — грепом по таблице, рукописный список снят D39.126) · гейт-строка эксп-22: 153 (плюс 150 — руки владельца; ⚠ 55 из гейтов СНЯТА — D39.198 п.5); строка 5 — остаток гейчен ре-пробой 74, носитель события теперь строка 188 (аудит D39.140); остальное «когда-нибудь». ⚠ Счёт — НИЖНЯЯ граница долга, не потолок (разбор — легенда таблицы ниже).
|
||||
> - ⚠ **Переезд 06.09 (D39.218):** таблица вынесена из `PROGRESS.md` ДОСЛОВНО и ни один ID не сдвинут — **с единственным исключением: две ячейки (строки 220 и 306) тронуты РОВНО в номере якоря `docs/scripts/counts.py:566`→`:569` и `:592`→`:595`**, потому что цель сдвинул этот же коммит; текст ячеек не менялся, длины равны. В `PROGRESS.md` на прежнем месте оставлен заголовок-указатель, поэтому ссылки «секция „Бэклог“» доезжают в один хоп.
|
||||
|
||||
## Бэклог (ЕДИНЫЙ, собран 26.07, актуализация 04.08 D39.99/D39.101; правки — только через оркестратора)
|
||||
|
|
@ -273,12 +273,6 @@
|
|||
| 330 | ⛔ **ЧТО ДВИЖОК ДЕЛАЕТ С ПРОТИВОРЕЧИЕМ В БАНКЕ — РЕШЕНИЕ ВЛАДЕЛЬЦА, И ОНО ПРО ДЕНЬГИ.** Слово владельца (строка 267): «у неподписанного термина тоже обязан быть ОДИН перевод». Сегодня движок противоречие в лучшем случае ВИДИТ: `ApprovedSharedKeyCollisions` роняет прогон на approved×approved, `UnverifiedKeyConflicts` варнит approved×unsigned, детектор схлопывания (пак 06.09) добавит репорт. **Ни один не делает ОДИН перевод.** Два выхода требуют слова владельца, потому что оба стоят денег: (а) «варнинг→стоп» для approved×unsigned — роняет ОПЛАЧЕННЫЙ прогон, довод против записан в коде (`backend/internal/membank/memseed.go:685-688`: самострел); (б) отказ схлопывания отдавать противоречащую форму — термин остаётся несхлопнутым, банк держит прежнюю форму; это меняет СОДЕРЖИМОЕ банка ⇒ двигает `memory_version` и снапшот редакторской волны ⇒ **пере-покупка на затронутых книгах**. ⚠ Разводить (а) и (б) по разным пакам нельзя — это ОДИН вопрос «что ДЕЛАЕМ», в отличие от «видим ли» (`D39.216`). ⇒ вопрос владельцу подаётся ВМЕСТЕ с ценой, и она ЗАМЕРЕНА 06.09 бэкенд-зоной ($0, read-only, прибор в дереве — `backend/internal/pipeline/bankconflict_corpus_test.go`, opt-in по `TM_CORPUS`): **обошёл 162 файла БД, 161 с таблицей глоссария, 142 книги с непустым банком, прочитано 13 350 строк; книг с ЛЮБЫМ конфликтом — 0**. ⛔ **Ноль ЧЕСТНЫЙ, и вот три величины, которые делают его читаемым:** популяция огромна (12 257 из 13 350 строк неподписанные — approved 1093 · draft 11399 · auto 858, то есть недостающее правило покрывает 92 % банка, а не экзотику) · форма столкновения в корпусе не возникает, потому что все существующие двери роняют дубль по ПОЛНОМУ ключу `(src,sense,since_ch,until_ch)`, а разные ОКНА через них проходят · подсаженная противоречащая строка ловится на **142 из 142** книг, значит прибор мерит. ⭐ **И решающее для владельца: СТАРОЕ правило (approved × unsigned) на том же корпусе тоже даёт 0** — то есть обе половины одинаково НЕ НАБЛЮДЕНЫ, и решать он будет про класс риска, а не про частоту | владелец | скоро | решение владельца по (а) и (б) одним ответом + цена в книгах | пинги П1/П2 бэкенд-сессии 06.09, пак «закон банка честно» |
|
||||
| 331 | ⛔ **ДВИЖКОВАЯ ПОЛОВИНА `PD-441`: ОТМЕНЁННЫЙ В ПОЛЁТЕ ВЫЗОВ УХОДИТ В ЛЕДЖЕР НУЛЁМ, И ПЛАТФОРМА НЕ МОЖЕТ СКАЗАТЬ БОЛЬШЕ, ЧЕМ «≥».** Формулировка платформенной зоны 06.09 (её слова, приняты оркестратором): (1) `backend/internal/pipeline/stagerun.go`, ветвь с комментарием `No 2xx ever arrived: nothing was billed` — сеттлить ОЦЕНКУ резервации, а не ноль, когда отменённый вызов УЖЕ УШЁЛ; различитель — факт ухода, и порог обязан быть ЗАМЕРЕН, а не назначен (замер `PD-441`: отмена до ухода 20–31 мс против ушедших 120756/156469/156470 мс); (2) ⭐ без второй половины платформа умеет только «≥», но никогда «≥ X, до Y»: `tmctl status --json` обязан публиковать РЯДОМ с `committed_usd` число и сумму строк, чья цена ОЦЕНОЧНАЯ или неизвестна (движок уже печатает `estimated-cost rows: N`, строка **78**). Первое чинит счёт, второе делает маржу ИЗМЕРИМОЙ. ⚠ Пользовательской половины у этого НЕТ и не проектируется: недо-счёт бьёт по деплою, баланс пользователя завышен в его же пользу (решение оркестратора 06.09, `D39.196` п.2а) | бэкенд | скоро | сеттл оценки при отмене ушедшего вызова + публикация оценочных строк в `status --json` | `PD-441`, записка-план платформы 06.09 |
|
||||
| 332 | ⛔ **СИНХРОННЫЙ РАЗРЕЗ НА ПРИЁМЕ ПРИНЯТ НАПОЛОВИНУ: ПОСТРОЕН, НО НЕ ГОТОВ — сработало правило остановки.** Из одиннадцати major пака девять легли в этот один механизм, и каждая починка открывала новую площадь ⇒ зона прекратила его чинить по решению оркестратора, а не по усталости. **ДЕСЯТЬ незакрытых пунктов — поимённо в зонном журнале** `platform/docs/platform-PROGRESS.md`, греп `СРАБОТАЛО ПРАВИЛО ОСТАНОВКИ`; здесь копии НЕТ (один носитель). Первый из них определяет форму: **граница бюджета хвоста обязана ВЫВОДИТЬСЯ ИЗ кода пути, а не перечисляться руками** — счёт выводили трижды и трижды неверно. ⚠ Ложный инвариант бюджета заландён осознанно: окно лжи 8 секунд ширины (дедлайн 26m21s–26m29s) при дефолте 10m0s, последствие — теряется идемпотентность (повтор даёт вторую книгу), а не целостность; ряд регистра несёт числа. Три пункта дописаны приёмкой: потерянный ограничитель параллелизма (`MaxWorkers: 4` был у очереди, теперь разрез живёт в HTTP-обработчике без лимитера) · маршрут молчит до 210–220 с после последнего байта, промежуточный прокси не спрошен · отказ уходит наружу только МАШИННЫМ кодом (`Detail` не заполняется) ⇒ «честная причина человеку» из заказа сегодня НЕ доезжает | платформа | скоро | пак, забирающий разрез: вывод границы из кода + десять пунктов журнала | приёмка пака «деньги и правда» 07.09 |
|
||||
| 333 | ⛔ **ШОВ-БЛИЗНЕЦ: `Contradictions`/`Conf` ПЕРЕСЕКАЮТ ГРАНИЦУ ФАЙЛА ТЕМ ЖЕ СПОСОБОМ, ЧТО И УБРАННАЯ КАРТА, И МУТАЦИЯ ЛЮБОГО ИЗ ТРЁХ КЛЮЧЕЙ ПЕРЕЖИВАЕТ ТРИ ПОЛНЫХ ПАКЕТА** (`pipeline` + `terminology` + `tmctl`). Стороны сегодня согласованы, паком не тронуты — это не регресс, а незакрытая дыра того же класса, который пак закрыл у соседа. ⭐ **Цена измерена автором на себе: ТРИ КРУГА самопроверки ушли на починку точки вместо шва**, и только на третьем стало видно, что чинить надо способ, а не место; лечение соседа — убрать карту и свести выбор ключа в ОДНО место, после чего один пин ловит все три мутации плюс «продакшн обходит сопоставитель». ⇒ здесь нужен тот же ход, а не четвёртая заплата (`D39.216`). Носитель разбора — §5а №10 отчёта зоны в `docs/PROGRESS.md` | бэкенд | скоро | свести выбор ключа в одно место + один пин на все три мутации | приёмка пака «закон банка честно» 07.09 |
|
||||
| 334 | ⛔ **ОПИСАНИЕ БАНКОВОГО КОНТУРА ЛЖЁТ ОПЕРАТОРУ В ЧЕТЫРЁХ МЕСТАХ — один класс, один заказ.** (1) `mining.go:654` `loadAutoBank(signed []store.GlossaryEntry)` зовётся как `r.loadAutoBank(in.entries)` (`bankmaterialize.go:125`): имя параметра, дока и текст оператору говорят «подписанная», а популяция — сид+ruby+mined ЛЮБОГО статуса ⇒ оператор видит неподписанную строку названной подписанной. (2) `bankmaterialize.go:132` — тот же обман в ремарке «the signed term wins». (3) ⚠ **СНЯТО 08.09 приёмкой второго пака — утверждения не было:** дока `ApprovedSharedKeyCollisions` (`membank/memseed.go:251-258`) говорит «two approved terms with DIFFERENT dst and OVERLAPPING spoiler windows» — ровно то же, что комментарий вызова (`bankmaterialize.go:139-141`), и реализация согласуется с обоими; `git log -S` показывает, что обе фразы не менялись годами. Пункт был неточен с момента заведения строки. (4) `mempostcheck.go:91` — дока `Shown` обещает «сколько неподписанных строк реально показано модели», а sticky-перенос `continue`-ится раньше счёта. ⚠ Поведение везде ВЕРНО — лжёт только описание; это тот же класс, что пак 06.09 чинил в четырёх других местах | бэкенд | скоро | четыре описания приведены к поведению + пины на тексты | §5а пака «закон банка честно», приёмка 07.09 |
|
||||
| 335 | ⛔ **РОЛЬ И КЛАССИФИКАТОР ПЛАТЯТ ЗА УЖЕ БАНКОВАННЫЕ ТЕРМИНЫ — фильтр стоит только на ЭМИССИИ.** `terminologist.go:257` против `mining.go:553`: поверхность, которую банк уже несёт, выкидывается на выходе, но до этого за неё заплачено вызовом роли и классификатора. ⇒ прямые деньги на каждом прогоне майнинга. Цена не измерена — первым шагом замер доли таких кандидатов на корпусе | бэкенд | скоро | фильтр по банк-поверхностям ДО оплаты + замер сэкономленного | §5а №3 + предложение №3 зоны |
|
||||
| 336 | **РАЗНОГЛАСИЕ НЕ ДОЕЗЖАЕТ ДО ЛИСТА ПОДПИСИ НА САМОЙ ЧАСТОЙ ФОРМЕ СИД-СТРОКИ.** `internal/membank/memseed.go`: сид-строка с окном ПО УМОЛЧАНИЮ и без sense делит UNIQUE-кортеж с banknote-предложением, пропуск по кортежу срабатывает раньше, и владелец не видит спора в артефакте, по которому подписывает. ⚠ Автор пака 06.09 нашёл это у себя сам и отдельно признал, что его же e2e обходил дыру подобранным `until_ch: 20` | бэкенд | скоро | правило «заменённая строка движется» либо иной разрез кортежа + пин на лист подписи | §5а №7 + предложение №6 зоны |
|
||||
| 337 | **ТЕКСТЫ ОПЕРАТОРСКИХ СООБЩЕНИЙ НЕ ЗАПИНЕНЫ СИСТЕМНО.** Носитель — `internal/pipeline/seeding.go:73`. Пины есть, но узкие: подстрока стерегла одно словосочетание, а локализующая половина (обе строки, оба окна, firing-ключ) не была закрыта ничем; расширение правила 06.09 сделало прежний текст ложным, и поймала это батарея, а не пин. ⇒ варнинг, по которому нельзя понять, ЧТО столкнулось, — шум, который учат игнорировать | бэкенд | скоро | пины на тексты операторских сообщений как класс | §5а №8 + предложение №4 зоны |
|
||||
| 338 | **ПУТЬ ЗАПИСИ СТАТУСА НЕ ЧИТАЕТСЯ ПО КОДУ — свойство места, а не невнимательность.** `internal/store/chunkstatus.go` вместе с `internal/pipeline/waverun.go`: писателей несколько (`recordSkippedStages` и флагнутая ветвь `runStageSequence`, вторая берётся только при ≥2 стадиях в одной волне), и какой сработает — решает раскладка волны. ⚠ Замер: автор пака назвал НЕ ТОТ механизм ТРИ раза подряд, ловила каждый раз мутация. Следующий читатель ошибётся там же | бэкенд | скоро | один читаемый путь записи либо дока, называющая оба писателя и условие каждого | §5а №10 |
|
||||
| 339 | **РОЛИ НЕ ПОКАЗЫВАЮТ СУЩЕСТВУЮЩУЮ ФОРМУ ПОВЕРХНОСТИ — якорная половина канон-проверок.** `terminology.go:873` и `:941`: обе проверки пропускают пару с РАВНЫМИ источниками; проверочная половина закрыта паком 06.09, якорная — нет. ⚠ Лечение МЕНЯЕТ ЗАПРОС к модели ⇒ деньги и снапшот, поэтому отдельным решением, а не прицепом | бэкенд | скоро | показать роли существующую форму + цена в снапшоте | §5а №2 + предложение №2 зоны |
|
||||
| 340 | ⛔ **СУЖЕНИЕ ВХОДА ДЕЙСТВУЕТ ТОЛЬКО НА СИНХРОННОЙ ВЕТВИ: при деплойном классе книга одним полотном попадает в библиотеку МОЛЧА.** Отказ по числу глав (`D39.221`) стоит на пути, где движок ответил; когда он недоступен, книга уходит в очередь прежним путём и сужение её не видит. ⛔ Закрыть нечем: словарь `RejectReason` закрыт четырьмя значениями, а ближайшее по смыслу `source_unreadable` ТЕРМИНАЛЬНО и УДАЛЯЕТ исходник — то есть уничтожило бы файл пользователя из-за НАШЕГО ограничения. ⇒ развилка владельцу: пятая причина отказа минором канона ЛИБО осознанное «асинхронная ветвь остаётся проницаемой до готовности структуры глав». Рекомендация оркестратора — второе: беты нет, впуск ручной, а лишнее значение в закрытом словаре переживёт надобность | владелец | скоро | слово владельца + минор канона или записанный риск | `PD-463`, вопросы платформы 07.09 |
|
||||
| 341 | **ПРЕДЛОЖЕНИЕ ДВИЖКА ПРОВЕСТИ `--ceiling-usd` В `status` ВИСИТ БЕЗ ДИСПОЗИЦИИ С 09.08** (пинг №15). `backend/internal/pipeline/status.go` отвечает «a read path never carries a run-scoped override» — то есть у движка есть позиция, а решения нет ни за, ни против. ⇒ принять или отклонить, но не оставлять третий месяц | бэкенд | когда-нибудь | диспозиция оркестратора одной строкой | вопросы платформы 07.09 |
|
||||
|
|
@ -290,7 +284,7 @@
|
|||
| 350 | ⚠ **ИСПОЛНЕНО 07.09 (`D39.225`) КРОМЕ ОДНОГО: по каждой из шести функций назван исход — четыре получили причину жизни комментарием («NO CALLER TODAY: contract surface waiting on backlog row 12»), дубль инлайна свёрнут в `finalStageName()`. ОСТАЁТСЯ словарь родов в четырёх носителях; текст его собственной ошибки врать перестал.** **РЕФАКТОРИНГ ОБЛЕГЧЕНИЯ ВЕДЕНИЯ (санкция владельца 07.09) — снапшот-нейтрально, и заказ здесь «решить», а не «удалить».** Вызовов вне определения ноль у шести функций (греп 07.09; КОНТРОЛЬ — `SplitChunks` 34 живых вызова): `obs.SafeGo`, `text.TokenizeCyrillic`, `CheapGateResult.UnitScaleHard`/`UnitScaleSoft`, `Bank.Voices()`, `Bank.Pairs()`. ⚠ **Четыре из шести стоят НАМЕРЕННО, и слепое удаление снимет намеренное:** `UnitScaleHard/Soft` сами называют, кого ждут — `checks/cheapgates.go:155-156` «for the report and a future hard gate», то есть строку **12**; `TokenizeCyrillic` — образец паттерна value-default, на который ссылаются `checks/sanitizer.go:21` и `:197`; `SafeGo` — намеренный контраст к `obs/panic.go`, названный решением `pipeline/waverun.go:405` («NOT obs.SafeGo»), и его удаление повесит два комментария в воздухе — класс строки **299**; `Voices`/`Pairs` (`membank/memory.go:371-376` «frozen for the job») ждут потребителя, которого держит строка **13б**. ⇒ по каждой ОДИН исход с объявлением в отчёте: удалить ЛИБО назвать причину жизни в комментарии. Плюс ИМЯ последней стадии дважды одинаковым инлайном — `r.Pipeline.Stages[n-1].Name` в `pipeline/export.go:283` и `quality.go:342` (адреса на `d6dfc49`). ⚠ **Испр. 07.09: и research/33 §7.1, и первая редакция этой строки называли здесь «готовый `finalStageWave()`» — это ДРУГАЯ функция**: она возвращает ВОЛНУ (`snapshot.go:247`, вызовов 13 — 10 прод и 3 теста), а хелпера для ИМЕНИ не существовало вовсе, и «при готовом хелпере» читалось как «работа уже сделана» и словарь родов в четырёх носителях (`membank/memory.go`, `membank/memseed.go`, `terminology/classify.go:50`, промт), где текст собственной ошибки врёт о принимаемом множестве. ⛔ Границы санкции: НЕ дробить `internal/pipeline` и НЕ переписывать `Runner` (`12-go-style-notes.md` §1, D39.23), ничего, что двигает снапшот / хеш запроса / ключ манифеста. ⚠ Адреса сняты research/33 на `e69902a`, а лендинг 07.09 тронул `memseed.go` и `export.go` — пере-снимать командой, не по тексту | бэкенд | когда-нибудь | попутный проход с батареей + объявление исхода по каждой функции | research/33 §7.1, санкция владельца 07.09 |
|
||||
| 351 | **ЛИНТ СЛОВАРЯ КЛАССИФИКАТОРА ПИНИТ ОДНО НАПРАВЛЕНИЕ: слово, УБРАННОЕ из Go, не ловит ничто.** Гейт `TestEveryClassifierPromptSpeaksTheEnginesVocabulary` (лендинг `D39.225`) утверждает «каждое слово из `terminology.Types`/`Genders` названо в промте пары» — и потому сжимается вместе со своим предметом: выкинутый класс `title` оставляет батарею зелёной (замер 07.09 на копии: 19 ok / 0 FAIL). Вырожденный предел закрыт стражем `len(classifierVocabulary()) == 0`, общий случай — нет. Настоящий дом — пин САМОГО словаря, которого в репозитории нет (research/33 Д1: 0 тестов на `terminology.Types`). ⚠ Граница названа зоной самостоятельно, в заказ пака не входила | бэкенд | когда-нибудь | пин словаря (голден или рефлексивный тест) | `D39.225`, research/33 Д1 |
|
||||
| 352 | **ПЯТЬ РУКОПИСНЫХ СПИСКОВ АРМ-КОНФИГОВ ЖИВУТ РЯДОМ С ДВУМЯ ГЕЙТАМИ, КОТОРЫЕ ТЕПЕРЬ ГЛОБЯТ.** `pipeline/promptlabel_test.go:45` · `config/echoregen_shipping_test.go:35` · `config/content_labels_test.go:529` и `:575` · `config/prompt_pack_test.go:239` перечисляют армы поимённо; новый арм автоматически попадает в `TestAnArmIsTheProductionConfigWithADifferentEditor` и `TestSwapArmConfigs` и проходит мимо всех пяти. Найдено приёмкой `D39.225`, вне заказа пака; предсуществующее | бэкенд | когда-нибудь (со следующим касанием армов) | свести пять списков к глобу | `D39.225` |
|
||||
| 353 | **КОНТРАКТ СЕКЦИИ ПРЕДЛОЖЕНИЙ В САЙДКАРЕ БАНКА ЗАПИНЕН ПО ПОЛЯМ И ПОРЯДКУ, НО НЕ ИСЧЕРПЫВАЮЩЕ — строка заведена ПРАВИЛОМ ОСТАНОВКИ, а не находкой.** Три круга приёмки `D39.225` находили в одной новой секции всё более узкие дыры: сперва семь полей без утверждений, потом `Freq` и своп списков, потом ранжирование и класс пустого `Dst`. Каждая была настоящей и предъявлена посадкой; каждый следующий круг стоил больше и покупал меньше. Сегодня запинены: все решающие поля против стоп-строки · порядок против стоп-СТРОК на двух уровнях · рефлективный страж «ни одно поле проекции не нулевое» (ловит поле, добавленное завтра и не заполненное). ⚠ Границу называет сам гейт: поле, которое отрастил `BankStopRow` и которое СЛЕДОВАЛО бы проецировать, механически не ловится — это суждение того, кто поле добавляет. ⇒ вернуться к исчерпывающему контракту, когда у секции появится ЧИТАТЕЛЬ (платформенная половина строки **224**): пока читателя нет, расхождение ничем не судится, а в день его появления разница станет семантикой задним числом — второй ярус класса A `18-bank-ontology.md` | бэкенд + платформа | когда-нибудь (гейт: появление читателя секции, строка 224) | исчерпывающий пин контракта секции вместе с её первым потребителем | `D39.225` п.10 |
|
||||
| 353 | **КОНТРАКТ СЕКЦИИ ПРЕДЛОЖЕНИЙ В САЙДКАРЕ БАНКА ЗАПИНЕН ПО ПОЛЯМ И ПОРЯДКУ, НО НЕ ИСЧЕРПЫВАЮЩЕ — строка заведена ПРАВИЛОМ ОСТАНОВКИ, а не находкой.** Три круга приёмки `D39.225` находили в одной новой секции всё более узкие дыры: сперва семь полей без утверждений, потом `Freq` и своп списков, потом ранжирование и класс пустого `Dst`. Каждая была настоящей и предъявлена посадкой; каждый следующий круг стоил больше и покупал меньше. Сегодня запинены: все решающие поля против стоп-строки · порядок против стоп-СТРОК на двух уровнях · рефлективный страж «ни одно поле проекции не нулевое» (ловит поле, добавленное завтра и не заполненное). ⚠ **Дописка 08.09 (приёмка `D39.226`):** у поля `SettledByBank` стоп-строки нет свидетеля в списке «полей, которых сайдкар намеренно НЕ несёт» (`bankexport_test.go`) — то есть его сознательное отсутствие в проекции не утверждено ничем; закрывать вместе с первым читателем секции. ⚠ Границу называет сам гейт: поле, которое отрастил `BankStopRow` и которое СЛЕДОВАЛО бы проецировать, механически не ловится — это суждение того, кто поле добавляет. ⇒ вернуться к исчерпывающему контракту, когда у секции появится ЧИТАТЕЛЬ (платформенная половина строки **224**): пока читателя нет, расхождение ничем не судится, а в день его появления разница станет семантикой задним числом — второй ярус класса A `18-bank-ontology.md` | бэкенд + платформа | когда-нибудь (гейт: появление читателя секции, строка 224) | исчерпывающий пин контракта секции вместе с её первым потребителем | `D39.225` п.10 |
|
||||
| 354 | ⛔ **ОПЛАЧЕННЫЙ `2xx` С ОБОРВАННЫМ ТЕЛОМ — КЛАСС, СТОИВШИЙ 32 % ЖИВОГО ПРОГОНА, И СТРАНИЦА КВИРКОВ О НЁМ МОЛЧИТ.** Живой прогон 08.09 (10 глав, `committed=$1.259217`): два вызова редактора вернулись `2xx` с нечитаемым JSON и были ОПЛАЧЕНЫ — `$0.407606`, то есть **32 % бюджета прогона**. Движок класс ЗНАЕТ и обрабатывает штатно: `backend/internal/pipeline/disposition.go:79` `FlagDecodeError` — «2xx with an unreadable body — billed, conservatively settled, flagged». ⛔ Но `docs/experiments/00-provider-quirks.md` — страница, которую канон велит читать ПЕРЕД правкой адаптеров и вызовов, — о нём не несёт НИ СТРОКИ: греп по `decode`/`unexpected end of JSON`/«оборван» даёт **0 при 250 строках файла** (контроль: слово `provider` там встречается 3 раза, то есть спрошено существующее). ⇒ следующая сессия, читающая квирки перед платным прогоном, не узнает о поведении, которое съедает треть бюджета. ⚠ Зона — ПОЛИГОН (`docs/experiments/` по зонной таблице), живой сессии полигона нет; строка заведена оркестратором как носитель, писать в файл полигону | полигон | скоро (перед следующим платным прогоном любой зоны) | строка в `00-provider-quirks.md` с частотой, стоимостью и тем, что движок делает с классом | живой прогон 08.09, пак «правда оператору и деньги» |
|
||||
| 355 | **РАЗЛОЖЕНИЕ «ЗА ЧТО ЗАПЛАЧЕНО» ОТНОСИТ КЛАССИФИКАТОР В `superseded`, ПОТОМУ ЧТО БЭНК-РОЛИ ДЕЛЯТ ОДНУ ПОЗИЦИЮ.** Бэнк-роли адресуются синтетическим чанком (глава 0, `chunk_idx` = номер батча), а разложение ключуется `{глава, чанк, стадия}` (`backend/internal/pipeline/paidtail.go:120-123`: `p := pos{u.Chapter, u.ChunkIdx, u.Stage}`, затем `case lastPaid[p] != i` → `SupersededUSD`). Классификаторский батч 0 и терминологический батч 0 занимают ОДНУ позицию `{0,0,terminology}` ⇒ более ранний уезжает в «superseded», то есть в «купил ничего». Улика живого прогона 08.09 — три строки леджера (`0 0 terminology classifier $0.009013` · `0 0 terminology terminologist $0.002775` · `0 1 terminology terminologist $0.001820`) при печатном «the book's TERMINOLOGY $0.004595 (2)», где два — ровно последние. ⚠ На стенде цена копеечная, на боевом `classify_budget_usd: 1.00` доля может быть большой: оператор читает, что классификатор куплен зря, тогда как он куплен и использован. Найдено зонной сессией на прогоне, ею НЕ чинилось — вне её заказа | бэкенд | скоро (до следующего платного прогона, где смотрят разложение) | разведение позиций бэнк-ролей в ключе разложения + пин на три строки леджера | живой прогон 08.09 |
|
||||
| 356 | **КНИГА У СВОЕГО ПОЖИЗНЕННОГО ПОТОЛКА РОЛИ НАВСЕГДА ОСТАЁТСЯ БЕЗ КОНСОЛИДИРОВАННОГО БАНКА, и ни одно сообщение не говорит именно этого.** `store/ledger.go` `RoleSpentUSD` суммирует чекпойнты роли за ВСЮ жизнь книги, предполётный срез сеет `probe := spent` и обрывается на `probe+want > budgetUSD`; при `fits == 0` цикл попыток не запускается вовсе. ⚠ Оператор ПРИ ЭТОМ извещён — `terminologist.go:936` печатает `batches_planned=N batches_running=0 batches_dropped=N spent_usd budget_usd` ДО первого вызова (сверено оркестратором 08.09), поэтому «тихо» здесь неверно, и находка приёмки в этой части ОТКЛОНЕНА доводом зоны. Верен остаток: сообщение говорит про ЭТОТ прогон, а не про то, что книга исчерпала пожизненный бюджет роли и консолидации не получит НИКОГДА, сколько её ни перезапускай. Свойство `budget_usd`, а не фильтра пака «правда оператору и деньги»: тот на решение бюджета не влияет. ⇒ решить, что показывать оператору и владельцу: отдельное сообщение «книга у пожизненного потолка роли», подъём потолка как явный акт, или сознательное молчание с записью | бэкенд | когда-нибудь (гейт: первая книга, упёршаяся в пожизненный потолок роли) | сообщение об исчерпании пожизненного бюджета либо ратифицированное молчание | приёмка `D39.226`, линза «вне карты» |
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# Журнал прогресса
|
||||
|
||||
> **⟶ ТЕКУЩЕЕ СОСТОЯНИЕ** (на 2026-09-07, голова D39.225 — КУРС: движок и платформа до «работает и отдаёт результат», фронт ЗАМОРОЖЕН и P7 его НЕ размораживает (D39.147). **ОЧЕРЕДЬ №23** (единственный носитель — здесь; роль передана 06.09, №22 закрыт нотой передачи D39.217; ⚠ испр. 06.09: коммит передачи `c992ee5` бампнул голову и НЕ тронул номер — гейта на номер очереди нет вовсе, `counts.py` сверяет только голову, поэтому носитель разошёлся молча). ⚠ **ЗАКАЗ ВЛАДЕЛЬЦА 01.09 — ПЕРВЫМ:** (0а) **ревизия документации на ПРОТУХШЕЕ** — по всем зонам, не только тронутым; (0б) **планы доработок в БЭКЕНД и ПЛАТФОРМУ** по остатку бэклога и регистра; (0в) **вынос неактуального в АРХИВ** (`docs/archive/`, `platform/docs/archive/`) — за сутки 31.08 закрыто много, и часть носителей стала историей. ⚠ Трезвость по масштабу (пере-считано 02.09): **90** живых дока в `docs/` (пере-счёт 04.09: `find docs -name '*.md' -not -path 'docs/archive/*' | wc -l`), 8 в `platform/docs`, 9 в `backend/docs` — ⚠ из 94 ВРЕМЕННЫЙ остался ОДИН (`DOC_CLEANUP_PLAN`, живой до закрытия батчей Б14/Б15/Б17); два прежних временных уехали в `archive/reports/` 02.09; счёт бэклога — бюллетенем ниже, открытых рядов регистра платформы — 112 (major 3), всего рядов 465 (пере-счёт `python3 docs/scripts/counts.py`; с 04.09 оба числа под гардом `--check`, прежние 95/3 разошлись молча) ⚠ (ревизией 02.09 ряды **154** и **157** переведены из «скоро» в «когда-нибудь»: их гейтом стоял первый холодный прогон, он ОТРАБОТАЛ 31.08 и оба предусловия оказались другими — разбор в самих ячейках, ни одна НЕ закрыта). ⚠ Числа доков `counts.py` НЕ сторожит — при переносе файлов пере-считывать руками командой `find docs -name '*.md' -not -path 'docs/archive/*' | wc -l`. ⚠ И предупреждение о МЕТОДЕ, купленное сменой №21: «выглядит протухшим» ≠ «протухло». Три факта оркестратора опровергнуты ЗАМЕРОМ сессий, а якоря `15-money-path.md` в девяти случаях из двенадцати РОДИЛИСЬ верными и сгнили дрейфом — то есть ревизия обязана быть исполнением, а не чтением. ⚠ **ОЧЕРЕДЬ, унаследованная от №21** (три лендинга 31.08 — секция «СОСТОЯНИЕ ПАКОВ» ниже): **(1) ~~РАЗРЫВ ЦИКЛА~~ ЗАМКНУТ ЖИВЬЁМ 04.09** — пользователь получил EPUB настоящего ПЛАТНОГО перевода ЧЕРЕЗ API, `epubcheck` 5.3.0 на СКАЧАННОМ файле 0/0/0/0 (книга `bk_SS5VES2JELESJSTR`, потрачено $0.278319 из гранта $0.60 при потолке пака $1.5, санкция D39.189). Дверь выдачи построена и проверена исполнением: `202`+`Location`, поллинг с `Retry-After`, Range 206 · второй клиент 200 · аноним 401 · чужая книга 404, TTL с GC, идемпотентность третьего создающего вызова. Все ТРИ сценария строки 216 предъявлены живьём (подпись банка · halt на потолке с exit 4 · `409 run_not_resumable/ceiling_reached` и лечение новым прогоном).
|
||||
> **⟶ ТЕКУЩЕЕ СОСТОЯНИЕ** (на 2026-09-07, голова D39.226 — КУРС: движок и платформа до «работает и отдаёт результат», фронт ЗАМОРОЖЕН и P7 его НЕ размораживает (D39.147). **ОЧЕРЕДЬ №23** (единственный носитель — здесь; роль передана 06.09, №22 закрыт нотой передачи D39.217; ⚠ испр. 06.09: коммит передачи `c992ee5` бампнул голову и НЕ тронул номер — гейта на номер очереди нет вовсе, `counts.py` сверяет только голову, поэтому носитель разошёлся молча). ⚠ **ЗАКАЗ ВЛАДЕЛЬЦА 01.09 — ПЕРВЫМ:** (0а) **ревизия документации на ПРОТУХШЕЕ** — по всем зонам, не только тронутым; (0б) **планы доработок в БЭКЕНД и ПЛАТФОРМУ** по остатку бэклога и регистра; (0в) **вынос неактуального в АРХИВ** (`docs/archive/`, `platform/docs/archive/`) — за сутки 31.08 закрыто много, и часть носителей стала историей. ⚠ Трезвость по масштабу (пере-считано 02.09): **90** живых дока в `docs/` (пере-счёт 04.09: `find docs -name '*.md' -not -path 'docs/archive/*' | wc -l`), 8 в `platform/docs`, 9 в `backend/docs` — ⚠ из 94 ВРЕМЕННЫЙ остался ОДИН (`DOC_CLEANUP_PLAN`, живой до закрытия батчей Б14/Б15/Б17); два прежних временных уехали в `archive/reports/` 02.09; счёт бэклога — бюллетенем ниже, открытых рядов регистра платформы — 112 (major 3), всего рядов 465 (пере-счёт `python3 docs/scripts/counts.py`; с 04.09 оба числа под гардом `--check`, прежние 95/3 разошлись молча) ⚠ (ревизией 02.09 ряды **154** и **157** переведены из «скоро» в «когда-нибудь»: их гейтом стоял первый холодный прогон, он ОТРАБОТАЛ 31.08 и оба предусловия оказались другими — разбор в самих ячейках, ни одна НЕ закрыта). ⚠ Числа доков `counts.py` НЕ сторожит — при переносе файлов пере-считывать руками командой `find docs -name '*.md' -not -path 'docs/archive/*' | wc -l`. ⚠ И предупреждение о МЕТОДЕ, купленное сменой №21: «выглядит протухшим» ≠ «протухло». Три факта оркестратора опровергнуты ЗАМЕРОМ сессий, а якоря `15-money-path.md` в девяти случаях из двенадцати РОДИЛИСЬ верными и сгнили дрейфом — то есть ревизия обязана быть исполнением, а не чтением. ⚠ **ОЧЕРЕДЬ, унаследованная от №21** (три лендинга 31.08 — секция «СОСТОЯНИЕ ПАКОВ» ниже): **(1) ~~РАЗРЫВ ЦИКЛА~~ ЗАМКНУТ ЖИВЬЁМ 04.09** — пользователь получил EPUB настоящего ПЛАТНОГО перевода ЧЕРЕЗ API, `epubcheck` 5.3.0 на СКАЧАННОМ файле 0/0/0/0 (книга `bk_SS5VES2JELESJSTR`, потрачено $0.278319 из гранта $0.60 при потолке пака $1.5, санкция D39.189). Дверь выдачи построена и проверена исполнением: `202`+`Location`, поллинг с `Retry-After`, Range 206 · второй клиент 200 · аноним 401 · чужая книга 404, TTL с GC, идемпотентность третьего создающего вызова. Все ТРИ сценария строки 216 предъявлены живьём (подпись банка · halt на потолке с exit 4 · `409 run_not_resumable/ceiling_reached` и лечение новым прогоном).
|
||||
> ⛔ **ПЯТЬ ПОТОКОВ РАБОТЫ — состояние на 07.09 (пере-снято лендингами смены №23).**
|
||||
> **(1) ПОЛИГОН — «ремонт прибора»** (`docs/POLYGON_INSTRUMENT_REPAIR_SESSION_PROMPT.md`, строки 319 · 300 · 265 · 143):
|
||||
> ⚠ **ЕДИНСТВЕННЫЙ ПОТОК, НЕ СДВИНУВШИЙСЯ ЗА СМЕНУ — сессия по промту так и не стартовала.** Блокирующая линза
|
||||
|
|
@ -30,7 +30,7 @@
|
|||
> рендеринга. Правило остановки применено НА ТРЕТЬЕМ и объявлено сессии заранее; остаток адресован строкой
|
||||
> **353** и ждёт первого читателя секции (платформенная половина **224**). Оба верификатора дали явный ок на
|
||||
> закрытие, каждый пере-посадив свои мутации.
|
||||
> **(6) ТЕХДОЛГ БЭКЕНДА, ВТОРОЙ ПАК — «ПРАВДА ОПЕРАТОРУ И ДЕНЬГИ»: ⚠ ВЫДАН 08.09, идёт.**
|
||||
> **(6) ТЕХДОЛГ БЭКЕНДА, ВТОРОЙ ПАК — «ПРАВДА ОПЕРАТОРУ И ДЕНЬГИ»: ✅ ЗАЛЕНДЕН 08.09, акт `D39.226`.** Закрыты строки 333–338; живое — 354–358 и остаток 353. ⚠ **Смета движка опровергнута прогоном: `tmctl manifest` есть НИЖНЯЯ граница** ($1.259217 против $0.350075, 64.6 % «купило ничего»), потолок держал машинным гейтом. Три ошибки ЗАКАЗЧИКА названы в акте п.8. Прежде:
|
||||
> `docs/BACKEND_OPERATOR_TRUTH_SESSION_PROMPT.md`, строки **333–338**: движок говорит оператору не то, что
|
||||
> делает, и платит за поверхности, которые банк уже держит. ⚠ **Первый пак смены, который тратит ДЕНЬГИ:**
|
||||
> холодный прогон на нескольких главах разрешён владельцем лично, потолок **$3** ставится МАШИННЫМ гейтом
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
|---|---|---|
|
||||
| Оркестратор | [ORCHESTRATOR_SESSION_PROMPT.md](ORCHESTRATOR_SESSION_PROMPT.md) | роль и нормы; счётчик роли — CURRENT-STATE |
|
||||
| Бэкенд · КОНСИСТЕНТНОСТЬ | активного НЕТ | пак ОТРАБОТАН и **ПРИНЯТ С ДОФИКСОМ 07.09** — акт **D39.222**; промт в `archive/prompts/` с баннером исхода. Строки 267 и 318 закрыты, у 320 исполнена половина (а). Живой остаток зоны — строка **333** (шов-близнец: мутация любого из трёх ключей переживает три пакета) и 320(б) |
|
||||
| **Бэкенд · ПРАВДА ОПЕРАТОРУ И ДЕНЬГИ** | [BACKEND_OPERATOR_TRUTH_SESSION_PROMPT.md](BACKEND_OPERATOR_TRUTH_SESSION_PROMPT.md) | ⚠ **ВЫДАН 08.09.** Живой остаток движка — строки 333–338: описания, лгущие оператору, и оплата уже банкованных поверхностей. Единственные платные вызовы — холодный прогон на нескольких главах, потолок **$3** машинным гейтом (санкция владельца) |
|
||||
| Бэкенд · ПРАВДА ОПЕРАТОРУ И ДЕНЬГИ | активного НЕТ | пак ОТРАБОТАН и **ПРИНЯТ С ДОФИКСОМ 08.09** — акт **D39.226**, живой платный прогон; промт в `archive/prompts/` с баннером-исходом |
|
||||
| Бэкенд · ГЕЙТ ВМЕСТО ПРОЗЫ | активного НЕТ | пак ОТРАБОТАН и **ПРИНЯТ С ДОФИКСОМ 07.09** — акт **D39.225**; промт в `archive/prompts/` с баннером-исходом |
|
||||
| **Бэкенд · СТРУКТУРА ГЛАВ (ДИЗАЙН)** | [CHAPTER_STRUCTURE_DESIGN_SESSION_PROMPT.md](CHAPTER_STRUCTURE_DESIGN_SESSION_PROMPT.md) | ⚠ **ПРОЕКТИРОВАНИЕ, НЕ СТРОЙКА** (`D39.136` п.3): дизайн окна большой пере-нарезки — чем адресуется глава и развязка чанкера (161) · карта осей сдвига · банк-окна на chapter-ID · контент-адресуемый resume `D15.2` · IR/адаптеры/индуктор · правило заголовка и не-CJK путь (303) · гранулярность EPUB (302) и выдача (283). Снимает временный отказ интейка книге из одной главы (`D39.221`). Пак 1 «форматы и честный словарь» ОТРАБОТАН и ПРИНЯТ 06.09 — акт **D39.210**, промт в `archive/prompts/`. ⚠ **ПАК 2 (лексиконы не-CJK, корпус, замер оракулом) — НЕ НАПИСАН и ждёт файлов владельца** |
|
||||
| Бэкенд · отозванный | активного НЕТ | пак КАЧЕСТВО написан и ОТОЗВАН до выдачи 05.09 (`archive/prompts/…_WITHDRAWN.md`): предмет дешевле пака — точность чекера уже измерена, пере-снять её стоит одной команды. Следующий пак — СТРУКТУРА ГЛАВ (решение владельца 05.09 «любая книга любого формата»), пишется |
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
# Реестр D-нот — карта актуальности v2 (D1–D39.225; титул — носитель головы, бампать при каждом аппенде)
|
||||
# Реестр D-нот — карта актуальности v2 (D1–D39.226; титул — носитель головы, бампать при каждом аппенде)
|
||||
|
||||
> ⚠ **Колонку «тело» `counts.py --check` НЕ сторожит по устройству:** он сверяет полноту НОМЕРОВ, а не
|
||||
> место тела, поэтому колонка держится дисциплиной лендинга. Не нашёл тело по колонке — иди в слайсы,
|
||||
|
|
@ -284,3 +284,4 @@
|
|||
| D39.223 | 07.09 | **ТРИАЖ ОТКРЫТОГО ПОСЛЕ ДВУХ ЛЕНДИНГОВ**: строки **334–343** заведены (в т.ч. 340 — асинхронная ветвь интейка проницаема, закрыть нечем без пятой причины отказа, НА ВЛАДЕЛЬЦЕ); два пункта отклонены с причиной. ⚠ Пропуск носителей на обоих актах нашёл ВОПРОС ВЛАДЕЛЬЦА, а не гейт. Находка платформы про §2.12 компаньона оказалась половинчатой: каналы разные, утверждение истинно, мертвы были якоря | жив | ЖИВОЕ: строка 340 ждёт слова владельца | триаж носители приёмка контракт |
|
||||
| D39.224 | 07.09 | **РАЗБОР research/33 В ТРЕКЕР**: заведены строки **344–350** (шов заголовка · словари классификатора · правило заголовка и `第零章` · каналы langpack · арм-шапки · остатки · рефакторинг по санкции владельца), дописки в 86/114/119/182/224; «переписать» не получил ни один из 11 долгов. Порядок: шаг 0 ПАРАЛЛЕЛЬНО дизайну 161 → шаги 2+3 одним окном перенарезки (wire-очередь 182 ложится в него же) → шаг 4 аддитивно; цена «дважды» условна (D39.190 п.4), ограничение — время до интейка. Запреты только под ратифицированной базой, остальное — условия с механизмом | жив | ЖИВОЕ: место строки 160 относительно стоп-мира перекроя — вопрос дизайну (п.6); критерий шага 1 (п.8) — в дизайн-пак; четыре ошибки разбора названы в п.9 | техдолг трекер порядок деньги |
|
||||
| D39.225 | 07.09 | **АКТ: движковый пак «гейт вместо прозы» ПРИНЯТ С ДОФИКСОМ** (`7ffec51` + `4188ba5`). Пять швов, державшихся прозой, держат гейты; закрыты строки 344/345/348/349, половинами 224/313/346/350, остатки — 351/352. Числа пере-сняты приёмкой: батарея 19/0/4, мутационный гейт 14 записей и 0 unexpected со свипом якорей `0 of 225`. СМЕН ПОВЕДЕНИЯ ДВЕ: секция предложений в сайдкаре стопа (аддитивно) и ДЕНЕЖНАЯ — прогон по арму теперь покупает банковый контур. Класс A онтологии банка заведён сознательно: у секции ноль читателей, носитель — платформенная половина 253 | жив | ЖИВОЕ: платформенная половина 224/253 (читатель секции) · вопрос `pending_decisions` в контракте 14 · строки 351/352 | движок гейты банк деньги приёмка |
|
||||
| D39.226 | 08.09 | **АКТ: движковый пак «правда оператору и деньги» ПРИНЯТ С ДОФИКСОМ** (`e48bca2`). Закрыты строки 333–338; остатки — 353(+)/354/355/356/357/358. Числа приёмки: батарея 19/0/4, мутации 48 записей и 0 unexpected, свип `0 of 259`, каталог 232→259 и 21→48 в гейте, тесты +18. ЖИВОЙ ПЛАТНЫЙ ПРОГОН (санкция владельца, потолок машинным гейтом): `committed=$1.259217` против сметы `$0.350075` — **`tmctl manifest` есть нижняя граница, не прогноз**; 64.6 % «купило ничего»; оплаченный `2xx` с оборванным телом — 32 % бюджета. Строка 335 опровергнута своим же замером: не «прямые деньги», а 4.1 % кандидатов, и фаза платится раз на книгу. Два блокера закрыты корнем, третий круг нашёл мёртвый страж | жив | ЖИВОЕ: строки 354–358 и остаток 353; три ошибки ЗАКАЗЧИКА названы в п.8 | движок деньги банк оператор приёмка |
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
# Журнал решений оркестратора — контракт D1–D39.225 (живой файл: карта · эрраты · живые тела · голова D39.124+ (подрезка D39.139); тела закрытых эр — в слайсах `docs/archive/architecture/`, указатель ниже; реестр всех нот — `05-decisions-index.md`)
|
||||
# Журнал решений оркестратора — контракт D1–D39.226 (живой файл: карта · эрраты · живые тела · голова 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 — в слайсе `../archive/architecture/05-decisions-D39-106-123.md` (испр. 05.09: прежнее «живёт ниже в этом файле» протухло подрезкой D39.139) (голова D39.106+).
|
||||
|
|
@ -3077,3 +3077,57 @@ inherited». Это самая дорогая из четырёх: она отп
|
|||
всё более узкие вещи; читателей у неё сегодня ноль, и цена круга росла быстрее покупаемого. Что найдётся
|
||||
дальше — идёт СТРОКОЙ бэклога, а не работой: контракт секции предложений запинен по полям и порядку, но не
|
||||
исчерпывающе.
|
||||
|
||||
## D39.226 — АКТ: движковый пак «ПРАВДА ОПЕРАТОРУ И ДЕНЬГИ» ПРИНЯТ С ДОФИКСОМ; живой платный прогон, три круга приёмки, три ошибки заказчика названы (08.09, оркестратор №23) ✅
|
||||
|
||||
**1. Что заландено.** `e48bca2` — зона, 30 позиций (24 правки + 6 новых файлов). Отчёт зоны — `PROGRESS.md`,
|
||||
секция «Бэкенд», подзаголовок «Пак «правда оператору и деньги»». Закрыты строки **333 · 334 · 335 · 336 ·
|
||||
337 · 338**; остатки и находки вне заказа заведены строками **354 · 355 · 356 · 357 · 358** и дописком к
|
||||
**353**.
|
||||
|
||||
**2. Числа пере-сняты приёмкой на заландённом дереве, а не приняты с отчёта.** `make battery` — **19 `ok` ·
|
||||
0 `FAIL` · 4 без тестов · 4 скипа поимённо**, линт 0 issues. `make mutations` — **48 записей · 0 unexpected ·
|
||||
выживших 0**, свип якорей **`0 of 259`**. Каталог мутаций 232 → **259**, батарейное подмножество 21 → **48**.
|
||||
Тесты 1267 → **1285** (+18, −0) — дифф снят ИМЕНАМИ через `comm`, а не разностью счётчиков.
|
||||
|
||||
**3. Деньги: живой прогон исполнен, и он опроверг смету движка.** Санкция владельца, потолок $3, машинный
|
||||
гейт (`ceilings.book_usd` + `--max-units`), эскалация 0. Сырой леджер: **`committed=$1.259217`** против
|
||||
проекции `tmctl manifest` **$0.350075** — ошибка в **3.6 раза**, и движок сам печатает «$0.813795 (64.6 %)
|
||||
bought NOTHING». ⇒ **`tmctl manifest` есть НИЖНЯЯ граница, а не прогноз**, и обещание сессии здесь ошиблось
|
||||
бы втрое — потолок отработал именно потому, что машинный. Отказов резервации 0.
|
||||
|
||||
**4. Экономика строки 335 названа честно и опровергает её собственную формулировку.** Строка обещала «прямые
|
||||
деньги на КАЖДОМ прогоне майнинга». Замер зоны: банк держит поверхность у 439 из 1365 кандидатов, но у
|
||||
**366** из них черновик предлагает НЕ то, что держит банк ⇒ под узкий фильтр попадает **56 из 1365 (4.1 %)**,
|
||||
на живом прогоне 1 из 30. Фаза платится РАЗ НА КНИГУ и ограничена книжными потолками ($1.00 + $1.00 в
|
||||
боевом), поэтому экономия не растёт с объёмом. ⇒ ценность правки не в деньгах, а в том, что платный вызов
|
||||
перестал задавать вопрос, ответ на который заведомо выбрасывается; наследовать её надо так.
|
||||
|
||||
**5. Что купил живой прогон сверх заказа.** Три находки, каждая со своим носителем: оплаченный `2xx` с
|
||||
оборванным телом — **32 % бюджета прогона**, и страница квирков о классе молчит (**354**, зона полигона);
|
||||
классификатор уезжает в «superseded» из-за общей позиции бэнк-ролей в разложении трат (**355**); книга у
|
||||
пожизненного потолка роли не получит консолидации никогда, и об этом не говорит ни одно сообщение (**356**).
|
||||
|
||||
**6. Приёмка: две линзы, три круга, оба ОК на закрытие.** Слепая по диффу и «вне карты отчёта». Блокеров
|
||||
было ДВА, оба закрыты КОРНЕМ, а не заплатой: (а) ложное «ты заплатил дважды» на первом прогоне свежей книги —
|
||||
проба стояла ПОСЛЕ паса, записавшего собственный чекпойнт; (б) исправленный классификатором тип не доезжал
|
||||
до ПРОВОДА, потому что фильтр отдавал копии — лечение убрало копии вовсе, состав платной роли пересобирается
|
||||
из оригиналов, и пин утверждает БАЙТЫ ЗАПРОСА. Третьим кругом линза нашла МЁРТВЫЙ страж: тест грепал
|
||||
подстроку, которой в коде уже не было (0 при 351 go-файле), и снятие `run.fresh` оставляло пакет зелёным.
|
||||
Вылечено носителем: общий структурный ключ, переименование которого ломает КОМПИЛЯЦИЮ.
|
||||
|
||||
**7. Правило, пришедшее ИЗ ЗОНЫ, а не от заказчика** (унесено в `ORCHESTRATOR_SESSION_PROMPT`): **пин на
|
||||
УСЛОВНОЕ сообщение обязан иметь фикстуру, где оно ОБЯЗАНО прозвучать** — тест, утверждающий только молчание,
|
||||
вакуумен ровно там, где сообщение ложно. Улика: три ложных операторских предупреждения подряд в паке, который
|
||||
чинит ложные операторские сообщения, и все три были зелёными.
|
||||
|
||||
**8. Три ошибки ЗАКАЗЧИКА, названные чтобы не повторялись.** (а) Первая редакция §4.1 заказывала фильтр,
|
||||
который снял бы пометки спора, которые §4.3 ТОГО ЖЕ пака требует довезти владельцу, а заказанное
|
||||
доказательство «банк тот же» было ВАКУУМНЫМ — предложение на сид-поверхность в банк не попадает и сегодня;
|
||||
поймал старший коллега по коду. (б) Панели выдано рабочее дерево со словами «стабильно», и во время суда
|
||||
заказан дофикс — три числа приёмки уехали; норма заморозки дополнена случаем НЕзакоммиченной зоны (морозить
|
||||
копией) и запретом заказывать дофикс во время прохода. (в) `git commit -- docs/PROGRESS.md` унёс отчёт зоны
|
||||
(325 строк) под сообщением оркестратора о другом предмете — **содержимое цело, атрибуция восстановлена
|
||||
здесь: отчёт принадлежит ЗОНЕ, коммит `bdf9123` его унёс по ошибке оркестратора**; историю не переписывали
|
||||
(две параллельные сессии). Признак поимки — расхождение объёма коммита с объёмом своей правки — унесён в
|
||||
промт нормой.
|
||||
|
|
|
|||
|
|
@ -1,3 +1,8 @@
|
|||
> ⚠ **ОТРАБОТАН И ПРИНЯТ С ДОФИКСОМ 08.09 — акт `D39.226`.** Инструкции отсюда НЕ исполняются.
|
||||
> Строки 333–338 закрыты; живое — 354/355/356/357/358 и остаток 353. ⚠ Известные дефекты САМОГО заказа
|
||||
> названы в `D39.226` п.8: §4.1 в первой редакции убивал §4.3 того же пака, а заказанное им доказательство
|
||||
> «банк тот же» было вакуумным.
|
||||
|
||||
# Пак бэкенда: «ПРАВДА ОПЕРАТОРУ И ДЕНЬГИ» — живой остаток движка
|
||||
|
||||
## 1. Какая проблема и что решит твой результат
|
||||
Loading…
Add table
Reference in a new issue