File the obligations the sweep found without a carrier, refresh the owner-facing question list, and move the panel isolation norm into the prompt that gets read

This commit is contained in:
heaven 2026-08-08 03:04:55 +03:00
parent 1725dc566e
commit 359fc8611e
3 changed files with 36 additions and 4 deletions

View file

@ -32,6 +32,7 @@
## Текущее состояние и очередь — НЕ здесь
Они живут в `docs/PROGRESS.md`: CURRENT-STATE (шапка) и ЕДИНЫЙ БЭКЛОГ (единственный трекер). Производные числа — `python3 docs/scripts/counts.py`, руками не переписывать.
## Онбординг (порядок чтения, ~20 мин после диеты 25.07)
@ -48,6 +49,18 @@
- **Анти-паттерны приёмки:** приёмка проверяет НАПРАВЛЕНИЕ и решения пака, не только клеймы отчёта. Шесть ловушек: след отчёта (проверяешь лишь названные автором места) · связность вместо истинности (форма отчёта убеждает сама) · соглашательство с чёткой позицией (распространенная ошибка ллм моделей склонных соглашаться с человеком) · рационализация задним числом · слепой участок общих моделей обученных на одинх и тех же данных (выводы одной модели усиливают уверенность в правильности другой) · экономия усилия на неудобном. Механика-минимум: ≥1 верификатор выносит мнение по промту+диффу ДО чтения отчёта · ≥1 ищет дефекты ВНЕ карты отчёта · экспериментальный клейм без ре-рана (хотя бы редуцированного) в D-ноте помечается «со слов сессии», не «исполнением» · «решение владельца», известное только со слов сессии, НЕ ратифицируется — список confirm/deny владельцу ДО лендинга, если решение несущее · к утверждениям самой приёмки та же дисциплина «заявление=команда» (догадку фактом не подавать) · оценочные эпитеты в ноты не писать.
- **Пре-рег дисциплина полигона:** фриз коммитом ДО платных вызовов (единственный коммит сессии); изменения после = новый experiment-ID; девиации — явно в отчёте; стоп-гейты по бюджету легитимны; «если не влезает — стоп и пинг, не резать молча».
- **Лендинг:** микро-дефекты доков чинишь сам с пометкой «испр. оркестратором»; отчёты получают ревью-шапку; код не правишь — находки в фикс-лист; коммиты скоуп-раздельные, стейджинг пофайловый; `git status` перед каждым коммитом (в дереве бывают ≥2 живые сессии) + **`git diff --cached` перед `commit`**; коммит — ТОЛЬКО pathspec-формой `git commit -- <путь>`, стейдж и коммит одной командой (git-канон v2, D39.98) — голый коммит уносит ВЕСЬ индекс: чужой staged `git mv` уедет в твой коммит (инцидент 77dd9b8); `add` общего файла сметает чужую секцию — diff-контент/`add -p`. **Лендинг, двигающий файлы или состав активных промтов, обновляет `docs/README.md` тем же коммитом** (норма D39.80; урок 02.08: README объявлял заленденный пак «можно запускать» с мёртвой ссылкой — поймал не процесс, а новая сессия). Статус/голову README не несёт вовсе — единственный носитель состояния = PROGRESS CURRENT-STATE. **Перед коммитом ратификации — механический чек головы, и он теперь ИНСТРУМЕНТ, а не памятка:** `python3 docs/scripts/counts.py --check` печатает голову по трём носителям (последняя нота D-лога · шапка-диапазон · CURRENT-STATE) и все производные числа доков, ненулевой код = расхождение; тот же скрипт зовёт зонный хук `docs/scripts/githooks/pre-commit` при каждом коммите, задевающем D-лог или PROGRESS (ПРЕДУПРЕЖДАЕТ, не блокирует — жёсткий гейт только словом владельца). Заведено потому, что голова отставала ТРИЖДЫ у трёх разных оркестраторов (D39.81 · D39.83 · D39.112 п.5б): одна и та же ошибка у независимых сессий на одном поле — свойство поля. **Производные числа (счёт очереди, зоны, вес открытых строк реестра) руками больше не переписывать** — носитель несёт команду, литерал сверяется этой же командой в том же касании.
- **ИЗОЛЯЦИЯ ПАНЕЛЕЙ — жёстко, куплено инцидентом D39.113** (агент панели выполнил `git checkout -- .`
в реальном дереве вместо песочницы и уничтожил незакоммиченные правки СЕМИ файлов двух чужих
сессий; одно восстановлено из случайного бэкапа, две редакции отчёта потеряны). Норма жила только
в D-логе — вписана сюда, потому что читают промт. **(1) Свой каталог песочницы КАЖДОМУ агенту** —
общий путь даёт гонку и исчезающие каталоги, и именно так исчезла та песочница. **(2) Запрет
state-changing git ПЕРЕЧИСЛЕНИЕМ** (`reset` · `checkout` · `restore` · `clean` · `stash` · `add` ·
`commit` · `rebase` · `push`), а не фразой «не редактируй»: git правит дерево не редактором.
В `.claude/settings.local.json` эти команды теперь в `deny` — проверено, безвредный `git stash list`
отбивается; но настройки не коммитятся, на свежем клоне защиты нет. **(3) Бэкап чужого
незакоммиченного ДО запуска панели** — `git diff > файл` вне репозитория плюс копии нетрекаемых.
**(4) Мандат чисто читающий**, и «работай в копии» без выданного пути — приглашение к тому же
инциденту.
- **ОДИН НОСИТЕЛЬ НА ФАКТ, остальные — указатель (норма D39.112, куплена дорого).** Один лендинг зоны
законно рождает пять записей: раздел зонного журнала · D-нота · строка CURRENT-STATE · строка
реестра дефектов · строка бэклога. Это не дублирование — у них разные читатели и разные срезы:

