# Скратчпад оркестратора №23 — контроль исполнения лупа > ⚠ **Здесь НЕТ копий норм.** Нормы живут в `docs/ORCHESTRATOR_SESSION_PROMPT.md`, копия факта стареет > молча (`D39.112`). Здесь только (а) указатели-чек-лист, по которому я прохожу ПЕРЕД выдачей и ПЕРЕД > лендингом, (б) стоячие правила владельца на этот луп, (в) живая раскладка слотов и журнал выдач. > Файл рабочий и умирает вместе с очередью №23. ## Стоячие правила владельца на этот луп (слово 11.09) 1. Выполнить ВСЕ промты, задуманные в `docs/NEAR_TERM_PLAN.md`. 2. Советоваться со старшим коллегой (Fable 5, постоянный контекст) — при выдаче промта, при ратификации, при лендинге и при ЛЮБОМ сомнении. 3. Каждый выдаваемый промт писан по ролевой ноте; сверяться с ролевым промтом всегда. 4. Сессия обязана **эхом вернуть промт** (блок 9 — своими словами, не пересказом). 5. Приёмка и лендинг — строго по нормам ролевого промта. 6. Сессия доводит свой пак до конца САМА и не беспокоит владельца до готовности; финальное исполнение контролирую я. 7. ⛔ **Большинство паков идёт бэкенд-сессиям — следить за КАЧЕСТВОМ КОДА: никаких лишних велосипедов, воркэраундов и хаков ВОКРУГ проблемы.** Нужно логически правильное работающее решение задачи, а не обход проблемы. Это отдельная ось приёмки, а не общее пожелание. 8. **Один промт на зону.** Одновременно живут бэкенд · платформа · полигон · фронт; двух промтов одной зоны быть не может. Слот освобождается закрытием пака АКТОМ, а не сдачей работы. 9. Пустые сессии владелец наспамил — роли назначаю сам, запускаю по одной и довожу до логического завершения. 10. ⛔ **АВТОНОМИЯ (слово 11.09, 03:00): владелец отошёл и вернётся, когда весь ближайший план ИСПОЛНЕН.** Вопросы решаю сам, совещаясь со старшим коллегой; владельца не жду. 11. **Мерило любого решения — в этом порядке:** (а) главные ценности продукта — КАЧЕСТВЕННЫЙ КОНСИСТЕНТНЫЙ ИИ-перевод длинных книг/ранобэ; (б) архитектура и чистый код; (в) рефакторинг только действительно необходимый; (г) ⛔ никакого велосипедостроения. Решение, выигрывающее у (б)–(г), но не служащее (а), — неверное решение. ## Перед выдачей промта — механическая сверка (перечтение автором рубежом НЕ считается) - [ ] 13 обязательных блоков — таблицей/грепом против §«Пишешь промт сессии?» (счёт равен нумерации). - [ ] Опровергатель-субагент к самому промту («найди отсутствующее и противоречащее»). - [ ] Блок 5 называет **2–4 уязвимых места ИМЕННО ЭТОГО пака** — «сделай самопроверку» дефектна. - [ ] Разметка свободы у каждого пункта: «ровно так» либо «реши сам и аргументируй». - [ ] «Инструмент задан» — только после (а) что канон зовёт штатным, (б) не построено ли уже. - [ ] Фантом-гард: каждая D-ссылка грепается до НОМЕРА ПУНКТА, не до тела ноты. - [ ] Построчная сверка чужих путей/каналов против зонной таблицы `CLAUDE.md`. - [ ] Полигон-пак — дополнительный абзац норм замеров (арм без фактора · дедуп+декой · критик полноты на каждую фазу · пре-рег фриз ДО платных вызовов · активная проверка живости прогона). - [ ] Кодовый пак — свой абзац (вакуумный пин · клейм = команда · дифф `^func Test` исполнением). - [ ] Пропорциональность: тяжесть аппарата соразмерна весу пака. ## Перед лендингом - [ ] Контроль завершённости ДО приёмки, механически (блок 13). - [ ] Приёмка адверсариальная; дерево на время прохода заморожено ИЛИ верификатору выдан ГОТОВЫЙ путь. - [ ] Скипы печатаются рядом с числом `ok`. - [ ] Деньги — из сырого леджера двумя независимыми путями. - [ ] `docs/scripts/counts.py --check` и `--lint` перед ратификационным коммитом. - [ ] `git diff -- <файл>` по каждому файлу класса «пишет зона, коммитит оркестратор». - [ ] Коммит pathspec-формой; финал `git status --short`. - [ ] Акт закрывает носители ТЕМ ЖЕ движением (ряды бэклога, реестр дефектов, таблица активных промтов). ## Раскладка слотов (живая) | Зона | Промт | Сессия | Состояние | |---|---|---|---| | бэкенд | `CHAPTER_STRUCTURE_DESIGN_SESSION_PROMPT.md` | **textmachine-50** | ✅ выдан · эхо · записка-план · работает | | платформа | `PLATFORM_TRUTH_AT_THE_DOOR_SESSION_PROMPT.md` | **textmachine-8e** | ✅ выдан · эхо · записка-план · минор 0.14.0 ратифицирован по её пингу | | полигон | `POLYGON_COLD_RUN_A_SESSION_PROMPT.md` (ред. 2) | **textmachine-23** | ✅ выдан · жду эхо; два прежних промта зоны припаркованы | | фронт | заморожен | — | разморозка по критерию `NEAR_TERM_PLAN.md` | ## Журнал выдач очереди №23 | # | зона | предмет | сессия | эхо | исход | |---|---|---|---|---|---| | 1 | бэкенд | структура глав, ДИЗАЙН | textmachine-50 | ✅ своими словами, с возражением | идёт | | 2 | платформа | правда у двери | textmachine-8e | ✅ своими словами, с контрактным пингом | идёт | | 3 | полигон | холодный прогон A (платный) | textmachine-23 | ждём | выдан | ## Что я должен помнить, пока паки идут - **Ключи прогона A:** путь выдан (`backend/.env`), файл НЕ читать; живость ключей проверяется ПЕРВЫМ платным вызовом. Отказ по авторизации — стоп сессии и мой поход к владельцу. - **Пре-рег-таблица прогона A приходит мне ДО фриза** — читаю её прежде, чем потратится первый цент. - **Релей:** улика прогона A про многоединичную главу идёт движковой сессии ОТ МЕНЯ отдельным сообщением с её эхо-подтверждением, не напрямую. - **Кросс-зонная цена перекроя** (`unit_resolutions` платформы, экспортные id термов) придёт от движковой сессии пунктом отчёта — отнести её платформе должен я. ## К приёмке прогона A — проверить лично - **Фриз-коммит и девиация разошлись, и это ЗАКОННО, но должно быть названо.** Бинари собраны из клона на `b0f5d89`; драйвер `eval/door_to_file/drive.sh` правлен ПОСЛЕ фриза отдельным коммитом `44b33d9` («адрес локального провайдера значит противоположное в двух фазах: обязателен в дыме, запрещён при деньгах на проводе»). Норма пака: девиация — НОВЫМ коммитом и ЯВНО в отчёте. ⇒ **при приёмке сверить, что отчёт её называет**, и что расхождение «бинари `b0f5d89` / драйвер `44b33d9`» объявлено, а не замолчано. ## Чему меня научили опровергатели 11.09 (не повторять) 1. **Санкция владельца, известная «со слов», носителем НЕ является.** Оба пака ссылались на разрешение платного прогона как на факт, а в дереве его не было ни строкой. Завёл носитель — `NEAR_TERM_PLAN.md` §«Решения владельца». 2. **Пак не заглянул в СВОЮ зону записи.** Дизайн-пак заказывал то, что уже лежит в `backend/docs/` дизайном-оф-рекорд и рабочим прибором. Теперь у каждого пака первым делом — «что уже лежит у тебя». 3. **Трудность, которой нет.** Я написал платформенной сессии, что валидация каталога обязана отличать первый прогон, — каталог создаётся на интейке ДО строки в БД, и различать нечего. Пин на недостижимую ветвь толкает сессию строить exemption, чтобы было что пинить. 4. **«Одно определение на две площадки» бывает недостижимо по построению** — опросный путь замка не берёт, и контракт эту асимметрию ратифицировал. Мерило — число ОПРЕДЕЛЕНИЙ, а не площадок. 5. ⛔ **МОЙ КОММИТ УНЁС ЧУЖУЮ СЕКЦИЮ — `54f8f6c`, 11.09.** Я правил ОДНУ строку головы в `docs/PROGRESS.md` и взял файл pathspec-формой целиком, не сделав `git diff -- docs/PROGRESS.md`; в тот же момент движковая сессия положила туда свою записку-план, и 32 вставки из 33 оказались её. История НЕ переписана (переписывание стёрло бы незакоммиченные правки параллельных сессий), содержимое цело, атрибуция восстановлена сообщением зоне. ⚠ Норма стояла в моём ролевом промте и не сработала, потому что я читал её как «про чужое в ИНДЕКСЕ». Ловится дёшево и постфактум: **объём коммита против объёма своей правки** — одна строка против тридцати трёх. 6. ⛔ **«ЭТИ ДВА МЕХАНИЗМА НЕСОВМЕСТИМЫ» — УТВЕРЖДЕНИЕ О КОДЕ, И ЕГО НАДО СПРАШИВАТЬ У КОДА.** Я написал в платный пак, что портированная заглушка и провайдер `local` несовместимы («разные адаптеры»), и запретил бы сессии единственный штатный $0-стенд. Поймала зона: заглушка лежит В РЕПО с комментарием «the P9 live-probe's $0 stand-in, ported», а рядом `zeroCostPipeline` выбирает модель по `Kind == "local"`. ⚠ Класс ошибки тот же, что «заказал уже построенное», только вывернутый: я объявил НЕВОЗМОЖНЫМ то, что построено и запинено. ⇒ прежде чем писать «несовместимо/невозможно/нечем», грепни предмет — отрицательное утверждение о дереве стоит команды ровно так же, как положительное. 7. ⛔ **Я ПОСТАВИЛ ПИН, УТВЕРЖДАЮЩИЙ МОЛЧАНИЕ, НА САМЫЙ ДОРОГОЙ ГЕЙТ ПЛАТНОГО ПАКА.** «Драйвер отказывает при `vcs.modified=true`» на бинаре из линкованного воркри выполняется всегда: строк `vcs.*` там НЕТ вовсе. Поймала зона на первом же замере, я пере-проверил чтением готовых бинарей. Норма ушла в ролевой промт (фриз-дерево — КЛОН, третье условие отказа — отсутствие штампа). ⚠ Класс знал я сам: он записан в `CLAUDE.md` отдельной строкой про вакуумные пины — и всё равно воспроизвёл его там, где он стоит денег. 8. **Атрибуция нормы к ноте проверяется телом ноты.** Ссылка на `D39.108` п.1 в моём ролевом промте фантомна: норма верна, нота о другом. Эррата внесена. ## Долг, замеченный попутно (не терять) - **Якоря розданы не все.** Платформе — 3 (её пак §4.5), движку — 3 (`backend/docs/DISCLOSURE_LAW_DESIGN.md`, дизайн-пак §4.9). **Полигонные 5 (`docs/experiments/`) НЕ вошли в пак прогона A сознательно:** он платный и идёт по жёсткому порядку фаз, а док-гигиена потребовала бы релея посреди прогона. Отдать их с пере-выдачей «РЕМОНТА ПРИБОРА». Фронтовые 3 — зона заморожена, отдать первым касанием при разморозке. - **Числа следующего бэкенд-пака пере-сняты МНОЮ, а не взяты из отчёта воркфлоу** (11.09): `Spread` и в `mining.go:383`, и в `bankexport.go:135` описан дословно как «how many DISTINCT renderings the DRAFTS produced» — счёта по ОТГРУЖЕННОМУ тексту нет (контроль: 144 файла в `internal/pipeline`); порог короткого ключа `minKeyLenHan = 2` с пер-записным `allow_short`; точность глоссарного класса `k6 = 0.0667` в `books/gu-zhenren/labels/metrics.json` (контроль: у соседних классов 1.0, 0.8333, 0.1667, 0.0 — прибор спрошен у существующего предмета и различает). - **11 уехавших якорей в ЧУЖИХ зонах** (`counts.py --lint`, 11.09): полигон 5 (`docs/experiments/`) · бэкенд 3 (`backend/docs/DISCLOSURE_LAW_DESIGN.md`) · фронт 3 · платформа 3 — платформенные уже врезаны в её пак §4.5. Свои пять я починил (`f9216cd`). Остальные раздать ПАКАМИ их зон, не чинить самому. - **Воркфлоу про банк памяти (`wm0j2l4kz`) умер, отдав пустой файл** — вопрос владельца «что банку памяти нужно для качества перевода» носителя не получил; пере-задать при паке «выдача, которую видит читатель».