diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md index 83e1dae1..278caa10 100644 --- a/docs/PROGRESS.md +++ b/docs/PROGRESS.md @@ -1,6 +1,6 @@ # Журнал прогресса -> **⟶ ТЕКУЩЕЕ СОСТОЯНИЕ** (на 2026-08-28, голова D39.167 — КУРС: движок и платформа до «работает и отдаёт результат», фронт ЗАМОРОЖЕН и P7 его НЕ размораживает (D39.147). **ОЧЕРЕДЬ №19** (единственный носитель — здесь; роль передана 22.08, №18 закрыт D39.155): (а) **P7 платформы ПРИНЯТ С ФИКС-ЛИСТОМ и ЗАЛЕНДЕН, сессия закрыта владельцем 20.08** (D39.153; зонный фикс-лист из тринадцати пунктов плюс врезанный первым блокер свипа — пинг №18 в `platform/docs/platform-PROGRESS.md`; ⚠ прежний врезанный пример «первым `ContractVersion` 0.3.0 при формах 0.4.0» СНЯТ — константа поднята и запинена гейтом против канона лендингом `31f1f82`) · (а1) **контракт API v0 0.4.0 РАТИФИЦИРОВАН** (D39.152; PD-327 закрыт; зеркало фронта отстаёт ратифицированно, при разморозке `cmp`) · (б) **лендинг петель полигона (фаза Д) — ОТКРЫТ**: приёмка ФАЗЫ у параллельного оркестратора, лендинг за этим; ⚠ **предупреждение в силе: работа полигона в дереве по-прежнему НЕЗАКОММИЧЕНА** (20 позиций: `START_PROMT.MD` + 14 правленых и 5 новых файлов `eval/`). Владелец перевозил её на новую машину транспортным коммитом `temp`, но 24.08 **снял его словом владельца** (`reset --mixed`, дерево не тронуто — сверено побайтно, бэкап `~/tm-backup-2026-08-24/textmachine-HEAD.bundle` + reflog): транспортный коммит вдобавок уносил `START_PROMT.MD`, который канон коммитить запрещает. Состав читать командой `git status --short -- eval/`, снимок здесь протухает. Не трогать и не «прибирать»; приёмка ФАЗЫ — за параллельным оркестратором, пинг №20 — в секции «Полигон». Форма коммита строго pathspec · (в) **дофикс-пак P8-FIX ПРИНЯТ И ЗАЛЕНДЕН 22.08** (D39.154, лендинг `31f1f82`): блокер свипа закрыт четырьмя механизмами и пере-проверен живой пробой оркестратора, деньги сошлись двумя путями из сырого леджера; мои четыре строки регистра — `PD-371`…`PD-374`. ⚠ **Порядок вышел ОБРАТНЫМ этой очереди:** промт дофикса требовал запуска ПОСЛЕ читающего пака, запущен был раньше. Цена перестановки, названная мной вслух 21.08 («блокер живёт всё время читающего пака»), тем самым НЕ заплачена — это лучший исход, чем планировалось; в минус — §4.7 (аддендум релеем) пуст и читающий пак пойдёт по только что переписанному коду. **ЧТО ДАЛЬШЕ С ПЛАТФОРМОЙ — решено 22.08 при актуализации доков, порядок такой.** **(1) Читающий пак P8-REVIEW — ОТРАБОТАН, ПРИНЯТ И ЗАЛЕНДЁН 27.08** (D39.159): четыре оси, 24 новые строки регистра (`PD-375`…`PD-398`), 17 дописок, каталог воспроизведения `platform/docs/p8-review/`. Единственный vuln — `PD-379` (major): открытый поток событий переживает отзыв сессии. Числа сдачи пере-мерены приёмкой на дереве С лендингом бэкенда. Промт архивируется. **Следующая работа зоны — кодовый пак по этим строкам, запуск по слову владельца.** Промт ЖИВ и переписан 22.08 в трёх местах, которые дофикс сделал ложными: «два денежных дефекта не заведены» (заведены и закрыты — `PD-333`/`PD-334`, вместо них дан их КЛАСС и живой образец `PD-372`) · приор оси 4 «наблюдаемость без ручки» (ручка построена ⇒ вопрос стал «достаточна ли она») · абсолют «оси ни в один дифф не входили» (сужен: системного разбора не было, кусками входили). **Довод ЗА пак — базовая ставка, а не вера:** первый же серьёзный взгляд на ОДНУ из четырёх осей (очередь, 21.08) дал пред-продовый блокер, проживший два пака под статусом `fixed`. Осей осталось три, и на двух из них лежат деньги и вход. **(2) ПОРЯДОК РАБОТ ПО ШВУ — ратифицирован D39.156 (23.08), исполняется строго так.** **(2а) Движковый пак шва — ОТРАБОТАН И ЗАЛЕНДЖЕН 27.08 (D39.158), промт в `archive/prompts/`** (аудит доков 28.08 поймал, что очередь пять дней звала его АКТИВНЫМ и направляла сессию в исполненное). Состав, для истории: конвенционные дефолты `mined_delta`/`mined_rejects` · $0-глагол приёма правок банка · путь к файлу ключей аргументом (**211** — движковый конец; платформенный доехал паком P9, строка ЗАКРЫТА D39.162) · строгость сид-загрузчика · путь артефакта и версия документа в `status --json` (**213** — движковая половина; платформенная снята P9, у строки остался один дев-путь). **(2б) Контрактный минор — ПОСЛЕ него и ОДНИМ куском:** снос отменённой пер-термной модели + новая дверь, тело которой выводится из словаря глагола, а не сочиняется до него; сюда же строка **203** и хвосты компаньона. ⚠ Строка **200** ушла НЕ сюда: D39.160 изъял её из этого минора и отправил с паком (2в), где она и закрылась минором **0.6.0**. ⚠ Гигиена держится сознательно: снести дверь сейчас и завести в следующем миноре — две перегенерации фронта вместо одной; фолбэк объявлен — если пак застрянет надолго, гигиену шипить отдельно. **(2в) Платформенный пак P9 — ОТРАБОТАН, ПРИНЯТ И ЗАЛЕНДЁН 28.08 (D39.162):** дверь правок банка смонтирована синхронно и под пер-книжным мьютексом · ключи доехали до движка аргументом `--keys-file` (строка **211** ЗАКРЫТА) · дубль конвенции пути снят (строка **213** — осталась одна строка в дев-пути) · снята сквозная полоса прогресса вместе с её канонной половиной, минор **0.6.0** (строка **200** ЗАКРЫТА) · с провода сняты два поля упразднённой модели (`PD-399`). ⚠ Пункт «воркер решений» СНЯТ эрратой 27.08-з: синхронность держится, замер сессии её подтвердил. Фикс-раунд приёмки — 13 позиций, две мои диспозиции сессия ОПРОВЕРГЛА исполнением и я это принял (см. D39.162). **(3) `sqlc` отдельной сессией** (решение владельца 22.08, `BACKLOG.md` П-19, граница 41 запрос в пяти файлах) — механическая работа, не мешать её с содержательной. **(4) Живой прогон книги насквозь** — строка 202, гейт прежний: ПОСЛЕ холодного прогона движка. ⚠ **На владельце и блокирует пункт своей темы:** ⚠ **развилка владения `book.yaml` (199а) СНЯТА — с владельца убрана аудитом 28.08:** она растворена седьмым вариантом ещё D39.156 п.3 (конвенционные дефолты + движковый глагол), вход построен D39.158/D39.162, а вся строка 199 закрыта D39.166 и снесена с таблицы. Пять дней держалась на владельце как блокер решённого. ⚠ **ДВА ВОПРОСА, СНЯТЫЕ ВЛАДЕЛЬЦЕМ 28.08 (D39.165) — оставлены здесь как след, потому что реестр ожиданий о них не знал вовсе и это была дыра учёта.** Ответы: смена формы конвейера — форма «ЭПОХА» (событие книги, канон уже разрешает пересчёт через границу `structure_version`); единица продажи — цена от ОБЪЁМА исходника по `chapters.units_total` + потолок объёма в движке + хвост качества в тариф, калибровка гейчена строкой 202. Прежняя формулировка: (дыру учёта нашла разведка 28.08: нота сказала «ждёт слова владельца», а реестр ожиданий об этом не знал): **(i) смена формы конвейера на ЖИВОЙ книге** — что деплой обязан делать с книгой, начерченной по старой форме, когда форму сменили (носители `PD-403`/`PD-404`; ⚠ проект отвечал на СОСЕДНИЙ вопрос дважды — D39.152 п.4 и D39.153 §4б — и два ратифицированных ответа В КОМПОЗИЦИИ и дают дефект: липкость флага ратифицирована ПРОТИВ отката назад, но в обратную сторону она морозит счёт, и комментарий `platform/internal/pgstore/sink.go:405-408` описывает поведение, которого его же код НЕ делает); **(ii) `PD-410`** — платформа продаёт ГЛАВЫ, движок останавливается по ДЕНЬГАМ, и единица продажи не равна единице остановки · (г) **контракт: сквозная полоса прогресса ЗАКРЫТА** — минор **0.6.0** заленджен вместе с паком P9 (D39.162): доля одна на всю работу прогона через обе волны, подпись стадии объявлена ВТОРЫМ ограниченным исключением из границы «ничего о том, КАК переводится книга». ⚠ Остаток назван и НЕ забыт: платформа продаёт главы, а движку передаёт только `--ceiling-usd` — единицы разные, и это `PD-410` (архитектурный стоп зоны). Хвосты релеев (203) ждут следующего минора · (д) свободные бэкенд: 160 Этап 0, фикс-лист ФЧ строкой 197 (носителя-сессии нет по слову владельца); ⚠ строки 176/181/187 СНЯТЫ с таблицы при лендинге 20.08 — они закрыты ещё D39.149, а очередь всё это время звала 181 свободной работой (поймано ревью доков; остатки живут строками 194/196/197) · (е) фронтовый фрагмент pre-commit хука получает норму «жалуйся владельцу» — **решение владельца 21.08: ДА**, исполняется первым касанием зоны (пинг в её журнале). · (ж) **ПЕРЕЕЗД НА НОВУЮ МАШИНУ — стенд ПЕРЕСОБРАН 24.08 (№19), как поднимать — карта `README.md`, строки «Тулчейн» и `counts.py`.** Ubuntu 26.04 WSL2, пользователь `ubuntu-26`; тулчейн стоял НУЛЕВОЙ. Поставлено: Go 1.26.7 · golangci-lint 2.12.2 · Node 22.23.2 — тарболами вендоров со сверкой sha256 в `~/.local/opt` (симлинки в `~/.local/bin`); PostgreSQL 18.4 — рецептом самой зоны (`platform/docs/STACK_DECISIONS.md` §«Postgres на стенде без root»); `build-essential` + `python3-venv` — руками владельца, они единственные требовали root. **Обе батареи зелены под `-race`:** бэкенд `make battery` EXIT=0, линтер 0 issues, скипы только корпус-гейченные и хелперы; платформа `make check` EXIT=0, 18 пакетов, линтер 0 issues, **скипов 0**. Фронт: `npm ci` + `npm run check` проходит целиком (335 тестов), `vite build` собирается. Сквозняк проверен ЖИВЬЁМ: демон платформы → сид через настоящий интейк → движок распарсил книгу (3 главы) → дев-прокси фронта достучался до платформы. ⚠ **Что НЕ проверено:** ни одного платного вызова · браузеров Playwright нет ⇒ `check:full` не гонялся · локальной модели и GPU на машине нет вовсе (слово владельца 24.08: мерить нечем, ветка не закрыта) · OIDC не поднимался, вход только дев-логином. ⚠ Правка `.gitignore` владельца несла дефект — правило `books/` без якоря глушило ЛЮБОЙ каталог `books`, включая живой пакет `platform/internal/books/` (новый файл там уходил бы в игнор молча); заякорено в `/books/`, проверено пробой в обе стороны. Новые строки бэклога — **217** (пути полигона), **218** (дефолты корпуса в движке — ЗАКРЫТА и снята 27.08, D39.159 эррата-д), **219** (line-якоря D-лога съехали — ⚠ ОБЪЯВЛЕНА 24.08, а В ТАБЛИЦЕ ЗАВЕДЕНА только 27.08: три дня очередь ссылалась на несуществующий носитель) **Открытые обязательства, которых нет больше нигде:** веса `pro` — строка 172-г НЕ закрыта, прогон мерил классификатор на flash; дешёвый вход — спросить полигон, говорят ли что-то данные фазы Д (там pro гоняется редактором), отдельный замер не покупать без этого · `docs/experiments/00-provider-quirks.md` несёт протухшие цены DeepSeek («не изменились, flash $0.14/$0.28») — зона полигона, чинить пингом · санкция на платный прогон в архивном промте пака честности была РАЗОВОЙ · **норма плотности комментариев — ОТВЕЧЕНА владельцем 21.08:** режем ВОДУ, а не длину — счёт строк «пиши одну-две» негодный гейт и снят; уходит пересказ решений, провенанс и изложение исследования вместо ссылки, остаётся всё, что из одной функции не выводится, сколько бы строк ни заняло (норма переписана — `12-go-style-notes` §1; PD-255 платформы этим закрывается). ⚠ Метод-урок: её хендофф объявил «вопросов на владельце нет», а строка регистра просила именно решения — вопрос был закрыт ОБЪЯВЛЕНИЕМ, поймано ревьюером полноты выгрузки. Оркестраторов ДВА (решение владельца 07.08): этот — движок/платформа/фронт/доки; параллельный (РОЛЬЮ, без номера — счётчик один, D39.112 п.6) — приёмка полигона. Одновременно не запускаются; CURRENT-STATE ведут оба, чужие строки не трогают. Норма изоляции панелей — D39.113, гардрейлы в CLAUDE.md.) +> **⟶ ТЕКУЩЕЕ СОСТОЯНИЕ** (на 2026-08-28, голова D39.168 — КУРС: движок и платформа до «работает и отдаёт результат», фронт ЗАМОРОЖЕН и P7 его НЕ размораживает (D39.147). **ОЧЕРЕДЬ №19** (единственный носитель — здесь; роль передана 22.08, №18 закрыт D39.155): (а) **P7 платформы ПРИНЯТ С ФИКС-ЛИСТОМ и ЗАЛЕНДЕН, сессия закрыта владельцем 20.08** (D39.153; зонный фикс-лист из тринадцати пунктов плюс врезанный первым блокер свипа — пинг №18 в `platform/docs/platform-PROGRESS.md`; ⚠ прежний врезанный пример «первым `ContractVersion` 0.3.0 при формах 0.4.0» СНЯТ — константа поднята и запинена гейтом против канона лендингом `31f1f82`) · (а1) **контракт API v0 0.4.0 РАТИФИЦИРОВАН** (D39.152; PD-327 закрыт; зеркало фронта отстаёт ратифицированно, при разморозке `cmp`) · (б) **лендинг петель полигона (фаза Д) — ОТКРЫТ**: приёмка ФАЗЫ у параллельного оркестратора, лендинг за этим; ⚠ **предупреждение в силе: работа полигона в дереве по-прежнему НЕЗАКОММИЧЕНА** (20 позиций: `START_PROMT.MD` + 14 правленых и 5 новых файлов `eval/`). Владелец перевозил её на новую машину транспортным коммитом `temp`, но 24.08 **снял его словом владельца** (`reset --mixed`, дерево не тронуто — сверено побайтно, бэкап `~/tm-backup-2026-08-24/textmachine-HEAD.bundle` + reflog): транспортный коммит вдобавок уносил `START_PROMT.MD`, который канон коммитить запрещает. Состав читать командой `git status --short -- eval/`, снимок здесь протухает. Не трогать и не «прибирать»; приёмка ФАЗЫ — за параллельным оркестратором, пинг №20 — в секции «Полигон». Форма коммита строго pathspec · (в) **дофикс-пак P8-FIX ПРИНЯТ И ЗАЛЕНДЕН 22.08** (D39.154, лендинг `31f1f82`): блокер свипа закрыт четырьмя механизмами и пере-проверен живой пробой оркестратора, деньги сошлись двумя путями из сырого леджера; мои четыре строки регистра — `PD-371`…`PD-374`. ⚠ **Порядок вышел ОБРАТНЫМ этой очереди:** промт дофикса требовал запуска ПОСЛЕ читающего пака, запущен был раньше. Цена перестановки, названная мной вслух 21.08 («блокер живёт всё время читающего пака»), тем самым НЕ заплачена — это лучший исход, чем планировалось; в минус — §4.7 (аддендум релеем) пуст и читающий пак пойдёт по только что переписанному коду. **ЧТО ДАЛЬШЕ С ПЛАТФОРМОЙ — решено 22.08 при актуализации доков, порядок такой.** **(1) Читающий пак P8-REVIEW — ОТРАБОТАН, ПРИНЯТ И ЗАЛЕНДЁН 27.08** (D39.159): четыре оси, 24 новые строки регистра (`PD-375`…`PD-398`), 17 дописок, каталог воспроизведения `platform/docs/p8-review/`. Единственный vuln — `PD-379` (major): открытый поток событий переживает отзыв сессии. Числа сдачи пере-мерены приёмкой на дереве С лендингом бэкенда. Промт архивируется. **Следующая работа зоны — кодовый пак по этим строкам, запуск по слову владельца.** Промт ЖИВ и переписан 22.08 в трёх местах, которые дофикс сделал ложными: «два денежных дефекта не заведены» (заведены и закрыты — `PD-333`/`PD-334`, вместо них дан их КЛАСС и живой образец `PD-372`) · приор оси 4 «наблюдаемость без ручки» (ручка построена ⇒ вопрос стал «достаточна ли она») · абсолют «оси ни в один дифф не входили» (сужен: системного разбора не было, кусками входили). **Довод ЗА пак — базовая ставка, а не вера:** первый же серьёзный взгляд на ОДНУ из четырёх осей (очередь, 21.08) дал пред-продовый блокер, проживший два пака под статусом `fixed`. Осей осталось три, и на двух из них лежат деньги и вход. **(2) ПОРЯДОК РАБОТ ПО ШВУ — ратифицирован D39.156 (23.08), исполняется строго так.** **(2а) Движковый пак шва — ОТРАБОТАН И ЗАЛЕНДЖЕН 27.08 (D39.158), промт в `archive/prompts/`** (аудит доков 28.08 поймал, что очередь пять дней звала его АКТИВНЫМ и направляла сессию в исполненное). Состав, для истории: конвенционные дефолты `mined_delta`/`mined_rejects` · $0-глагол приёма правок банка · путь к файлу ключей аргументом (**211** — движковый конец; платформенный доехал паком P9, строка ЗАКРЫТА D39.162) · строгость сид-загрузчика · путь артефакта и версия документа в `status --json` (**213** — движковая половина; платформенная снята P9, у строки остался один дев-путь). **(2б) Контрактный минор — ПОСЛЕ него и ОДНИМ куском:** снос отменённой пер-термной модели + новая дверь, тело которой выводится из словаря глагола, а не сочиняется до него; сюда же строка **203** и хвосты компаньона. ⚠ Строка **200** ушла НЕ сюда: D39.160 изъял её из этого минора и отправил с паком (2в), где она и закрылась минором **0.6.0**. ⚠ Гигиена держится сознательно: снести дверь сейчас и завести в следующем миноре — две перегенерации фронта вместо одной; фолбэк объявлен — если пак застрянет надолго, гигиену шипить отдельно. **(2в) Платформенный пак P9 — ОТРАБОТАН, ПРИНЯТ И ЗАЛЕНДЁН 28.08 (D39.162):** дверь правок банка смонтирована синхронно и под пер-книжным мьютексом · ключи доехали до движка аргументом `--keys-file` (строка **211** ЗАКРЫТА) · дубль конвенции пути снят (строка **213** — осталась одна строка в дев-пути) · снята сквозная полоса прогресса вместе с её канонной половиной, минор **0.6.0** (строка **200** ЗАКРЫТА) · с провода сняты два поля упразднённой модели (`PD-399`). ⚠ Пункт «воркер решений» СНЯТ эрратой 27.08-з: синхронность держится, замер сессии её подтвердил. Фикс-раунд приёмки — 13 позиций, две мои диспозиции сессия ОПРОВЕРГЛА исполнением и я это принял (см. D39.162). **(3) `sqlc` отдельной сессией** (решение владельца 22.08, `BACKLOG.md` П-19, граница 41 запрос в пяти файлах) — механическая работа, не мешать её с содержательной. **(4) Живой прогон книги насквозь** — строка 202, гейт прежний: ПОСЛЕ холодного прогона движка. ⚠ **На владельце и блокирует пункт своей темы:** ⚠ **развилка владения `book.yaml` (199а) СНЯТА — с владельца убрана аудитом 28.08:** она растворена седьмым вариантом ещё D39.156 п.3 (конвенционные дефолты + движковый глагол), вход построен D39.158/D39.162, а вся строка 199 закрыта D39.166 и снесена с таблицы. Пять дней держалась на владельце как блокер решённого. ⚠ **ДВА ВОПРОСА, СНЯТЫЕ ВЛАДЕЛЬЦЕМ 28.08 (D39.165) — оставлены здесь как след, потому что реестр ожиданий о них не знал вовсе и это была дыра учёта.** Ответы: смена формы конвейера — форма «ЭПОХА» (событие книги, канон уже разрешает пересчёт через границу `structure_version`); единица продажи — цена от ОБЪЁМА исходника по `chapters.units_total` + потолок объёма в движке + хвост качества в тариф, калибровка гейчена строкой 202. Прежняя формулировка: (дыру учёта нашла разведка 28.08: нота сказала «ждёт слова владельца», а реестр ожиданий об этом не знал): **(i) смена формы конвейера на ЖИВОЙ книге** — что деплой обязан делать с книгой, начерченной по старой форме, когда форму сменили (носители `PD-403`/`PD-404`; ⚠ проект отвечал на СОСЕДНИЙ вопрос дважды — D39.152 п.4 и D39.153 §4б — и два ратифицированных ответа В КОМПОЗИЦИИ и дают дефект: липкость флага ратифицирована ПРОТИВ отката назад, но в обратную сторону она морозит счёт, и комментарий `platform/internal/pgstore/sink.go:405-408` описывает поведение, которого его же код НЕ делает); **(ii) `PD-410`** — платформа продаёт ГЛАВЫ, движок останавливается по ДЕНЬГАМ, и единица продажи не равна единице остановки · (г) **контракт: сквозная полоса прогресса ЗАКРЫТА** — минор **0.6.0** заленджен вместе с паком P9 (D39.162): доля одна на всю работу прогона через обе волны, подпись стадии объявлена ВТОРЫМ ограниченным исключением из границы «ничего о том, КАК переводится книга». ⚠ Остаток назван и НЕ забыт: платформа продаёт главы, а движку передаёт только `--ceiling-usd` — единицы разные, и это `PD-410` (архитектурный стоп зоны). Хвосты релеев (203) ждут следующего минора · (д) свободные бэкенд: 160 Этап 0, фикс-лист ФЧ строкой 197 (носителя-сессии нет по слову владельца); ⚠ строки 176/181/187 СНЯТЫ с таблицы при лендинге 20.08 — они закрыты ещё D39.149, а очередь всё это время звала 181 свободной работой (поймано ревью доков; остатки живут строками 194/196/197) · (е) фронтовый фрагмент pre-commit хука получает норму «жалуйся владельцу» — **решение владельца 21.08: ДА**, исполняется первым касанием зоны (пинг в её журнале). · (ж) **ПЕРЕЕЗД НА НОВУЮ МАШИНУ — стенд ПЕРЕСОБРАН 24.08 (№19), как поднимать — карта `README.md`, строки «Тулчейн» и `counts.py`.** Ubuntu 26.04 WSL2, пользователь `ubuntu-26`; тулчейн стоял НУЛЕВОЙ. Поставлено: Go 1.26.7 · golangci-lint 2.12.2 · Node 22.23.2 — тарболами вендоров со сверкой sha256 в `~/.local/opt` (симлинки в `~/.local/bin`); PostgreSQL 18.4 — рецептом самой зоны (`platform/docs/STACK_DECISIONS.md` §«Postgres на стенде без root»); `build-essential` + `python3-venv` — руками владельца, они единственные требовали root. **Обе батареи зелены под `-race`:** бэкенд `make battery` EXIT=0, линтер 0 issues, скипы только корпус-гейченные и хелперы; платформа `make check` EXIT=0, 18 пакетов, линтер 0 issues, **скипов 0**. Фронт: `npm ci` + `npm run check` проходит целиком (335 тестов), `vite build` собирается. Сквозняк проверен ЖИВЬЁМ: демон платформы → сид через настоящий интейк → движок распарсил книгу (3 главы) → дев-прокси фронта достучался до платформы. ⚠ **Что НЕ проверено:** ни одного платного вызова · браузеров Playwright нет ⇒ `check:full` не гонялся · локальной модели и GPU на машине нет вовсе (слово владельца 24.08: мерить нечем, ветка не закрыта) · OIDC не поднимался, вход только дев-логином. ⚠ Правка `.gitignore` владельца несла дефект — правило `books/` без якоря глушило ЛЮБОЙ каталог `books`, включая живой пакет `platform/internal/books/` (новый файл там уходил бы в игнор молча); заякорено в `/books/`, проверено пробой в обе стороны. Новые строки бэклога — **217** (пути полигона), **218** (дефолты корпуса в движке — ЗАКРЫТА и снята 27.08, D39.159 эррата-д), **219** (line-якоря D-лога съехали — ⚠ ОБЪЯВЛЕНА 24.08, а В ТАБЛИЦЕ ЗАВЕДЕНА только 27.08: три дня очередь ссылалась на несуществующий носитель) **Открытые обязательства, которых нет больше нигде:** веса `pro` — строка 172-г НЕ закрыта, прогон мерил классификатор на flash; дешёвый вход — спросить полигон, говорят ли что-то данные фазы Д (там pro гоняется редактором), отдельный замер не покупать без этого · `docs/experiments/00-provider-quirks.md` несёт протухшие цены DeepSeek («не изменились, flash $0.14/$0.28») — зона полигона, чинить пингом · санкция на платный прогон в архивном промте пака честности была РАЗОВОЙ · **норма плотности комментариев — ОТВЕЧЕНА владельцем 21.08:** режем ВОДУ, а не длину — счёт строк «пиши одну-две» негодный гейт и снят; уходит пересказ решений, провенанс и изложение исследования вместо ссылки, остаётся всё, что из одной функции не выводится, сколько бы строк ни заняло (норма переписана — `12-go-style-notes` §1; PD-255 платформы этим закрывается). ⚠ Метод-урок: её хендофф объявил «вопросов на владельце нет», а строка регистра просила именно решения — вопрос был закрыт ОБЪЯВЛЕНИЕМ, поймано ревьюером полноты выгрузки. Оркестраторов ДВА (решение владельца 07.08): этот — движок/платформа/фронт/доки; параллельный (РОЛЬЮ, без номера — счётчик один, D39.112 п.6) — приёмка полигона. Одновременно не запускаются; CURRENT-STATE ведут оба, чужие строки не трогают. Норма изоляции панелей — D39.113, гардрейлы в CLAUDE.md.) > - ⚠ **ОБЯЗАТЕЛЬСТВА ЛЕНДИНГА P9, часть 2 (28.08):** перевести половину 2 строки `PD-400` (внутрипроцессный мьютекс) в статус **`accepted-risk`** — граница v1 названа с условием («перестаёт держать в день второй реплики; лечение тогда арбитр в хранилище, не больший мьютекс») и ценой (ограничена убираемым шумом: холостая попытка у translate, «повтори позже» у глагола — ни ложного слова, ни денег); однорепличность — сегодняшний допуск всей зоны. Смена статуса — акт лендинга, строка сессией под это уже сформулирована. ⚠ Там же закрыть `PD-401` — лечение в дереве и зелёное. > - ⚠ **ОБЯЗАТЕЛЬСТВО ЛЕНДИНГА P9, записано 27.08, чтобы не потерялось второй раз:** при взятии дерева закрыть **`PD-166`** — её тело уже объявляет механизм НЕДОСТИЖИМЫМ (запись версии переехала из `Begin` в `effect`, одна транзакция с курсором; `Begin` — legacy), диспозиция «закрыть как построенное» написана, пин `TestTheChunkerVersionOfTheStreamReachesTheBook` (`pgstore/sink_test.go:618`) на месте, согласие получено ещё до рестарта — **не исполнена только смена статуса**. Проверка одной командой: `awk -F'|' '/^\| PD-166 \|/ {print $7}' platform/docs/DEFECT_REGISTER.md` → ` open `. Закрытие — акт лендинга, не работа пака (прецедент P6). ⚠ Сейчас регистр правит сессия P9 — параллельно не лезть. > - ⚠ **ЛЕНТА КОНТРАКТА за 27–28.08, свёрнуто аудитом 28.08 (D39.167):** **0.5.0** — D39.161 (снос отменённой пер-термной модели подписи + дверь правок банка) · **0.6.0** — D39.162/D39.163 (сквозная полоса прогресса; `Progress.stage` ВТОРЫМ и последним исключением границы) · **0.7.0** — D39.166 (покупка пере-прохода членом `RunRequest.re_pass`). Прожитые дампы приёмки P9 и P10 вынесены в `archive/PROGRESS-2026-08-backend.md` и в тела нот; здесь остаётся только лента версий. diff --git a/docs/architecture/01-decisions.md b/docs/architecture/01-decisions.md index e6d9f4bf..305d28f4 100644 --- a/docs/architecture/01-decisions.md +++ b/docs/architecture/01-decisions.md @@ -50,7 +50,7 @@ ## Р4. Модельный стек и контент-роутинг. **Принято (стартовый состав) / цены и составы — в конфиге** -Из [04](../research/04-api-providers.md), [09](../research/09-cost-model.md), [11-gap-1](../research/11-gap-1.md), [11-gap-2](../research/11-gap-2.md) (актуально на 2026-07-04, пересматривать ежеквартально): +Из [04](../research/04-api-providers.md), [09](../archive/research/09-cost-model.md), [11-gap-1](../archive/research/11-gap-1.md), [11-gap-2](../research/11-gap-2.md) (актуально на 2026-07-04, пересматривать ежеквартально): > **Решение владельца (04.07): удалён только Anthropic — за ДОРОГОВИЗНУ** (git `c7f8a95`, `85f24fb`), не за недоступность: флагманы Claude в любом контуре съедают маржу per-book (Р5), а роль судьи закрывает Gemini. Нативный Anthropic-адаптер в коде помечен DEPRECATED (не удалён — референс для нативного Gemini-адаптера). **OpenAI остаётся** (у владельца есть ключ). Живой набор ключей у бэкенда и полигона (04.07): `DEEPSEEK_API_KEY`, `ZAI_API_KEY`, `KIMI_API_KEY`, `OPENAI_API_KEY`, `GEMINI_API_KEY`, `XAI_API_KEY` — то есть Gemini (судья/апекс) и xAI (канал B) доступны сразу, а не «в Фазе 2» (нативные адаптеры для safety-контроля судьи — всё ещё Фаза 2, но OpenAI-совместимый слой работает уже сейчас). Эскалационные развязки — см. [05-decisions-log.md](05-decisions-log.md) D3. @@ -75,7 +75,7 @@ ## Р5. Экономика вызовов: один контур (прямые ключи, EU-SaaS), caching-first, премиум-бюджет. **Принято** -Из [09](../research/09-cost-model.md) + токен-калибровка [experiments/01](../experiments/01-token-calibration.md) + критика эконом-ревью. +Из [09](../archive/research/09-cost-model.md) + токен-калибровка [experiments/01](../experiments/01-token-calibration.md) + критика эконом-ревью. > **КОРРЕКЦИЯ ВЛАДЕЛЬЦА (04.07, фундаментальная): один контур — прямые ключи.** Владелец **не в РФ**; бэкенд на **EU-сервере**, все вызовы моделей идут оттуда с прямыми ключами провайдеров; продукт — **обычный SaaS** (владелец платит за токены, клиент — за сервис). **BYOK не делается — ни сейчас, ни в планах.** Прежняя модель «три контура (прямые/RU-агрегаторы/BYOK)» **отменена**: аггрегаторская наценка ×2–6, неопределённость проброса cache/batch и вся RU-платёжная обвязка (Р8/Р9) — неприменимы. Валидным остаётся **ru как язык перевода** (рынок ru-читателей), меняется только доставка. Плюс: цифры токен-калибровки (exp01) и весь прайсинг doc 09 теперь **канонические без оговорок про контур**. diff --git a/docs/architecture/05-decisions-index.md b/docs/architecture/05-decisions-index.md index 0438c7b3..d82d923d 100644 --- a/docs/architecture/05-decisions-index.md +++ b/docs/architecture/05-decisions-index.md @@ -1,4 +1,4 @@ -# Реестр D-нот — карта актуальности v2 (D1–D39.167; +# Реестр D-нот — карта актуальности v2 (D1–D39.168; > ⚠ **СЛАБОЕ МЕСТО, КОТОРОЕ БЫЛО ЗДЕСЬ (вписано 22.08, ЗАКРЫТО 24.08 — D39.157 п.6).** Колонка ТЕЛА > у нот D39.107…D39.123 говорила «жив», хотя тела уехали в слайс подрезкой D39.139; семнадцать строк @@ -228,4 +228,5 @@ | D39.165 | 28.08 | **Три продуктовых развилки сняты словом владельца.** (1) Единица продажи: цена от ОБЪЁМА исходника — носитель `chapters.units_total`, известен на интейке за $0; потолок объёма в ДВИЖКЕ рядом с денежным; хвост качества в тариф и мерить; константу по сегодняшним числам НЕ калибровать (гейт — строка 202). Измерено: реальная глава $0.0115–$0.0190 против константы $0.03, «купить N глав» — денежная ручка с подписью «главы». (2) Смена формы конвейера — СОБЫТИЕ КНИГИ («эпоха»), канон уже разрешает пересчёт через границу `structure_version`; монотонность флага не отменяется. (3) Продажа пере-прохода: дверь к уже построенному движковому механизму, смета из `status --json` без долларов; ⚠ МИНА — первый продолжающий прогон после правки банка УПАДЁТ без `--resnapshot`, чинить первым. Область D39.144 п.1 сужена явно. | жив | ЖИВОЕ: три развилки; калибровка цены гейчена строкой 202 | продукт деньги полоса банк | | D39.166 | 28.08 | **Пак P10 принят и заленджен + контрактный минор 0.7.0**: мина под правкой банка обезврежена, пере-проход продаётся членом `RunRequest.re_pass`, согласие даётся ДЕНЬГАМИ (потолок = холд), полоса — «одна неделимая единица работы». ⚠ Первая сдача пака была НЕВЕРНОЙ: широкий самопроход сессии (заказан владельцем) нашёл три фатальные — мина СТОЯЛА, $0-цена муровала дверь, глава-полоса мертва. Две ошибки оркестратора вынесены эрратой 28.08-к. Пересборка сессии лучше заказа (факт от своей квитанции, фондированный консент). Новый класс: предложение канону, пережившее пересборку кода, — гипотеза, пока не сверено с деревом. | жив | ЖИВОЕ: канон 0.7.0; строки 199/215 закрыты, 231 заведена | платформа контракт банк деньги | | D39.167 | 28.08 | **Аудит документации (хребет)**: очередь пять дней звала активным исполненный промт и держала на владельце решённую развилку; регистр платформы расходился с актами лендинга ЧЕТЫРЬМЯ строками, одна major — класс «open, а лекарство в дереве» без гейта (строка 225); реестр D-нот потерял две колонки на восьми моих строках; справочники отстали от двух суток миноров. Журнал ужат 943 → 347 строк, прожитая проза бэкенда — в слайс. | жив | ЖИВОЕ: строка 225 (гейт класса); три участка обхода не пройдены | доки процесс регистр аудит | +| D39.168 | 28.08 | **Аудит доков, часть 2 — архитектура и ресёрчи.** Две НОРМЫ требовали построенного (закон шва: «`status --json` версию не несёт — закрыть», а несёт); доки врали про `accepts_labels` («пусты у всех» при трёх заполненных эндпоинтах — ось аккаунта); денежный вход цитировал грант $5 при коде 0. Вынесены в `archive/research/` четыре мёртвых отчёта (290 КБ) по графу входящих ссылок; двум ресёрчам без шапки вовсе поставлены ревю-шапки. | жив | ЖИВОЕ: системный класс line-якорей в архитектуре; часть 3 не пройдена | доки ресёрчи архив аудит | diff --git a/docs/architecture/05-decisions-log.md b/docs/architecture/05-decisions-log.md index e659ba84..e3fee1a3 100644 --- a/docs/architecture/05-decisions-log.md +++ b/docs/architecture/05-decisions-log.md @@ -1,4 +1,4 @@ -# Журнал решений оркестратора — контракт D1–D39.167 (живой файл: карта · эрраты · живые тела · голова D39.124+ (подрезка D39.139); тела закрытых эр — в слайсах `docs/archive/architecture/`, указатель ниже; реестр всех нот — `05-decisions-index.md`) +# Журнал решений оркестратора — контракт D1–D39.168 (живой файл: карта · эрраты · живые тела · голова D39.124+ (подрезка D39.139); тела закрытых эр — в слайсах `docs/archive/architecture/`, указатель ниже; реестр всех нот — `05-decisions-index.md`) > **⟶ КАРТА АКТУАЛЬНОСТИ (ревизия D31, продлена до D38.2 [12.07]; исторические записи ниже НЕ переписываются — дисциплина D23.3).** Работая с контрактом (греп номера: живой файл → слайсы, целиком НЕ читать — D39.125), держи под рукой, что чем перекрыто: > ⚠ **Эррата 09.08 (D39.125):** D39.111 п.1 предписывал промту S3 «максимум = баланс МИНУС открытые холды» — формула ОШИБОЧНА (вычитание дважды), исправлена D39.115 п.2(а): максимум = Balance КАК ЕСТЬ; тело D39.111 живёт ниже в этом файле (голова D39.106+). @@ -1116,3 +1116,42 @@ D39.165 «смета уже публикуется в `status`» верна то ### МЕТОД-УРОК, который стоил хода и записан, чтобы не повторился ⚠ **Оркестратор нарушил бюджет модели, который сам же вписал в канон двумя часами раньше.** Из четырёх запущенных агентов модель была задана ЯВНО только одному — остальные три унаследовали её, а владельцу было сказано «на моделях попроще»: **объявлен факт, который не был обеспечен**. Хуже: агентам не запретили порождать собственных, трое немедленно развернули веер, и на пике работало одиннадцать вместо четырёх. При остановке дети **осиротели и продолжали работать** — их пришлось добивать отдельно. И, испугавшись счёта, оркестратор смёл в том числе ЕДИНСТВЕННОГО правильно запущенного агента, хотя имена задач в ответах на убийство прямо показывали, чьи дети чьи. **Правило на будущее: модель задавать ЯВНО каждому агенту, порождение суб-агентов запрещать явно, а перед массовой остановкой читать, что именно останавливаешь.** + +## D39.168 — АУДИТ ДОКУМЕНТАЦИИ, часть 2: архитектура и ресёрчи. Четыре мёртвых отчёта вынесены, две нормы требовали построенного, доки врали про разрешения провайдеров (28.08, оркестратор №19). ✅ + +**Продолжение D39.167** тем же методом: один агент за раз, полное чтение, каждый якорь открыт лично, вердикт перепроверяется оркестратором по коду. Прочитано: `docs/architecture/` целиком (13 файлов, 418 КБ) и `docs/research/` (36 файлов, 2.2 МБ — полным чтением ключевые, остальное по шапкам с механически построенным ГРАФОМ ВХОДЯЩИХ ССЫЛОК как основанием архивного вердикта). ⚠ Не пройдены: `docs/experiments/` (1.6 МБ) и зонные доки (3.5 МБ) — часть 3. + +### ДВЕ НОРМЫ ТРЕБОВАЛИ УЖЕ ПОСТРОЕННОГО — это опаснее протухшего факта + +- **Закон шва п.3** (`17-seam-inbound-law.md:62-64`) предписывал: «`status --json` версию НЕ несёт. **Закрыть**». Несёт — `backend/internal/pipeline/status.go:148-149`, `const statusVersion = "tm-status-v1"`. Следующий пак заплатил бы за построенное второй раз, и заплатил бы ПО НОРМЕ, на которую разрешено ссылаться. +- **Таблица будущих дверей** там же числила `--keys-file` неисполненной дверью строки 211 — построена (D39.158/D39.162), строка закрыта. + +### ДОКИ ВРАЛИ ПРО РАЗРЕШЕНИЯ ПРОВАЙДЕРОВ — ось, где ошибка стоит аккаунта + +`research/08-legal.md:13` и `09-target-architecture.md` утверждали: «`accepts_labels` держатся ПУСТЫМИ до фактов ToS (fail-closed)». **Факты предъявлены и поля ЗАПОЛНЕНЫ:** `backend/configs/models.yaml:99` и `:160` несут `[sexually-explicit]`, `:172` — `[violence, sexually-explicit]`. Механизм fail-closed жив (пустое поле по-прежнему запрещает всё), но «пусты у всех» — ложь. Оба места исправлены. ⚠ Агент пропустил это в ПЕРВОМ заходе и снял в свою сторону во втором — самокоррекция названа здесь, потому что она и есть признак честного аудита. + +### ДЕНЕЖНЫЙ ВХОД ЦИТИРОВАЛ СУММУ, КОТОРОЙ КОД НЕ ДАЁТ + +`15-money-path.md` — единственное место, куда идут за деньгами, — утверждал дефолт гранта `5 * 1_000_000`. В коде **ноль** (`platform/internal/config/config.go:262`). Там же открытыми числились `PD-104` (`fixed(P7)`) и `PD-370` (закрыт нами же в D39.167). Всё исправлено. + +### ЧТО ВЫНЕСЕНО В `docs/archive/research/` (каталог заведён этой нотой) + +Основание каждого выноса — **граф входящих ссылок**, построенный механически по `docs/`, `backend/`, `platform/`, `eval/`, а не впечатление от тела. +- **`12-architecture-as-antipattern.md`** (46 КБ) — живых входящих НОЛЬ; ~85% дублирует заземлённые `12-failure-modes-*`, тезис абсорбирован армом D13.1. +- **`09-cost-model.md`** (30 КБ) — заменена `experiments/08-cost-model-v2.md`, множители токенизации ОПРОВЕРГНУТЫ замером (закладывалось 0.65/0.75 ток./иероглиф, замерено 0.86–0.93). +- **`11-gap-1.md`** (43 КБ) — путь, которым проект НЕ ПОШЁЛ (BYOK · РФ-платежи · юрисдикция); причина отказа живёт в `01-decisions.md` (Р5, Р8). +- **`19-chunking-cohesion-sources.md`** (171 КБ, самый жирный файл корпуса) — приложение-библиография; тема закрыта D39.7/8/108/117. + +⚠ **ПОПРАВКА ПРИЁМКИ К РЕКОМЕНДАЦИИ АГЕНТА, и она важна как метод.** Агент предлагал выносить 19 ПАРОЙ с родителем. Проверка графа показала: **родитель `19-chunking-cohesion.md` ЖИВ — десять входящих ссылок**, включая индекс решений, архитектуру промптов и ЧЕТЫРЕ скрипта полигона. Вынесено только приложение, родителю правлен указатель. **Урок: архивный вердикт обязан стоять на графе ссылок, и граф надо строить в ОБЕ стороны — агент построил его для приложения и не построил для родителя.** + +Все входящие ссылки на вынесенное пере-нацелены на архивные пути (`01-decisions.md` ×3, `11-gap-5.md`, `experiments/01-token-calibration.md`, родитель 19). Битых не осталось. Корпус ресёрчей: 2.21 МБ → **1.92 МБ**. + +### ДВЕ РЕВЮ-ШАПКИ, которых не было ВООБЩЕ + +`research/13-memory-bank-validation.md` и `research/14-adaptive-memory.md` — **единственные два отчёта корпуса с несущими рекомендациями ПО КОДУ и без верхней шапки**. Оба предписывают эмбеддинг-«второй эшелон», класс которого закрыт D39.69 «по нужности». Следующая банковая сессия прочла бы их как ЗАДАНИЕ. Шапки поставлены; тела не тронуты — они улика метода. + +⚠ **Правило корпуса, подтверждённое этим заходом:** тела ресёрчей НЕ переписываются. Опровергнутый замером отчёт получает ⚠-шапку, а не правку и не вынос; выносится только то, чья тема закрыта И у чего нет живых потребителей. + +### СИСТЕМНЫЙ КЛАСС, ОСТАВЛЕННЫЙ ОТКРЫТЫМ + +Архитектурные доки ссылаются в `docs/PROGRESS.md` и `platform/docs/DEFECT_REGISTER.md` **номерами строк**. Оба файла переупорядочены (журнал ужат вдвое D39.167, регистр вырос) — **ни один такой якорь больше не резолвится**. Ресёрчи ту же болезнь уже вылечили пометкой «адрес ноты — её НОМЕР» (`research/17:3`, `research/20:3`); в архитектуре такой нормы НЕТ. Это тот же класс, что за сутки трижды укусил оркестратора с журналом решений. **Лечится нормой, а не правкой якорей** — заказ отдельный. diff --git a/docs/architecture/09-target-architecture.md b/docs/architecture/09-target-architecture.md index 3a8f9b34..677e4171 100644 --- a/docs/architecture/09-target-architecture.md +++ b/docs/architecture/09-target-architecture.md @@ -23,7 +23,7 @@ > | 7 Гигиена | ✅ ПОСТРОЕН: реестр role→инъекция · вынос `foldModelWire` · снос сирот/`gatesEnabled` · **target-aware гейты ПО ДАННЫМ — П1 «цель-шов» (фаза 2, D39.64: `isRuTarget` удалён, `TargetActive`/`TargetScriptNonLatin`, токенизатор цели из `word_script`); остаток — ё-фолд/segmentation за подписью (бэклог-строка 14)** | D39.2 · паки 11–16 · **фаза 2 (D39.64)** | > > **Актуализация 01.08:** пак-19 «голос/состояние» построен (D39.54–56: схема голоса/обращений v13/v14 c условным фолдом · tu-vous- и спойлер-флаггеры). **Карта языковой привязки ВСЕГО движка — `../archive/reports/GENERALITY_RESEARCH_2026-07-31.md` (D39.60)**; **фаза 2 общности ИСПОЛНЕНА И ПРИНЯТА (D39.64, отчёт `../archive/reports/GENERALITY_PHASE2_2026-08-01.md`)**: П0 хеш эмбед-данных (`embedded_version` в снапшоте) · П1 цель-шов (слой 7) · П2 скрипт-шов источника (`lang-script.txt`, ko-баг закрыт) · П3 нарезка/оценка (話 · sourceAbbrevs · generic-главы · один дом `DenseScript`) · П4 манифест-по-каналам (обратно-совместим, `packAlgoVersion` не бампался); голден вердикт-нейтрален (0/172); П5 майнер гейтится второй книгой; пак-21 растворён; 9 флагов §5 — очередь владельца (бэклог-строка 14). -> §1 «как есть» читать как снимок ДО стройки (const-чанкер · glm-редактор · мёртвые `STMDepth`/`OverlapTokens` — всего этого больше нет). §4 отработан целиком: трек B исполнен (exp15/exp16 — программа ЗАВЕРШЕНА, D39.7/D39.10), гейт пере-прогона пройден фактом rerun2 (D39.20; планка ≤2 НЕ пройдена, эксп ЗАКРЫТ D39.22, редактор = deepseek-v4-pro интерим). Канал B — пак-17 **ЗАКРЫТ ЦЕЛИКОМ (дизайн D39.26 + стройка D39.27 + дельта D39.28: механизм лейблов живой, действия `route|allow|terminal` с одним инвариантом, golden байт-идентичен, `permissive`/`Stage.Channel`/D4.1-блок отставлены, `failover.go` удалён; вокабуляр = ПАРА `violence`/`sexually-explicit`; `accepts_labels` пусты до ФАКТОВ ToS — fail-closed)**; дизайн РАТИФИЦИРОВАН D39.26 (лейблы вне хешей — назначенный слой D20.2-Q3 = резолвнутая модель стадии пер-стадийно/пер-волново · резолв ДО валидации, «достижимое» лейбл-зависимо · один хоп `chain[0]` · гранулярность = книга · `content_labels`(книга) ⊆ `accepts_labels`(модель) · `Stage.Channel`/`permissive`/D4.1-блок отставляются одним диффом), фаза 2 = стройка; инженерная форма переопределена **D39.25**: в движке НЕТ понятия «18+» — generic content-labels × provider-capabilities, refusal причино-агностичен; «18+ линия» в §6 читать как продукт-линию, не механизм движка. +> §1 «как есть» читать как снимок ДО стройки (const-чанкер · glm-редактор · мёртвые `STMDepth`/`OverlapTokens` — всего этого больше нет). §4 отработан целиком: трек B исполнен (exp15/exp16 — программа ЗАВЕРШЕНА, D39.7/D39.10), гейт пере-прогона пройден фактом rerun2 (D39.20; планка ≤2 НЕ пройдена, эксп ЗАКРЫТ D39.22, редактор = deepseek-v4-pro интерим). Канал B — пак-17 **ЗАКРЫТ ЦЕЛИКОМ (дизайн D39.26 + стройка D39.27 + дельта D39.28: механизм лейблов живой, действия `route|allow|terminal` с одним инвариантом, golden байт-идентичен, `permissive`/`Stage.Channel`/D4.1-блок отставлены, `failover.go` удалён; вокабуляр = ПАРА `violence`/`sexually-explicit`; `accepts_labels` пусты до ФАКТОВ ToS — fail-closed)**; ⚠ **испр. 28.08 (D39.168): факты предъявлены, поля ЗАПОЛНЕНЫ у трёх эндпоинтов (`backend/configs/models.yaml:99,160,172`) — механизм fail-closed жив, но «пусты у всех» больше не факт;** дизайн РАТИФИЦИРОВАН D39.26 (лейблы вне хешей — назначенный слой D20.2-Q3 = резолвнутая модель стадии пер-стадийно/пер-волново · резолв ДО валидации, «достижимое» лейбл-зависимо · один хоп `chain[0]` · гранулярность = книга · `content_labels`(книга) ⊆ `accepts_labels`(модель) · `Stage.Channel`/`permissive`/D4.1-блок отставляются одним диффом), фаза 2 = стройка; инженерная форма переопределена **D39.25**: в движке НЕТ понятия «18+» — generic content-labels × provider-capabilities, refusal причино-агностичен; «18+ линия» в §6 читать как продукт-линию, не механизм движка. --- diff --git a/docs/research/09-cost-model.md b/docs/archive/research/09-cost-model.md similarity index 97% rename from docs/research/09-cost-model.md rename to docs/archive/research/09-cost-model.md index 317b98b1..4a1fa0fc 100644 --- a/docs/research/09-cost-model.md +++ b/docs/archive/research/09-cost-model.md @@ -1,3 +1,10 @@ +> ⚠ **АРХИВ. ИСТОРИЧЕСКОЕ — инструкции и рекомендации отсюда НЕ ИСПОЛНЯЮТСЯ.** +> Вынесен из `docs/research/` 28.08.2026 аудитом документации (**D39.168**) по слову владельца. +> **Основание выноса:** денежная модель заменена `experiments/08-cost-model-v2.md`, а множители токенизации ОПРОВЕРГНУТЫ замером (`experiments/01-token-calibration.md:59,83`: закладывалось 0.65/0.75 ток./иероглиф, замерено 0.86–0.93). Ценовые якоря, ради которых док держали, живут отдельно — `02-competitors.md` §2 и `01-market.md` §3. +> Тело сохранено без правок — это УЛИКА, а не действующий документ. + +--- + # 09. Модель стоимости перевода книги через мультиагентный пайплайн и оценка маржи > ⚠ **SUPERSEDED (09.07.2026).** Денежная модель заменена `../experiments/08-cost-model-v2.md` (стек grok-редактора: ~$0.69/ранобэ, ~$10.94/вебновелла-500; редактор ≈ 90% стоимости). Пороги $0.6/$5/$30 и Sonnet-премиум-микс мертвы (D11); доктрина «caching-first» опровергнута на текущем стеке (кэш ≈ 2% стандарта — рычаг это цена редактора). Отсюда живы только методика и множители токенизации (уточнены exp01). diff --git a/docs/research/11-gap-1.md b/docs/archive/research/11-gap-1.md similarity index 98% rename from docs/research/11-gap-1.md rename to docs/archive/research/11-gap-1.md index 80c4317e..61b63b7a 100644 --- a/docs/research/11-gap-1.md +++ b/docs/archive/research/11-gap-1.md @@ -1,3 +1,10 @@ +> ⚠ **АРХИВ. ИСТОРИЧЕСКОЕ — инструкции и рекомендации отсюда НЕ ИСПОЛНЯЮТСЯ.** +> Вынесен из `docs/research/` 28.08.2026 аудитом документации (**D39.168**) по слову владельца. +> **Основание выноса:** исследование пути, которым проект НЕ ПОШЁЛ: BYOK · РФ-ИП/ЮKassa · перекупщики токенов · юрисдикция. Отменено контуром Р5; причина отказа живёт в `architecture/01-decisions.md` (Р5: «BYOK не делается — ни сейчас, ни в планах»; Р8: RU→EU-право). +> Тело сохранено без правок — это УЛИКА, а не действующий документ. + +--- + # 11. Доступ к API и приём платежей для российского сегмента: санкции, гео-блокировки, биллинг Дата исследования: июль 2026. Статус: закрытие пробела (gap #1) к docs 01/04/08/09. Не является юридической консультацией. diff --git a/docs/research/12-architecture-as-antipattern.md b/docs/archive/research/12-architecture-as-antipattern.md similarity index 98% rename from docs/research/12-architecture-as-antipattern.md rename to docs/archive/research/12-architecture-as-antipattern.md index 30d9aacb..1995b1c6 100644 --- a/docs/research/12-architecture-as-antipattern.md +++ b/docs/archive/research/12-architecture-as-antipattern.md @@ -1,3 +1,10 @@ +> ⚠ **АРХИВ. ИСТОРИЧЕСКОЕ — инструкции и рекомендации отсюда НЕ ИСПОЛНЯЮТСЯ.** +> Вынесен из `docs/research/` 28.08.2026 аудитом документации (**D39.168**) по слову владельца. +> **Основание выноса:** внешний материал без зафиксированного провенанса; ~85% дублирует заземлённые `12-failure-modes-*`, центральный тезис абсорбирован армом D13.1. Живых входящих ссылок НОЛЬ (граф проверен приёмкой). +> Тело сохранено без правок — это УЛИКА, а не действующий документ. + +--- + # 12-architecture-as-antipattern. Как пайплайн усиливает ошибки модели (внешний материал) > ⚠ **ПРОВЕНАНС НЕ ЗАФИКСИРОВАН (шапка добавлена оркестратором 09.07.2026).** Текст ниже — вставленный ответ внешней LLM, полученный владельцем (модель/промпт/дан ли контекст проекта — не записано; **владельцу: уточнить** — если модель видела контекст проекта, «конвергенция» с нашими решениями частично циркулярна и не считается независимым подтверждением). Верификационный статус (`../archive/architecture/07-strategic-review.md` §4.1): большинство тезисов конвергентно уже принятым решениям (hard gates ≈ детерминированные гейты, versioned store ≈ glossary_revisions, uncertainty ≈ disposition, спойлер-окна ≈ since/until, ре-валидация ≈ post-check финала); центральный тезис §1–2 (monolingual polish теряет accuracy) **независимо подтверждён по первоисточнику arXiv:2605.13368** → пилот-арм D13.1; непроцитированные числа («85,7→76–78» и пр.) — НЕ факты до верификации. Реальные точки напряжения: моно-редактор D1 (→D17), rewrite-vs-patch (решает пилот C0–C3), self-preference Gemini-апекс/судья (→second-opinion судья, план Ф2). diff --git a/docs/research/19-chunking-cohesion-sources.md b/docs/archive/research/19-chunking-cohesion-sources.md similarity index 99% rename from docs/research/19-chunking-cohesion-sources.md rename to docs/archive/research/19-chunking-cohesion-sources.md index 4b4f65a0..948e7971 100644 --- a/docs/research/19-chunking-cohesion-sources.md +++ b/docs/archive/research/19-chunking-cohesion-sources.md @@ -1,3 +1,10 @@ +> ⚠ **АРХИВ. ИСТОРИЧЕСКОЕ — инструкции и рекомендации отсюда НЕ ИСПОЛНЯЮТСЯ.** +> Вынесен из `docs/research/` 28.08.2026 аудитом документации (**D39.168**) по слову владельца. +> **Основание выноса:** приложение-библиография к отчёту 19 (54 VERDICT'а), 171 КБ — самый жирный файл корпуса. Тема закрыта: когезия НЕ строится и кнобы удалены (D39.7/8), диффы отложены (D39.108), full-regen подтверждён (D39.117). ⚠ РОДИТЕЛЬ `research/19-chunking-cohesion.md` ЖИВ (десять входящих ссылок, включая скрипты полигона) — приёмка поправила рекомендацию «выносить парой»: вынесено только приложение, у родителя правлен указатель. +> Тело сохранено без правок — это УЛИКА, а не действующий документ. + +--- + # research/19 — приложение: источники и вердикты адверсариальной верификации > Сгенерировано сессией-ресёрчером 2026-07-16. Веб-фактура: 65-агентный workflow (8 тем + верификация + critic + добор). diff --git a/docs/experiments/01-token-calibration.md b/docs/experiments/01-token-calibration.md index 31c83a42..4b9c26f3 100644 --- a/docs/experiments/01-token-calibration.md +++ b/docs/experiments/01-token-calibration.md @@ -56,7 +56,7 @@ ## Расхождение №1: цена иероглифа (>15%) -`09-cost-model.md` §1.1 закладывал **0.65 (DeepSeek) / 0.75 (GPT-4o) ток./иероглиф** по внешним бенчмаркам. Замер на литературной прозе (упрощённые иероглифы): **DeepSeek 0.86 (+32%), Qwen 0.93, GLM 0.90, o200k 1.07 (+43%)**. Причина, вероятно, в составе внешних замеров (новостной/веб-текст с иной долей пунктуации и частотных клише). Следствие: B вебновеллы 500 глав (1.5M иероглифов) = **1.29M токенов DeepSeek / 1.39M Qwen / 1.61M o200k** вместо модельных 1.0–1.15M. +`archive/research/09-cost-model.md` §1.1 закладывал **0.65 (DeepSeek) / 0.75 (GPT-4o) ток./иероглиф** по внешним бенчмаркам. Замер на литературной прозе (упрощённые иероглифы): **DeepSeek 0.86 (+32%), Qwen 0.93, GLM 0.90, o200k 1.07 (+43%)**. Причина, вероятно, в составе внешних замеров (новостной/веб-текст с иной долей пунктуации и частотных клише). Следствие: B вебновеллы 500 глав (1.5M иероглифов) = **1.29M токенов DeepSeek / 1.39M Qwen / 1.61M o200k** вместо модельных 1.0–1.15M. ## Расхождение №2: объём русского выхода (>15%, критично для zh→ru) diff --git a/docs/research/08-legal.md b/docs/research/08-legal.md index 18bda658..174391ec 100644 --- a/docs/research/08-legal.md +++ b/docs/research/08-legal.md @@ -10,7 +10,7 @@ > (пп. 6 TL;DR и разделы про провайдеров). Действующая картина сложилась позже и ратифицирована: > ре-чек ToS 31.07 (D39.32/D39.57 — предмет Google-мониторинга перевешен на цепочку договора) · > Anthropic из цепочки ВЫБРОШЕН · судья эротики Gemini непригоден (`PROHIBITED_CONTENT` -> неконфигурируем, D22.6) · `accepts_labels` держатся ПУСТЫМИ до фактов ToS (fail-closed, D39.27/28). +> неконфигурируем, D22.6) · `accepts_labels` держатся ПУСТЫМИ до фактов ToS (fail-closed, D39.27/28). ⚠ **ПРОТУХЛО, испр. 28.08 (D39.168): ФАКТЫ ПРЕДЪЯВЛЕНЫ И ПОЛЯ ЗАПОЛНЕНЫ** — `backend/configs/models.yaml:99` и `:160` несут `[sexually-explicit]`, `:172` — `[violence, sexually-explicit]`, с датой вендор-пере-проверки в самом конфиге. Fail-closed как МЕХАНИЗМ жив (пустое поле по-прежнему запрещает всё), но утверждение «полей нет ни у кого» ложно. ⚠ Расхождение стояло на оси, где ошибка стоит АККАУНТА. > Что вправе делать каждый провайдер сегодня — `docs/experiments/00-provider-quirks.md` и > `backend/configs/models.yaml`, а не этот файл. Следующий триггер ре-чека — 25.10.2026 (строка 4). diff --git a/docs/research/11-gap-5.md b/docs/research/11-gap-5.md index 2db60aa7..83f51592 100644 --- a/docs/research/11-gap-5.md +++ b/docs/research/11-gap-5.md @@ -162,4 +162,4 @@ Live-запросы к `tl.rulate.ru/search` (счётчик «Найдено N **Платёжная фрикция РФ:** [DTF: подписка ChatGPT Plus/Pro — цены и оплата из России](https://dtf.ru/howto/5021750-podpiska-chatgpt-plus-i-pro-tseny-i-oplata-iz-rossii) · [vc.ru: как оплатить ChatGPT в России](https://vc.ru/services/2912049-kak-oplatit-chatgpt-v-rossii) · [DTF: способы оплаты DeepSeek из России](https://dtf.ru/howto/4875117-sposoby-oplaty-deepseek-iz-rossii) -**Связанные документы:** docs/research/01-market.md (SAM-гипотеза) · docs/research/02-competitors.md (цены конкурентов) · docs/research/09-cost-model.md (COGS и стартовая сетка $19). +**Связанные документы:** docs/research/01-market.md (SAM-гипотеза) · docs/research/02-competitors.md (цены конкурентов) · docs/archive/research/09-cost-model.md (COGS и стартовая сетка $19). diff --git a/docs/research/13-memory-bank-validation.md b/docs/research/13-memory-bank-validation.md index 323fed66..8bce0ca7 100644 --- a/docs/research/13-memory-bank-validation.md +++ b/docs/research/13-memory-bank-validation.md @@ -1,3 +1,10 @@ +> ⚠ **РЕВЮ-ШАПКА, поставлена 28.08.2026 аудитом документации (D39.168). ЧИТАТЬ ПРЕЖДЕ ТЕЛА.** +> **Несущая рекомендация этого отчёта — эмбеддинг-«второй эшелон» (гибрид + reranker, `bge-m3` дефолтом Фазы 2) — НЕ ИСПОЛНЯЕТСЯ.** +> Класс закрыт ратификацией **D39.69** «по нужности»: горячий путь банка памяти детерминирован, эмбеддинги в него не заводятся +> без предъявленной нужды. Гейт F1 («snapshotID под память до инъекции Фазы 1»), поданный здесь открытым долгом, ПОСТРОЕН (D39.2). +> Тело оставлено без правок — это улика метода, а не действующее задание. ⚠ До 28.08 шапки у файла не было ВОВСЕ, и он читался +> как живой заказ: это и есть класс, ради которого шапка ставится. + # Валидация банка памяти книги: вердикт, что менять, обоснование и источники Дата: 2026-07-04. Сессия **«Валидация банка памяти»** (промт `docs/archive/prompts/MEMORY_RESEARCH_SESSION_PROMPT.md`). Предмет — решение **Р3 «Банк памяти книги»** (`architecture/01-decisions.md`) и исследовательская база `research/05-memory-glossary.md`. Мандат: **адверсариально провалидировать** подход до заморозки в коде — не поверить, а попытаться сломать. diff --git a/docs/research/14-adaptive-memory.md b/docs/research/14-adaptive-memory.md index 2d5e82d8..71d04f29 100644 --- a/docs/research/14-adaptive-memory.md +++ b/docs/research/14-adaptive-memory.md @@ -1,3 +1,10 @@ +> ⚠ **РЕВЮ-ШАПКА, поставлена 28.08.2026 аудитом документации (D39.168). ЧИТАТЬ ПРЕЖДЕ ТЕЛА.** +> Три несущих утверждения тела ОПРОВЕРГНУТЫ ратификациями: +> · §2/§9-L1 «post-check ОБЯЗАН лемматизировать (`pymorphy3`)» — ратифицирован ИНОЙ путь: decl-aware через `decl.forms` (D24.4); +> · эмбеддинг-«второй эшелон» — класс закрыт D39.69 «по нужности», горячий путь детерминирован; +> · таблица проб §0 называет редактором стека `grok-4.3` — редактор **deepseek-v4-pro** (D39.22). +> Тело оставлено без правок — это улика метода, а не действующее задание. ⚠ До 28.08 шапки не было ВОВСЕ. + # Адаптивный/обучающийся слой памяти: стоит ли гибрид, огибающая осуществимого, арбитраж Дата: 2026-07-05. Сессия **«Адаптивный слой памяти»** (промт `docs/archive/prompts/ADAPTIVE_MEMORY_RESEARCH_PROMPT.md`). Предмет — вопрос владельца: не будет ли **максимально эффективным гибрид** «отлаженный детерминированный банк памяти (Р3) + слой, обучающийся ПО ХОДУ перевода книги» (in-context / локальный LoRA / kNN-MT / online-retrieval / само-коррекция), и **как именно смёржить под наш жёсткий локально-стоимостный контур**. Мандат — адверсариально проверить, стоит ли оно того, а не поверить в модность. diff --git a/docs/research/19-chunking-cohesion.md b/docs/research/19-chunking-cohesion.md index 19e47547..d8f65ba7 100644 --- a/docs/research/19-chunking-cohesion.md +++ b/docs/research/19-chunking-cohesion.md @@ -848,7 +848,7 @@ exp14b-батарея a/b/c/d (T-inv), 25-глав rerun (`records.json`) для я не гоняю платную эмпирику). Приоритет: Q2b — бесплатный и бьёт прямо в центральный конфликт. 10. Веб-фактура отчёта: 65-агентный workflow; 52 клейма получили явный вердикт верификатора (36 CONFIRMED / 16 OVERSTATED с коррекциями — коррекции внесены в текст или §B0). Полное - приложение (клеймы + URL + вердикты) — `docs/research/19-chunking-cohesion-sources.md` + приложение (клеймы + URL + вердикты) — `docs/research/../archive/research/19-chunking-cohesion-sources.md` (лендить вместе или отдельно — на ваше усмотрение). Пост-хок само-ревью отчёта: 5-линзовый адверсариальный workflow (репо-грунтовка / верность цитат / методология §D / Go-реализуемость / консистентность) — 8 MAJOR-находок исправлены в тексте до сдачи (общий знаменатель трапов,