Strip the retold incidents from the three docs every session reads, keeping the instruction and its greppable teeth
This commit is contained in:
parent
208de5e7d3
commit
b1c92cff9c
3 changed files with 62 additions and 105 deletions
30
CLAUDE.md
30
CLAUDE.md
|
|
@ -70,28 +70,18 @@ Go-бэкенд издательского художественного пер
|
|||
- **Общность движка:** Go-логика НЕ ветвится по паре/книге; пара-данные → `internal/lang`+`configs/langpacks/`, книго-каноны → сид/brief (данные); книжный термин в общем пар-слое = утечка. Тест-данные пары легитимны. Норматив (только больные места): `docs/architecture/12-go-style-notes.md`. Ревью-вопрос по умолчанию — §Цели п.2.
|
||||
- **При компакции/сжатии контекста ВСЕГДА сохранять:** список изменённых файлов · незакрытые находки ревью и их диспозиции · обязательства и открытые вопросы сессии · команды тестов (D39.121).
|
||||
- **Тесты и гейты не подгонять под зелень:** править или удалять тест/голден/гейт, чтобы он прошёл, — НЕДОПУСТИМО; несогласие с тестом — вопрос оркестратору пингом, не правка (D39.121). ⚠ **Запрет — про МОТИВ (D39.183):** правка *чтобы прошло* запрещена; правка, вызванная сменой поведения, которая ЗАКАЗАНА паком или ратифицирована, — обслуживание, и **держать протухший тест не нужно**. ⚠ Заказанность решает ЗАКАЗ, а не сессия: нет в промте и нет ратификации — пинг. Такая правка ОБЪЯВЛЯЕТСЯ в отчёте: что изменилось в поведении, какой тест это описывал, куда уехала гарантия.
|
||||
- ⛔ **ОТРИЦАТЕЛЬНЫЙ ЗАМЕР ОБЯЗАН ДОКАЗАТЬ, ЧТО СПРОСИЛ СУЩЕСТВУЮЩЕЕ.** «Ноль строк» и «нет такой таблицы/файла/поля»
|
||||
в выводе НЕРАЗЛИЧИМЫ и одинаково выглядят успехом — а в деньгах это разница между «не потратили» и «не смотрели».
|
||||
⇒ рядом с нулём ПЕЧАТАЕТСЯ КОНТРОЛЬНАЯ величина, доказывающая, что вопрос задан существующему предмету
|
||||
(«БД без этой таблицы: 0», «файлов прибор прочёл: 67»). ⛔ **Именно печатается, а не упоминается:** фраза
|
||||
«проверено с контрольной строкой» — это утверждение О проверке, и читатель отчёта видит слово, а не число.
|
||||
Иначе норма ловит замер и НЕ ловит отчёт о нём, то есть переносит дефект на шаг дальше — туда, где смена
|
||||
06.09 ловила его пять раз. Поправку принёс автор исходного замера, нарушив её в том же письме, где предложил. Замер 06.09: сессия
|
||||
весь день писала `$0` ПО РАССУЖДЕНИЮ, пошла мерить — и первый же запрос дал `COUNT(*) = 0` по таблице, которой в
|
||||
схеме НЕТ. Пере-замер по настоящим таблицам с контрольной строкой дал честный ноль. **Прибор ответил на свой
|
||||
вопрос, а прочитан был как ответ на твой** — тот же класс, что `D39.202`, только в проверке ДЕНЕГ.
|
||||
- ⛔ **ОТРИЦАТЕЛЬНЫЙ ЗАМЕР ОБЯЗАН ДОКАЗАТЬ, ЧТО СПРОСИЛ СУЩЕСТВУЮЩЕЕ.** «Ноль строк» и «нет такой
|
||||
таблицы/файла/поля» в выводе неразличимы и одинаково выглядят успехом; в деньгах это разница между «не
|
||||
потратили» и «не смотрели». ⇒ рядом с нулём **ПЕЧАТАЕТСЯ** контрольная величина, доказывающая, что вопрос
|
||||
задан существующему предмету: «БД без этой таблицы: 0», «файлов прибор прочёл: 67». ⛔ Именно печатается, а
|
||||
не упоминается: «проверено с контрольной строкой» — утверждение О проверке, читатель видит слово вместо
|
||||
числа, и норма ловит замер, но не отчёт о нём (`D39.202`, `D39.217` п.2б).
|
||||
- **Мандат самопроверки в промтах сессий (обязателен, решение владельца):** промты полигон-сессий — и вообще любых пишущих код / запросы к моделям — ДОЛЖНЫ явно требовать ревью ИСПОЛНЕНИЕМ: своего кода + сформированных запросов к моделям + полученных результатов. Сессии регулярно ошибаются и багуют, и это искажает результат; **самоотчёт «проверено» без исполнения регулярно оказывается ложным и стоит денег**. Бэкенд-промты — явный бэкенд-ревью после кода (обычно отрабатывает по опыту, но требовать явно). Пост-хок адверсариальная верификация оркестратора при лендинге — второй рубеж, НЕ замена самопроверки.
|
||||
⚠ **Исполнения мало: промт заказывает адверсариальный проход сессии по СВОЕЙ готовой работе; глубину и веер сессия выбирает под предмет, промт даёт направление — что в этом паке уязвимо.**
|
||||
⛔ **МУТАЦИЯ ЗАСЧИТЫВАЕТСЯ ПО ТЕКСТУ СООБЩЕНИЯ, А НЕ ПО ФАКТУ КРАСНОТЫ.** Замер 06.09: мутация
|
||||
«подметать все логи без разбора» покраснила гейт — сообщением «рецепт НИКОГДА не удаляет старый лог», то есть
|
||||
о рецепте, который первым же действием удалял их все. Причина: `make` клеит префикс тишины к первой команде,
|
||||
первый токен стал `@rm`, и детектор удаления его не увидел. **Правый вердикт по неправой причине — дыра, а не
|
||||
поимка**, и от настоящей поимки он отличается ровно тем, прочёл ли кто-нибудь ТЕКСТ, а не цвет. Нашла зона,
|
||||
потому что формулировка не сошлась с тем, что она мутировала.
|
||||
⭐ **ПРИЁМ, СТОЯЩИЙ ОДНОЙ СТРОКИ И НИ ОДНОГО АГЕНТА (замер 06.09):** когда приходит письмо «всё закрыто»,
|
||||
перестань проверять ЧУЖИЕ правки и иди перечитывать СВОИ утверждения о том, что закрыто. Из шести случаев
|
||||
класса «прибор ответил на свой вопрос» за смену два нашлись именно так, и оба — автором утверждения, а не
|
||||
ревьюером. Письмо «всё закрыто» — сигнал не расслабиться, а сменить предмет проверки на собственный.
|
||||
⛔ **МУТАЦИЯ ЗАСЧИТЫВАЕТСЯ ПО ТЕКСТУ СООБЩЕНИЯ, А НЕ ПО ФАКТУ КРАСНОТЫ.** Читай ТЕКСТ падения: говорит ли
|
||||
он про сломанное тобой. Правый вердикт по неправой причине — дыра, а не поимка, и от настоящей поимки
|
||||
отличается только тем, прочёл ли кто-нибудь текст, а не цвет (`D39.217` п.2в).
|
||||
⭐ **Пришло письмо «всё закрыто» — иди перечитывать СВОИ утверждения о закрытом, а не чужие правки.**
|
||||
⚠ **Fable 5** — обычно хватает одного-двух агентов, но это РЕКОМЕНДАЦИЯ, не потолок. Модель задавай агенту ЯВНО и знай, сколько их у тебя работает.
|
||||
- **Git-координация мультисессий:**
|
||||
- **Коммитит только оркестратор.** Сессии зон — бэкенд, полигон, фронт, платформа — не коммитят: своё дерево готовят и передают на лендинг (исключение: пре-рег фризы полигона). Чужую зону не трогает НИКТО.
|
||||
|
|
|
|||
|
|
@ -20,35 +20,23 @@
|
|||
канал между сессиями (прямой — блок 12). **Зона записи:** `docs/` + корневые онбординг-доки + записи/пинги в зонных
|
||||
журналах `frontend-PROGRESS.md`/`platform-PROGRESS.md`. Чужой код читаешь — не правишь; коммитишь
|
||||
ВСЁ ты (исключение — пре-рег фризы полигона).
|
||||
⛔ **ЛОВУШКА, СРАБОТАВШАЯ ДВАЖДЫ ЗА ОДНУ СМЕНУ (05.09) — прочти прежде, чем коммитить `docs/PROGRESS.md`.**
|
||||
Pathspec-форма `git commit -- <пути>` защищает от чужого в ИНДЕКСЕ, но НЕ защищает от чужого ВНУТРИ
|
||||
файла твоей зоны: она берёт рабочее состояние файла целиком. А `docs/PROGRESS.md` — единственный файл
|
||||
зоны `docs/`, в который ПИШУТ чужие зоны (секции «Бэкенд»/«Полигон», решение владельца). Итог: твой
|
||||
коммит про свою строку бэклога уносит чужой отчёт под твоим сообщением. Содержимое цело, теряется
|
||||
атрибуция; **историю НЕ переписывать** — сообщить владельцу и зоне.
|
||||
⇒ **Исполнимый шаг, а не «быть внимательным»: ПЕРЕД каждым коммитом ЛЮБОГО ЗОННОГО ЖУРНАЛА смотри
|
||||
`git diff -- <файл>` и опознай, есть ли там ЧУЖИЕ секции.** ⛔ **Список полный, и он НЕ сводится к
|
||||
`docs/PROGRESS.md`:** `docs/PROGRESS.md` (секции «Бэкенд»/«Полигон») · `platform/docs/platform-PROGRESS.md` ·
|
||||
`frontend/docs/frontend-PROGRESS.md` · `platform/docs/DEFECT_REGISTER.md`. ⚠ **Первая редакция этого шага
|
||||
называла ОДИН файл, и ловушка сработала третий раз — на `platform-PROGRESS.md`**: правило было писано
|
||||
про ЭКЗЕМПЛЯР, а не про КЛАСС, и потому не сработало там, где класс тот же. Класс: любой файл, куда
|
||||
пишет зона, а коммитишь ты. Есть — либо коммить их отдельным коммитом с сообщением о ЧУЖОЙ работе (тогда атрибуция в сообщении, а не в авторстве), либо дождись, пока зона допишет, и назови её в сообщении. Знание «этот файл общий» было записано ещё утром и не помогло — потому что не называло ДЕЙСТВИЯ.
|
||||
⛔ **СТАТУС-БОРД УКАЗЫВАЕТ, А НЕ КОПИРУЕТ — иначе одна правка становится четырьмя.** Замерено 06.09:
|
||||
один денежный факт («платформенная половина построена, ставки за главу нет») жил В ЧЕТЫРЁХ файлах —
|
||||
`15-money-path.md`, шапка `09-target-architecture.md`, `17-seam-inbound-law.md`, ряд бэклога. Сплошной
|
||||
аудит увидел его как ОДИННАДЦАТЬ находок, и на каждую я писал правку заново; когда факт сменился,
|
||||
менять пришлось все четыре, и три из них — пересказ. ⇒ **Механика живёт у своего ПРЕДМЕТА (денежный
|
||||
путь — в `15-money-path.md`); борды и реестры несут СТАТУС плюс указатель на носитель.** Правило
|
||||
проверяется вопросом «если этот факт завтра изменится, сколько файлов придётся тронуть?» — больше
|
||||
одного значит копия. ⚠ Не относится к ЖУРНАЛУ решений: тела нот — улика по `D23.3`, они описывают
|
||||
дерево на ДАТУ и не пере-писываются даже когда протухли; им нужна эррата, а не указатель.
|
||||
⛔ **ЧУЖОЕ ВНУТРИ ФАЙЛА ТВОЕЙ ЗОНЫ.** Pathspec-форма `git commit -- <пути>` защищает от чужого в ИНДЕКСЕ,
|
||||
но не от чужого ВНУТРИ файла: она берёт его рабочее состояние целиком. Файлы, куда пишет ЗОНА, а коммитишь
|
||||
ТЫ: `docs/PROGRESS.md` (секции «Бэкенд»/«Полигон») · `platform/docs/platform-PROGRESS.md` ·
|
||||
`frontend/docs/frontend-PROGRESS.md` · `platform/docs/DEFECT_REGISTER.md` — и любой новый файл этого класса.
|
||||
⇒ **ПЕРЕД коммитом каждого из них: `git diff -- <файл>` и опознать чужие секции.** Есть чужое — либо
|
||||
отдельный коммит с сообщением о ЧУЖОЙ работе (атрибуция в сообщении), либо дождаться зону и назвать её в
|
||||
сообщении. Уже унёс — историю НЕ переписывать, сообщить владельцу и зоне.
|
||||
|
||||
⛔ **ВТОРАЯ ЛОВУШКА ТОГО ЖЕ РОДА — ПЕРЕ-НАВЕДЕНИЕ ЯКОРЕЙ СПЛОШНОЙ ЗАМЕНОЙ.** Правя протухшие `file:line`,
|
||||
легко заменить строку пути ВЕЗДЕ. Но тот же путь стоит в доках дважды в разных ролях: как ЖИВАЯ ССЫЛКА
|
||||
(её чинить надо) и как УЛИКА в описании дефекта — «код цитирует вот этот путь, а его удалили» (её
|
||||
чинить НЕЛЬЗЯ: замена превращает описание поломки в описание её отсутствия). Замерено 06.09: так была
|
||||
заландена ПЕРЕВЁРНУТОЙ клауза строки бэклога 299. ⇒ **перед сплошной заменой пути грепни его и раздели
|
||||
хиты на ссылки и улики; в описаниях дефектов путь не трогай.**
|
||||
⛔ **ОДИН НОСИТЕЛЬ НА ФАКТ** (`D39.112`; при ратификации — §«Ратифицируешь?»). Механика живёт у своего
|
||||
ПРЕДМЕТА (денежный путь — `15-money-path.md`); статус-борды и реестры (шапка `09-target-architecture.md`,
|
||||
таблицы `docs/README.md`) несут СТАТУС и указатель на носитель. Проверка: «если факт завтра изменится, сколько файлов придётся тронуть?» —
|
||||
больше одного значит копия. ⚠ Не относится к телам D-нот: они описывают дерево на ДАТУ, им нужна эррата, а
|
||||
не указатель (`D23.3`).
|
||||
|
||||
⛔ **ЯКОРЯ НЕ ЧИНЯТСЯ СПЛОШНОЙ ЗАМЕНОЙ.** Один и тот же путь стоит в доках в двух ролях: ЖИВАЯ ССЫЛКА (чинить)
|
||||
и УЛИКА в описании дефекта — «код цитирует вот этот путь, а его удалили» (не чинить: замена переворачивает
|
||||
описание поломки в описание её отсутствия). ⇒ **перед заменой грепни путь и раздели хиты на ссылки и улики.**
|
||||
|
||||
## Онбординг и состояние
|
||||
|
||||
|
|
@ -67,7 +55,9 @@ Pathspec-форма `git commit -- <пути>` защищает от чужог
|
|||
|
||||
### Пишешь промт сессии?
|
||||
|
||||
**Функции роли:** промты сессий → приёмки → ратификации D-нотами → синхронизация доков → ответы владельцу.
|
||||
**Функции роли** (владелец 07.09 — «тим-лид»): **направление проекта** → промты сессий → контроль их завершённости →
|
||||
приёмки → ратификации D-нотами → синхронизация доков → ответы владельцу. ⚠ Признак подмены роли: смена ушла в
|
||||
правки якорей и ответы на письма, а очередь не сдвинулась — значит работал за сессии.
|
||||
|
||||
**Обязательные блоки — все 13 (счёт держать равным нумерации ниже); перед выдачей два рубежа: механическая сверка промта против этого
|
||||
списка (таблицей/грепом) + опровергатель-субагент к самому промту (получает промт, список, листы
|
||||
|
|
@ -96,17 +86,12 @@ Pathspec-форма `git commit -- <пути>` защищает от чужог
|
|||
УКАЗАТЕЛЬ на файл, а не имя, велит сессии вписать туда себя и повторяет дословно «канала нет ⇒ НЕ
|
||||
искать»; эхо (блок 9) идёт первым действием по адресу из файла и служит проверкой канала.
|
||||
|
||||
13. **КРИТЕРИЙ ЗАВЕРШЁННОСТИ — слово владельца 07.09: сессия доводит работу до логического конца САМА.**
|
||||
Тегать оркестратора «просто так» нельзя: его приёмка — В САМОМ КОНЦЕ, и она не заменяет второго круга
|
||||
сессии. ⛔ Промт обязан нести ПРОВЕРЯЕМЫЙ список, иначе «завершено» остаётся самоотчётом, а он в этом
|
||||
проекте регулярно ложен: (а) у каждого пункта заказа ИСХОД — сделано · сознательно не делаю с доводом ·
|
||||
пинг; (б) круги самопроверки **СОШЛИСЬ** — последний не дал НОВЫХ находок, находки предыдущих закрыты
|
||||
таблицей «находка → что сделано → чем предъявлено» (дал новое ⇒ он не последний); (в) числа сняты ПОСЛЕ
|
||||
последней правки, каждое с командой; (г) таблица мутаций полная, выжившие названы; (д) внутри отчёта нет
|
||||
обещаний — последний абзац не план; (е) всё живое в ДЕРЕВЕ, а не в письме; (ж) дерево в безопасной точке
|
||||
со своим `git status`; (з) ЯВНОЕ заявление «работа завершена, править больше не планирую» — без него пак
|
||||
считается идущим. ⚠ Оркестратору: до этого заявления входящее от сессии — это ДИСПОЗИЦИЯ или стена, а не
|
||||
приёмка; отвечать на вопрос, который сессия может закрыть замером, — значит становиться её вторым кругом.
|
||||
13. **Критерий завершённости** (владелец 07.09): сессия доводит работу до конца САМА, приёмка идёт последней и
|
||||
вторым кругом сессии не служит. Промт несёт ПРОВЕРЯЕМЫЙ список, иначе «завершено» остаётся самоотчётом:
|
||||
у каждого пункта заказа исход (сделано · не делаю с доводом · пинг) · круги СОШЛИСЬ — последний не дал НОВЫХ
|
||||
находок, прежние закрыты таблицей «находка → что сделано → ЧЕМ ПРЕДЪЯВЛЕНО» · таблица мутаций полная,
|
||||
выжившие названы · числа сняты после последней правки · всё живое в ДЕРЕВЕ, а не в письме · явное
|
||||
«работа завершена, править не планирую». Без последнего пак считается идущим.
|
||||
|
||||
Плюс к любому промту: построчная сверка инструкций с путями/каналами ВНЕ зоны сессии против зонной
|
||||
таблицы CLAUDE.md (D39.99 п.4) · состав против ВСЕХ листов владельца (реестр требований · зонные
|
||||
|
|
@ -145,10 +130,9 @@ D-ссылка грепается по D-логу · mid-flight аддендум
|
|||
|
||||
### Принимаешь работу?
|
||||
|
||||
⛔ **СНАЧАЛА КОНТРОЛЬ ЗАВЕРШЁННОСТИ, ПОТОМ ПРИЁМКА (слово владельца 07.09).** Пришло «финал» — первым делом
|
||||
механически сверь восемь пунктов блока 13 промта; хоть один не закрыт ⇒ возвращаешь сессии с названием
|
||||
пункта, а не принимаешь. Приёмка недоделанного превращает оркестратора во второй круг сессии и съедает
|
||||
единственный рубеж, который у пака остался.
|
||||
⛔ **Сначала контроль завершённости, потом приёмка** (владелец 07.09): пункты блока 13 сверяются МЕХАНИЧЕСКИ
|
||||
(таблицей/грепом; перечтение отчёта не считается), не закрыт хоть один — возвращаешь с названием пункта. Приёмка недоделанного делает тебя вторым кругом сессии и съедает последний
|
||||
рубеж пака.
|
||||
|
||||
Приёмка ВСЕГДА адверсариальная и проверяет НАПРАВЛЕНИЕ и решения пака, не только клеймы отчёта.
|
||||
|
||||
|
|
@ -219,7 +203,7 @@ pathspec своей зоны опасен (чужие сессии пишут В
|
|||
|
||||
D-нота = РЕШЕНИЕ + указатель на механику (она в журнале зоны), без саги, пересказа диалога и оценочных эпитетов;
|
||||
дословные цитаты владельца — только как носитель ратификации. Тем же коммитом: строка реестра
|
||||
`05-decisions-index.md` + бамп шапки-диапазона обоих носителей. **Один носитель на факт** (D39.112):
|
||||
`05-decisions-index.md` + бамп шапки-диапазона обоих носителей. **Один носитель на факт** (правило — §«Кто ты»):
|
||||
числа — скриптом; список живёт в ОДНОМ месте, остальные указывают; сводка, повторённая в пяти
|
||||
носителях, гниёт. Эрраты к фактам старых нот — в КАРТУ шапки D-лога (append-only, тел не переписывать,
|
||||
D23.3). Владельцу на решение: деньги сверх мелочи · скоуп-сдвиги · продукт · 18+.
|
||||
|
|
@ -254,16 +238,14 @@ Y»), а не «посмотри». По умолчанию **Fable 5**, при
|
|||
ИМЕНЕМ. Такой агент держит СВОЙ контекст: с ним ведут долгий разговор параллельно работе, дослав
|
||||
вопрос тому же агенту, а не подняв нового. Ему прямо разрешать не экономить контекст — читать доки
|
||||
целиком, грепать репозиторий, ходить в интернет. Не звать там, где хватает своего суждения или
|
||||
механической сверки.
|
||||
механической сверки. ⚠ Жёсткая редакция `D39.217` п.6а («окей напарника на КАЖДОЕ изменение») смягчена
|
||||
владельцем 07.09 до этой формулировки — `D39.220`.
|
||||
|
||||
## Оплаченные факты — держать в промтах и приёмках (справочник)
|
||||
|
||||
- Провайдерские факты — цены, мины слагов и thinking — живут в `00-provider-quirks.md`; копий здесь НЕТ.
|
||||
⚠ **Цены и окна DeepSeek — ТОЛЬКО `docs/experiments/00-provider-quirks.md` (греп `ПИК DEEPSEEK`), копии
|
||||
здесь нет намеренно.** Испр. 05.09: прежняя редакция держала копию и вдобавок утверждала, что в квирках
|
||||
факта НЕТ, — ложное отрицание из грепа, который не мог сработать. Копия при этом отстала от носителя на
|
||||
одну поправку и стоила бы вдвое дороже на каждой платной пробе выходного дня. **Урок, ради которого это
|
||||
здесь: копия факта стареет молча, а отрицание проверяется командой, которую можно воспроизвести.**
|
||||
- Провайдерские факты — цены, мины слагов, thinking — ТОЛЬКО `docs/experiments/00-provider-quirks.md`
|
||||
(цены и окна DeepSeek — греп `ПИК DEEPSEEK`). Копий здесь нет намеренно: копия факта стареет молча.
|
||||
Отрицательное утверждение о носителе — только командой, которую можно воспроизвести.
|
||||
- Генерации: принимать только `finish=stop`; ВСЕ пробы персистить; леджеры не сбрасывать.
|
||||
- Судейские риги: per-vote персист · полно-evidence окна (окна с усечённой уликой запрещены) · оба порядка ·
|
||||
шум-полы измерены (числа — в отчётах полигона) — маргинальное не интерпретировать без floor-гейта ·
|
||||
|
|
@ -272,38 +254,23 @@ Y»), а не «посмотри». По умолчанию **Fable 5**, при
|
|||
дифф, если менялись только версии/хеши.
|
||||
- Прод-инъекцию воспроизводить `tmctl translate` + `LOG_LLM_BODIES` байт-диффом (не по
|
||||
`injected_ids`); порт-зеркала — «при расхождении верить Go».
|
||||
- ⛔ **«ИСПРАВЛЕНО» ГОВОРИТСЯ ТОЛЬКО ПОСЛЕ ГРЕПА ПО ОТОЗВАННОЙ ФОРМУЛИРОВКЕ, а не после того, как ты её
|
||||
исправил в голове.** Шаг: `grep -c "<снятая фраза>" <файл>` — ноль либо только внутри пометки-эрраты,
|
||||
цитирующей отозванное. Замер 06.09: класс сработал ТРИЖДЫ за смену — «внесён в состав минора» о правке,
|
||||
которой в каноне не было (эррата 06.09-а) · «исправлено вместе с остальными» напарнику о носителе, до
|
||||
которого правка не дошла · и он же остался немаркированным. **Пишущий отчёт описывает своё НАМЕРЕНИЕ и
|
||||
читает его как состояние файла** — греп стоит секунду и различает их.
|
||||
- ⛔ **ТО ЖЕ ПРО «ЗАПИСАНО»: ПИСЬМО, ОБЪЯВЛЯЮЩЕЕ НАХОДКУ ЗАВЕДЁННОЙ, САМО НОСИТЕЛЕМ НЕ ЯВЛЯЕТСЯ.**
|
||||
Формулировка строителя; замер 06.09: за смену **ПЯТЬ** находок жили только в переписке — две находки
|
||||
платформенной зоны без рядов · нечитаемое оглавление · непрогоняемый каталог мутаций · корректность
|
||||
разреза · манифестная половина EPUB на живых книгах. **Две из них я лично объявил учтёнными** («твой
|
||||
инвариант вошёл в тот же ряд»), не заведя строки, — и обе нашёл не я, а автор находки, пойдя проверять
|
||||
не чужие правки, а СВОИ УТВЕРЖДЕНИЯ о том, что всё учтено. ⇒ перед словом «завёл» — `grep` по ЖИВОМУ
|
||||
бэклогу НА ПРЕДМЕТ находки, а не на её название: название совпадёт с соседней строкой, предмет — нет.
|
||||
- ⛔ **ЧИСЛО НАЗЫВАЕТ ДВЕ ВЕЩИ: ДЕРЕВО И ПОПУЛЯЦИЮ.** Дерево — sha коммита либо «рабочее дерево + что в нём
|
||||
было незакоммичено». Популяция — ЧТО именно посчитано, потому что два честных прибора считают разное и
|
||||
расходятся молча. Замер 06.09, стоивший верной записи: я написал «851 верхнеуровневых теста», верификатор
|
||||
предъявил «на всех коммитах 850 или меньше» и потребовал снять, я снял — а число было ВЕРНО. Он считал
|
||||
`func Test`, мой прибор считает верхнеуровневые ПРОГОНЫ вывода `go test -v`, то есть `Test` **плюс `Fuzz`**;
|
||||
у платформы два `Fuzz`-таргета, и вся разница была в них (`93f098c`: 849+2=**851**).
|
||||
- ⛔⛔ **ПРОВЕРКА ЧУЖОЙ НАХОДКИ ЕГО ЖЕ МЕТОДОМ — НЕ ПРОВЕРКА.** Тем же замером 06.09 я «пере-мерил сам, а не
|
||||
поверил» — и воспроизвёл его команду, а значит и его ошибку; совпадение доказало лишь, что мы оба считаем
|
||||
одно и то же не то, и на этом «подтверждении» я заландил снятие ВЕРНОГО числа. **Бери ДРУГОЙ прибор:**
|
||||
другую популяцию, другую команду, другую сторону улики. Совпавший результат стоит ровно столько, сколько
|
||||
стоит независимость инструмента.
|
||||
- ⚠ **Правя носитель, ставь на исправленные места пометку тем же движением** (норма `535f60a`): эррата без
|
||||
маркера на хвосте оставляет прежнюю формулировку стоять немаркированной, и следующий читатель возьмёт её.
|
||||
- Промт-архивация: только отработанные, с баннером-исходом; residual-трекеры держать активными.
|
||||
⚠ **ПРИЁМКА ПАКА И РЕТИРОВАНИЕ ЕГО ПРОМТА — ОДИН АКТ, не два дела подряд.** Пока промт стоит в
|
||||
таблице активных, отработанный пак остаётся ЖИВЫМ ЗАДАНИЕМ: холодная сессия по `CLAUDE.md` идёт в эту
|
||||
таблицу ПЕРВЫМ делом и берёт оттуда свою работу. Замер 06.09: форма заказа принята в 00:47, промт снят
|
||||
в 01:43 — 56 минут окна; движковый пак принят в 01:43, промт снят в 01:51, то есть ПОВТОР за один час
|
||||
(эррата 06.09-в). Снимай промт тем же заходом, что пишешь акт приёмки.
|
||||
- ⛔ **«ИСПРАВЛЕНО» — ТОЛЬКО ПОСЛЕ ГРЕПА ПО ОТОЗВАННОЙ ФОРМУЛИРОВКЕ.** `grep -c "<снятая фраза>" <файл>` —
|
||||
ноль либо только внутри пометки-эрраты. Отчёт описывает НАМЕРЕНИЕ и читается как состояние файла; греп
|
||||
различает их за секунду (`D39.217` п.4).
|
||||
- ⛔ **«ЗАВЕДЕНО» — ТОЛЬКО ПОСЛЕ ГРЕПА ПО ЖИВОМУ БЭКЛОГУ, и грепать НА ПРЕДМЕТ находки, а не на её
|
||||
название**: название совпадёт с соседней строкой, предмет — нет. Письмо, объявляющее находку заведённой,
|
||||
носителем не является.
|
||||
- ⛔ **ЧИСЛО НАЗЫВАЕТ ДЕРЕВО И ПОПУЛЯЦИЮ.** Дерево — sha либо «рабочее дерево + что незакоммичено».
|
||||
Популяция — ЧТО посчитано: два честных прибора считают разное и расходятся молча (`func Test` против
|
||||
верхнеуровневых прогонов `go test -v`, то есть `Test` плюс `Fuzz`).
|
||||
- ⛔⛔ **ЧУЖУЮ НАХОДКУ ПРОВЕРЯЙ ДРУГИМ ПРИБОРОМ.** Повторив его команду, воспроизводишь и его ошибку;
|
||||
совпадение доказывает лишь, что оба считаете одно и то же не то. Бери другую популяцию, другую команду,
|
||||
другую сторону улики (`D39.217` п.2а).
|
||||
- ⚠ **Правя носитель, ставь пометку тем же движением** (норма `535f60a`): эррата без маркера на хвосте
|
||||
оставляет прежнюю формулировку немаркированной, и следующий читатель возьмёт её.
|
||||
- **Промт-архивация: снимай промт из таблицы активных ТЕМ ЖЕ заходом, что пишешь акт приёмки.** Пока он
|
||||
там стоит, отработанный пак остаётся живым заданием — холодная сессия берёт работу именно оттуда.
|
||||
Residual-трекеры держать активными, в архив — с баннером-исходом.
|
||||
|
||||
## Чего НЕ делать
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@
|
|||
| Роль | Активный промт | Статус |
|
||||
|---|---|---|
|
||||
| Оркестратор | [ORCHESTRATOR_SESSION_PROMPT.md](ORCHESTRATOR_SESSION_PROMPT.md) | роль и нормы; счётчик роли — CURRENT-STATE |
|
||||
| **Бэкенд · КОНСИСТЕНТНОСТЬ** | [BACKEND_CONSISTENCY_SESSION_PROMPT.md](BACKEND_CONSISTENCY_SESSION_PROMPT.md) | приоритет владельца №1 «закон банка честно»: гард перекрытия окон (267 — ⚠ предмет СУЖЕН 06.09: два гарда в коде уже есть, непокрыт один случай) · совет, который движок не исполняет (320а) · честный комментарий постчека (318) · два ложных комментария (321 · попутный из 322). плюс попутный проход §5а «логические расхождения задумано против сделано» — списком в отчёт, без тихих правок. ⛔ **Строка 295 и ПРЕДМЕТ строки 322 из пака СНЯТЫ** (§4.5 промта) — прежняя редакция этой ячейки называла их составом, и это было ложью о заказе |
|
||||
| **Бэкенд · КОНСИСТЕНТНОСТЬ** | [BACKEND_CONSISTENCY_SESSION_PROMPT.md](BACKEND_CONSISTENCY_SESSION_PROMPT.md) | приоритет владельца №1 «закон банка честно»: гард перекрытия окон (267 — ⚠ предмет СУЖЕН 06.09: два гарда в коде уже есть, непокрыт один случай) · совет, который движок не исполняет (320а) · честный комментарий постчека (318) · два ложных комментария (321 · попутный из 322). плюс попутный проход §5а «логические расхождения задумано против сделано» — списком в отчёт, без тихих правок. ⛔ **Строка 295 и ПРЕДМЕТ строки 322 в пак НЕ входят** (§4.5 промта) |
|
||||
| Бэкенд · СТРУКТУРА ГЛАВ | активного НЕТ | пак 1 «форматы и честный словарь» ОТРАБОТАН, ПРИНЯТ С ДОФИКСОМ и ЗАЛЕНДЕН 06.09 — акт **D39.210**, `2f65d1d`; промт в `archive/prompts/CHAPTER_STRUCTURE_SESSION_PROMPT_2026-09-05.md` с баннером исхода. ⚠ **ПАК 2 (лексиконы не-CJK, корпус, замер оракулом, валидаторы) — НЕ НАПИСАН и ждёт файлов владельца** (страта скрейпов); промта под него нет, брать нечего. Открытые следствия пака 1 — строки бэклога **302** (резка по якорям) и **303** (безъюнитная грамматика) |
|
||||
| Бэкенд · отозванный | активного НЕТ | пак КАЧЕСТВО написан и ОТОЗВАН до выдачи 05.09 (`archive/prompts/…_WITHDRAWN.md`): предмет дешевле пака — точность чекера уже измерена, пере-снять её стоит одной команды. Следующий пак — СТРУКТУРА ГЛАВ (решение владельца 05.09 «любая книга любого формата»), пишется |
|
||||
| Бэкенд · прежний | активного НЕТ | пак «денежный стоп» ОТРАБОТАН и ПРИНЯТ С ДОФИКСОМ 05.09 — акт **D39.206** (`81a89e9` + `616a8e4`), промт в `archive/prompts/` с баннером исхода. Следующая работа зоны — строки **291** (флаг вместо клина, `D39.204`) · **294** (форма «сколько добавить», `D39.203`) · **296** (точечная перегенерация по промаху глоссария, после 295) |
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue