Write down the next few prompts as an ordered horizon, and the rule that two prompts never target one zone at once.

This commit is contained in:
heaven 2026-09-11 01:51:56 +03:00
parent 082779b01a
commit 130b1a2e2f
3 changed files with 60 additions and 0 deletions

View file

@ -34,6 +34,8 @@ Go-бэкенд издательского художественного пер
Координация — журнал `docs/PROGRESS.md` (секции «Бэкенд»/«Полигон»; сверху CURRENT-STATE). Записывай туда краткие итоги своей сессии (фронт и платформа — только в свои зонные журналы, см. таблицу выше). ⚠ Это ЕДИНСТВЕННОЕ исключение из «`docs/` — зона оркестратора»: бэкенд и полигон пишут в СВОИ секции этого журнала (полигон — ещё и в `docs/experiments/`), всё прочее в `docs/` правит только оркестратор. Закрытые хроники вынесены в слайсы `docs/archive/PROGRESS-*.md`НЕ читать при онбординге, только по конкретной ссылке. Параллельные сессии — норма: чужие незакоммиченные файлы в дереве не трогать; сессия считается ЖИВОЙ, пока владелец не сказал обратное. Координация — журнал `docs/PROGRESS.md` (секции «Бэкенд»/«Полигон»; сверху CURRENT-STATE). Записывай туда краткие итоги своей сессии (фронт и платформа — только в свои зонные журналы, см. таблицу выше). ⚠ Это ЕДИНСТВЕННОЕ исключение из «`docs/` — зона оркестратора»: бэкенд и полигон пишут в СВОИ секции этого журнала (полигон — ещё и в `docs/experiments/`), всё прочее в `docs/` правит только оркестратор. Закрытые хроники вынесены в слайсы `docs/archive/PROGRESS-*.md`НЕ читать при онбординге, только по конкретной ссылке. Параллельные сессии — норма: чужие незакоммиченные файлы в дереве не трогать; сессия считается ЖИВОЙ, пока владелец не сказал обратное.
**ОДИН ПРОМТ НА ЗОНУ (слово владельца 11.09).** Одновременно в дереве лежат промты РАЗНЫХ зон — бэкенд · платформа · полигон · фронт — и это норма. **Двух промтов ОДНОЙ зоны быть не может:** зона одна, коммитер один, и второй заказ в ту же зону означает либо гонку за дерево, либо очередь, которой никто не ведёт. Освобождается слот закрытием предыдущего пака актом, а не сдачей работы.
**НОВЫЙ ПАК — НОВОЙ СЕССИИ.** Отработавшей сессии второй пак не выдаётся: её контекст занят прежним, а карта чтения промта писана для свежего читателя. Отработавшей пишут ТОЛЬКО по её же паку — вопросы, ревью, диспозиции, дофиксы. **НОВЫЙ ПАК — НОВОЙ СЕССИИ.** Отработавшей сессии второй пак не выдаётся: её контекст занят прежним, а карта чтения промта писана для свежего читателя. Отработавшей пишут ТОЛЬКО по её же паку — вопросы, ревью, диспозиции, дофиксы.
**Связь между сессиями — файл `/tmp/textmachine-channel`.** Впиши туда СВОЙ блок первым делом **Связь между сессиями — файл `/tmp/textmachine-channel`.** Впиши туда СВОЙ блок первым делом

57
docs/NEAR_TERM_PLAN.md Normal file
View file

