diff --git a/docs/BACKLOG.md b/docs/BACKLOG.md index e55013f5..777c356d 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). Здесь только долг и его диспозиции. -> - **СЧЁТ ОЧЕРЕДИ на 05.09 (скриптом по таблице — `python3 docs/scripts/counts.py`; обновлять при каждом лендинге):** всего **241** строк · зона бэкенд **113** строго / **158** широко (⚠ колонки счётчик читает С КОНЦА — испр. D39.116) · **блокеров очереди 0** (236 закрыта D39.175), платные прогоны разблокированы · «скоро» **107** (перечень — грепом по таблице, рукописный список снят D39.126) · гейт-строка эксп-22: 153 (плюс 150 — руки владельца; ⚠ 55 из гейтов СНЯТА — D39.198 п.5); строка 5 — остаток гейчен ре-пробой 74, носитель события теперь строка 188 (аудит D39.140); остальное «когда-нибудь». ⚠ Счёт — НИЖНЯЯ граница долга, не потолок (разбор — легенда таблицы ниже). +> - **СЧЁТ ОЧЕРЕДИ на 05.09 (скриптом по таблице — `python3 docs/scripts/counts.py`; обновлять при каждом лендинге):** всего **242** строк · зона бэкенд **114** строго / **159** широко (⚠ колонки счётчик читает С КОНЦА — испр. D39.116) · **блокеров очереди 0** (236 закрыта D39.175), платные прогоны разблокированы · «скоро» **108** (перечень — грепом по таблице, рукописный список снят 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; правки — только через оркестратора) @@ -276,3 +276,4 @@ | 327 | ⛔ **ОСТАТОК ПОЛИГОН-ПАКЕТА №4 ЖИВЁТ ТРИ МЕСЯЦА ВНУТРИ ПРОМТА, И В НЁМ ЛЕЖИТ ДАТИРОВАННЫЙ РИСК.** ⚠⚠ **Срочное: замерный судья `memory_eval.py` работает на `gemini-2.5-flash`, у серии объявлен shutdown **16.10.2026** — около шести недель от 06.09.** Носителя у этого НЕ БЫЛО: единственное вхождение слага в бэклоге — проза про ЦЕНЫ другой модели, а не про миграцию нашего судьи (проверено грепом по предмету, не по имени). ⇒ после отключения замерный контур встанет, и узнаем мы это отказом, а не планом. Там же: двойной `extra_body` и отсутствие 404-ретрая при живом слаге. ⚠ Остальные пять пунктов остатка, тоже без носителей: матчер content-filter подстрокой + самотест · параметризация языка/жанра судейского промпта (ja/en сняты под zh-рамкой) · проба судьи-дублёра 18+ · калибровка echo-gate (`D25.7`) · minimal-pairs 100–150 для shadow fidelity (`D25.2`). ⭐ **Класс, а не случай:** промт `POLYGON_PACKAGE4_SESSION_PROMPT.md` с 12.07 стоит «частично отработан, residual ЖИВ», как отдельная сессия НЕ запускался — то есть **носителем работы служит промт, а не трекер**, и в трекере этой работы не видно вовсе. ⇒ заказ: остаток становится строками, промт уходит в архив с баннером исхода, а в ролевой промт оркестратора вносится правило выхода «residual → строка бэклога, промт в архив» — сегодня его там нет, и именно поэтому пакет №4 жив три месяца | полигон | скоро (миграция судьи — ДО 16.10) | остаток несут строки, промт в архиве, правило выхода записано | **D39.216** | | 329 | ⚠ **ОСТАТОК АУДИТА ПАКОВ И ДОКОВ 06.09: 77 находок, закрыто лендингом `e4097cb` только то, что било по двум выданным пакам.** Доказательная база — `docs/archive/reports/PROMPT_AND_DOCS_AUDIT_2026-09-06.md`. ⛔ **Вес и формулировки там принадлежат АГЕНТАМ: веер остановлен владельцем на логической точке (расход), и опровергатель прошёл НЕ по всем** ⇒ перед исполнением каждая пере-снимается по дереву. Названные, но не разобранные кандидаты: `backend/docs/components.puml` и `pipeline.puml` (глаголов 11 против 6, `.bank-stop.json` снесён D39.158, «интерим» пака-17 закрыт) · `backend/docs/MONEYSTOP_REPORT.md:3` · `docs/architecture/12-go-style-notes.md:17` (построчный маркер снят с провода, сам ⟨проверить⟩ едет) · `docs/architecture/15-money-path.md:62` и строка бэклога **166** (платформенная половина названа дырой, а построена — 19 файлов зоны) · `platform/BACKLOG.md:25` (П-10, четыре ложных утверждения) · `platform/docs/DEFECT_REGISTER.md` `PD-458` (статус-жертва: лекарство легло тем же коммитом). ⚠ Правки в ЧУЖИХ зонах — пинги владельцам зон, не своя правка | доки | скоро | пере-снятие каждой находки по дереву + правки в своей зоне + пинги в чужие | аудит промтов 06.09 | | 330 | ⛔ **ЧТО ДВИЖОК ДЕЛАЕТ С ПРОТИВОРЕЧИЕМ В БАНКЕ — РЕШЕНИЕ ВЛАДЕЛЬЦА, И ОНО ПРО ДЕНЬГИ.** Слово владельца (строка 267): «у неподписанного термина тоже обязан быть ОДИН перевод». Сегодня движок противоречие в лучшем случае ВИДИТ: `ApprovedSharedKeyCollisions` роняет прогон на approved×approved, `UnverifiedKeyConflicts` варнит approved×unsigned, детектор схлопывания (пак 06.09) добавит репорт. **Ни один не делает ОДИН перевод.** Два выхода требуют слова владельца, потому что оба стоят денег: (а) «варнинг→стоп» для approved×unsigned — роняет ОПЛАЧЕННЫЙ прогон, довод против записан в коде (`backend/internal/membank/memseed.go:685-688`: самострел); (б) отказ схлопывания отдавать противоречащую форму — термин остаётся несхлопнутым, банк держит прежнюю форму; это меняет СОДЕРЖИМОЕ банка ⇒ двигает `memory_version` и снапшот редакторской волны ⇒ **пере-покупка на затронутых книгах**. ⚠ Разводить (а) и (б) по разным пакам нельзя — это ОДИН вопрос «что ДЕЛАЕМ», в отличие от «видим ли» (`D39.216`). ⇒ вопрос владельцу подаётся ВМЕСТЕ с числом «на скольких книгах корпуса детектор сработал бы» — без него вопрос пустой | владелец | скоро | решение владельца по (а) и (б) одним ответом + цена в книгах | пинги П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 |