Give the stalled residual a row with the shutdown date it was hiding, and rewrite two prompts to the twelve blocks the role requires

This commit is contained in:
heaven 2026-09-06 16:25:06 +03:00
parent 878cac58d5
commit e69902ab70
3 changed files with 235 additions and 156 deletions

View file

@ -1,108 +1,150 @@
# Промт: бэкенд-сессия «КОНСИСТЕНТНОСТЬ КАК ЗАКОН» — приоритет владельца №1
# Промт: бэкенд-сессия «ЗАКОН БАНКА — ЧЕСТНО» (пак одного предмета)
Ты — бэкенд-сессия TextMachine. **Зона записи: `backend/`**. **Сессия НЕ коммитит** — готовое дерево
передаёшь оркестратору на лендинг. Чужие зоны (`platform/`, `frontend/`, `eval/`, `docs/`) не трогать;
расхождения — пингом в секцию «Бэкенд» файла `docs/PROGRESS.md`. `.env` не читать.
## 1. Какая проблема и что решит твой результат
## Карта чтения — ЗАКОН, дальше только по её ссылкам
Приоритет владельца №1 — **консистентность терминов и голосов на всю книгу**. Она держится на банке
памяти: строка «термин → перевод» едет в промпт как ЗАКОН для каждой роли. Сегодня закон исполняется,
но **три места описывают его неверно, а одно не исполняет собственный совет**. Цена — не поломка, а
хуже: мы не можем узнать правду о собственной работе. Метрика «промахов нет» означает «банк исполнен»,
а читается как «исполнен ВЕРНО» — и ровно в случае, которого владелец боится (вложили неверный перевод,
модель послушалась), прибор молчит надёжнее всего.
1. `CLAUDE.md` — цели и нормы. Особо: **комментарий не доказывает поведение, источник утверждения о
смысле — тест** · **тесты и гейты не подгонять под зелень** · **мутация засчитывается по ТЕКСТУ
сообщения, а не по факту красноты** · **отрицательный замер печатает контрольную величину**.
2. Строки бэклога **295**, **267**, **318**, **320**, **322** (`docs/PROGRESS.md`, греп `^| N |`) —
предмет пака целиком.
3. `docs/architecture/03-implementation-notes.md` — через баннер.
4. `backend/README.md` — механика движка.
5. `docs/architecture/12-go-style-notes.md` — норматив стиля, только больные места.
Твой результат: закон банка описан тем, что код делает, и один настоящий пробел в нём закрыт.
## Зачем этот пак
## 2. Зона и git
Приоритет владельца №1 — **консистентность терминов и голосов на всю книгу**. Сегодня она держится на
банке, а банк на проводе — закон для всех ролей. Пак закрывает четыре места, где этот закон либо не
доезжает, либо описан неверно, и одно место, где принятая работа может быть потеряна.
**Зона записи: `backend/`.** Чужие зоны (`platform/`, `frontend/`, `eval/`, `docs/`) — только чтение;
расхождения — пингом в секцию «Бэкенд» файла `docs/PROGRESS.md`.
**Сессия НЕ коммитит** — готовое дерево передаёшь оркестратору. Канон git-дисциплины — `CLAUDE.md`.
`.env` не читать. Не работать под `/tmp`.
**Ни одна из этих строк не предлагает ослабить закон банка (`D39.104`).** Он ратифицирован, и
доказательств против него нет ни у одного голоса. Предмет — исполнение и честность описания.
## 3. Карта чтения — ЗАКОН, дальше только по её ссылкам
## Состав — пять предметов, порядок мой, отступления объявляй
1. `CLAUDE.md` — цели владельца и гардрейлы.
2. Строки бэклога **267**, **318**, **320** (`docs/PROGRESS.md`, греп `^| N |`).
3. `backend/README.md` — механика движка.
4. `docs/architecture/03-implementation-notes.md` — через баннер.
5. `docs/architecture/12-go-style-notes.md` — только больные места.
### 1. Подать подписанный канон в прогон (половина строки 295) — ПЕРВЫМ
**Ратифицированное, что нужно для работы, — в теле промта, чтобы не искать (`D39.216` требует так):**
Без этого полигон не может мерить приоритет №1 вообще: точность чекера меряется на прогоне, в котором
подписанный канон участвовал. Это разблокирует чужую зону, поэтому идёт первым.
- **Закон банка (`D39.104`)**: строка на проводе — закон для КАЖДОЙ роли и КАЖДОЙ строки, независимо от
статуса. ⛔ Ослаблять его этот пак НЕ предлагает: он ратифицирован, доказательств против нет ни у
одного голоса. Предмет — исполнение и честность описания.
- **`D39.216` (мандат владельца, 06.09), делай РОВНО так**: проектировать и чинить **без хаков и
воркэраундов**; где нынешняя форма не тянет — **развязать или переписать**, а не обложить заплатой.
«Дешевле подпереть» доводом НЕ является. Отступление законно, но **объявляется с ценой**.
- **Комментарий не доказывает поведение** (`D39.214` п.3): источник утверждения о СМЫСЛЕ — тест или
прогон. ⚠ Эту норму НЕ ищи грепом в `CLAUDE.md` — её там нет, она живёт нотой.
- **Число называет ДЕРЕВО и ПОПУЛЯЦИЮ**: приводишь счёт — назови коммит и что именно посчитано.
- **Рядом с нулём — контрольная величина**: «0 совпадений» неотличимо от «искал не там» (`CLAUDE.md`).
- **Мутация засчитывается по ТЕКСТУ сообщения, а не по факту красноты** (`CLAUDE.md`): правый вердикт
по неправой причине — дыра, а не поимка.
- **Тесты и гейты не подгонять под зелень** (`D39.121`, мотив решает).
**Приёмка:** прогон, где подписанный канон реально участвовал, предъявлен исполнением; что именно
поехало на провод — видно из артефакта, а не из отчёта.
## 4. Состав и разметка свободы
### 2. Гард перекрытия окон при слиянии (строка 267)
### 4.1 Гард перекрытия окон при слиянии (строка 267) — **делай РОВНО так**
Один термин в одном смысле может нести две конкурирующие формы, и обе доезжают на оба провода — дыра в
проверке схлопывания. Решение владельца 05.09 состоялось; строка несёт разбор.
проверке схлопывания. Решение владельца 05.09 состоялось, строка несёт разбор. Закрыть.
**Смежное, проверь заодно:** совет оператору «пометь одну строку статусом» (строка **320а**) гвард
полисемии не исполняет — он статус НЕ СМОТРИТ вовсе. Либо совет приводится к тому, что код делает, либо
гвард учится смотреть статус. **Выбор объяви и обоснуй**, молча не решай.
### 4.2 Совет, который движок не исполняет (строка 320а) — **реши сам, аргументируй**
### 3. Комментарий постчека — привести к поведению (строка 318)
Диагностика советует оператору пометить одну строку статусом, а гвард полисемии **статус не смотрит
вовсе**. Два честных выхода: привести совет к тому, что код делает, **или** научить гвард смотреть
статус. **Выбор объяви и обоснуй; молча не решай.** ⚠ Второй вариант меняет поведение — тогда это смена
заказа, и нужен пинг, а не правка.
Комментарий обещает, что промах ловит и случай «мы вложили неверный dst, и модель его исполнила (страх
владельца)». Код при найденной форме делает `continue`: **исполненная неверная строка промаха не даёт**.
⇒ метрика «нет промахов» означает «банк ИСПОЛНЕН», а читается как «исполнен ВЕРНО».
### 4.3 Комментарий постчека — привести к поведению (строка 318) — **делай РОВНО так**
**Заказ здесь узкий: честный комментарий плюс пин.** Детектор правильности ЗНАЧЕНИЯ — не этот пак,
он живёт строкой **286** и упирается в замер точности, а не в код. Не строй его тут.
Комментарий обещает ловить и случай «вложили неверный перевод, модель исполнила»; код при найденной
форме делает `continue` ⇒ промаха нет. Приведи текст к поведению **и поставь пин**, чтобы описание
больше не могло разойтись молча.
### 4. Не уничтожать и адресовать принятую редактуру (строка 322, части «а» и «б»)
**Детектор правильности ЗНАЧЕНИЯ здесь НЕ строить.** Он живёт строкой **286**, упирается в замер
точности, а не в код, и его постройка тут будет расширением заказа.
Ре-проход пере-делывает затронутую единицу целиком тем же редакторским промптом; прежний текст остаётся
в чекпойнтах, **но без адреса** — ни одна строка статуса на него не указывает, экспорт не видит, отката
нет. И один путь уничтожает его физически: ре-проход флагнулся → `redrive`сброс сносит чекпойнты
**флагнутой стадии по всем снапшотам**, прежняя хорошая редактура в их числе.
### 4.4 Два ложных комментария — снять (строки 321 и 322) — **делай РОВНО так**
Заказ: **(а)** история финальных хешей при перезаписи финальной строки + ограда, чтобы сброс не удалял
чекпойнт, на который ссылается история; **(б)** адресация выгрузки «по состоянию на».
- Оправдание `nil`-переноса в редакторской волне («единица есть глава или её часть») — **ложно**: глава
регулярно делится на несколько правочных единиц. ⛔ **Сам перенос НЕ строить** — по строке 321 сначала
замер дрейфа, инцидентов пока ноль. Здесь только честный комментарий.
- Утверждение, что обычный резюм перезаписывает строку статуса, — **ложно**: он выходит раньше, пишет
только ре-пин.
**Всё это ВНЕ снапшота и хеша запроса ⇒ перепокупки нет**, ключ манифеста и версия встроенных данных
не двигаются. Проверь это исполнением, не поверь на слово.
### 4.5 Чего в паке НЕТ и почему — **не делай**
### 5. Два ложных комментария — снять (строки 320 и 322)
- **Строка 322 (история принятой редактуры)** — другой предмет: жизненный цикл чекпойнтов и схема, а не
закон банка. Отдельным паком.
- **Строка 295 (подать подписанный канон в прогон)** — снята из этого пака: у бэкенд-сессии нет ни
книги, ни стенда, ни санкции на деньги. Если найдёшь чисто бэкендовую половину — **назови её пингом**,
но не бери.
- **Перекрой структуры глав (161/283)** — отдельный дизайн-пак.
`chunkstatus.go` утверждает, что обычный резюм перезаписывает строку статуса — **не перезаписывает**,
он выходит раньше; пишет только ре-пин. И оправдание `nil`-переноса в редакторской волне (строка **321**)
**ложно** — но саму передачу переноса в этом паке НЕ СТРОИТЬ: там сначала замер (см. ниже).
## 5. Мандат самопроверки ИСПОЛНЕНИЕМ — механизм назван, и пустое исполнение его не удовлетворяет
## Чего в этом паке НЕТ и почему
⛔ «Перечитал сам» **не считается**. Обязательны все три:
- **Строка 321 (перенос sticky) — не строить.** Экспозиция замерена (49 строк, 4 из них уже в черновике),
**а дрейф — нет, инцидентов ноль**. Сначала замер на следующем платном прогоне, потом решение. В этом
паке — только правка ложного оправдания в комментарии.
- **Строка 324 (вход рендера)** — не долг, а контракт входа; расцеплена от 321, строить не надо.
- **Детектор верности значения** — строка 286, упирается в замер.
- **Перекрой структуры глав (161/283)** — отдельный дизайн-пак с мандатом качества.
1. **Мутационная проверка каждого пина, который ты заводишь или трогаешь.** Механизм: сломай проверяемое
свойство, прогони пин, **прочитай ТЕКСТ падения** и убедись, что он говорит про сломанное тобой, а не
про что-то соседнее; восстанови файл и **сверь sha256** с исходным. Артефакт: таблица «мутация →
текст падения → хеш восстановлен».
2. **Опровергатель твоей готовой работы отдельным субагентом.** ⚠ Харнесс по умолчанию субагентов не
спавнит — **тебе это РАЗРЕШЕНО и требуется**. Модель задай ЯВНО (`fable` — контролёр проекта), знай,
сколько их у тебя работает; одного-двух достаточно. Мандат ему: «найди в этой работе отсутствующее и
противоречащее», а не «проверь, всё ли хорошо».
3. **Греп по отозванной формулировке перед словом «исправлено»**: `grep -c "<снятая фраза>" <файл>`
ноль либо только внутри пометки. Смена 06.09 попалась на этом трижды.
## Самопроверка — обязательна, и вот чем ЭТОТ пак уязвим
## 6. Оси ревью — характер работы «Код» и «Доки»
Не отчёт «проверено», а **исполнение**. Направление задаю, глубину и веер выбираешь сам:
Из таблицы приёмки, две оси, обе твои:
- **Код:** ⚠ «тест утверждает не то, что думает» — проверь, что каждый твой пин падает ИМЕННО от того,
что он охраняет (см. §5.1).
- **Доки:** сверка утверждений против кода и живых носителей — весь этот пак ровно об этом.
1. **Ты правишь ОПИСАНИЯ поведения.** Соблазн подогнать текст под то, что «должно быть», максимален.
После каждой правки комментария спроси: **это описание того, что код ДЕЛАЕТ, или того, что я хотел
бы?** Сегодня проект нашёл пять таких мест за смену, все — прозой.
2. **Мутации засчитывай по ТЕКСТУ.** Правый вердикт по неправой причине — дыра, а не поимка: сегодня
мутация покраснила гейт сообщением о рецепте, который делал ровно обратное сказанному.
3. **Не двигает ли твоя правка деньги.** Для каждой правки скажи прямо: двигает ли она снапшот, хеш
запроса, ключ манифеста, версию встроенных данных. Если да — это перепокупка, и её надо объявить.
4. **Числа с деревом и популяцией.** Приводишь счёт — назови коммит и что посчитано.
5. ⭐ **И отдельный проход, заказанный владельцем: ЛОГИЧЕСКИЕ баги, а не исполнительские.** Пока ты в
этих файлах — ищи места, где код работает **как написано**, но написанное **не то, что задумывалось**:
гейт, отвечающий на свой вопрос вместо заказанного; метрика, чьё имя шире её смысла; ветка, которая
по построению не исполняется. Найденное — **не чинить молча**, а вынести списком в отчёт: это заказ
владельца, и он идёт в отдельный разбор.
## 7. Записка-план ДО работы
До первой правки пришли оркестратору ≤15 строк: что берёшь по каждому из четырёх пунктов · где ждёшь
сопротивления · что считаешь спорным в самом заказе. Это дешевле, чем разойтись на готовом.
## 8. Заявление = команда
Любое число и любая категорика в отчёте — **с командой, которой получены**, и её выводом, а не
пересказом. «Батарея зелёная» без команды и её кода возврата — не факт.
## 9. Эхо-протокол старта
ДО работы пришли ≤10 строк: **скоуп** (что берёшь) · **инварианты** (что обязано уцелеть) · **не-делать**
(что в паке запрещено). Если эхо разойдётся с моим заказом — лучше здесь, чем в приёмке.
## 10. Что НЕ удалось — обязательная секция отчёта
Что не проверено · что не воспроизвелось · где данных не хватило. **«Не измерено» вместо догадки.**
## 11. Канал вопросов и право отказаться
Конфликт промта с кодом или доками — **пинг, не правка**. И у тебя есть **право сказать «этого делать не
надо»** с аргументом: если по коду окажется, что предмет описан мимо, это самый ценный ответ.
## 12. Прямой канал
Механизм — `CLAUDE.md` §«Связь между сессиями»: файл `/tmp/textmachine-channel`, свой блок впиши первым
делом, адреса других ролей — оттуда, живость сверяй `ListAgents`. ⚠ **Нужной роли нет или файла нет —
это НОРМАЛЬНЫЙ случай**: вопрос секцией в отчёт, сессии подряд не опрашивать.
## Деньги
**Этот пак — $0.** Платных вызовов к моделям в нём нет ни одного: все четыре предмета — код,
комментарии и пины на фикстурах. ⛔ Если по ходу окажется, что предъявить что-то можно только платным
прогоном — **это пинг оркестратору за санкцией, а не твоё решение**. Санкции на деньги промт не несёт.
## Отчёт
Секция «Бэкенд» в `docs/PROGRESS.md` + сообщение оркестратору: что построено · чем предъявлено (команда
и её вывод) · какие правки двигают деньги · **список логических расхождений «задумано против сделано»** ·
что осталось открытым · **что ты сам считаешь слабым местом своей работы**.
и вывод) · таблица мутаций из §5.1 · что сказал опровергатель и что ты с этим сделал · двигает ли
что-нибудь из сделанного снапшот, хеш запроса, ключ манифеста или версию встроенных данных · секция §10 ·
**что ты сам считаешь слабым местом своей работы**.
⚠ Числа батареи снимай **после последней правки**, не до. Пере-съём голдена, если понадобится, объявляй
явно с причиной (`D39.183`).
⚠ Числа батареи снимай **после последней правки**, не до.

View file

@ -1,108 +1,143 @@
# Промт: полигон-сессия «РЕМОНТ ПРИБОРА» — линза слепого чтения и гигиена стенда
> **⚠ ЭТОТ ПАК ИДЁТ ПЕРЕД ЛЮБЫМ СЛЕДУЮЩИМ ПЛАТНЫМ ЗАМЕРОМ, включая продолжение фазы Д.**
> Причина не в очереди, а в смысле: прибор, которым мы судим редактора, сегодня меряет НЕ ТО,
> что мы редактору заказали. Пока это так, каждый следующий замер редакторского тира стоит
> меньше, чем кажется, — и фаза Д в том числе.
## 1. Какая проблема и что решит твой результат
Ты — полигон-сессия TextMachine. **Зона записи: `eval/` + `docs/experiments/`**, пинг оркестратору —
секция «Полигон» в `docs/PROGRESS.md`. **Сессия НЕ коммитит**, кроме пре-рег-фризов (право полигона);
готовое дерево передаёшь оркестратору на лендинг. Чужие зоны не трогать. `.env` не читать.
Мы решаем денежный вопрос: стоит ли платить за сильного редактора. Решаем замером — судьи-модели
вслепую выбирают лучший вариант редактуры. **Прибор сегодня меряет НЕ ТО, что мы редактору заказали.**
Судимой роли предписано «сверяй смысл черновика с исходным текстом, исправляй искажения», а первичная
**блокирующая** линза — «точность ОТНОСИТЕЛЬНО ЧЕРНОВИКА». Редактор, правильно ушедший от черновика ради
оригинала, по главной линзе выглядит хуже.
## Карта чтения — ЗАКОН, дальше только по её ссылкам
**Осторожно с масштабом — это ратифицировано так и не иначе (`D39.215` п.3):** доказано ПРОТИВОРЕЧИЕ
КОНСТРУКЦИИ; **величина искажения НЕ ЗАМЕРЕНА**. Оркестратор сначала написал «прибор систематически
наказывает» — и это было преувеличением: в сыром массиве такая пометка встречается ОДИН раз. Твой пак —
не «доказать вред», а починить конструкцию и **дать величине носитель**.
1. `CLAUDE.md` — нормы проекта. Особо: **комментарий не доказывает поведение** · **число называет
ДЕРЕВО и ПОПУЛЯЦИЮ** · **отрицательный замер печатает контрольную величину** · **мутация
засчитывается по ТЕКСТУ сообщения, а не по факту красноты**.
2. Строка **319** бэклога (`docs/PROGRESS.md`, греп `^| 319 |`) — предмет этого пака целиком.
3. `eval/dovodka/blind-read/PREREG-2-BLIND-READ.md` — пре-регистрация замера; §5 (линзы) и §8.
4. `eval/dovodka/prereg-4axes/stand/editor-p9.md` — инструкция судимой руке.
5. Строки **300** и **265** бэклога — гигиена стенда, обе помечены «до следующего платного замера».
Твой результат: следующий замер редакторского тира отвечает на вопрос, который мы задаём, а не на
соседний.
## Что не так — и это ратифицировано (`D39.215` п.3)
**Этот пак идёт ПЕРЕД любым следующим платным замером, включая продолжение фазы Д** (промт
`POLYGON_EXP2223_REDO_SESSION_PROMPT.md`). Причина не в очереди, а в смысле: пока линза меряет не то,
каждый следующий замер тира стоит меньше, чем кажется.
Судимой руке предписано: **сверяй смысл черновика с исходным текстом, исправляй искажения смысла**.
А первичная **блокирующая** линза замера — **«точность относительно черновика»**. То есть редактор,
правильно отошедший от черновика ради оригинала, по главной линзе выглядит хуже.
## 2. Зона и git
**Осторожно с масштабом.** Оркестратор сначала записал, что прибор «систематически» наказывает за
отход, и это было **преувеличением**: в сыром судейском массиве такая пометка встречается ОДИН раз.
**Доказано противоречие конструкции; величина искажения НЕ ЗАМЕРЕНА.** Твой пак — не «доказать вред»,
а починить конструкцию и **дать величине носитель**.
**Зона записи: `eval/` + `docs/experiments/`**, пинг оркестратору — секция «Полигон» в
`docs/PROGRESS.md`. **Сессия НЕ коммитит**, кроме пре-рег-фризов — это право полигона и единственное
исключение. Чужие зоны не трогать. `.env` не читать.
## Состав пака — три части, в этом порядке
## 3. Карта чтения — ЗАКОН
### Часть 1 — ТРИ ЭРРАТЫ В НОСИТЕЛЯХ ЗАМЕРА ($0, первым касанием, до всего остального)
1. `CLAUDE.md` — цели и гардрейлы.
2. Строка **319** бэклога (`docs/PROGRESS.md`, греп `^| 319 |`) — предмет целиком.
3. `eval/dovodka/blind-read/PREREG-2-BLIND-READ.md` — §5 (линзы) и §8.
4. `eval/dovodka/prereg-4axes/stand/editor-p9.md` — инструкция судимой роли.
5. Строки **300**, **265**, **143** бэклога.
**Форма — БАННЕР В ШАПКЕ, тела документов НЕ ПРАВИТЬ.** Оба документа заморожены, и
пре-регистрация ценна именно неизменяемостью: правка тела уничтожает то, ради чего фриз делался.
**Ратифицированное — в теле промта:**
1. `RESULT-2-BLIND-READ.md` — утверждение «правильный ответ по построению — ничья» противоречит
собственному тексту того же отчёта (судья видит разницу двух случайных реализаций) и измеренному
расхождению рук. Снять баннером.
2. `PREREG-2-BLIND-READ.md` §8 — при замене предыдущего пре-рега выпало унаследованное ограничение
**«опора судьи — ЧЕРНОВИК, не оригинал»**. Это дыра в протоколе, а не в критике: верни баннером,
назвав, откуда выпало.
3. `PREREG-2-BLIND-READ.md`, правило решения в §5 — оно готово выдать вывод «одна рука не хуже по
точности» из НЕПРОХОЖДЕНИЯ теста, тогда как отчёт результата этот вывод запрещает дословно.
Исполнитель отказался сам, а норма в носителе осталась и повторится в следующем пре-реге.
- **`D39.216` (мандат владельца, 06.09), делай РОВНО так**: чинить **без хаков**; где форма не тянет —
развязать или переписать. «Дешевле подпереть» доводом не является; отступление — **с ценой**.
- **Комментарий/проза не доказывают поведение**; источник утверждения о смысле — прогон. ⚠ Грепом в
`CLAUDE.md` не ищи — норма живёт нотой `D39.214`.
- **Число называет ДЕРЕВО и ПОПУЛЯЦИЮ.** Сегодня на этом погорели три роли подряд: один и тот же счёт
дал разные величины, потому что считали разные популяции.
- **Рядом с нулём — контрольная величина** (`CLAUDE.md`).
- **Эмпирика на знакомых моделям текстах — предварительная**; вес имеет замер на целевом жанре.
**Приёмка части 1:** три баннера стоят; ни одно тело не изменено (`git diff` показывает только шапки).
## 4. Состав и разметка свободы
### Часть 2 — ГИГИЕНА СТЕНДА (строки 300 и 265, до любого платного вызова)
### 4.1 Три эрраты в носителях замера — **делай РОВНО так**, первым касанием, $0
Обе строки помечены «до следующего платного замера», и обе про то, что прибор мерит не тем, чем думает:
репо-широкий сторож не дотягивается до соседнего воркри, и питоново зеркало полигона держит ВТОРУЮ
копию таблицы плейсхолдеров движка, которая уже разошлась.
**Форма — БАННЕР В ШАПКЕ. Тела документов НЕ ПРАВИТЬ.** Оба заморожены, и пре-регистрация ценна
именно неизменяемостью: правка тела уничтожает то, ради чего фриз делался.
**Зеркало — не переписывать копию, а убрать второй носитель**, если это возможно без хаков; если
невозможно — предъявить, почему, и поставить сверку, которая краснеет при расхождении.
1. `RESULT-2-BLIND-READ.md` — «правильный ответ по построению — ничья» противоречит собственному тексту
того же отчёта и измеренному расхождению рук.
2. `PREREG-2-BLIND-READ.md` §8 — выпало унаследованное ограничение «опора судьи — ЧЕРНОВИК, не
оригинал». Верни баннером, назвав, откуда выпало.
3. `PREREG-2-BLIND-READ.md` §5 — правило решения готово выдать «одна рука не хуже по точности» из
НЕПРОХОЖДЕНИЯ теста, что отчёт результата запрещает дословно.
**Приёмка части 2:** расхождение зеркала либо устранено, либо краснеет автоматически; стенд предъявлен
прогоном, а не отчётом.
**Горизонт: до всего остального.** Три дешёвые правки не должны ждать дорогого пака.
### Часть 3 — ЛИНЗА (главное)
### 4.2 Гигиена стенда (строки 300, 265) — **реши сам, аргументируй**
Обвязка сверки с **исходником** уже написана в этом же дереве — `eval/dovodka/judge-prompts/`. **Нужен
не новый прибор, а пере-подключение готового.** Не строй второй.
Обе помечены «до следующего платного замера»: репо-широкий сторож не дотягивается до соседнего воркри, и
питоново зеркало держит ВТОРУЮ копию таблицы плейсхолдеров движка, уже разошедшуюся.
Заказ: судейская линза, которая судит правку **против исходника**, а не против черновика, и норматив
судейства из строки **143****разброс инструмента ДО замера** и **объявленный порог различимости**.
Без второго первое бессмысленно: односудейный вердикт при разбросе 33 % не различает ничего.
⚠ По зеркалу: **не переписывать копию, а убрать второй носитель**, если это возможно без хаков (`D39.216`);
невозможно — предъяви почему и поставь сверку, которая краснеет при расхождении.
**Границу держать:** это ремонт ЗАМЕРНОГО прибора. Судейская роль в самом движке — другой предмет,
её здесь не касаться.
### 4.3 Линза (главное) — **делай РОВНО так в части источника, реши сам в части формы**
**Приёмка части 3:** пре-регистрация новой линзы заморожена ДО первого платного вызова (право полигона
коммитить фриз) · в ней объявлены разброс и порог · сказано прямым текстом, какой вопрос прибор задаёт
и какой НЕ задаёт.
Обвязка сверки с **исходником** уже написана в этом дереве — `eval/dovodka/judge-prompts/`. **Нужно
пере-подключение готового, а не второй прибор.**
Заказ: линза, судящая правку **против исходника**, плюс норматив судейства из строки **143** — **разброс
инструмента ДО замера** и **объявленный порог различимости**. Без второго первое бессмысленно:
односудейный вердикт при разбросе 33 % не различает ничего.
**Граница:** это ремонт ЗАМЕРНОГО прибора. Судейская роль внутри движка — другой предмет, не касаться.
### 4.4 Чего в паке НЕТ — **не делай**
Не продолжать фазу Д · не строить второй судейский прибор · не править тела замороженных документов ·
не трогать движок и платформу.
## 5. Мандат самопроверки ИСПОЛНЕНИЕМ — механизм назван; «перечитал сам» его не удовлетворяет
1. **Проверка своей же починки её собственным вопросом.** Ты чинишь прибор — спроси у результата не
«зелено ли», а **«то ли он мерит»**. Артефакт: два-три конкретных случая, где старая линза и новая
дают РАЗНЫЙ ответ, с текстом обоих ответов.
2. **Опровергатель отдельным субагентом.** ⚠ Харнесс по умолчанию субагентов не спавнит — **тебе
разрешено и требуется**. Модель задай ЯВНО (`fable`), одного-двух хватит. Мандат: «найди
отсутствующее и противоречащее», а не «проверь, всё ли хорошо».
3. **Проверка формы эррат исполнением:** после части 4.1 — `git diff` показывает ТОЛЬКО шапки. Соблазн
«заодно поправить тело» здесь максимальный, а цена — уничтоженный фриз.
## 6. Оси ревью — характер «Полигон / замеры»
Из таблицы приёмки: **пере-вывод чисел из СЫРЬЯ** и **независимость сигналов**. Обе твои: любое число в
отчёте выводится из сырого массива заново, а не цитируется из прежнего отчёта.
## 7. Записка-план ДО работы
≤15 строк оркестратору: что берёшь по каждой части · какой вопрос новая линза будет задавать и какой НЕ
будет · где ждёшь сопротивления.
## 8. Заявление = команда
Числа и категорика — с командой и её выводом. Пере-считанное из сырья — с указанием, из какого файла и
какой популяции.
## 9. Эхо-протокол старта
≤10 строк ДО работы: скоуп · инварианты · не-делать.
## 10. Что НЕ удалось — обязательная секция
Что не проверено, что не воспроизвелось, где данных не хватило. **«Не измерено» вместо догадки.**
## 11. Канал вопросов и право отказаться
Конфликт промта с носителями — пинг, не правка. **Право сказать «этого делать не надо»** с аргументом: в
частности, если по документам окажется, что противоречие линзы описано мимо, — это самый ценный ответ.
## 12. Прямой канал
`CLAUDE.md` §«Связь между сессиями»: `/tmp/textmachine-channel`, свой блок первым делом, живость — через
`ListAgents`. ⚠ Роли нет или файла нет — **нормальный случай**: вопрос секцией в отчёт, сессии подряд не
опрашивать.
## Деньги
Части 1 и 2 — **$0**, платных вызовов нет вовсе. Часть 3 до фриза — тоже $0. Первый платный вызов
только после фриза и только по санкции владельца через оркестратора. **Санкции на замер этот промт НЕ
несёт.**
## Самопроверка — обязательна, и вот чем этот пак уязвим
Не отчёт «проверено», а **исполнение**:
1. **Ты чинишь прибор прибором.** Проверь свою же починку тем же вопросом, каким ловим её предмет:
**то ли она мерит**. Зелёный тест на фикстуре доказывает отображение, а не жизнь.
2. **Три эрраты — про ФОРМУ.** Убедись исполнением, что тела не тронуты: соблазн «заодно поправить»
здесь максимальный, а цена — уничтоженный фриз.
3. **Число называет дерево и популяцию.** Если приводишь долю или счёт — скажи, на каком коммите снято
и что именно посчитано. Сегодня на этом погорели все три роли.
4. **Рядом с нулём — контрольная величина.** «Ноль расхождений» неотличимо от «искал не там».
5. **Адверсариальный проход по своей готовой работе** — направление задаю, глубину выбираешь сам.
## Что НЕ делать
Не продолжать фазу Д в этом паке · не строить второй судейский прибор · не править тела замороженных
документов · не трогать движок и платформу · не покупать ни одного платного вызова без санкции.
Части 4.1 и 4.2 — **$0**. Часть 4.3 до фриза — **$0**. ⛔ **Первый платный вызов — только после фриза и
только по санкции владельца через оркестратора. Санкции на замер этот промт НЕ несёт.** Если упрёшься в
«это можно предъявить только платным прогоном» — пинг, а не решение.
## Отчёт
Секция в `docs/PROGRESS.md` «Полигон» + сообщение оркестратору: что построено · чем предъявлено
(команда и её вывод, а не пересказ) · что осталось открытым · **что ты сам считаешь слабым местом
своей работы**.
Секция «Полигон» в `docs/PROGRESS.md` + сообщение оркестратору: что построено · чем предъявлено (команда
и вывод) · два-три случая расхождения старой и новой линзы из §5.1 · что сказал опровергатель и что ты с
этим сделал · секция §10 · **что ты сам считаешь слабым местом своей работы**.

