179 lines
23 KiB
Markdown
179 lines
23 KiB
Markdown
# Скратчпад оркестратора №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`.
|
||
- [ ] Акт закрывает носители ТЕМ ЖЕ движением (ряды бэклога, реестр дефектов, таблица активных промтов).
|
||
|
||
## Раскладка слотов (живая)
|
||
|
||
| Зона | Промт | Сессия | Состояние |
|
||
|---|---|---|---|
|
||
| бэкенд | `BACKEND_CONSISTENCY_YOU_CAN_SHOW_SESSION_PROMPT.md` | **textmachine-c9** | ⏳ приёмка, круг 2: шесть посадок выжили → дофикс сдан, жду финальную батарею. ⛔ F6 мною ОТМЕНЁН после пере-замера |
|
||
| платформа | `PLATFORM_ANSWER_THAT_DOES_NOT_DEPEND_ON_LUCK_SESSION_PROMPT.md` | **textmachine-37** | ✅ выдан 11.09 · эхо своими словами с тремя опасностями и верным возражением · два релея внесены |
|
||
| полигон | — | — | ⛔ **ЗАКАЗ СНЯТ ВЛАДЕЛЬЦЕМ 11.09** («полигон не надо выдавать»); промт готов и лежит, пере-выдача — только его словом |
|
||
| фронт | заморожен | — | разморозка по критерию `NEAR_TERM_PLAN.md` |
|
||
|
||
**РЕЗЕРВ: `textmachine-61`** — свежая сессия, попрошена НИЧЕГО не читать и не начинать, чтобы остаться свежей;
|
||
ждёт освобождения бэкенд-слота под пак «за одну единицу платим дважды». ⚠ Не давать ей ничего другого.
|
||
|
||
⛔ **ПРИЁМОЧНЫЕ ЗАМЕРЫ ПЕРЕШЛИ КО МНЕ — не по вежливости, а по замеру.** Бэкенд-сессию убило ЧЕТЫРЕ раза
|
||
подряд на пере-снятии десяти записей (0 из 10 дважды, падало на первой). Причина найдена мною: это НЕ
|
||
сторож и НЕ нехватка памяти — `dmesg` даёт **26** убийств, все `constraint=CONSTRAINT_MEMCG`, каждое в
|
||
своём транзиентном юните `tm.slice/tm-runs.slice/tm-test-*`; сами слайсы `memory.max = max`. А мои
|
||
прогоны идут в `/init.scope` с `memory.max = max`. ⇒ у неё потолок есть, у меня нет.
|
||
**Я гоню: десять пере-снятий (её имена, её команда дословно, мои копия и сборка) + по-пакетный
|
||
`battery-stand`.** Копия — `~/tm-11-accept/backend`, построена по норме (`test -f go.mod` до и после,
|
||
`pwd` сверен), `tmmutate` собран ОДИН раз, мутатор по копии ходит ОДИН.
|
||
⚠ В акте будет сказано, ЧЬИМ прибором снята каждая половина: полный гейт 169/169 · RED=167 · выживших 1 ·
|
||
UNKNOWN 1 — её, дошёл один раз до правок; десять пере-снятий и стенд — мои.
|
||
|
||
⛔ **ДОЛГ ЛЕНДИНГА: голова `D39.248` бампнута в ДВУХ носителях из трёх.** `05-decisions-log.md` и
|
||
`05-decisions-index.md` заландены; **`docs/PROGRESS.md` — НЕТ**: там лежит чужая незакоммиченная правка
|
||
на 337 строк (секция бэкенд-сессии), и коммитить файл целиком значило бы унести её под своим сообщением.
|
||
⇒ бамп CURRENT-STATE едет ВМЕСТЕ с лендингом бэкенд-пака, где её секция и должна приехать. До тех пор
|
||
`counts.py --check` на HEAD краснеет по голове — это ЗНАЕМОЕ расхождение, а не находка.
|
||
|
||
**В очереди, написано и ждёт слота:** `BACKEND_FAILURE_YOU_CAN_SEE_SESSION_PROMPT.md`, **редакция 2** —
|
||
выдаётся СВЕЖЕЙ бэкенд-сессии, как c9 закроется актом. ⛔ **Опровергатель нашёл 17 находок, и первая
|
||
перевернула пак:** я построил §1 на «движок лечит болезнь возбудителем», а замер говорит обратное —
|
||
перевыпуск вернул текст 4 из 4, и в трёх случаях успешный ответ физически не влез бы в базовый потолок.
|
||
Моя таблица лекарств отключила бы восстановление трёх чанков из четырёх и отменила бы `D2` п.2 с пином
|
||
`TestRetryableSubset`. Пере-снял сам — потолок 8496 делит популяцию успешных черновиков БЕЗ ИСКЛЮЧЕНИЙ
|
||
(≤8496 прошли сразу ×3, >8496 упали и прошли на удвоенном ×3), а у редактора наоборот. ⇒ причин две,
|
||
лекарство одно — вот это и есть пак. Ещё опровергатель снял: три моих контрольных числа не сходились
|
||
(`glob` не дошёл до ~170 баз), `D24.3` и `D39.87` мис-атрибутированы, `temperature` у pro 0.4 а не 0.3,
|
||
мест вызова два а не три, «пуста ровно `err`» — пусты пять колонок. Все исправлены.
|
||
|
||
## Журнал выдач очереди №23
|
||
|
||
| # | зона | предмет | сессия | эхо | исход |
|
||
|---|---|---|---|---|---|
|
||
| 1 | бэкенд | структура глав, ДИЗАЙН | textmachine-50 | ✅ своими словами, с возражением | ✅ закрыт актом `D39.245` (без сходимости) |
|
||
| 2 | платформа | правда у двери | textmachine-8e | ✅ своими словами, с контрактным пингом | ✅ закрыт актом `D39.246` (с дофиксом) |
|
||
| 3 | полигон | холодный прогон A (платный) | textmachine-23 | ✅ | ✅ закрыт актом `D39.247`; строка 16 закрыта замером |
|
||
| 4 | — | ревью МОИХ записей (не пак зоны) | textmachine-9a | — | ✅ отчёт сдан; часть находок заландена 11.09 |
|
||
| 5 | бэкенд | консистентность, которую можно предъявить | textmachine-c9 | ✅ | ⏳ дофикс после шести выживших посадок |
|
||
| 6 | ~~полигон~~ | ремонт прибора | — | — | ⛔ **СНЯТ: зона вне скоупа словом владельца**, промт в архиве |
|
||
| 7 | платформа | ответ, не зависящий от везения (`PD-448` · `162` · `466` · `139`) | textmachine-37 | ✅ своими словами, 3 опасности + возражение | идёт |
|
||
|
||
⛔ **ПОЛИГОН СНЯТ ВЛАДЕЛЬЦЕМ 11.09.** Я предлагал пак трижды — `ed`, `5c` (обе отработавшие, отказались ПО НОРМЕ и были правы) и свежей `37`, — после чего владелец сказал «полигон не надо выдавать». Выдача `37` ОТОЗВАНА тем же часом. ⚠ Урок не про полигон: **я трижды искал адресата для заказа, приоритет которого не подтверждал у владельца.** Слот зоны свободен ≠ работу зоны надо заказывать.
|
||
|
||
## Что я должен помнить, пока паки идут
|
||
|
||
- **Ключи прогона 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`) умер, отдав пустой файл** — вопрос владельца «что банку памяти
|
||
нужно для качества перевода» носителя не получил; пере-задать при паке «выдача, которую видит читатель».
|