File diff suppressed because one or more lines are too long

View file

@ -1,4 +1,4 @@
# Журнал решений оркестратора — контракт D1D39.115 (развязки 04.07 · пакеты 0910.07 · приёмка/качество-первым/пивот/эмпирика 1112.07 · арх-ресет+стройка пере-прогонного стека 1319.07)
# Журнал решений оркестратора — контракт D1D39.116 (развязки 04.07 · пакеты 0910.07 · приёмка/качество-первым/пивот/эмпирика 1112.07 · арх-ресет+стройка пере-прогонного стека 1319.07)
> **КАРТА АКТУАЛЬНОСТИ (ревизия D31, продлена до D38.2 [12.07]; исторические записи ниже НЕ переписываются — дисциплина D23.3).** Читая контракт целиком, держи под рукой, что чем перекрыто:
> ⚠ **Навигация (актуализация 07.08, эра D39.1xx):** append-only-дисциплина (D23.3) означает, что
@ -1637,3 +1637,19 @@ API-529-долг закрыт: 8-осевой refute-by-default воркфлоу
**6. На владельце — три вопроса, сессия их назвала сама.** (а) Метка «остановлена: лимиты» в дереве — сжатие ратифицированной фразы «перевод остановлен: лимиты исчерпаны», сделанное сессией; продуктовые слова по В-3/Ф-21 не её. (б) **К-13 (Ф-31): упереться в СВОЙ потолок прогона и остаться без кредита сегодня неразличимо**`paused_reason` имеет одно значение `credit_exhausted`, и первому из двух фраза врёт, а следующее действие у него другое. (в) Ф-30: глава без заголовка показана голым порядковым номером, потому что синтез «Глава N» запрещён К-3; это вопрос В-4, уже стоящий владельцу. Плюс три поля, придуманные сессией по её собственному признанию и ратифицированные мной выше: `default_chapters`, `maxLength: 200` у заголовка, `paused_reason` в кадре статуса.
**7. Открытые хвосты зоны, заведённые честно:** Ф-29 (мок едет в прод-бандл — цена того, что скриншот-цикл гоняет прод-сборку; папка удаляется в день живой платформы) · Ф-32 (замечания читаются пер-книжно, показываются пер-главно: экран починен, память нет — на книге с тысячами замечаний клиент тянет весь список ради трёх строк) · `ceiling_chapters` обязателен сегодня бесплатно, после первого реального прогона это станет ломающей правкой.
## D39.116 — АКТУАЛИЗАЦИЯ ДОКОВ: 78 находок свипа, отработанные промты в архив, живая ошибка счёта исправлена, три строки заведены (08.08). ✅
**1. Заказ владельца:** полная актуализация — занести незанесённое, перенести в архив сделанное, убрать воду, снять stale. Метод — read-only фан-аут по четырём осям (активные промты · stale-факты · вода и дубли · незанесённые обязательства) по ВСЕМ 107 живым докам (~25 тыс. строк), правки делал я. **Изоляция панели по норме D39.113:** свой каталог каждому агенту, запрет state-changing git перечислением (плюс тот же запрет теперь в `deny` настроек — проверено, `git stash list` отбивается), бэкап всего чужого незакоммиченного снят ДО запуска. Итог свипа: **78 находок** — 14 по промтам, 29 stale, 19 воды, 16 незанесённых.
**2. Живая ошибка в МОИХ числах, найденная и исправленная.** Счётчик `docs/scripts/counts.py` читал колонки таблицы СЛЕВА, а строка бэклога 127 законно несёт `seed|ruby|auto` внутри ячейки — разбор принимал за зону слово «ruby». В CURRENT-STATE стояло «зона бэкенд 62 строго / 79 широко» при истине 63/80. Исправлено: колонки читаются С КОНЦА (хвостовые короткие и `|` в них не бывает), **битая форма строки теперь расхождение, а не тихий `IndexError`**, голова берётся по МАКСИМАЛЬНОМУ номеру, а не по последней строке файла (в D-логе уже есть внеочередные аппенды `D39.17``D39.19``D39.18`), регекспы больше не прибиты к эре `D39`. Все четыре дефекта назвала панель ревью, ни один не был моей находкой.
**3. Отработанные промты — в архив с баннером-исходом.** `frontend/docs/S3_SESSION_PROMPT.md` (исполнен двумя сессиями, принят D39.115) и `platform/docs/PLATFORM_SESSION_PROMPT.md` (ЧЕТЫРЕ сессии, P3 принят D39.114) → копии в `docs/archive/prompts/`, указатели `docs/README.md` переписаны. Цена отсутствия баннера была названа прямо: следующая фронт-сессия открыла бы S3-промт с императивом «первый шаг — правки спеки» и **откатила бы ратифицированный контракт 0.2.0**. Из платформенного баннера убран рукописный перечень живых PD-строк — он разошёлся с реестром на первом же фиксе, то есть я сам нарушил свою же норму D39.112 «один носитель на факт»; заменён указателем на скрипт и реестр.
**4. Снятые stale, которые сработали бы на холодной сессии.** Живой бэкенд-промт нёс «в дереве живёт ЧУЖОЕ `platform/*`, ждёт приёмки P0» — платформа принята и залендена, а РЕАЛЬНО живая параллельная работа (полигон) в промте не названа вовсе; заменено на «сверь `git status` в начале сессии» с указанием живой зоны. Тот же промт велел писать пинг в `docs/PROGRESS.md` без протокола — файл держат три сессии, и его секция уже терялась (D39.113); дописан протокол «только append своей секции, CURRENT-STATE не касаться». `POLYGON_PACKAGE4` §1 требовал исполнить сид-обогащение, исполненное D32, указывая на МЁРТВЫЙ `guzhenren-seed.yaml` v1 при живом v2 — помечено исполненным. Компаньон КАНОНА контракта четверо суток называл себя «черновиком фронт-сессии S3 на ратификацию» — тот же класс, что шапка `info` спеки, исправлено. Зонный журнал фронта в «Текущем состоянии» говорил «S3 НЕ сделана, контракта нет» против собственной хроники; журнал платформы — «дерево НЕ закоммичено, ждёт приёмки» после лендинга. Висячие ссылки на удалённый патч `S3_CONTRACT_HANDOFF.md` починены в трёх живых доках (в D-логе оставлены как история — append-only).
**5. Заведены строки 146 · 147 · 148** (обязательства без носителя): два техдолга движка, жившие только в справочнике якорей (`prices_checked` гейтит $0-путь · `cache_write_per_m` под один TTL) · транспортные частичные research/21 §1617 (HTTP/1.1-escape как диагностика тихого усечения · assistant-prefill continuation вместо ре-рана) · **восстановление Приложения А контракта после инцидента** — решение владельца. Счёт очереди пере-выставлен скриптом: **123** строки · бэкенд 64 строго / 82 широко · «скоро» 33.
**6. Норма изоляции панелей перенесена из D-лога в промт оркестратора** — она жила только в ноте, а читают промт. Там же пустой заголовок «Текущее состояние и очередь — НЕ здесь» получил тело: где именно они живут и что числа берутся скриптом.
**7. Что НЕ сделано и почему.** Срез хроники PROGRESS в архивный слайс (живой хвост несёт №11№13, эра D39.91105) — не делал: файл прямо сейчас держит полигон-сессия, а срез это перекладывание сотни строк в контендящемся файле, то есть способ потерять чужую работу второй раз за сутки. Режет тот, кто лендит полигон. Из 78 находок закрыт первый эшелон (промты, статусы, висячие ссылки, незанесённое) — остаток воды (дубли пин-таблиц, историческое тело `API_CONTRACT_DRAFT.md`, §1 «как есть» в `09-target-architecture.md`) в этот проход не тронут: он не вводит сессию в заблуждение, а только удлиняет чтение.