36 KiB
ПЛАН ДВУХ СЛЕДУЮЩИХ ПАКОВ — бэкенд и платформа (оркестратор №22, 03.09.2026)
⚠⚠ АРХИВ. ПЛАН ОТРАБОТАН — РЕШЕНИЯ ПРИНЯТЫ, ПРОМТЫ ВЫДАНЫ. ИНСТРУКЦИИ ОТСЮДА НЕ ИСПОЛНЯЮТСЯ. Составлен 03.09, сведён с разбором контролёра (Fable 5.1) по всему бэклогу и всему журналу, ратифицирован
D39.19004.09. Живые носители его содержания: решения — D39.190 (160 отложена ПОРЯДКОМ, 142 после полигона, пере-снапшот батча единым актом) · состав паков — выданные промтыBACKEND_WIREBATCH_SESSION_PROMPT.mdиPLATFORM_EXPORT_SESSION_PROMPT.md· санкция платных прогонов — D39.189 с эрратой 04.09-а о механизме потолка. ⚠ Улики плана, которых не было больше нигде, ПЕРЕНЕСЕНЫ в носители 04.09 перед архивацией: пере-вес 246 и «ФЧ-6 по коду закрыт» — в ячейки бэклога 246 и 197 · судьба 131/105(а)/14 и состав окна — в ячейку 182 · остатокPD-438— в его ряд регистра. Ничего не потеряно с файлом.
Статус: РЕДАКЦИЯ 2 — сведена с разбором контролёра (Fable 5.1) 04.09; десять его обязательных правок приняты, каждая с уликой, и две его находки понизили вес моих собственных утверждений. Промты по нему НЕ выдаются, пока оркестратор и контролёр (Fable 5.1) не скажут «ок» друг другу — распоряжение владельца 03.09. Файл — предмет этой сверки. Что прочитано перед составлением: единый бэклог целиком (176 строк, из них 53 «скоро») · открытые ряды регистра платформы (97,
major3) ·research/30(ответ полигона на два вопроса владельца, 03.09) · CURRENT-STATE и очередь №22 · оба акта приёмки (D39.187, D39.188) · оба наряда дофикса и отчёт приёмки по ним.
0. Что решает состав — три ограничения, а не вкус
- ВАЙР-БАТЧ (строка 182) — обязателен по СРОКУ, а не по деньгам сегодня. ⚠ Первая редакция
этого плана утверждала «дриблить по одной = платить пере-снапшот несколько раз» как абсолют, и
контролёр это ОПРОВЕРГ уликой: пере-снапшот стоит денег только на книге, которую ПРОДОЛЖАТ, а
таких сегодня нет —
coldrun-v16закрыт словом владельца «не доводить», стендовый корпус одноразовый (D39.63п.3: «перекупать их не для чего»). Настоящее ограничение другое и оно держится: все провод-правки обязаны лечь до следующего продолжаемого платного прогона и до первой книги внешнего пользователя (D39.136п.3: «дешёвое окно закрывается первой книгой»). Внутри этого срока пункты разводимы; инженерная цена дробления — N пере-захватов голдена вместо одного. - ОЧЕРЕДЬ ВЛАДЕЛЬЦА (CURRENT-STATE п.1–4). Разрыв цикла — книга не отдаётся файлом пользователю;
открыта ПЛАТФОРМЕННАЯ половина (
createExport/getExportканон обещает, платформа не монтирует). Гейт этого пункта — живой сквозной прогон через API (п.3), и его блокер снят 31.08. - ЦЕНА ОШИБКИ ПРИОРИТЕТА.
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 заведена ровно под это и ждёт промта.
Состав (в этом порядке):
-
Строка 210 — РОД НЕ ПРОИЗВОДИТСЯ ВОВСЕ, цель №1 бэклога. Механизм доставки построен (
membank/memory.goкладётgenderConstraintNoteв черновую инъекцию дляConfirmed-строк по директиве D39.21), а данных ему не даёт никто: промпт терминолога возвращает ровно три поля (термин · перевод · уверенность), поля рода в ответе нет; майнер берётgenderтолько из СИДА. ⇒ на любой книге без ручного сида ось рода мертва по построению. Это не дефект рендера — это отсутствие входа у ратифицированной директивы. ⚠ Промт обязан назвать ДВЕ вещи, которых нет в самой строке 210 (улика контролёра): (а) развилка не выбрана — поле рода в ответе терминолога · отдельный проход · признать сид-только; (б) второй замок: род рендерится только уConfirmed-строк (membank/memory.go, грепgenderConstraintNote), а произведённое терминологом приезжает auto-строкой ⇒ без снятия замка поле у терминолога НИЧЕГО не меняет на проводе. Снятие следует из доктриныD39.104(банк на проводе — закон для всех строк независимо от статуса), но обязано быть СКАЗАНО и ратифицировано оркестратором, а не выведено сессией молча. ⚠ Улика веса: полигон пишет, что его следующий платный замер (15 глав с характер-листами, ~$2) «ложно-отрицателен ПО ПОСТРОЕНИЮ: полей пола в банке нет вовсе» — то есть 210 предпосылка их шага 3. -
Строка 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, гейт которой «со следующим касанием эмиссии флагов»; этот батч и есть касание, значит пинг платформе обязателен. -
Строка 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:127recut := storedKey != in.ManifestKey,:166delete from unit_resolutions) — это строка 198. Рычаг у сессии есть: снять рендер в Go, ДАННЫЕ не трогать — тогда двигается толькоRequestHash. Промт обязан назвать выбор явно, а не оставить сессии. -
Строка 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 прямо говорит, что сегодня они «режут ОПЛАЧЕННУЮ работу по протухшей калибровке». Цена в паке НАЗЫВАЕТСЯ, но не спрашивается. -
ДОФИКС предыдущего пака + ФЧ-7 — одним пунктом (остаток приёмки 03.09, D39.187 п.4). ⚠ Сюда же ФЧ-7 фикс-листа (строка 197): паника поверх ПОЙМАННОГО потолка — денежный шов, и он не проверялся ни приёмкой, ни контролёром. Форма — проверка исполнением, а не стройка: воспроизвести, и чинить ТОЛЬКО если воспроизводится. Тем же касанием пере-скоупить строку 197: ФЧ-1/4/5 закрыты консент-паком, ФЧ-6 по коду выглядит закрытым (
backend/internal/pipeline/status.go, грепRebillBasisFailed— отказ проекции репортится базисом, отчёт не валится), ФЧ-2/3/8 — НЕ ПРОВЕРЕНЫ и обязаны остаться названными как непроверенные. ⚠ По канону дофикс адресуется ТОЙ ЖЕ сессии («отработавшей пишут только по её же паку»), и контролёр справедливо это напомнил. Проверено: сессий больше нет —ListAgents04.09 не показывает ниtextmachine-77, ни платформенную. Значит остаток законно едет пунктом нового пака, и промт обязан сказать, ПОЧЕМУ он тут: это чужая недоделка, а не новый заказ. Остаток: развилка операторской строки прибита с ОДНОЙ стороны (две посадки в новый кодVolumeStop.String()переживают весь пакет и печатают «reached the END of the book» при непустом остатке) · границаbound()(Carried > 0→Carried > 1) не прибита, и прогон с одним перенесённым юнитом на конце книги не отдаёт отчёт вовсе · три числа отчёта протухли снова. -
Строка 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 его не взял.
Состав:
- Строка 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не сверялся вовсе. - Дверь выдачи —
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 приезжали с паками зоны через ратификацию. PD-424— терминальная ручка для живого прогона с заблокированной расплатой (major, половина «невидим» вылечена P12, половина «ручки нет» стоит).run abandonветвится поruns.finished_atи на живом прогоне уходит в живую ветку;AbandonRunотказывает над попыткой, ещё называющей юнит. Это НОВАЯ разрушительная операторская поверхность над деньгами — её дизайн (кто вправе звать, чем доказывается отсутствие процесса, что если процесс вернётся) назвать в паке явно. ⚠ ДописатьPD-418: та же ветвь поfinished_at, и долговечное лечение — «ветвить по НАЛИЧИЮ осиротевшей попытки» — либо входит в тот же дизайн, либо явно объявляется вне его.- ДОФИКС предыдущего пака — одним пунктом (D39.188 п.5а). ⚠ Та же оговорка, что у бэкенда: по
канону дофикс шёл бы ТОЙ ЖЕ сессии, но её больше нет (
ListAgents04.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 отложена ПОРЯДКОМ, а не приоритетом.
Санкция на платный сквозной прогон— ДАНА 03.09 (D39.189): «разрешаю платные прогоны с ключами для тестов». ⚠ Потолок числом НЕ назван, поэтому его называет пак: оценка своим замером + обязательный--ceiling-usd+ правило «перелёт оценки — СТОП и пинг». Опора — холодный прогон 31.08: $0.436110 на десяти главах полной цепью.- Строка 160 — структура глав, Этап 0: брать сейчас или после? Гейт пал, улика веса свежая
(заголовок потерян у 6 глав из 17, и это уедет читателю через дверь выдачи), но цена настоящая —
бамп
manifestVersion, у которого безопасного порядка деплоя нет ни в одну сторону. - Строка 142 — пре-гейт перед редактором: сейчас или после шага 0–1 полигона? Строка ждёт
«команды владельца». Рекомендация — ПОСЛЕ:
research/30§3.2 показывает у глоссарного флага precision 0.067, то есть 14 ложных на одно верное, и пре-гейт приедет с мусорным входом. - Санкция на пере-снапшот батча как ЕДИНЫЙ акт.
§5.4шаг 6 требует подписи владельца; сегодня цена пере-снапшота $0 (продолжаемых книг нет), поэтому ратифицировать может и оркестратор по строке 182 — но сказать это вслух обязан.
СНЯТО С ЛИСТА по уликам контролёра: строка 140 — решена D39.147 п.2(в), отдельной развилки
нет, вносится батчем · семантика переноса слота — открыта, но НЕ гейт: строка 232 из состава
исключена, ни один пункт от неё не зависит.