From dc1b99e71d857fba0fd4ab3a48eddc4512b2007d Mon Sep 17 00:00:00 2001 From: heaven Date: Thu, 17 Sep 2026 04:06:39 +0300 Subject: [PATCH] Raise a row for the zone mutation harness counting any red as a catch and running no green baseline before the first landing --- docs/BACKLOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/BACKLOG.md b/docs/BACKLOG.md index 8676955f..3ddd8ab1 100644 --- a/docs/BACKLOG.md +++ b/docs/BACKLOG.md @@ -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). Здесь только долг и его диспозиции. -> - **СЧЁТ ОЧЕРЕДИ на 16.09 (скриптом по таблице — `python3 docs/scripts/counts.py`; обновлять при каждом лендинге):** всего **364** строк · зона бэкенд **190** строго / **243** широко (⚠ колонки счётчик читает С КОНЦА — испр. D39.116) · **блокеров очереди 0** (236 закрыта D39.175; **371** — актом D39.233, **360** — актом D39.232, обе 10.09), платные прогоны разблокированы · «скоро» **192** (перечень — грепом по таблице, рукописный список снят D39.126) · гейт-строка эксп-22: 153 (плюс 150 — руки владельца; ⚠ 55 из гейтов СНЯТА — D39.198 п.5); строка 5 — остаток гейчен ре-пробой 74, носитель события теперь строка 188 (аудит D39.140); остальное «когда-нибудь». ⚠ Счёт — НИЖНЯЯ граница долга, не потолок (разбор — легенда таблицы ниже). +> - **СЧЁТ ОЧЕРЕДИ на 16.09 (скриптом по таблице — `python3 docs/scripts/counts.py`; обновлять при каждом лендинге):** всего **365** строк · зона бэкенд **190** строго / **243** широко (⚠ колонки счётчик читает С КОНЦА — испр. D39.116) · **блокеров очереди 0** (236 закрыта D39.175; **371** — актом D39.233, **360** — актом D39.232, обе 10.09), платные прогоны разблокированы · «скоро» **193** (перечень — грепом по таблице, рукописный список снят 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; правки — только через оркестратора) @@ -400,3 +400,4 @@ | 483 | ⛔ **СПРАВОЧНИК ПРОВАЙДЕРСКИХ ЛОВУШЕК НЕСЁТ ЦЕНЫ, ОПРОВЕРГНУТЫЕ ПЕРЕ-ПИНОМ, И ЭТО ФАЙЛ, КОТОРЫЙ КАНОН ВЕЛИТ ЧИТАТЬ ПЕРЕД КАЖДЫМ ВЫЗОВОМ.** `docs/experiments/00-provider-quirks.md:35`=`НЕ изменились (flash` утверждает, что после смены поколения цены DeepSeek прежние — flash $0.14/$0.28 при кэш-хите $0.0028, pro $0.435/$0.87. Боевой конфиг несёт другое: `backend/configs/models.yaml:231`=`input_per_m: 0.44, cached_per_m: 0.014` и `backend/configs/models.yaml:247`=`input_per_m: 1.32, cached_per_m: 0.044`. ⇒ расхождение втрое по входу и вчетверо по выходу, а кэш-хит разошёлся на порядок. ⚠ Пинг об этом выписан оркестратором №18 ещё 20.08 и не исполнен год-в-год: тогда каталог считался чужой зоной. С `D39.260` п.4 зона ОБЩАЯ ПРОЕКТНАЯ ⇒ чинит оркестратор. Шапка исправлена 17.09, ряд держит остаток: пере-снять ВЕСЬ ценовой блок справочника у вендора, а не только одну строку | оркестратор | скоро | цены справочника сверены с боевым конфигом и вендором целиком | пинг №18 20.08, замер 17.09 | | 484 | ⛔ **РАТИФИЦИРОВАННЫЙ РЕЦЕПТ МУТАЦИЙ ТРЕБУЕТ ПАРАЛЛЕЛЬНЫХ БАТАРЕЙ, А БАТАРЕЯ ЗОНЫ СОДЕРЖИТ ФИКСТУРЫ С АБСОЛЮТНЫМИ СРОКАМИ И НАСТОЯЩИМ КОММИТОМ В POSTGRES — ЭТО КОНФЛИКТ ДВУХ РАТИФИЦИРОВАННЫХ ВЕЩЕЙ, А НЕ ДЕФЕКТ ОДНОГО ПАКЕТА.** `D39.159` §2 велит сажать мутации в КОПИЮ дерева ⇒ всякая приёмка гонит две батареи разом; пакет `platform/internal/books` при этом краснеет КАЖДЫЙ РАЗ НА ДРУГОМ ТЕСТЕ — подпись голодания планировщика, а не логики. ⭐ Измерено ДВАЖДЫ и двумя сторонами: зона — двумя полными батареями, запущенными в одну секунду (чистый `HEAD` и дерево пака красны ОБА, на РАЗНЫХ тестах); оркестратор при приёмке 17.09 — двумя изолированными прогонами пакета в двух деревьях одновременно: `ok 76.816s` и `ok 75.761s`, оба `GOTEST_EXIT=0` при нагрузке 6.05/6.21, тогда как внутри полной батареи тот же пакет красный. ⇒ изолированно зелен всегда, красен только под собственной батареей зоны с `-race` плюс сторонней нагрузкой. **Механизм пере-снимался ТРИЖДЫ, и все три редакции стоит держать видимыми:** (1) «фикстуры сжимают продуктовые 220 с до 700 мс» — верно про `TestTheCutOfAnUploadIsBoundedByTheWalk…`, но падение приёмки не объясняет; (2) «фикстура называет посылку `on an idle host` четырежды и не проверяет её ни разу» (`Skip`/`loadavg`/`NumCPU` → 0) — верно по классу, но сжимает не она; (3) решающая, зоны: в `TestAnUploadThatRunsOutOfBudgetWaitingForASlot…` `uploadSettle = 0` ВОЗВРАЩАЕТ продуктовые 210 с, а режет невозвращённый `writeBudget = 20 мс`, поставленный для ПЕРВОЙ половины теста ⇒ падает утверждение «настоящий коммит укладывается в 20 мс», а называет себя оно «загрузка на простаивающем хосте». Лечение дешёвое: сбросить `writeBudget` вместе с `uploadSettle` либо дать второй половине свои бюджеты; сверх того — утверждать посылку простоя замером с внятным скипом или перестать зависеть от абсолютного времени. ⚠ **ГРАНИЦА СНЯТА ЗАМЕРОМ 17.09, и прежнюю оставляю видимой:** зона говорила «сколько тестов семейства подвержено — я НЕ измеряла; три теста за три прогона это ВСТРЕЧЕННОЕ, а не посчитанное», затем посчитала прогоном по всем тест-файлам пакета с разрешением констант — **6 тестов из 73** кладут настоящую операцию Postgres внутрь суб-секундного бюджета (`failfast_test.go` 1 · `limit_test.go` 4 · `walk_test.go` 1), и ВСЕ ЧЕТЫРЕ красневших — внутри этих шести, ни одного за их пределами. ⛔ **Четвёртый красный снёс довод о нагрузке:** `TestAnUploadTheHostCouldNotCutStillLeavesSomebodyToFinishTheBook` упал при длительностях пакетов, почти равных ЗЕЛЁНОМУ прогону (`pgstore` 322 против 317 с, `runs` 284 против 278, `books` 113 против 115) ⇒ грубого замедления не требуется, хватает МГНОВЕННОЙ ЗАМИНКИ, что для бюджета 20 мс поверх сетевого коммита ожидаемо. Носители: `PD-469` (диагноз, замер двумя деревьями) и `PD-420` (второе лицо того же конфликта, диагноз не установлен). ⛔ Цена бездействия названа: ложный красный у КАЖДОЙ будущей приёмки, и он неотличим от регрессии, пока кто-нибудь не потратит два прогона на разделение | платформа | скоро | фикстуры семейства не зависят от абсолютных сроков либо утверждают свою посылку; сосчитано, сколько тестов подвержено | приёмка 17.09, замеры зоны и оркестратора | | 485 | ⛔ **ПЕРВАЯ ВРЕЗКА ФАЙЛА, КОТОРЫЙ ЧИТАЕТ КАЖДАЯ ПОЛИГОН-СЕССИЯ ПРИ ОНБОРДИНГЕ, ДЕРЖИТ ЗАПРЕТ, СНЯТЫЙ ПОЛТОРА МЕСЯЦА НАЗАД.** `eval/README.md:7`=`Платные прогоны/докупки СТОП` объявляет «Платные прогоны/докупки СТОП до ре-пробы (бэклог-строка 74)», а строка **74 ЗАКРЫТА актом `D39.95` (02.08)**: в таблице трекера её нет вовсе (греп по номеру ряда → 0 при 354 рядах), ограничение пало лендингом 112. ⇒ обязательное чтение роли объявляет ЗАПРЕЩЁННЫМ то, что зона делает ежедневно, и этим обесценивает все прочие предупреждения того же файла — формулировка пинга оркестратора №20 от 02.09, не исполненного с тех пор. ⭐ **И вот что здесь дороже самого дефекта: норму против него сформулировал ТОТ ЖЕ акт, который закрыл строку.** `D39.95` записан в реестре с уроком «закрытие строки обязано триггерить греп по её номеру во всех живых доках» — и для строки 74 этот греп не сделан до сих пор, то есть нота не исполнила собственный вывод. ⇒ закрывать ряд надо ОБОИМИ движениями: снять врезку и прогнать греп по номерам закрытых строк по живым докам, иначе класс вернётся. ⚠ Живым из врезки остаётся ДРУГОЕ, и его не потерять: смена весов под тем же слагом (⚠0731) и стохастичность эха по вызову. ⚠ Заведено 17.09 при выносе хроники полигона в архив: по условию владельца (`D39.261` п.2) живое уезжает СТРОКОЙ ТРЕКЕРА прежде своего носителя. `eval/` — чужая зона, рукой не трогаю | полигон | скоро | врезка пере-написана под живое ограничение, и греп по номерам закрытых строк в живых доках даёт 0 | пинг №20 02.09, замер 17.09 | +| 486 | ⚠ **МУТАЦИОННЫЙ ХАРНЕСС ЗОНЫ ПЛАТФОРМЫ СЧИТАЕТ ПОИМКОЙ ЛЮБОЕ КРАСНОЕ И НЕ ТРЕБУЕТ ЗЕЛЁНОГО БАЗОВОГО ПРОГОНА — два пункта, каждый превращает число «посадок N, поймано M» в утверждение о другом предмете.** (1) **Нет зелёного базового прогона пакета ДО первой посадки:** пакет, красный по своей причине, отчитается КАЖДОЙ посадкой как о поимке. Норму про это зонный стандарт держит отдельно (`PD-395`), но сам инструмент её не исполняет. (2) **Засчитывается любое `--- FAIL`, а не падение ИМЕННО ожидаемого пина** ⇒ правый вердикт по неправой причине неотличим от поимки — класс `D39.217` п.2в. ⭐ Найдено сессией зоны 17.09 на себе: она написала СВОЙ харнесс, не проверив, что у зоны уже есть `platform/tools/mutate.py`, — то есть завела второй механизм на тот же вопрос, — и, разбирая это, обнаружила, что её собственный критерий был СТРОЖЕ зонного (требовал обоих условий). ⇒ забирать её скрипт в зону НЕ НАДО (два механизма на один вопрос — то, что канон запрещает); надо добавить два пункта в существующий инструмент, это десяток строк. ⚠ Числа кампании пака `PLATFORM_BANK_READOUT` (17 посадок, 17 RED) от этого не шатаются: они сняты строгим критерием, а не зонным | платформа | скоро | `platform/tools/mutate.py` требует зелёного базового прогона и падения названного пина, иначе исход «не измерена» | зона 17.09, приёмка D39.262 |