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
This commit is contained in:
parent
a43da1a561
commit
9b58fac36e
3 changed files with 87 additions and 3 deletions
|
|
@ -14,8 +14,19 @@
|
||||||
|
|
||||||
По этому критерию путь ОДНОГО гостя zh→ru полон до последнего шага, а неполнота сидит в **трёх местах**:
|
По этому критерию путь ОДНОГО гостя 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. ⛔ **СОДЕРЖИМОЕ УЗЛА ПОДПИСИ БАНКА** — человеческий узел потока показывает ПУСТОТУ: у секции предложений
|
2. ⛔ **СОДЕРЖИМОЕ УЗЛА ПОДПИСИ БАНКА** — человеческий узел потока показывает ПУСТОТУ: у секции предложений
|
||||||
читателя нет (`json:"proposed` — 0 хитов при 356 json-тегах), живой экран 04.09 отдал `total 0, signed 0`.
|
читателя нет (`json:"proposed` — 0 хитов при 356 json-тегах), живой экран 04.09 отдал `total 0, signed 0`.
|
||||||
3. **ВТОРАЯ ПАРА** — японская книга получает китайскую транскрипцию. «Требуется проекту», не показу zh→ru.
|
3. **ВТОРАЯ ПАРА** — японская книга получает китайскую транскрипцию. «Требуется проекту», не показу zh→ru.
|
||||||
|
|
@ -32,7 +43,7 @@
|
||||||
|---|---|---|---|---|
|
|---|---|---|---|---|
|
||||||
| 1 | **полигон** | **прогон A**: короткая настоящая книга до ФАЙЛА, платный провайдер | **≈$0.25–0.40** | словом владельца о платном прогоне |
|
| 1 | **полигон** | **прогон A**: короткая настоящая книга до ФАЙЛА, платный провайдер | **≈$0.25–0.40** | словом владельца о платном прогоне |
|
||||||
| 2 | **бэкенд** | структура глав, ДИЗАЙН — ок владельца получен | $0 | слот занят до закрытия движковой сессии; 5 врезок в пак |
|
| 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** | пак | после глав |
|
| 4 | **бэкенд** | «ВЫДАЧА, КОТОРУЮ ВИДИТ ЧИТАТЕЛЬ»: ряды **284** · **201** · **283** · **307** · **291** | пак | после глав |
|
||||||
| 5 | **фронт** | поверхность показа | пак | разморозка + пункты 1–3 |
|
| 5 | **фронт** | поверхность показа | пак | разморозка + пункты 1–3 |
|
||||||
|
|
||||||
|
|
@ -83,3 +94,5 @@
|
||||||
пост-проверкой, которая ФЛАГУЕТ и ОТГРУЖАЕТ. Это «нет ОТКАЗА», а не «нет носителя».
|
пост-проверкой, которая ФЛАГУЕТ и ОТГРУЖАЕТ. Это «нет ОТКАЗА», а не «нет носителя».
|
||||||
4. «Прогон A — зона платформы» — **нет, полигона**: он не пишет кода зон, это эксперимент с пре-регистрацией.
|
4. «Прогон A — зона платформы» — **нет, полигона**: он не пишет кода зон, это эксперимент с пре-регистрацией.
|
||||||
Слот платформы поэтому свободен.
|
Слот платформы поэтому свободен.
|
||||||
|
5. **«Вход» как дыра из трёх частей** — две части оказались не дырами (грант ратифицирован, байтовый
|
||||||
|
потолок построен), и я объявил их отсутствующими, не спросив дерево. Замер и правка — в самой дыре 1.
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@
|
||||||
- [PROGRESS.md](PROGRESS.md) — журнал: CURRENT-STATE + состояние паков + живой хвост хроники и зонные секции «Бэкенд»/«Полигон». НЕ источник решений.
|
- [PROGRESS.md](PROGRESS.md) — журнал: CURRENT-STATE + состояние паков + живой хвост хроники и зонные секции «Бэкенд»/«Полигон». НЕ источник решений.
|
||||||
- [BACKLOG.md](BACKLOG.md) — **ЕДИНЫЙ БЭКЛОГ проекта** (единственный трекер; «строка N» — стабильный ID). Вынесен из `PROGRESS.md` 06.09 (D39.218; исключение из дословности названо в шапке того файла); зонные бэклоги — свои и с другими ID (`П-N`, `Ф-N`, `PD-N`).
|
- [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` обрывается на первом шаге).
|
- **Тулчейн на чистой машине.** Версии не здесь — их носители: `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`, решения — нотами.
|
- [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 закрывает, а не способ жить дальше. ⚠ Шапка систематически отстаёт от хвоста у ЛЮБОГО автора — потому проверка механическая, а не «посмотрю внимательно».
|
- `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-лог):
|
- **Активные хендофф-промты — какой файл ТВОЙ** (состав обновляется при каждом лендинге, D39.80; хроника, причины и статусы РАБОТ — CURRENT-STATE и D-лог):
|
||||||
|
|
|
||||||
70
docs/orchestrator-norms-scratchpad.md
Normal file
70
docs/orchestrator-norms-scratchpad.md
Normal file
|
|
@ -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
|
||||||
|
|
||||||
|
| # | зона | предмет | сессия | эхо | исход |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| — | — | — | — | — | — |
|
||||||
Loading…
Add table
Reference in a new issue