@ -0,0 +1,57 @@
# Ближайший горизонт — 35 промтов
> Рабочая записка оркестратора №23. **Только порядок и зоны**, не заказы: готовые промты пишутся отдельно
> и по одному на зону. Живёт до исполнения, потом в архив. Долг живёт строками `BACKLOG.md`, решения — нотами.
>
> ⚠ **Правило раскладки (слово владельца 11.09):** одновременно в дереве лежат промты РАЗНЫХ зон —
> бэкенд · платформа · полигон · фронт. **Двух промтов одной зоны быть не может.**
## Что решает владелец, а не код
- **Определения показа в проекте НЕТ** — в реестре требований «демо · показ · гость» 1 хит на 93 строки
(контроль: «перевод» — 16). Нужны: аудитория и вход · какая книга · один гость или несколько · бюджет
времени показа. Без этого список блокеров не имеет знаменателя, а часть решается словом (общий брокер
рейт-лимитов — блокер только при нескольких гостях).
- **Разморозка фронта** — не раньше, чем пере-проверена полнота базового функционала обеих зон
(сомнение владельца 11.09, см. горизонт).
## Горизонт
| № | зона | предмет | цена | чем заперт |
|---|---|---|---|---|
| 1 | **бэкенд** | структура глав, ДИЗАЙН — ок владельца получен | $0 | слот занят до закрытия текущей движковой сессии; нужны 5 врезок в пак |
| 2 | **платформа** | прогон A: `curl`**файл**, короткая настоящая книга 23 главы | $0 | четыре однострочных предусловия (ниже) |
| 3 | **полигон** | ремонт прибора — промт уже лежит, не стартован | $0 | ничем |
| 4 | **бэкенд/платформа** | дешёвые ряды пути + что назовёт прогон A | день | после A |
| 5 | **фронт** | поверхность показа | пак | разморозка + проверка полноты |
## Почему прогон A первым и почему НЕ «по рецепту P9»
Пока он не пройден, остальное — планирование по чтению. ⛔ Но пробой 27.08 шёл **через `curl` на локальной
заглушке и оборвался на правке банка** — то есть мимо фронта целиком и до последней трети. Заказ: продлить
до конца (редакторская волна → выгрузка → **файл открыт человеком**). Короткая книга намеренно: локальная
модель 63278 с на чанк.
**Ловит:** заказ прогона · файл · развёртывание · неизвестное последней трети.
**Не ловит, назвать в промте:** качество (заглушка), настоящий провайдер, транспортные «затупы».
**Предусловия, все однострочники:** $0-пайплайна в репозитории нет (ни один из 4 `pipeline-*.yaml` не
называет локальную пару) · образца шаблона книги платформы нет · словарь контраста 0 файлов в git при
требовании в 3 конфигах из 5 · грант новичку 0 · Postgres на машине не поднят.
**Вычеркнуто из условий:** «второй контур наблюдения» прогон НЕ гейтит — лог запросов и `status --json`
уже есть. ⭐ Дёшево и сразу: собрать бинари `go build -cover` и дать `GOCOVERDIR` — покрытие ответит на
«каждый ли узел выполнился» (в обоих Makefile `-cover` 0 при `-race` 6).
## Вычеркнуто из плана показа
Лендинг (строка **384**) — отдельная поверхность. Брокер конкурентности — решается определением.
Корректность остановки — после A, объёмом по его уликам. Ряды остановки (**372**, **391**) — не показ.
## Мои ошибки, снятые разбором — чтобы не повторить
1. «По рецепту P9» — рецепт идёт мимо фронта и обрывается до последней трети.
2. «Второй контур наблюдения» как условие — гейтил бы прогон стройкой ненужного ему.
3. «Приоритет №1 не исполняется кодом вовсе» — **неверно**: консистентность держится инъекцией банка и
пост-проверкой, которая ФЛАГУЕТ и ОТГРУЖАЕТ. Это «нет ОТКАЗА», а не «нет носителя», и для читателя
«текст с пометкой» — правильное поведение.

View file

@ -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` обрывается на первом шаге).
- [NEAR_TERM_PLAN.md](NEAR_TERM_PLAN.md) — **горизонт на 35 ближайших промтов**: порядок, зоны и чем каждый заперт. Рабочая записка оркестратора, живёт до исполнения. ⚠ Не трекер и не реестр: долг — в `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-лог):
| Роль | Активный промт | Статус | | Роль | Активный промт | Статус |