View file

@ -19,7 +19,7 @@
> - **Курс:** этапы ОБЩНОСТЬ · КАЧЕСТВО БАНКА · ПАКЕТ-ЧЕКЕРОВ · ФРОНТ-ЭРА · шов/платформа/движковые блокеры — ПРОЙДЕНЫ (D39.59123). Хвосты курса живут строками: 16 (полная цена холодного старта; edit-волна на малых прогонах отработала и оплачена — 58 вызовов волновым драйвером 2325.07 плюс 648 до драйвера, счёт по леджерам `~/books/gu-zhenren/**/*.db`) · coldrun-b фаза C заморожена чекпойнтом легитимно (D39.86; эталон денег/поведения — coldrun-a, read-only); развилка 0731 решена и исполнена (D39.87/91, код `553f1a3`).
> - **Горизонт (D39.62/67, освежён D39.95):** **ДОБОР ИДЕАЛА** (первым прогоном: оси голоса 24 · авто-режим · цена 16; остаток арбитража банка = рецензент спорных кластеров при ре-пробе — D39.102). ⚠ **Испр. 05.09 (D39.198 п.5):** прежняя редакция держала здесь ТРИ предусловия, снятых владельцем, — жильцы ролей (149: разморозка ничего не разблокирует, пока идут доработки) · веса K1K12 (13а: веса не нужны, мерить по узлам) · вне-претрейн чекпоинт (55: прогоняем на тех же текстах, оговорка — ограничение ВЫВОДА, а не требование новой книги) → ВТОРАЯ ПАРА живьём (ja→ru; преп 81) → МАСШТАБ → пилот Ф2.5 (гейт резюме-строки 80; строки 6268, 85) → Ф3 ридер-IDE (6971). **Стоячие:** ToS-триггер 25.10 · Ш-2 до go1.27 (⚠ + x/text Unicode 17 тем же тулчейном — строка 119, реестр §Б-108 справочника якорей) · платные прогоны разблокированы (проба провода — D39.97, конфиги 112 залендены).
> - **Стек (полная карта роль→модель→конфиг→квирки — [STACK.md](STACK.md), D39.126):** draft deepseek-v4-flash thinking-ON `low` **⚠0731** → терминолог (та же модель) → editor deepseek-v4-pro БИЛИНГВ ИНТЕРИМ (топология ПОДТВЕРЖДЕНА при неразличимости жильцов — D39.117; закон-блок ОБЯЗАТЕЛЕН и ВНЕСЁН — D39.104 п.2, вайр-батч принят D39.199; glm-5 резерв; вахта маппинга эффорта pro — §Б-108) → судья gemini (Ф2, в движке НЕ построен — строка 33); канал B Mistral+grok; ~$0.85/ранобэ (D30.4) — ⚠ **ТРИГГЕР ПЕРЕ-КАЛИБРОВКИ СРАБОТАЛ 31.08** (испр. 02.09): платный прогон отработал и дал собственную оценку движка `projected_book_usd = 1.1377277707` на десяти главах при куплённых $0.436110; число D30.4 держать как июльское. ⚠ **Вендор-факты 1315.08 (пере-пин ИСПОЛНЕН и ПРИНЯТ, D39.137):** таблица цен запинена ПИКОМ (flash 0.44/1.32 · pro 1.32/3.96/кэш-хит 0.044 за 1M; счёт шиппинг-c1 = 100% DeepSeek ⇒ ×4.24.4 в пике / ×2.12.2 в долине — замер по трём прогонам); ⚠ **испр. 05.09: носители про эффорт `pro` БОЛЬШЕ НЕ ПРОТИВОРЕЧАТ** — и квирки (§3г), и `STACK.md` говорят одно: ручка ДОХОДИТ до модели с вендор-апдейта 13.08. Живой остаток один — вендор-сверка маппинга и ВЕЛИЧИНА эффекта, строка **237**(б); ⚠ ВЕСА pro сменились под тем же слагом (V4-Pro-0813, класс D39.61) — вахта-риг готов (остаток 172); покупки фазы Д на deepseek до 16.08 16:00 UTC — по старым ценам. ⚠ **ВЕСЬ банковый контур (банкнота+терминолог+классификатор) ВКЛЮЧЁН в shipping-c1 с `b8154cd`**`enabled: true` у обоих гейтов и `classify_types: true`, бюджеты по $1.00 (прежде жил только ран-локальным конфигом книги; строка 140 — ⛔ его единственный вход `mining.contrast_path` в git ОТСУТСТВУЕТ, развёртывание обязано положить артефакт, иначе контур не исполняется вовсе, носитель — строка 251; сверка STACK.md 09.08 — факт шире прежней декларации «одна банкнота»); эскалация в shipping за `budget_usd: 0` (STACK.md §примечания).
> - **ЕДИНЫЙ БЭКЛОГ — секция «Бэклог» ниже** (одна таблица, единственный трекер; каждая петля обязана иметь диспозицию: решено / отложено-с-записью / отклонено; ведёт оркестратор). **СЧЁТ ОЧЕРЕДИ на 05.09 (скриптом по таблице — `python3 docs/scripts/counts.py`; обновлять при каждом лендинге):** всего **238** строк · зона бэкенд **113** строго / **158** широко (⚠ колонки счётчик читает С КОНЦА — испр. D39.116) · **блокеров очереди 0** (236 закрыта D39.175), платные прогоны разблокированы · «скоро» **104** (перечень — грепом по таблице, рукописный список снят D39.126) · гейт-строка эксп-22: 153 (плюс 150 — руки владельца; ⚠ 55 из гейтов СНЯТА — D39.198 п.5); строка 5 — остаток гейчен ре-пробой 74, носитель события теперь строка 188 (аудит D39.140); остальное «когда-нибудь». ⚠ Счёт — НИЖНЯЯ граница долга, не потолок (разбор — легенда таблицы ниже).
> - **ЕДИНЫЙ БЭКЛОГ — секция «Бэклог» ниже** (одна таблица, единственный трекер; каждая петля обязана иметь диспозицию: решено / отложено-с-записью / отклонено; ведёт оркестратор). **СЧЁТ ОЧЕРЕДИ на 05.09 (скриптом по таблице — `python3 docs/scripts/counts.py`; обновлять при каждом лендинге):** всего **239** строк · зона бэкенд **113** строго / **158** широко (⚠ колонки счётчик читает С КОНЦА — испр. D39.116) · **блокеров очереди 0** (236 закрыта D39.175), платные прогоны разблокированы · «скоро» **105** (перечень — грепом по таблице, рукописный список снят D39.126) · гейт-строка эксп-22: 153 (плюс 150 — руки владельца; ⚠ 55 из гейтов СНЯТА — D39.198 п.5); строка 5 — остаток гейчен ре-пробой 74, носитель события теперь строка 188 (аудит D39.140); остальное «когда-нибудь». ⚠ Счёт — НИЖНЯЯ граница долга, не потолок (разбор — легенда таблицы ниже).
> - Архивы хроники: `archive/PROGRESS-2026-07-04-10.md` (D31) · `-10-13` (D39.6-гигиена) · `-13-25` (стройка паков 1116, rerun2) · **`-25-31` (паки 1720 · мини-прогон · полигон-пакеты 58 · ToS · холодный прогон; D39.2658)** · **`-08-01-02` (сессии №9/№10: общность · качество банка · coldrun-b · открытие фронта/платформы; D39.5990, срез D39.105)** · **`-08-02-04` (сессии №11№13: ручки эффорта · стандарты · контракт API · платформа P0 · банк-арбитраж; D39.91105 + снимок шапки эры №15)** · `-08-04-09` (пинги закрытых паков эры №15) · **`-08-14-15` (закрытые бэкенд-записи №1617: эмиттер шва · migrate · пере-пин DeepSeek; вынесено D39.139)**. Записи ниже — живой хвост (№16+, эра D39.124+; подрезка D39.139).
## 📌 СОСТОЯНИЕ ПАКОВ
@ -387,6 +387,8 @@
| 325 | ⛔ **«МЫ ПРОСТО НЕ БУДЕМ ВПУСКАТЬ EPUB И НЕ-CJK» — СЕГОДНЯ НАМЕРЕНИЕ, А НЕ ФАКТ: ИНТЕЙК ИХ ПРИНИМАЕТ.** Замер 06.09: приём и обработка имени `.epub` закреплены тестом платформы (`platform/internal/books/books_test.go`, кейсы с расширением), то есть сужение входа до того, что умеет ВЫДАЧА, — это **код, а не решение**. ⚠ Значение прямое: строка 283 держит «структура глав для выдачи гейтит бету для не-CJK и EPUB», и её компенсация на бете («просто не впускаем») не работает, пока отказа нет в коде. ⇒ либо интейк отказывает форматам, чью выдачу мы не умеем, с честной причиной пользователю, либо 283 обязана быть сделана ДО впуска. ⭐ Найдено разбором границы беты 06.09; предмет — компенсация, объявленная и не построенная | платформа | скоро | вход физически сужен до того, что умеет выдача, либо выдача умеет впускаемое | **D39.215** |
| 326 | ⛔ **ПОНЯТИЯ «БЛОКЕР БЕТЫ» В ТРЕКЕРЕ НЕТ, И КРИТЕРИЯ ВПУСКА ПЕРВОГО ПОЛЬЗОВАТЕЛЯ В РЕПОЗИТОРИИ НЕ СУЩЕСТВУЕТ.** Замер 06.09: гейт печатает «блокеров очереди: 0», но этот вес — про ОЧЕРЕДЬ, а не про бету; слово «бета» в строках бэклога встречается считаное число раз и НИ РАЗУ не как критерий впуска (⚠ счёт из строки снят 06.09: я привёл «три из 236», а пере-счёт даёт 5 из 229 — оба числа были неверны, а утверждение в них не нуждается); греп по `docs/`, `platform/docs/`, `backend/docs/` на «первый пользователь / первая внешняя книга / впуск» не даёт ничего. ⇒ **вопрос «сколько ещё до беты» не читается из трекера не потому, что мало сделано, а потому что трекер никогда не нёс этого понятия.** ⚠ Практическое следствие: любой ответ о сроке беты сегодня — оценка сессии, а не состояние проекта, и проверить его нечем. ⇒ заказ: **линия остановки как ПРОВЕРЯЕМОЕ условие** (прогон на чужом файле через ту же дверь · деньги сходятся либо маржа видна пользователю · застрявший прогон видно и лечится · ни один экран не врёт о единице · вход сужен до того, что умеет выдача) — формулировку утверждает ВЛАДЕЛЕЦ, носитель заводит оркестратор | владелец → оркестратор | скоро | в дереве есть проверяемый критерий впуска первого внешнего пользователя | **D39.215** |
| 327 | ⛔ **ОСТАТОК ПОЛИГОН-ПАКЕТА №4 ЖИВЁТ ТРИ МЕСЯЦА ВНУТРИ ПРОМТА, И В НЁМ ЛЕЖИТ ДАТИРОВАННЫЙ РИСК.** ⚠⚠ **Срочное: замерный судья `memory_eval.py` работает на `gemini-2.5-flash`, у серии объявлен shutdown **16.10.2026** — около шести недель от 06.09.** Носителя у этого НЕ БЫЛО: единственное вхождение слага в бэклоге — проза про ЦЕНЫ другой модели, а не про миграцию нашего судьи (проверено грепом по предмету, не по имени). ⇒ после отключения замерный контур встанет, и узнаем мы это отказом, а не планом. Там же: двойной `extra_body` и отсутствие 404-ретрая при живом слаге. ⚠ Остальные пять пунктов остатка, тоже без носителей: матчер content-filter подстрокой + самотест · параметризация языка/жанра судейского промпта (ja/en сняты под zh-рамкой) · проба судьи-дублёра 18+ · калибровка echo-gate (`D25.7`) · minimal-pairs 100150 для shadow fidelity (`D25.2`). ⭐ **Класс, а не случай:** промт `POLYGON_PACKAGE4_SESSION_PROMPT.md` с 12.07 стоит «частично отработан, residual ЖИВ», как отдельная сессия НЕ запускался — то есть **носителем работы служит промт, а не трекер**, и в трекере этой работы не видно вовсе. ⇒ заказ: остаток становится строками, промт уходит в архив с баннером исхода, а в ролевой промт оркестратора вносится правило выхода «residual → строка бэклога, промт в архив» — сегодня его там нет, и именно поэтому пакет №4 жив три месяца | полигон | скоро (миграция судьи — ДО 16.10) | остаток несут строки, промт в архиве, правило выхода записано | **D39.216** |
*(Указатели на архив-слайсы хроники — бюллетенем «Архивы хроники» в CURRENT-STATE; здесь копий нет.)*
## Бэкенд