diff --git a/docs/BACKEND_CONSISTENCY_SESSION_PROMPT.md b/docs/BACKEND_CONSISTENCY_SESSION_PROMPT.md index 88cdbd81..e443bcd7 100644 --- a/docs/BACKEND_CONSISTENCY_SESSION_PROMPT.md +++ b/docs/BACKEND_CONSISTENCY_SESSION_PROMPT.md @@ -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`). +⚠ Числа батареи снимай **после последней правки**, не до. diff --git a/docs/POLYGON_INSTRUMENT_REPAIR_SESSION_PROMPT.md b/docs/POLYGON_INSTRUMENT_REPAIR_SESSION_PROMPT.md index eb409411..ca10bd50 100644 --- a/docs/POLYGON_INSTRUMENT_REPAIR_SESSION_PROMPT.md +++ b/docs/POLYGON_INSTRUMENT_REPAIR_SESSION_PROMPT.md @@ -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 · **что ты сам считаешь слабым местом своей работы**. diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md index dcb1fc34..a38e3d41 100644 --- a/docs/PROGRESS.md +++ b/docs/PROGRESS.md @@ -19,7 +19,7 @@ > - **Курс:** этапы ОБЩНОСТЬ · КАЧЕСТВО БАНКА · ПАКЕТ-ЧЕКЕРОВ · ФРОНТ-ЭРА · шов/платформа/движковые блокеры — ПРОЙДЕНЫ (D39.59–123). Хвосты курса живут строками: 16 (полная цена холодного старта; edit-волна на малых прогонах отработала и оплачена — 58 вызовов волновым драйвером 23–25.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: разморозка ничего не разблокирует, пока идут доработки) · веса K1–K12 (13а: веса не нужны, мерить по узлам) · вне-претрейн чекпоинт (55: прогоняем на тех же текстах, оговорка — ограничение ВЫВОДА, а не требование новой книги) → ВТОРАЯ ПАРА живьём (ja→ru; преп 81) → МАСШТАБ → пилот Ф2.5 (гейт резюме-строки 80; строки 62–68, 85) → Ф3 ридер-IDE (69–71). **Стоячие:** 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 держать как июльское. ⚠ **Вендор-факты 13–15.08 (пере-пин ИСПОЛНЕН и ПРИНЯТ, D39.137):** таблица цен запинена ПИКОМ (flash 0.44/1.32 · pro 1.32/3.96/кэш-хит 0.044 за 1M; счёт шиппинг-c1 = 100% DeepSeek ⇒ ×4.2–4.4 в пике / ×2.1–2.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` (стройка паков 11–16, rerun2) · **`-25-31` (паки 17–20 · мини-прогон · полигон-пакеты 5–8 · ToS · холодный прогон; D39.26–58)** · **`-08-01-02` (сессии №9/№10: общность · качество банка · coldrun-b · открытие фронта/платформы; D39.59–90, срез D39.105)** · **`-08-02-04` (сессии №11–№13: ручки эффорта · стандарты · контракт API · платформа P0 · банк-арбитраж; D39.91–105 + снимок шапки эры №15)** · `-08-04-09` (пинги закрытых паков эры №15) · **`-08-14-15` (закрытые бэкенд-записи №16–17: эмиттер шва · 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 100–150 для shadow fidelity (`D25.2`). ⭐ **Класс, а не случай:** промт `POLYGON_PACKAGE4_SESSION_PROMPT.md` с 12.07 стоит «частично отработан, residual ЖИВ», как отдельная сессия НЕ запускался — то есть **носителем работы служит промт, а не трекер**, и в трекере этой работы не видно вовсе. ⇒ заказ: остаток становится строками, промт уходит в архив с баннером исхода, а в ролевой промт оркестратора вносится правило выхода «residual → строка бэклога, промт в архив» — сегодня его там нет, и именно поэтому пакет №4 жив три месяца | полигон | скоро (миграция судьи — ДО 16.10) | остаток несут строки, промт в архиве, правило выхода записано | **D39.216** | + *(Указатели на архив-слайсы хроники — бюллетенем «Архивы хроники» в CURRENT-STATE; здесь копий нет.)* ## Бэкенд