textmachine/docs/NEXT_PACKS_PLAN.md

13 KiB
Raw Blame History

ПЛАН ДВУХ СЛЕДУЮЩИХ ПАКОВ — бэкенд и платформа (оркестратор №22, 03.09.2026)

Статус: ЧЕРНОВИК НА СВЕРКЕ. Промты по нему НЕ выдаются, пока оркестратор и контролёр (Fable 5.1) не скажут «ок» друг другу — распоряжение владельца 03.09. Файл — предмет этой сверки. Что прочитано перед составлением: единый бэклог целиком (176 строк, из них 53 «скоро») · открытые ряды регистра платформы (97, major 3) · research/30 (ответ полигона на два вопроса владельца, 03.09) · CURRENT-STATE и очередь №22 · оба акта приёмки (D39.187, D39.188) · оба наряда дофикса и отчёт приёмки по ним.

0. Что решает состав — три ограничения, а не вкус

  1. ВАЙР-БАТЧ (строка 182). Любая правка, двигающая RequestHash / memory_version / снапшот, — это пере-покупка волн. Дриблить по одной = платить пере-снапшот несколько раз. Значит все провод-правки идут ОДНИМ касанием или не идут вовсе.
  2. ОЧЕРЕДЬ ВЛАДЕЛЬЦА (CURRENT-STATE п.14). Разрыв цикла — книга не отдаётся файлом пользователю; открыта ПЛАТФОРМЕННАЯ половина (createExport/getExport канон обещает, платформа не монтирует). Гейт этого пункта — живой сквозной прогон через API (п.3), и его блокер снят 31.08.
  3. ЦЕНА ОШИБКИ ПРИОРИТЕТА. research/30 §5 прямо ранжирует: механический пре-гейт перед редактором (D39.117, строка 142) «выше в очереди, чем любой непроверенный K7», а половина доводов за переделку протокола снята замером (редактор правит 4.05.8% знаков, а не переписывает текст).

1. БЭКЕНД — пак «ВАЙР-БАТЧ: род, экран цели, заголовки инъекций»

Почему именно вайр-батч, а не «самое важное по одной». Четыре из пяти кандидатов бэкенда двигают провод. Взять их по одному — заплатить пере-снапшот четыре раза на книге, которая уже куплена. Строка 182 заведена ровно под это и ждёт промта.

Состав (в этом порядке):

  1. Строка 210 — РОД НЕ ПРОИЗВОДИТСЯ ВОВСЕ, цель №1 бэклога. Механизм доставки построен (membank/memory.go кладёт genderConstraintNote в черновую инъекцию для Confirmed-строк по директиве D39.21), а данных ему не даёт никто: промпт терминолога возвращает ровно три поля (термин · перевод · уверенность), поля рода в ответе нет; майнер берёт gender только из СИДА. ⇒ на любой книге без ручного сида ось рода мертва по построению. Это не дефект рендера — это отсутствие входа у ратифицированной директивы.
  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×.
  3. Строка 134 — инжект-заголовки под доктрину D39.105. Гейт ПАЛ (D39.108): текст = отправленная строка пробы 18 БЕЗ оговорки области (оговорка опровергнута §A.4 — НЕ вносить).
  4. Строка 140 — банковый контур в shipping-c1. СТОП-решение: включить в c1 (двигает промпт драфта ⇒ цену назвать) либо поправить декларацию. ⚠ Это решение ВЛАДЕЛЬЦА, не сессии; в пак идёт как «предъявить обе цены и остановиться», а не как стройка.
  5. ДОФИКС предыдущего пака — одним пунктом (остаток приёмки 03.09, D39.187 п.4): развилка операторской строки прибита с ОДНОЙ стороны (две посадки в новый код VolumeStop.String() переживают весь пакет и печатают «reached the END of the book» при непустом остатке) · граница bound() (Carried > 0Carried > 1) не прибита, и прогон с одним перенесённым юнитом на конце книги не отдаёт отчёт вовсе · три числа отчёта протухли снова.

ЧТО НАМЕРЕННО НЕ БЕРЁМ и почему:

  • Строки 160/161 (структура глав). 161 — это «единственное дешёвое resnapshot-окно», и он требует ДИЗАЙН-пака до стройки (D39.136 п.3). Смешивать его с вайр-батчем нельзя: батч платит один пере-снапшот, а 161 перекраивает нарезку целиком.
  • Строка 142 (пре-гейт перед редактором). Ратифицирован формой, но research/30 ставит его ПОСЛЕ шага 01 полигона (починка глоссарного флага с precision 0.067 и прибор верности): без прибора его эффект неизмерим, а мерило — половина цены редактора.
  • Строка 232 остаток / 233. Семантика переноса отложена СЛОВОМ ВЛАДЕЛЬЦА 03.09 («подумаем»); трогать до его решения нельзя.
  • 119 + 124 + 115. Строка 182 требует брать их ОДНИМ дизайн-паком, а не хвостом батча.

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 абсолютным путём на уже заполненный файл.
  2. Дверь выдачи — createExport/getExport. ⚠ Слово владельца 30.08: дверь ВСЕГДА строит файл — отказ пользователю не отдаётся, неполная книга уходит с пометкой, то есть дверь зовёт tmctl build --partial; отказ по умолчанию остаётся операторской ручкой CLI. Требует минора канона — значит контрактное касание планировать вместе.
  3. PD-424 — терминальная ручка для живого прогона с заблокированной расплатой (major, половина «невидим» вылечена P12, половина «ручки нет» стоит). run abandon ветвится по runs.finished_at и на живом прогоне уходит в живую ветку; AbandonRun отказывает над попыткой, ещё называющей юнит. Это НОВАЯ разрушительная операторская поверхность над деньгами — её дизайн (кто вправе звать, чем доказывается отсутствие процесса, что если процесс вернётся) назвать в паке явно.
  4. ДОФИКС предыдущего пака — одним пунктом (D39.188 п.5а): записка зоны о предусловии хоста различает хосты ИМЕНЕМ МАШИНЫ, а имя у этого хоста то же самое при противоположных условиях (~/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 и правило ухода из класса — решение ОРКЕСТРАТОРА, не зоны; оно моё, а не паковое.

3. ЧТО ОСТАЁТСЯ НА ВЛАДЕЛЬЦЕ — три решения, без которых состав неполон

  1. Санкция на платный сквозной прогонДАНА 03.09 (D39.189): «разрешаю платные прогоны с ключами для тестов». ⚠ Потолок числом НЕ назван, поэтому его называет пак: оценка своим замером + обязательный --ceiling-usd + правило «перелёт оценки — СТОП и пинг». Опора — холодный прогон 31.08: $0.436110 на десяти главах полной цепью.
  2. Семантика переноса слота (открыто с 03.09). Пока не решена, --max-units держит слоты, а не деньги; замер: грант 2 оплачивает 4 юнита, и флагнувшийся без текста юнит пере-оплачивается каждой покупкой.
  3. Строка 140 — банковый контур в shipping-c1: включить (двигает промпт драфта ⇒ пере-покупка) либо поправить декларацию.