260 lines
34 KiB
Markdown
260 lines
34 KiB
Markdown
# ПЛАН ДВУХ СЛЕДУЮЩИХ ПАКОВ — бэкенд и платформа (оркестратор №22, 03.09.2026)
|
||
|
||
> **Статус: РЕДАКЦИЯ 2 — сведена с разбором контролёра (Fable 5.1) 04.09; десять его обязательных
|
||
> правок приняты, каждая с уликой, и две его находки понизили вес моих собственных утверждений.** Промты по нему НЕ выдаются, пока оркестратор и контролёр (Fable 5.1)
|
||
> не скажут «ок» друг другу — распоряжение владельца 03.09. Файл — предмет этой сверки.
|
||
> **Что прочитано перед составлением:** единый бэклог целиком (176 строк, из них 53 «скоро») ·
|
||
> открытые ряды регистра платформы (97, `major` 3) · `research/30` (ответ полигона на два вопроса
|
||
> владельца, 03.09) · CURRENT-STATE и очередь №22 · оба акта приёмки (D39.187, D39.188) · оба наряда
|
||
> дофикса и отчёт приёмки по ним.
|
||
|
||
## 0. Что решает состав — три ограничения, а не вкус
|
||
|
||
1. **ВАЙР-БАТЧ (строка 182) — обязателен по СРОКУ, а не по деньгам сегодня.** ⚠ Первая редакция
|
||
этого плана утверждала «дриблить по одной = платить пере-снапшот несколько раз» как абсолют, и
|
||
контролёр это ОПРОВЕРГ уликой: пере-снапшот стоит денег только на книге, которую ПРОДОЛЖАТ, а
|
||
таких сегодня нет — `coldrun-v16` закрыт словом владельца «не доводить», стендовый корпус
|
||
одноразовый (`D39.63` п.3: «перекупать их не для чего»). Настоящее ограничение другое и оно
|
||
держится: все провод-правки обязаны лечь **до следующего продолжаемого платного прогона и до
|
||
первой книги внешнего пользователя** (`D39.136` п.3: «дешёвое окно закрывается первой книгой»).
|
||
Внутри этого срока пункты разводимы; инженерная цена дробления — N пере-захватов голдена вместо
|
||
одного.
|
||
2. **ОЧЕРЕДЬ ВЛАДЕЛЬЦА (CURRENT-STATE п.1–4).** Разрыв цикла — книга не отдаётся файлом пользователю;
|
||
открыта ПЛАТФОРМЕННАЯ половина (`createExport`/`getExport` канон обещает, платформа не монтирует).
|
||
Гейт этого пункта — живой сквозной прогон через API (п.3), и его блокер снят 31.08.
|
||
3. **ЦЕНА ОШИБКИ ПРИОРИТЕТА.** `research/30` §5 прямо ранжирует: механический пре-гейт перед
|
||
редактором (D39.117, строка 142) «выше в очереди, чем любой непроверенный K7», а половина доводов
|
||
за переделку протокола снята замером (редактор правит 4.0–5.8% знаков, а не переписывает текст).
|
||
|
||
## 1. БЭКЕНД — пак «ВАЙР-БАТЧ: род, экран цели, заголовки инъекций»
|
||
|
||
**Почему одним паком.** Провод двигают четыре пункта из шести, и каждый — свою ось: **210** — байты
|
||
батчей терминолога и `memory_version` (⇒ edit-снапшот), **46** — `ClassifierVersion` (⇒ снапшот,
|
||
`RequestHash` НЕ трогает), **134** — `RequestHash` редактора и транслятора (а при правке данных ещё и
|
||
`EmbeddedVersion` с `cutTag` — см. мину ниже), **140** — `RequestHash` черновика книг на c1,
|
||
**184(а)** — `BriefHash`, то есть КАЖДЫЙ `RequestHash`. Провод НЕ двигают два: **113** (фикстура) и
|
||
**дофикс** (пины). ⚠ Собрать их вместе стоит не потому, что иначе «платим четыре раза» — это
|
||
утверждение снято в §0.1, — а потому что голден пере-захватывается ОДИН раз вместо пяти, и потому что
|
||
все они обязаны лечь до одного и того же срока. Строка 182 заведена ровно под это и ждёт промта.
|
||
|
||
**Состав (в этом порядке):**
|
||
|
||
1. **Строка 210 — РОД НЕ ПРОИЗВОДИТСЯ ВОВСЕ, цель №1 бэклога.** Механизм доставки построен
|
||
(`membank/memory.go` кладёт `genderConstraintNote` в черновую инъекцию для `Confirmed`-строк по
|
||
директиве D39.21), а данных ему не даёт никто: промпт терминолога возвращает ровно три поля
|
||
(термин · перевод · уверенность), поля рода в ответе нет; майнер берёт `gender` только из СИДА.
|
||
⇒ на любой книге без ручного сида ось рода мертва по построению. Это не дефект рендера —
|
||
это отсутствие входа у ратифицированной директивы.
|
||
⚠ **Промт обязан назвать ДВЕ вещи, которых нет в самой строке 210** (улика контролёра):
|
||
(а) **развилка не выбрана** — поле рода в ответе терминолога · отдельный проход · признать
|
||
сид-только; (б) **второй замок**: род рендерится только у `Confirmed`-строк
|
||
(`membank/memory.go`, греп `genderConstraintNote`), а произведённое терминологом приезжает
|
||
auto-строкой ⇒ без снятия замка поле у терминолога НИЧЕГО не меняет на проводе. Снятие следует из
|
||
доктрины `D39.104` (банк на проводе — закон для всех строк независимо от статуса), но обязано быть
|
||
СКАЗАНО и ратифицировано оркестратором, а не выведено сессией молча.
|
||
⚠ Улика веса: полигон пишет, что его следующий платный замер (15 глав с характер-листами, ~$2)
|
||
«ложно-отрицателен ПО ПОСТРОЕНИЮ: полей пола в банке нет вовсе» — то есть 210 предпосылка их шага 3.
|
||
2. **Строка 46 + предпосылка 113 — экран целевого языка.** Дизайн ЗАМОРОЖЕН и ратифицирован
|
||
(D39.92 п.1 closed-set + D39.93 изолированный модуль с именованными причинами), промт ждёт выдачи.
|
||
⚠ Порядок §5.4: **сначала 113** — корпус-фикстура (~20 off-target + ~40 здоровых) и регресс-тест на
|
||
реальный запас, потому что число «18 из 20 · 0 ложных на 1055 · запас 13×» получено ВРЕМЕННЫМ
|
||
тестом, который сессия удалила, и воспроизвести его сегодня нечем. СТОП, если фикстура не даёт
|
||
18/20 при нуле ложных или запас меньше 3×.
|
||
⚠ **Три дописки по улике контролёра:** (i) `EFFORT_HANDLE §5.4` шаг 6 велит переиспользовать
|
||
`FlagCJKArtifact` — это СНЯТО `D39.93` п.2 (именованный флаг + явный вход в `escalatable()`), промт
|
||
цитирует ноту ПОВЕРХ спеки; (ii) вторая половина дыры — `detectLatinInsertion` без
|
||
`TargetScriptNonLatin()` (`backend/internal/checks/sanitizer.go`, реестр §Б-46: «чинить тем же
|
||
диффом»); (iii) новый именованный флаг — это **16-я причина**, а карта платформы рукописная на 15
|
||
(`platform/internal/ingest/notes.go`, `grep -c '":'` → 15) ⇒ платформа отдаст `unspecified` с ERROR.
|
||
Носитель — строка **204** / ряд `PD-246`, гейт которой «со следующим касанием эмиссии флагов»;
|
||
этот батч и есть касание, значит пинг платформе обязателен.
|
||
3. **Строка 134 — инжект-заголовки под доктрину D39.105.** Гейт ПАЛ (D39.108): текст = отправленная
|
||
строка пробы 18 БЕЗ оговорки области (оговорка опровергнута §A.4 — НЕ вносить).
|
||
⚠ **Точная форма (улика контролёра): ТЕКСТ заголовка не меняется вовсе.** Меняется рендер: секция
|
||
`editor_unverified_header` не рендерится (двухсекционка → один блок) · маркер ⟨проверить⟩ не
|
||
рендерится · то же у заголовка транслятора. Статусы и подписная таблица не трогаются (`D39.104` п.1).
|
||
⛔ **Мина:** правка `lang/data/injection.txt` двигает `EmbeddedVersion` БЕЗУСЛОВНЫМ фолдом
|
||
(`D39.64` П0) и `cutTag` манифеста ⇒ пере-чеканку ВСЕХ `unit.id` ⇒ платформа при смене
|
||
`manifest_key` СНОСИТ `unit_resolutions` книги (`platform/internal/pgstore/readmodel.go:127`
|
||
`recut := storedKey != in.ManifestKey`, `:166` `delete from unit_resolutions`) — это строка **198**.
|
||
Рычаг у сессии есть: снять рендер в Go, ДАННЫЕ не трогать — тогда двигается только `RequestHash`.
|
||
Промт обязан назвать выбор явно, а не оставить сессии.
|
||
4. **Строка 140 — банковый контур в shipping-c1: СТРОЙКА, а не развилка.** ⚠ Исправлено по улике
|
||
контролёра: текст строки («СТОП-решение») старше ратификации. `D39.147` п.2(в) уточнением
|
||
владельца 17.08 говорит дословно — внесение «ратифицированно живёт в wire-батче 182 — одним
|
||
касанием перед первым платным прогоном; **отдельной развилки нет**». Журнал бьёт бэклог. Факт не
|
||
построен: `grep -n 'terminology\|banknote\|classify' backend/configs/pipeline-c1.yaml` → 0.
|
||
⚠ При внесении суб-бюджеты банк-ролей калибровать ×4.47 — `15-money-path.md` §2 прямо говорит, что
|
||
сегодня они «режут ОПЛАЧЕННУЮ работу по протухшей калибровке». Цена в паке НАЗЫВАЕТСЯ, но не
|
||
спрашивается.
|
||
5. **ДОФИКС предыдущего пака + ФЧ-7 — одним пунктом** (остаток приёмки 03.09, D39.187 п.4).
|
||
⚠ Сюда же **ФЧ-7 фикс-листа (строка 197): паника поверх ПОЙМАННОГО потолка** — денежный шов, и он
|
||
не проверялся ни приёмкой, ни контролёром. Форма — **проверка исполнением, а не стройка**:
|
||
воспроизвести, и чинить ТОЛЬКО если воспроизводится. Тем же касанием пере-скоупить строку 197:
|
||
ФЧ-1/4/5 закрыты консент-паком, ФЧ-6 по коду выглядит закрытым (`backend/internal/pipeline/status.go`,
|
||
греп `RebillBasisFailed` — отказ проекции репортится базисом, отчёт не валится), ФЧ-2/3/8 —
|
||
НЕ ПРОВЕРЕНЫ и обязаны остаться названными как непроверенные.
|
||
⚠ По канону дофикс адресуется ТОЙ ЖЕ сессии («отработавшей пишут только по её же паку»), и
|
||
контролёр справедливо это напомнил. Проверено: сессий больше нет — `ListAgents` 04.09 не показывает
|
||
ни `textmachine-77`, ни платформенную. Значит остаток законно едет пунктом нового пака, и промт
|
||
обязан сказать, ПОЧЕМУ он тут: это чужая недоделка, а не новый заказ. Остаток:
|
||
развилка операторской строки прибита с ОДНОЙ стороны (две посадки в новый код `VolumeStop.String()`
|
||
переживают весь пакет и печатают «reached the END of the book» при непустом остатке) · граница
|
||
`bound()` (`Carried > 0` → `Carried > 1`) не прибита, и прогон с одним перенесённым юнитом на
|
||
конце книги не отдаёт отчёт вовсе · три числа отчёта протухли снова.
|
||
|
||
6. **Строка 184(а) — снять `{{genre}}` из промптов пары.** ⚠ Внесено по улике контролёра: это самый
|
||
дешёвый ратифицированный провод-пункт, и оставлять его снаружи значит заплатить сдвиг `BriefHash`
|
||
(то есть КАЖДЫЙ `RequestHash`) ещё раз потом. Слово владельца 16.08 — «жанр из продукта уходит
|
||
совсем», `D39.138` п.2в дословно «Просто выкидываем»; строка требует внести «ТОЛЬКО в общее
|
||
resnapshot-окно» — окно это. Состав не держим числом: `grep -rln '{{genre}}' backend/prompts/`
|
||
(сегодня — шесть файлов) плюс поле из канона брифа.
|
||
|
||
**ЧТО НАМЕРЕННО НЕ БЕРЁМ и почему:**
|
||
- **Строка 161 (структура глав, «большой перекрой»).** Это «единственное дешёвое resnapshot-окно», и он требует
|
||
ДИЗАЙН-пака до стройки (D39.136 п.3). Смешивать его с вайр-батчем нельзя: батч платит один
|
||
пере-снапшот, а 161 перекраивает нарезку целиком.
|
||
- ⚠ **Строка 160 (структура глав, Этап 0) — НЕ «не берём», а РЕШЕНИЕ с названной ценой.** Первая
|
||
редакция плана свалила её в один пункт с 161, и контролёр это разобрал: у 160 свой гейт, и он
|
||
**ПАЛ** — слово владельца 15.08 (`D39.136` п.3) «ставится ближайшим бэкенд-паком», а стоявший
|
||
впереди блокер 236 закрыт `D39.175`. Улика веса свежая и она про пользователя: вычитка полигона
|
||
нашла потерянный заголовок у **6 глав из 17** (≈800 на книге) — и это ровно то, что уедет читателю
|
||
через дверь выдачи, которую строит второй пак. Настоящая цена: бамп `manifestVersion` ⇒ у бампа
|
||
формы манифеста **безопасного порядка деплоя НЕТ ни в одну сторону** (`PD-436`, стоп-мир) плюс
|
||
строка 198. Решение — владельца: брать сейчас вместе с дверью или после. Молчать о ней нельзя.
|
||
- **Строка 142 (пре-гейт перед редактором).** Ратифицирован формой, но `research/30` ставит его ПОСЛЕ
|
||
шага 0–1 полигона (починка глоссарного флага с precision 0.067 и прибор верности): без прибора его
|
||
эффект неизмерим, а мерило — половина цены редактора.
|
||
- **Строка 232 остаток / 233.** Семантика переноса отложена СЛОВОМ ВЛАДЕЛЬЦА 03.09 («подумаем»);
|
||
трогать до его решения нельзя.
|
||
- **119 + 124 + 115.** Строка 182 требует брать их ОДНИМ дизайн-паком, а не хвостом батча.
|
||
- **131 (кап инъекции) · 105(а) (вердикт-половина классификатора) · 14 (ё-фолд)** — жильцы той же
|
||
строки 182, в этот пак НЕ входят и это сказано вслух, а не умолчано: у 131 своя цена и своё
|
||
СТОП-решение, и сама строка велит «пере-замерить после 134» — то есть её очередь ПОСЛЕ этого пака,
|
||
а не внутри него; 105(а) и 14 остаются в 182 до следующего окна.
|
||
|
||
**⚠ ДВЕ СТРОКИ, КОТОРЫЕ БАТЧ ЗАДЕВАЕТ САМ, И ПЕРВАЯ РЕДАКЦИЯ ПЛАНА ИХ НЕ УВИДЕЛА:**
|
||
- **198 — апгрейд движка стирает замечания книги БЕЗВОЗВРАТНО.** Если батч тронет данные
|
||
(`lang/data/*.txt`), поедет `cutTag` → `manifest_key` → платформа снесёт `unit_resolutions`
|
||
(`readmodel.go:127` и `:166`), и замечания читателя исчезнут. Гейт самой строки — «до первого
|
||
реального пользователя И до холодного прогона с апгрейдами». Носителя не было ни в одном паке;
|
||
теперь он ЗДЕСЬ: либо батч не трогает данные (рычаг у сессии есть), либо 198 чинится ДО батча.
|
||
- **204 / `PD-246` — карта причин флагов платформы рукописная на 15**, а экран цели (46) добавляет
|
||
16-ю. Гейт строки 204 — «со следующим касанием эмиссии флагов»; это касание и есть.
|
||
|
||
## 2. ПЛАТФОРМА — пак «ЗАКРЫТЬ ЦИКЛ: сквозной прогон и дверь выдачи»
|
||
|
||
**Почему это, а не мажоры регистра.** Очередь владельца называет разрыв цикла пунктом 1, и его
|
||
платформенная половина — единственное, что стоит между «движок пишет файл» и «пользователь получил
|
||
книгу». Движок отдаёт EPUB 3 + txt с 30.08 (D39.175), холодный прогон 31.08 предъявил это живьём
|
||
(`epubcheck` 0/0/0/0). Платформа смонтировала 15 операций канона из 20; `createExport`/`getExport`
|
||
среди недостающих, долг числится с P8 и ни один пак после P7 его не взял.
|
||
|
||
**Состав:**
|
||
|
||
1. **Строка 202 — живой сквозной прогон через API.** ⚠ **ТРЕБУЕТ СЛОВА ВЛАДЕЛЬЦА: прогон ПЛАТНЫЙ.**
|
||
Всё после «прогон стартовал и остановился» покрыто батареей против живого Postgres, но с
|
||
движком-заглушкой; настоящий манифест, сайдкар банка и причины флагов будут ПЕРВЫМИ данными,
|
||
форму которых платформа не сочинила сама. Замер 31.08 на десятиглавой книге: $0.436110.
|
||
Живой блокер один и он операционный ($0): `TM_PLATFORM_ENGINE_KEYS_PATH` абсолютным путём на уже
|
||
заполненный файл.
|
||
⚠ **Санкция ДАНА (`D39.189`), но сумма в первой редакции плана была занижена — исправлено по улике
|
||
контролёра.** $0.436110 — цена НЕПОЛНОГО захода (три юнита из четырнадцати); дверь выдачи и строка
|
||
16 («цена ДОВЕДЁННОЙ книги») требуют ЗАВЕРШЁННОЙ книги, а собственная проекция движка на неё —
|
||
`projected_book_usd = 1.1377…` при оттоке кассы ≈$1.44. **Потолок пака: ≈$1.5.**
|
||
⛔ **МЕХАНИЗМ потолка на API-пути — НЕ флаг, и первая редакция этого плана велела невозможное**
|
||
(улика контролёра, пере-проверена мной по коду). Руками `--ceiling-usd` на этом пути не ставит
|
||
никто: платформа выводит его сама — `bookCap = committed + increment` (`internal/runs/spawn.go`,
|
||
греп `func (m meter) bookCap`), а `increment` считается по ставке `DefaultPerChapter = 30_000`
|
||
($0.03, `internal/pricing/pricing.go`), которая занижена ×4.47 (`D39.179` п.1). Следствие: покупка
|
||
«10 глав» отдаёт движку ≈$0.30, прогон встаёт по потолку задолго до конца книги, а `resume`
|
||
остановленного потолком отбивается (`internal/runs/runs.go`, греп `ErrCeilingReached`; `PD-217`:
|
||
«лечение пользователя — НОВЫЙ прогон»). Сессия, исполняющая букву «едет `--ceiling-usd`», полезла бы
|
||
крутить `TM_PLATFORM_USD_PER_CHAPTER` — это хак под тест, и он запрещён.
|
||
**Правильная форма:** потолок пака = ГРАНТ тест-аккаунту ровно на $1.5
|
||
(`tmplatformctl grant --user <id> --usd 1.5`), потому что холд делает перерасход невозможным ПО
|
||
ПОСТРОЕНИЮ; а путь до завершённой книги идёт цепочкой **покупка → пауза по потолку → пополнение →
|
||
новый прогон**. Это не обход, а ровно третий сценарий строки **216** и `D39.176` п.3 (возобновление
|
||
явным действием пользователя) — то есть продуктовый путь, который прогон и обязан предъявить.
|
||
`--ceiling-usd` при этом на движковый вызов уходит всегда, но число — производное платформы, и
|
||
промт обязан это сказать, иначе сессия будет искать флаг, которого у неё нет.
|
||
⚠ **Стартовать в ДОЛИНУ:** у DeepSeek пиковые окна 01–04 и 06–10 UTC дают ×2 (строка 172а) —
|
||
операционное правило дешевле любой правки Go.
|
||
⚠ Тремя явными сценариями закрыть строку **216**: подпись банка · halt на потолке · резюм после
|
||
пополнения. И сверить то, что до сих пор не сверялось: на шов вышло ОДНО значение `flag_reason` из
|
||
пятнадцати, а манифест против `platform/internal/ingest/manifest.go` не сверялся вовсе.
|
||
2. **Дверь выдачи — `createExport`/`getExport`.** ⚠ Слово владельца 30.08: дверь ВСЕГДА строит файл —
|
||
отказ пользователю не отдаётся, неполная книга уходит с пометкой, то есть дверь зовёт
|
||
`tmctl build --partial`; отказ по умолчанию остаётся операторской ручкой CLI. Требует минора
|
||
канона — значит контрактное касание планировать вместе.
|
||
⚠ **Четыре факта кода, которые промт обязан нести (улика контролёра):** `ExportFormats` захардкожен
|
||
пустым (`cmd/tmplatformd/runner.go`, греп `ExportFormats`), а форматы движок публикует только
|
||
Go-переменной `bookfile.Formats` — импорт чужого модуля запрещён `D39.85`, значит нужен КАНАЛ
|
||
(переменная деплоя либо движок публикует данными), и это вопрос закона входной двери 17 ·
|
||
декодера `tm-build-v1`/`BuildReport` в платформе НЕТ (ноль хитов при живых `DecodeExport`,
|
||
`DecodeBank`) · `build` открывает стор read-only без flock, значит канонное «книгу можно
|
||
экспортировать во время перевода» исполнимо · `ExitBookIncomplete = 16` у платформы отсутствует.
|
||
**Состав минора канона назвать в промте:** `Export.failure_code` становится enum с первым
|
||
построенным форматом (`contract-10` строки 243, условие наступило) · механизм подписанной ссылки
|
||
и TTL/GC файлов · строка **241** (канон противоречит себе на дочитанной книге — «следующее касание
|
||
контракта»). Кто правит канон — сказать явно: прецедент есть, миноры 0.6.0/0.7.0/0.9.0 приезжали
|
||
с паками зоны через ратификацию.
|
||
3. **`PD-424` — терминальная ручка для живого прогона с заблокированной расплатой** (`major`,
|
||
половина «невидим» вылечена P12, половина «ручки нет» стоит). `run abandon` ветвится по
|
||
`runs.finished_at` и на живом прогоне уходит в живую ветку; `AbandonRun` отказывает над попыткой,
|
||
ещё называющей юнит. Это НОВАЯ разрушительная операторская поверхность над деньгами — её дизайн
|
||
(кто вправе звать, чем доказывается отсутствие процесса, что если процесс вернётся) назвать в паке
|
||
явно. ⚠ Дописать `PD-418`: та же ветвь по `finished_at`, и долговечное лечение — «ветвить по
|
||
НАЛИЧИЮ осиротевшей попытки» — либо входит в тот же дизайн, либо явно объявляется вне его.
|
||
4. **ДОФИКС предыдущего пака — одним пунктом** (D39.188 п.5а). ⚠ Та же оговорка, что у бэкенда: по
|
||
канону дофикс шёл бы ТОЙ ЖЕ сессии, но её больше нет (`ListAgents` 04.09), поэтому остаток едет
|
||
пунктом нового пака — и промт обязан сказать, что это чужая недоделка, а не новый заказ.
|
||
Записка зоны о предусловии хоста
|
||
различает хосты ИМЕНЕМ МАШИНЫ, а имя у этого хоста то же самое при противоположных условиях
|
||
(`~/go/bin` существует и держит `sqlc`, `make tools-check` на дефолтном PATH падает, сокет 55433).
|
||
Различает пользователь, а не хост.
|
||
|
||
**ЧТО НАМЕРЕННО НЕ БЕРЁМ:**
|
||
- **`PD-410`** (полоса против движкового плана) — архитектурное, направление есть (D39.165 §1),
|
||
но лечение требует либо передавать движку план работ, либо выводить total полосы из движкового
|
||
плана; это отдельный пак по слову оркестратора 28.08 и он крупнее двери.
|
||
- **`PD-412`/`PD-413`** (LATERAL в полосном агрегате) — контенция, не корректность денег.
|
||
- **`PD-386`/`387`/`389`/`390`/`392`** (такт свипа, телеметрия, метрики без ручки) — класс «операторская
|
||
поверхность», просится отдельным паком наблюдаемости; смешивать с дверью выдачи значит разбавить
|
||
оба.
|
||
- **`PD-439`** и правило ухода из класса — решение ОРКЕСТРАТОРА, не зоны; оно моё, а не паковое.
|
||
|
||
**РАЙДЕРЫ — дешёвые пункты, которые контролёр нашёл пропущенными:**
|
||
- **246** — `platform/internal/ingest/exit.go` всё ещё обещает «nothing this process would have
|
||
written was written», тогда как движок это прямо отрицает. ⚠ Вес ПЕРЕОЦЕНЕН прежней формулировкой
|
||
(«разрушительно по полосе»): интейк удаляет загрузку только на классе 11, а exit 15 производит
|
||
только `bank-apply`. Остаток — комментарий плюс константа 16, которую дверь и так добавит.
|
||
- **234** — `platform/internal/runs/bank.go` объясняет отказ снятой посылкой («status projects the
|
||
STORED memory…»), опровергнутой `D39.170`: одна правка комментария.
|
||
- **`PD-438` — остаток назвать явно:** лечение в дереве, но парковка не видна ни в `runs`, ни гейджем,
|
||
ни колонкой. План первой редакции не назвал его ни взятым, ни отложенным.
|
||
|
||
## 3. РЕШЕНИЯ — ВСЕ ЗАКРЫТЫ 04.09 (`D39.190`), лист пуст
|
||
|
||
> Владелец 04.09: «делаем как ты и Fable 5 рекомендуете». Ниже — исходный лист; каждый пункт несёт
|
||
> исход. ⚠ При сведении нашлось ЧЕТВЁРТОЕ, которого не видели ни план, ни разбор: строка 160 бампает
|
||
> `manifestVersion`, а платформенный пак в это же окно гонит ЖИВОЙ ПЛАТНЫЙ прогон — бамп сорвал бы
|
||
> его, потому что гейт интейка строгое равенство. Поэтому 160 отложена ПОРЯДКОМ, а не приоритетом.
|
||
|
||
1. ~~**Санкция на платный сквозной прогон**~~ — **ДАНА 03.09 (`D39.189`):** «разрешаю платные прогоны
|
||
с ключами для тестов». ⚠ Потолок числом НЕ назван, поэтому его называет пак: оценка своим замером +
|
||
обязательный `--ceiling-usd` + правило «перелёт оценки — СТОП и пинг». Опора — холодный прогон
|
||
31.08: $0.436110 на десяти главах полной цепью.
|
||
2. **Строка 160 — структура глав, Этап 0: брать сейчас или после?** Гейт пал, улика веса свежая
|
||
(заголовок потерян у 6 глав из 17, и это уедет читателю через дверь выдачи), но цена настоящая —
|
||
бамп `manifestVersion`, у которого безопасного порядка деплоя нет ни в одну сторону.
|
||
3. **Строка 142 — пре-гейт перед редактором: сейчас или после шага 0–1 полигона?** Строка ждёт
|
||
«команды владельца». Рекомендация — ПОСЛЕ: `research/30` §3.2 показывает у глоссарного флага
|
||
precision 0.067, то есть 14 ложных на одно верное, и пре-гейт приедет с мусорным входом.
|
||
4. **Санкция на пере-снапшот батча как ЕДИНЫЙ акт.** `§5.4` шаг 6 требует подписи владельца; сегодня
|
||
цена пере-снапшота $0 (продолжаемых книг нет), поэтому ратифицировать может и оркестратор по
|
||
строке 182 — но сказать это вслух обязан.
|
||
|
||
**СНЯТО С ЛИСТА по уликам контролёра:** ~~строка 140~~ — решена `D39.147` п.2(в), отдельной развилки
|
||
нет, вносится батчем · ~~семантика переноса слота~~ — открыта, но НЕ гейт: строка 232 из состава
|
||
исключена, ни один пункт от неё не зависит.
|