# ПЛАН ДВУХ СЛЕДУЮЩИХ ПАКОВ — бэкенд и платформа (оркестратор №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 --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 из состава исключена, ни один пункт от неё не зависит.