From 9b58fac36e3e3c713f7af8cae0b4e473c0ce2a4d Mon Sep 17 00:00:00 2001 From: heaven Date: Fri, 11 Sep 2026 02:52:17 +0300 Subject: [PATCH] Correct the entry hole with a measurement: two of its three parts are built or ratified, and put the shift's working checklist beside the plan --- docs/NEAR_TERM_PLAN.md | 19 ++++++-- docs/README.md | 1 + docs/orchestrator-norms-scratchpad.md | 70 +++++++++++++++++++++++++++ 3 files changed, 87 insertions(+), 3 deletions(-) create mode 100644 docs/orchestrator-norms-scratchpad.md diff --git a/docs/NEAR_TERM_PLAN.md b/docs/NEAR_TERM_PLAN.md index be01cba9..7f4aec40 100644 --- a/docs/NEAR_TERM_PLAN.md +++ b/docs/NEAR_TERM_PLAN.md @@ -14,8 +14,19 @@ По этому критерию путь ОДНОГО гостя zh→ru полон до последнего шага, а неполнота сидит в **трёх местах**: -1. **ВХОД.** Пригласительного гейта нет — учётку получает кто угодно, прошедший провайдера; грант новичку 0; - лимита размера загрузки нет. Платформа, дни. +1. **ВХОД — ⛔ ФОРМУЛИРОВКА ИСПРАВЛЕНА 11.09 ЗАМЕРОМ, ДВЕ ТРЕТИ ЕЁ БЫЛИ МОЕЙ ОШИБКОЙ.** Пере-снято: + **(а)** пригласительного гейта и allow-list действительно НЕТ — учётку получает кто угодно, прошедший + провайдера (греп `invite|allowlist|AllowedDomains` по `platform/internal` и `cmd`: живых механизмов 0 + при контрольных 204 Go-файлах); **(б)** грант новичку 0 — это НЕ дыра, а **ратифицированное решение + владельца** (`D39.176` п.1: «никаких квот, живём на покупке API; бонусы зачисляются из админки»), и он же + работает экономическим гейтом закрытой беты: аккаунт заводится, но без ручного пополнения не может + ничего; **(в)** «лимита размера загрузки нет» — **НЕВЕРНО**: байтовый потолок стоит на маршруте интейка, + `platform/internal/httpapi/server.go:98`=`UploadLimits{MaxBytes: 64 << 20, Deadline: 10 * time.Minute}`, + механизм — `http.MaxBytesReader` (`middleware.go:22`). + ⇒ **Живой остаток — операционная гигиена, и `D39.176` п.1 прямо называет её инженерной, без слова + владельца:** число аплоадов ничем не ограничено · у статуса `rejected` нет выхода · каталоги-сироты никто + не подметает. Плюс три ряда регистра (`PD-162` · `PD-455` · `PD-448`). Платформа, дни. + ⛔ **Продуктовых квот и фри-тир-лимитов НЕ ПРОЕКТИРОВАТЬ** — `D39.176` п.1 закрыл вопрос целиком. 2. ⛔ **СОДЕРЖИМОЕ УЗЛА ПОДПИСИ БАНКА** — человеческий узел потока показывает ПУСТОТУ: у секции предложений читателя нет (`json:"proposed` — 0 хитов при 356 json-тегах), живой экран 04.09 отдал `total 0, signed 0`. 3. **ВТОРАЯ ПАРА** — японская книга получает китайскую транскрипцию. «Требуется проекту», не показу zh→ru. @@ -32,7 +43,7 @@ |---|---|---|---|---| | 1 | **полигон** | **прогон A**: короткая настоящая книга до ФАЙЛА, платный провайдер | **≈$0.25–0.40** | словом владельца о платном прогоне | | 2 | **бэкенд** | структура глав, ДИЗАЙН — ок владельца получен | $0 | слот занят до закрытия движковой сессии; 5 врезок в пак | -| 3 | **платформа** | вход (гейт · грант · лимит) + `PD-162` · `PD-455` · `PD-448` | дни | ничем | +| 3 | **платформа** | операционная гигиена входа (аплоады · выход из `rejected` · сироты) + `PD-162` · `PD-455` · `PD-448` | дни | ничем (⚠ предмет пере-определён 11.09 замером — см. дыру 1) | | 4 | **бэкенд** | «ВЫДАЧА, КОТОРУЮ ВИДИТ ЧИТАТЕЛЬ»: ряды **284** · **201** · **283** · **307** · **291** | пак | после глав | | 5 | **фронт** | поверхность показа | пак | разморозка + пункты 1–3 | @@ -83,3 +94,5 @@ пост-проверкой, которая ФЛАГУЕТ и ОТГРУЖАЕТ. Это «нет ОТКАЗА», а не «нет носителя». 4. «Прогон A — зона платформы» — **нет, полигона**: он не пишет кода зон, это эксперимент с пре-регистрацией. Слот платформы поэтому свободен. +5. **«Вход» как дыра из трёх частей** — две части оказались не дырами (грант ратифицирован, байтовый + потолок построен), и я объявил их отсутствующими, не спросив дерево. Замер и правка — в самой дыре 1. diff --git a/docs/README.md b/docs/README.md index 05574089..5f2b7e46 100644 --- a/docs/README.md +++ b/docs/README.md @@ -18,6 +18,7 @@ - [PROGRESS.md](PROGRESS.md) — журнал: CURRENT-STATE + состояние паков + живой хвост хроники и зонные секции «Бэкенд»/«Полигон». НЕ источник решений. - [BACKLOG.md](BACKLOG.md) — **ЕДИНЫЙ БЭКЛОГ проекта** (единственный трекер; «строка N» — стабильный ID). Вынесен из `PROGRESS.md` 06.09 (D39.218; исключение из дословности названо в шапке того файла); зонные бэклоги — свои и с другими ID (`П-N`, `Ф-N`, `PD-N`). - **Тулчейн на чистой машине.** Версии не здесь — их носители: `backend/Makefile` и `platform/Makefile` (`GO_MIN_VERSION`, `GOLANGCI_VERSION`), `frontend/package.json` (`engines`), `platform/docs/STACK_DECISIONS.md` §«Postgres на стенде без root», `eval/requirements.txt` + `eval/.python-version`. Здесь только то, чего нет нигде: ставим в `~/.local/opt/<инструмент>` с симлинком в `~/.local/bin` (он уже в `PATH`), берём **последний патч пинованного минора, а не следующий минор** — линтер пинован точным равенством и разъедется. Root требуют ровно два пакета: `build-essential` (без C-компилятора нет `-race`, а снять `-race` значит выдать отсутствие тулчейна за зелёный прогон — см. комментарий над целью `test` в `backend/Makefile`) и `python3-venv` (в системном питоне нет `ensurepip`, и установка полигона по `eval/README.md` обрывается на первом шаге). +- [orchestrator-norms-scratchpad.md](orchestrator-norms-scratchpad.md) — **рабочий чек-лист смены №23**: стоячие правила владельца на луп, механическая сверка перед выдачей промта и перед лендингом, живая раскладка слотов зон и журнал выдач. ⚠ Копий норм не несёт — они в `ORCHESTRATOR_SESSION_PROMPT.md`; умирает вместе с очередью. - [NEAR_TERM_PLAN.md](NEAR_TERM_PLAN.md) — **горизонт на 3–5 ближайших промтов**: порядок, зоны и чем каждый заперт. Рабочая записка оркестратора, живёт до исполнения. ⚠ Не трекер и не реестр: долг — в `BACKLOG.md`, решения — нотами. - `scripts/counts.py` — **производные числа доков считаются им, а не руками** (голова по трём носителям · счёт очереди и зон · вес открытых строк регистра платформы · полнота реестра нот); `--check` даёт ненулевой код на расхождении; `--lint` — линтер file:line-якорей живых доков (D39.126). Его же зовёт зонный хук `scripts/githooks/pre-commit`: **`--lint` якорей — при ЛЮБОМ коммите с непустым индексом, включая коммиты чистого КОДА (гейт по составу снят 21.08: цели якорей живут в коде, и двигает их кодовый коммит; шумовое следствие — строка бэклога 244); `--check` чисел и головы — только при коммите с D-логом или PROGRESS** (оба `--from-index`, предупреждает, не блокирует). ⚠ **Гейт бутстрапится ЧУЖОЙ зоной — это ДЕФЕКТ, а не порядок работы (строка бэклога 220):** судит он `CLAUDE.md` и доки трёх зон, а в `.git/hooks/` его кладёт единственный установщик `frontend/scripts/githooks/install.mjs`, то есть побочный эффект `npm install` в зоне, которая ЗАМОРОЖЕНА. На свежем клоне `.git/hooks/` пуст и гейт молчит, не проверив ничего. Пока строка открыта, бутстрап делается руками (`node frontend/scripts/githooks/install.mjs`) — и это ВРЕМЕННАЯ мера, которую строка 220 закрывает, а не способ жить дальше. ⚠ Шапка систематически отстаёт от хвоста у ЛЮБОГО автора — потому проверка механическая, а не «посмотрю внимательно». - **Активные хендофф-промты — какой файл ТВОЙ** (состав обновляется при каждом лендинге, D39.80; хроника, причины и статусы РАБОТ — CURRENT-STATE и D-лог): diff --git a/docs/orchestrator-norms-scratchpad.md b/docs/orchestrator-norms-scratchpad.md new file mode 100644 index 00000000..bc5ca02d --- /dev/null +++ b/docs/orchestrator-norms-scratchpad.md @@ -0,0 +1,70 @@ +# Скратчпад оркестратора №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`. +- [ ] Акт закрывает носители ТЕМ ЖЕ движением (ряды бэклога, реестр дефектов, таблица активных промтов). + +## Раскладка слотов (живая) + +| Зона | Промт | Сессия | Состояние | +|---|---|---|---| +| полигон | — | — | свободен | +| бэкенд | — | — | свободен | +| платформа | — | — | свободен | +| фронт | заморожен | — | разморозка по критерию `NEAR_TERM_PLAN.md` | + +## Журнал выдач очереди №23 + +| # | зона | предмет | сессия | эхо | исход | +|---|---|---|---|---|---| +| — | — | — | — | — | — |