Sweep all documentation against era D39.96-101: closed-row pointers refreshed, lost chronicle headers restored, glossary extended, stale statuses annotated with closure markers
This commit is contained in:
parent
405b39fe2a
commit
e8f6f0d37b
13 changed files with 69 additions and 56 deletions
|
|
@ -21,13 +21,13 @@ Go-бэкенд издательского художественного пер
|
|||
| **Фронт** | `frontend/` | нет — лендит оркестратор | читать можно; пинги, итоги и вопросы — ЗОННЫЙ журнал `frontend/docs/frontend-PROGRESS.md` (решение владельца 02.08/04.08; в `docs/PROGRESS.md` фронт НЕ пишет), туда же пишет и оркестратор; продуктовые требования — `docs/product-requirements.md`, НЕ из памяти |
|
||||
| **Платформа** | `platform/` (SaaS control plane: пользователи/квоты/очередь/HTTP; движок дёргает процессами, D39.81) | нет — лендит оркестратор | читать можно; пинги и итоги — ЗОННЫЙ журнал `platform/docs/platform-PROGRESS.md` (решение владельца 04.08), в `docs/PROGRESS.md` не пишет |
|
||||
|
||||
Координация — журнал `docs/PROGRESS.md` (секции «Бэкенд»/«Полигон»/«Память»/«Голос и состояние»/«Ридер-IDE»; сверху CURRENT-STATE). Записывай туда краткие итоги своей сессии. Закрытые хроники вынесены в слайсы `docs/archive/PROGRESS-*.md` — НЕ читать при онбординге, только по конкретной ссылке. Параллельные сессии — норма: чужие незакоммиченные файлы в дереве не трогать; сессия считается ЖИВОЙ, пока владелец не сказал обратное.
|
||||
Координация — журнал `docs/PROGRESS.md` (секции «Бэкенд»/«Полигон»/«Память»/«Голос и состояние»/«Ридер-IDE»; сверху CURRENT-STATE). Записывай туда краткие итоги своей сессии — **кроме фронта и платформы: их итоги/пинги ТОЛЬКО в зонных журналах** `frontend-PROGRESS.md`/`platform-PROGRESS.md` (решение владельца 04.08, D39.100). Закрытые хроники вынесены в слайсы `docs/archive/PROGRESS-*.md` — НЕ читать при онбординге, только по конкретной ссылке. Параллельные сессии — норма: чужие незакоммиченные файлы в дереве не трогать; сессия считается ЖИВОЙ, пока владелец не сказал обратное.
|
||||
|
||||
## Источники истины (по убыванию)
|
||||
|
||||
1. **`docs/architecture/05-decisions-log.md`** — ратифицированный контракт; при конфликте с любым другим доком побеждает он; сверху файла — карта актуальности (что чем superseded), свежая голова — С ХВОСТА файла. **Правило чтения (онбординг-диета 25.07): карта + живая голова (эра D39.x); корпус D1–D38 = справочник — по ссылкам/grep по D-номеру, целиком НЕ читать.**
|
||||
2. `docs/experiments/00-provider-quirks.md` — wire-квирки провайдеров (читать ПЕРЕД правкой адаптеров/вызовами провайдеров).
|
||||
3. `docs/architecture/09-target-architecture.md` (7 слоёв; статус стройки — шапка-таблица) · `12-go-style-notes.md` (норматив общности §0) · `10-prompt-architecture.md` (промпт-тема).
|
||||
3. `docs/architecture/09-target-architecture.md` (7 слоёв; статус стройки — шапка-таблица) · `12-go-style-notes.md` (норматив общности §0) · `10-prompt-architecture.md` (промпт-тема) · `14-api-contract/` — **ратифицированный контракт API v0 фронт↔платформа** (OpenAPI 3.1 + компаньон, D39.99).
|
||||
3а. `docs/product-requirements.md` — реестр «что продукт обязан уметь» (производный от ЖИВОГО брифа владельца `START_PROMT.MD` V0–V5 + находок H6–H18; статусы сверены кодом, актуализирует оркестратор при лендингах). Новые V-идеи владельца разбираются сюда, не остаются невидимыми.
|
||||
4. `docs/architecture/01-decisions.md` (Р1–Р10), `02-mvp-plan.md`, `04-unhappy-paths.md`, `06-memory-risk-registry.md` — тела исторические, читать через ⚠-баннеры 25.07.
|
||||
5. `docs/research/*` — фактура; часть под ⚠ superseded/построено-баннерами — читай баннер прежде содержимого.
|
||||
|
|
@ -56,4 +56,4 @@ Go-бэкенд издательского художественного пер
|
|||
|
||||
1. Этот файл → `docs/README.md` (карта) → CURRENT-STATE в `docs/PROGRESS.md`. Непонятный жаргон/сокращения — `docs/glossary.md`.
|
||||
2. `docs/architecture/05-decisions-log.md`: карта актуальности (шапка) + живая голова (D39.x). Целиком НЕ читать — корпус D1–D38 по ссылкам/grep по мере надобности.
|
||||
3. По роли: Бэкенд — `backend/README.md` + `03-implementation-notes.md` (через баннер) + `12-go-style-notes.md`; Полигон — `eval/README.md` + `experiments/00` + `09-pilot-protocol.md`; Фронт/продукт — `docs/product-requirements.md` + `research/16` (через ревью-шапку); всем — шапка-таблица `09-target-architecture.md` (статус слоёв).
|
||||
3. По роли: Бэкенд — `backend/README.md` + `03-implementation-notes.md` (через баннер) + `12-go-style-notes.md`; Полигон — `eval/README.md` + `experiments/00` + `09-pilot-protocol.md`; Фронт/продукт — `docs/product-requirements.md` + `research/16` (через ревью-шапку) + контракт `architecture/14-api-contract/`; Платформа — `platform/README.md` + зонный журнал + `research/23` + контракт 14; всем — шапка-таблица `09-target-architecture.md` (статус слоёв).
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
## ХЕНДОФФ №8 → №9 (26.07.2026, вечер)
|
||||
|
||||
> **Счётчик ролей — канонический ОДИН:** «оркестратор №N» (сейчас №12 — хендофф 02.08.2026 ночью, №11 закрыт после D39.95; состояние передачи — D39.94 + PROGRESS CURRENT-STATE, отдельной записки нет). «Передача роли №6» в заголовке файла и «ХЕНДОФФ №8→№9» — исторические номера эстафеты документа, текущим счётчиком НЕ являются (фидбек новой сессии 02.08).
|
||||
> **Счётчик ролей — канонический ОДИН:** «оркестратор №N» (сейчас №13 — хендофф 04.08.2026, №12 закрыт после D39.101; состояние передачи — D39.101 + PROGRESS CURRENT-STATE + записка, переданная владельцем). «Передача роли №6» в заголовке файла и «ХЕНДОФФ №8→№9» — исторические номера эстафеты документа, текущим счётчиком НЕ являются (фидбек новой сессии 02.08).
|
||||
|
||||
**Позиция и первые задачи хендоффа №8→№9 (26.07) — ИСТОРИЧНЫ И ИСПОЛНЕНЫ** (малая пачка 14а+14б → D39.54 · пак-19 → D39.55/56 · холодный мини-прогон → D39.58 · пак-21 «чекеры» → растворён D39.62, исполнен пакетом D39.78) — здесь не пересказываются (историзировано D39.80: файл нёс протухшую очередь как второй носитель состояния). **ЕДИНЫЙ БЭКЛОГ = секция «Бэклог» в PROGRESS.md — единственный трекер.** Текущее состояние и очередь — ТОЛЬКО PROGRESS CURRENT-STATE; онбординг стандартный (CLAUDE.md → README → CURRENT-STATE → голова D-лога).
|
||||
|
||||
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
**Норма «дисциплина ответа» (владелец 26.07, для Opus-класса моделей — вставлять в каждый сессионный промт):** эрудиция ≠ улика (грунт `file:line`/замер или пометка «мнение») · не пересказывать промт · плотность, не объём · без шаблонных оговорок и советов вне скоупа · комментарии 1–2 строки, улики — в отчёт.
|
||||
|
||||
**Норма приёмки и усилий (владелец 30.07, ужесточает пропорциональность 25.07):** тяжёлый агентный аппарат (воркфлоу-верификаторы, панели) — ТОЛЬКО поверх серьёзных перестроек и дизайнов; в остальном сессиям доверяем. Значительные изменения → промт сессии несёт цикл «план → синк по вопросам → чтение доков полигона/оркестратора → исполнение → самоверификация ТОЙ ЖЕ сессией». Оркестратор: КОРОТКАЯ приёмка чтением отчёта · общее планирование над репо · досинхронизация команды (полигону — инструкции смотреть на бэкенд, бэкенду — на полигон-экспы) · правка недосинхронизированных мест. Токены беречь: болтливость сессий подрезать промтами, свои усилия — тоже.
|
||||
**Норма приёмки и усилий (владелец 30.07; ⚠ часть «короткая приёмка чтением отчёта» АМЕНДИРОВАНА владельцем 03.08 — приёмка ВСЕГДА адверсариальная, блок «Анти-паттерны приёмки» ниже; экономия остаётся для промтов/планирования):** тяжёлый агентный аппарат (воркфлоу-верификаторы, панели) — ТОЛЬКО поверх серьёзных перестроек и дизайнов; в остальном сессиям доверяем. Значительные изменения → промт сессии несёт цикл «план → синк по вопросам → чтение доков полигона/оркестратора → исполнение → самоверификация ТОЙ ЖЕ сессией». Оркестратор: КОРОТКАЯ приёмка чтением отчёта · общее планирование над репо · досинхронизация команды (полигону — инструкции смотреть на бэкенд, бэкенду — на полигон-экспы) · правка недосинхронизированных мест. Токены беречь: болтливость сессий подрезать промтами, свои усилия — тоже.
|
||||
**Норма самопроверки сессий (владелец 01.08, «ВСЕГДА. НА ВАЖНЫХ»):** промт ЛЮБОЙ важной сессии (бэкенд-паки, ресёрчи, платные полигон-пакеты) ОБЯЗАН нести явный мандат самопроверки исполнением; на мелких задачах — самопроверка меньше, без тяжёлого аппарата. В мандат включать урок D39.61: «вывод на агрегате до вскрытия единиц запрещён — перед сравнительным выводом открыть хотя бы одну единицу с каждой стороны»; для денег — два независимых пути счёта; помнить «леджер = нижняя граница» (строка 78).
|
||||
**Триаж находок (урок 02.08):** триаж многоисточниковых свипов/ревью завершать МАШИННОЙ сверкой «каждая рекомендация → живой носитель (строка/дописка/D-закрытие)», не глазами — глазной триаж уронил 5 из ~95 рекомендаций (ведро D и др., D39.72/73).
|
||||
|
||||
|
|
@ -25,7 +25,7 @@
|
|||
|
||||
## Кто ты
|
||||
|
||||
Ты — **оркестратор** проекта TextMachine (Go-бэкенд издательского художественного перевода ранобэ/вебновелл zh/ja/en→ru мультиагентным LLM-пайплайном; инвариант общности §0.1: ЛЮБАЯ книга/пара/структура, пара = ось данных). Владелец стартует рабочие сессии по промтам, которые пишешь ты («Бэкенд» → `backend/`, «Полигон» → `eval/`+`docs/experiments/`, ресёрч → `docs/research/`); они отчитываются владельцу, он пересылает отчёты тебе. Владелец — твой связной между всеми сессиями: короткие записки для пересылки (промты живут файлами, записки — компактные).
|
||||
Ты — **оркестратор** проекта TextMachine (Go-бэкенд издательского художественного перевода ранобэ/вебновелл zh/ja/en→ru мультиагентным LLM-пайплайном; инвариант общности §0.1: ЛЮБАЯ книга/пара/структура, пара = ось данных). Владелец стартует рабочие сессии по промтам, которые пишешь ты («Бэкенд» → `backend/` · «Полигон» → `eval/`+`docs/experiments/` · ресёрч → `docs/research/` · «Фронт» → `frontend/` · «Платформа» → `platform/`); они отчитываются владельцу, он пересылает отчёты тебе. Прогресс/пинги фронта и платформы — ТОЛЬКО в зонных `frontend-PROGRESS.md`/`platform-PROGRESS.md` (D39.100): читай их при каждом лендинге зоны. Владелец — твой связной между всеми сессиями: короткие записки для пересылки (промты живут файлами, записки — компактные).
|
||||
|
||||
**Зона записи:** `docs/` + корневые онбординг-доки. Чужие зоны читать/ревьюить; коммитишь их работу ты после приёмки (сессии не коммитят; исключение — пре-рег фризы полигона). **Функции:** (1) внешнее ревью каждого пакета ДО коммита; (2) ратификация решений D-блоками; (3) хендофф-промты; (4) синхронизация доков; (5) ответы владельцу с честной калибровкой.
|
||||
|
||||
|
|
@ -47,7 +47,7 @@
|
|||
- **Свип зонных решений владельца (урок D39.99 п.4):** при каждом лендинге зоны вычитать из зонного журнала НОВЫЕ «решения владельца» и вынести на confirm списком; решение, живущее только в зонном доке при противоречащем каноне, — дефект синхронизации, чинится ратификацией или опровержением, не молчанием.
|
||||
- **Анти-паттерны приёмки:** приёмка проверяет НАПРАВЛЕНИЕ и решения пака, не только клеймы отчёта. Шесть ловушек: след отчёта (проверяешь лишь названные автором места) · связность вместо истинности (форма отчёта убеждает сама) · соглашательство с чёткой позицией (распространенная ошибка ллм моделей склонных соглашаться с человеком) · рационализация задним числом · слепой участок общих моделей обученных на одинх и тех же данных (выводы одной модели усиливают уверенность в правильности другой) · экономия усилия на неудобном. Механика-минимум: ≥1 верификатор выносит мнение по промту+диффу ДО чтения отчёта · ≥1 ищет дефекты ВНЕ карты отчёта · экспериментальный клейм без ре-рана (хотя бы редуцированного) в D-ноте помечается «со слов сессии», не «исполнением» · «решение владельца», известное только со слов сессии, НЕ ратифицируется — список confirm/deny владельцу ДО лендинга, если решение несущее · к утверждениям самой приёмки та же дисциплина «заявление=команда» (догадку фактом не подавать) · оценочные эпитеты в ноты не писать.
|
||||
- **Пре-рег дисциплина полигона:** фриз коммитом ДО платных вызовов (единственный коммит сессии); изменения после = новый experiment-ID; девиации — явно в отчёте; стоп-гейты по бюджету легитимны; «если не влезает — стоп и пинг, не резать молча».
|
||||
- **Лендинг:** микро-дефекты доков чинишь сам с пометкой «испр. оркестратором»; отчёты получают ревью-шапку; код не правишь — находки в фикс-лист; коммиты скоуп-раздельные, стейджинг пофайловый; `git status` перед каждым коммитом (в дереве бывают ≥2 живые сессии) + **`git diff --cached` перед `commit`** — коммит уносит ВЕСЬ индекс: чужой staged `git mv` уедет в твой коммит (инцидент 77dd9b8); `add` общего файла сметает чужую секцию — diff-контент/`add -p`. **Лендинг, двигающий файлы или состав активных промтов, обновляет `docs/README.md` тем же коммитом** (норма D39.80; урок 02.08: README объявлял заленденный пак «можно запускать» с мёртвой ссылкой — поймал не процесс, а новая сессия). Статус/голову README не несёт вовсе — единственный носитель состояния = PROGRESS CURRENT-STATE. **Перед коммитом ратификации — механический чек головы:** `grep "голова D" docs/PROGRESS.md` обязан показать номер ТОЛЬКО ЧТО ратифицированной ноты (голова отставала дважды: D39.81 и D39.83 — оба раза «Текущее» обновлено, число головы забыто).
|
||||
- **Лендинг:** микро-дефекты доков чинишь сам с пометкой «испр. оркестратором»; отчёты получают ревью-шапку; код не правишь — находки в фикс-лист; коммиты скоуп-раздельные, стейджинг пофайловый; `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. **Перед коммитом ратификации — механический чек головы:** `grep "голова D" docs/PROGRESS.md` обязан показать номер ТОЛЬКО ЧТО ратифицированной ноты (голова отставала дважды: D39.81 и D39.83 — оба раза «Текущее» обновлено, число головы забыто).
|
||||
- **Findings-ledger процесс (концерн 5):** каждая находка — явная диспозиция до закрытия; вопросы «к бэкенду» из ресёрчей маршрутизируются обратно; completeness-critic на границах фаз.
|
||||
- **Ратификация:** D-блоки (образцы D39.х), PROGRESS-запись; владельцу — деньги сверх мелочи, скоуп-сдвиги, продукт, 18+.
|
||||
- **Стиль с владельцем:** прямота, честная калибровка (verified ≠ гипотеза), признавай ошибки явно, без жаргона и сокращений в продуктовых ответах; каждое ревью: вердикты → что ратифицировано → что нужно от владельца.
|
||||
|
|
@ -86,5 +86,5 @@
|
|||
|
||||
**Чего НЕ делать (тоже по переписи):** полировать промты сверх нормы выше (потолок канала — 5/180) · параллельные сессии без крайней нужды (13/180 — все коллизии оттуда) · процессы тяжелее этих строк. **Свобода сессий + верификация > предписание** (0/180 инцидентов класса «слишком много свободы»; лучшие решения паков 14/15 родились в размеченной свободе).
|
||||
|
||||
**Пропорциональность (поправка владельца 25.07 — токены сессий жгутся, экономить где можно):** весь аппарат выше — ПО ДЕЛУ, решает оркестратор по весу пака. **Тяжёлый** (дизайн / wire-двигающий / новый механизм / межпакетные швы) → полный аппарат: эхо-протокол, двухфазность, манифест заявление=команда, воркфлоу-приёмка. **Лёгкий** (механические хвосты, точечные фиксы, док-правки) → короткий пошаговый промт «куда посмотреть, что сделать», без церемоний; приёмка — инлайн-проверкой, не воркфлоу. Градация — на твоей совести; ошибка в сторону лёгкости чинится дельтой, ошибка в сторону тяжести — невозвратные токены.
|
||||
**Пропорциональность (поправка владельца 25.07 — токены сессий жгутся, экономить где можно):** весь аппарат выше — ПО ДЕЛУ, решает оркестратор по весу пака. **Тяжёлый** (дизайн / wire-двигающий / новый механизм / межпакетные швы) → полный аппарат: эхо-протокол, двухфазность, манифест заявление=команда, воркфлоу-приёмка. **Лёгкий** (механические хвосты, точечные фиксы, док-правки) → короткий пошаговый промт «куда посмотреть, что сделать», без церемоний; приёмка — инлайн-проверкой, не воркфлоу (⚠ инлайн ≠ неадверсариально: минимум анти-паттернов — мнение до отчёта, поиск вне карты — действует и здесь, владелец 03.08). Градация — на твоей совести; ошибка в сторону лёгкости чинится дельтой, ошибка в сторону тяжести — невозвратные токены.
|
||||
11. **Сэндбокс-репродукции через драйвер** (урок пака-16, 25.07): пак, меняющий ОТГРУЖАЕМЫЕ байты или добавляющий исполняемый механизм, самопроверяется и принимается ГОНЯЯ код через настоящий драйвер (overlay-тесты, mock-провайдер, сквозные сценарии), не чтением диффа: девять дефектов фазы 2 пака-16 прошли тесты автора и 4-линзовое чтение — поймало только исполнение панели/приёмки.
|
||||
|
|
|
|||
|
|
@ -4,9 +4,9 @@
|
|||
> **Дельта 01.08 №2 (свип полноты D39.66):** при переупаковке в пилот-преп-промт добрать строку 85 бэклога: Bertalign GOLD-пары + spot-check (D29.2в) · fidelity-каскад R2 shadow (D25.2) · exp08 v3 (D21.8); echo-калибровка D25.7 остаётся здесь residual-ом (не потеряна).
|
||||
> **Дельта 01.08 (оркестратор №9):** P4 fidelity-хвост (D21.9) из residual ЗАКРЫТ — D39.61, «цены верности не обнаружено», эмпирика P4 superseded весами 0731. Остальной residual (судья-дублёр D22.6 · echo-калибровка D25.7 · миграция `memory_eval` с gemini-2.5-flash, EOL 16.10 · пилот-пре-рег) жив, переупакуется в пилот-преп-промт при активации Ф2.5.
|
||||
> Как отдельная сессия пакет №4 **НЕ запускался**. Отработана только **Задача 1 (сид-мн.ч.)** — влита в сид v2 внутри exp13 (D32, `guzhenren-seed-v2.yaml`). **Открыто (пилот/18+/echo-трек — ортогонально бэкенд-курсу, в паки НЕ вносить):**
|
||||
> - **Задача 2 (fix-лист D22.8):** (а) content-filter матчер подстрокой + самотест; (б) параметризация языка/жанра `explicit_judges.py`; (в) **миграция судьи `memory_eval.py` с gemini-2.5-flash** (EOL 16.10.2026 — `00-provider-quirks.md:74`); **(ж) проба судьи-дублёра 18+ (D22.6) — НАЗВАННЫЙ БЛОКЕР ПИЛОТА** (`09-pilot-protocol.md`, CURRENT-STATE).
|
||||
> - **Задача 2 (fix-лист D22.8):** (а) content-filter матчер подстрокой + самотест; (б) параметризация языка/жанра `explicit_judges.py`; (в) **миграция судьи `memory_eval.py` с gemini-2.5-flash** (EOL 16.10.2026 — `00-provider-quirks.md`, секция календаря deprecations); **(ж) проба судьи-дублёра 18+ (D22.6) — НАЗВАННЫЙ БЛОКЕР ПИЛОТА** (`09-pilot-protocol.md`; бэклог — строка 64).
|
||||
> - **Задача 3 (D25):** echo-калибровка (D25.7); дополнения пре-регистрации пилота (D25.2/25.6/25.8 → `09-pilot-protocol.md`); minimal-pairs shadow fidelity (совместить с корпусом пилота).
|
||||
> - **Задача 4 (D21.9):** P4 fidelity-хвост (35 пар); wire-аудит темп-свипа; D22.8-минорки (U+FF70 kana, append-only провенанс, judge-raw).
|
||||
> - **Задача 4 (D21.9):** ~~P4 fidelity-хвост (35 пар)~~ **ЗАКРЫТ D39.61 (дельта 01.08 выше) — не исполнять**; живое: wire-аудит темп-свипа; D22.8-минорки (U+FF70 kana, append-only провенанс, judge-raw).
|
||||
>
|
||||
> **Порядок (обновлено 25.07, пост-D39.22):** это ПИЛОТ-трек, downstream текущего курса «разработка бэкенда» (эксп пере-прогона ЗАКРЫТ D39.22; exp14 закрыт D37, его промт в архиве). При активации пилот-препа — переупакую residual в свежий промт (или гони отсюда, слаги судей — live-фактчеком `/models`); судья-дублёр 18+ (п.2ж) остаётся НАЗВАННЫМ БЛОКЕРОМ пилота. Гигиена D39.20: авто-QA слепых пакетов ключевать слепыми метками. 18+: только существующие артефакты `eval/data`, счётчики/метаданные в отчёт.
|
||||
|
||||
|
|
@ -14,11 +14,11 @@
|
|||
|
||||
## Кто ты и что делаешь
|
||||
|
||||
Ты — **полигон-сессия** (eval) TextMachine, пакет №4. Зона записи: `eval/` + `docs/experiments/` + курация сида `/home/ubuntu/books/gu-zhenren/guzhenren-seed.yaml` (вне git) — плюс своя секция в `docs/PROGRESS.md` → «## Полигон». **Ничего не коммитить** — лендинг у оркестратора. Приоритет №1 гейтит этап B приёмки; остальное — ратифицированная очередь D22.8/D25.
|
||||
Ты — **полигон-сессия** (eval) TextMachine, пакет №4. Зона записи: `eval/` + `docs/experiments/` + курация сида `/home/ubuntu/books/gu-zhenren/guzhenren-seed.yaml` (вне git) — плюс своя секция в `docs/PROGRESS.md` → «## Полигон». **Ничего не коммитить, КРОМЕ пре-рег фриза** (единственный коммит сессии, ДО платных вызовов — исключение git-канона v2, D39.98); остальной лендинг у оркестратора. Приоритет №1 гейтит этап B приёмки; остальное — ратифицированная очередь D22.8/D25.
|
||||
|
||||
## Онбординг (~40 мин)
|
||||
|
||||
1. `CLAUDE.md` → CURRENT-STATE в `docs/PROGRESS.md` → отчёт «## Приёмка Ф1 … этап A» (разбор D10 и класс промахов).
|
||||
1. `CLAUDE.md` → CURRENT-STATE в `docs/PROGRESS.md` → отчёт «Приёмка Ф1 … этап A» (ныне в архив-слайсе `docs/archive/PROGRESS-2026-07-10-13.md` — по прямой ссылке, слайс целиком не читать).
|
||||
2. `docs/architecture/05-decisions-log.md`: **D24.2/D24.4 (сид), D25.6–25.8 (твои задачи из внешней критики), D22.8 (fix-лист)**, D21.9 (висящие поручения).
|
||||
3. `eval/README.md` + `docs/experiments/00-provider-quirks.md` (шапка: правило двух направлений).
|
||||
|
||||
|
|
@ -45,7 +45,7 @@
|
|||
|
||||
### 4. Висящие хвосты (D21.9, если останется ёмкость)
|
||||
|
||||
- **Fidelity-хвост P4** (35 пар; сырьё продублировано в `/home/ubuntu/books/gu-zhenren/research15-probes/`) — гейтит анти-эхо wiring.
|
||||
- ~~**Fidelity-хвост P4**~~ **ЗАКРЫТ D39.61 — не исполнять** (сырьё в `/home/ubuntu/books/gu-zhenren/research15-probes/` остаётся для истории).
|
||||
- Wire-аудит пре-шаг temp-свипа; (г/д/е) D22.8-минорки: U+FF70 kana-корзина, append-only провенанс ретраев, judge-raw без `[:600]`.
|
||||
|
||||
## Дисциплина
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -1,6 +1,6 @@
|
|||
# TextMachine — документация
|
||||
|
||||
Проект: издательский художественный перевод крупных текстов (книги, ранобэ, вебновеллы; zh/ja/en→ru) мультиагентным пайплайном поверх LLM API. Go-бэкенд + веб-фронт ридер-IDE (Ф3). Цели и мерило — канон в [../CLAUDE.md](../CLAUDE.md); онбординг сессий — там же. Стартовый бриф владельца: [../START_PROMT.MD](../START_PROMT.MD) — **живой документ**, его V-идеи разобраны в реестр требований (ниже).
|
||||
Проект: издательский художественный перевод крупных текстов (книги, ранобэ, вебновеллы; zh/ja/en→ru) мультиагентным пайплайном поверх LLM API. Go-бэкенд + веб-фронт ридер-IDE (Ф3) + платформа (SaaS control plane, `platform/`, D39.81). Цели и мерило — канон в [../CLAUDE.md](../CLAUDE.md); онбординг сессий — там же. Стартовый бриф владельца: [../START_PROMT.MD](../START_PROMT.MD) — **живой документ**, его V-идеи разобраны в реестр требований (ниже).
|
||||
|
||||
**Состояние проекта НЕ здесь.** Очередь, курс, бэклог — CURRENT-STATE в шапке [PROGRESS.md](PROGRESS.md); решения — [architecture/05-decisions-log.md](architecture/05-decisions-log.md) (при конфликте с любым доком побеждает он). Эта страница — только карта «что где лежит».
|
||||
|
||||
|
|
@ -13,9 +13,9 @@
|
|||
- [09-target-architecture.md](architecture/09-target-architecture.md) — целевая 7-слойная архитектура (статус стройки — шапка-таблица; §3 — карта находок H/L) · [10-prompt-architecture.md](architecture/10-prompt-architecture.md) — промпт-слой · [12-go-style-notes.md](architecture/12-go-style-notes.md) — норматив общности §0 · [13-tech-debt-anchors.md](architecture/13-tech-debt-anchors.md) — якоря техдолга (справочник к бэклогу, НЕ трекер) · [14-api-contract/](architecture/14-api-contract/) — **контракт API v0 фронт↔платформа (D39.99)**: нормативная спека OpenAPI 3.1 (типы фронта генерятся из неё) + компаньон-README (провенанс ✓/◆/○, К-вопросы; зонная копия `frontend/docs/api-contract/` — байт-зеркало, сверять при лендинге).
|
||||
- Исторические, читать через ⚠-баннеры: [01-decisions.md](architecture/01-decisions.md) (Р1–Р10) · [02-mvp-plan.md](architecture/02-mvp-plan.md) · [03-implementation-notes.md](architecture/03-implementation-notes.md) · [04-unhappy-paths.md](architecture/04-unhappy-paths.md) · [06-memory-risk-registry.md](architecture/06-memory-risk-registry.md).
|
||||
- `experiments/` — эмпирика полигона: [00-provider-quirks.md](experiments/00-provider-quirks.md) — **читать перед любым вызовом провайдера**; [08-cost-model-v2.md](experiments/08-cost-model-v2.md) — денежная модель; [09-pilot-protocol.md](experiments/09-pilot-protocol.md) — пилот Ф2.5; остальные 01–16 — отчёты закрытых экспериментов (судьба — в баннерах/D-логе).
|
||||
- `research/` — фактура ресёрчей 01–22; у принятых — ревью-шапки, часть тел под ⚠ superseded: **читай баннер прежде содержимого**. Ключевые для навигации: 15 голос · 16 ридер-IDE · 17 внешняя критика · 18 рычаги качества · 19 нарезка · 20 банк-майнинг · 21 обзор транспорта · 22 доменные харнессы · 23 шов движок↔платформа (читать перед любым кодом стыка).
|
||||
- `research/` — фактура ресёрчей 01–23 (+24 арбитраж банка — в дереве, НЕ залендён, ждёт приёмки №13); у принятых — ревью-шапки, часть тел под ⚠ superseded: **читай баннер прежде содержимого**. Ключевые для навигации: 15 голос · 16 ридер-IDE · 17 внешняя критика · 18 рычаги качества · 19 нарезка · 20 банк-майнинг · 21 обзор транспорта · 22 доменные харнессы · 23 шов движок↔платформа (читать перед любым кодом стыка).
|
||||
- [PROGRESS.md](PROGRESS.md) — журнал: CURRENT-STATE + **ЕДИНЫЙ БЭКЛОГ** (единственный трекер) + живой хвост хроники. НЕ источник решений.
|
||||
- Активные хендофф-промты сессий (состав обновляется при каждом лендинге — норма D39.80): [ORCHESTRATOR_SESSION_PROMPT.md](ORCHESTRATOR_SESSION_PROMPT.md) (роль/нормы; состояния не дублирует) · [POLYGON_PACKAGE4_SESSION_PROMPT.md](POLYGON_PACKAGE4_SESSION_PROMPT.md) (полигон, отложен) · **платформа: [../platform/docs/PLATFORM_SESSION_PROMPT.md](../platform/docs/PLATFORM_SESSION_PROMPT.md) (P0, выдан и ЗАПУЩЕН 04.08, D39.100)** · фронт: `frontend/docs/S3_SESSION_PROMPT.md` (замок ОТКРЫТ — контракт ратифицирован D39.99; первый шаг — правки спеки по D39.100). Зонные журналы фронта/платформы — `frontend-PROGRESS.md` / `platform-PROGRESS.md` в их зонах (решение владельца 04.08: прогресс зон только там). **Бэкендного активного промта НЕТ** — пак стандартов + дофикс archguard исполнены, приняты и залендены (D39.96/97, 04.08; промты в `archive/prompts/`); следующие бэкендные: пак экрана 46 (промт ждёт выдачи по D39.94 п.3) и малый пак tools/go.mod (строка 118, D39.97 п.4). Банк-арбитраж: промт ИСПОЛНЕН пере-запуском 04.08 и заархивирован (`archive/prompts/`); отчёт `research/24` + `eval/bank_arbitration/` в дереве НЕ залендены — **первая задача приёмки оркестратора №13**.
|
||||
- Активные хендофф-промты сессий (состав обновляется при каждом лендинге — норма D39.80): [ORCHESTRATOR_SESSION_PROMPT.md](ORCHESTRATOR_SESSION_PROMPT.md) (роль/нормы; состояния не дублирует) · [POLYGON_PACKAGE4_SESSION_PROMPT.md](POLYGON_PACKAGE4_SESSION_PROMPT.md) (полигон, отложен) · **платформа: [../platform/docs/PLATFORM_SESSION_PROMPT.md](../platform/docs/PLATFORM_SESSION_PROMPT.md) (P0 ИСПОЛНЕН 04.08 — ждёт приёмки №13, D39.101 п.3-iv; дерево `platform/*` не залендено, не трогать)** · фронт: `frontend/docs/S3_SESSION_PROMPT.md` (замок ОТКРЫТ — контракт ратифицирован D39.99; первый шаг — правки спеки по D39.100). Зонные журналы фронта/платформы — `frontend-PROGRESS.md` / `platform-PROGRESS.md` в их зонах (решение владельца 04.08: прогресс зон только там). **Бэкендного активного промта НЕТ** — пак стандартов + дофикс archguard исполнены, приняты и залендены (D39.96/97, 04.08; промты в `archive/prompts/`); следующие бэкендные: пак экрана 46 (промт ждёт выдачи по D39.94 п.3) и малый пак tools/go.mod (строка 118, D39.97 п.4). Банк-арбитраж: промт ИСПОЛНЕН пере-запуском 04.08 и заархивирован (`archive/prompts/`); отчёт `research/24` + `eval/bank_arbitration/` в дереве НЕ залендены — **первая задача приёмки оркестратора №13**.
|
||||
- Зоны фронта (чужие, читать при касании стыка; каждая ведёт СВОЙ зонный бэклог — единый бэклог их строк не принимает, D39.84): [../frontend/](../frontend/) — веб-интерфейс: промт фронт-сессий S0–S7 + [STACK_DECISIONS.md](../frontend/docs/STACK_DECISIONS.md) (пины версий точными числами и ловушки, сверены с вебом 02.08) + [BACKLOG.md](../frontend/docs/BACKLOG.md) · [../platform/](../platform/) — SaaS control plane: README + [BACKLOG.md](../platform/BACKLOG.md) (П-1..П-5) + `docs/` (промт P0 · зонный журнал `platform-PROGRESS.md`).
|
||||
- `archive/` — история ([правила архива](archive/README.md)): закрытые промты (`prompts/`) · отчёты с ревью-шапками (`reports/` — на них ссылаются приёмки) · исполненные арх-доки (`architecture/`) · слайсы хроники `PROGRESS-*.md`. Инструкции оттуда не исполнять.
|
||||
- Диаграммы: [../backend/docs/components.puml](../backend/docs/components.puml) · [../backend/docs/pipeline.puml](../backend/docs/pipeline.puml) — дом рядом с кодом (D39.80), правятся бэкендом одним коммитом с кодом; вручную НЕ рендерить (владелец смотрит PlantUML-расширением VS Code).
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
# Журнал решений оркестратора — контракт D1–D39.101 (развязки 04.07 · пакеты 09–10.07 · приёмка/качество-первым/пивот/эмпирика 11–12.07 · арх-ресет+стройка пере-прогонного стека 13–19.07)
|
||||
|
||||
> **⟶ КАРТА АКТУАЛЬНОСТИ (ревизия D31, продлена до D38.2 [12.07]; исторические записи ниже НЕ переписываются — дисциплина D23.3).** Читая контракт целиком, держи под рукой, что чем перекрыто:
|
||||
> ⚠ **Навигация (актуализация 04.08):** два supersede-указателя эры D39.9x: **D39.88/D39.84 п.8 (право самокоммита фронта/платформы) → отозвано, коммитит ТОЛЬКО оркестратор** (D39.98 п.3; тела переписаны на месте с санкцией владельца, pre-rewrite — git `2b166b7`) · **норма 30.07 «короткая приёмка» → амендирована владельцем 03.08: приёмка всегда адверсариальная** (носитель — промт оркестратора §Анти-паттерны + D39.101 п.1) — упоминания «короткой приёмки» в телах читать через эту пометку.
|
||||
> ⚠ **Навигация (актуализация 01.08):** карта ниже детально покрывает D1–D39.28; решения D39.29+ живут хронологически в теле файла, **свежая голова — С ХВОСТА** (новые ноты аппендятся вниз). Сводка текущей головы и очередь — CURRENT-STATE в `../PROGRESS.md`.
|
||||
> - **Полностью superseded:** **D1 (моно-редактор) → D17 → D30.1 (редактор БИЛИНГВ)** · D9 (ja-приёмка) → D18 (蛊真人 zh→ru; ja — второй прогон) · D17 → D30.1 · скобка D19.4 «ключ без data-sharing» и D20.3 «чистый ключ = блокер пилота» → **D27** (единый ключ С data-sharing, отключение перед продом) · exp04-дефолт «editor grok-4.3» (D3) → D30.1 (grok reasoning-off из редакторских ролей СНЯТ — no-op; кандидат glm-5-билингв; gemini — премиум-эскалация только за санитайзером D30.3).
|
||||
> - **Частично амендировано:** D3 (канал B → D14.1/D19.1 + оговорки D22.5/D22.6; апекс-слаг `-preview` — D22.4; draft под вопросом exp13 — D30.6) · D6 («off/minimal для draft/edit» эродирован: draft thinking-ON принудительно, editor-off снят D30.1; живы per-роль принцип и D6.2-буфер) · D10 (+D24.2 alias-слепое пятно, истинная консистентность ≈99.5%) · D11-числа → exp08 → **D30.4** (флип D1 = +15–25%, ~$0.85/ранобэ; «$1.5–2» = неподписанная опция Б) · D12 (+D24.3 флоры max_tokens; +D29.1в rollup — амендмент вердикт-правила) · D13.1-арм из решающего → ПОДТВЕРЖДАЮЩИЙ (D30.1); +D25.3 prefix-анализ судьи · D14.2 закрыт D19.1/D22.4; D14.4 закрыт D22.1 · D15.3 исполнен; спека D15.2: v2→v3→v3.1 (D22.2), реализация = текущий пакет (D30.9) · D24.4 +D28.1 (precision/recall-трейдофф; hard-gate требует пере-замера) · порядок D24.5 отложен D26.1 (этап B — после читаемых 25 глав).
|
||||
|
|
@ -1463,4 +1464,6 @@ API-529-долг закрыт: 8-осевой refute-by-default воркфлоу
|
|||
|
||||
**3. Очередь №13 (по слову владельца):** (i) **приёмка банк-арбитража** — артефакты в дереве не залендены (`research/24` · `eval/bank_arbitration/` · черновик в `archive/reports/`; итог **$0.1073**, ⚠ арифметика пинга внутренне бита — сверить; потолок ратифицирован $1.20 против $1.00 в пинге; при лендинге поправить путь промта в шапке `research/24`); норма — адверсариальная приёмка, экспериментальные клеймы с репликацией (хотя бы редуцированной), лендинг одним атомарным заходом отчёт+харнесс+пинг с ревью-шапкой; (ii) **бэкенд-доработки по бэклогу**: выдать промт пака экрана 46 (дизайн заморожен D39.92 п.1+D39.93; фикстура 113 ПЕРВОЙ; денежный шаг ТОЛЬКО с подписью) · малый пак tools/go.mod (D39.97 п.4) · блокеры контракта 99/100/101/103/125 — промтом(ами) по готовности; (iii) вахта deepseek-v4-pro (триггер >05.08 НАСТУПАЕТ; реестр 108); (iv) **приёмка P0** — сессия успела ОТРАБОТАТЬ в ходе закрытия №12: отчёт и дизайн-ответы К-4/К-7/К-12/П-5 (предложениями, ратификация — оркестратор) в `platform/docs/platform-PROGRESS.md`; клеймы журнала («make check зелёный», healthz против живого Postgres 18.4) — СО СЛОВ, перепроверить исполнением; дерево `platform/*` целиком, включая модифицированный `go.mod`, не заленжено — не трогать до приёмки; свип трёх открытых вопросов (один — владельцу: авто-резюме после сброса лимитов) · лендинг S3 при её запуске (свип зонных журналов на «решения владельца» — норма D39.99 п.4).
|
||||
|
||||
**4. Грабли преемнику (проверено на себе):** пермишен-классифаер блокирует сорсинг `.env` — живые пробы промтом бэкенд-сессии или `!`-командой владельца · счёт очереди ТОЛЬКО скриптом по таблице (ручной список «скоро» недосчитывает жирные веса) · cwd в Bash-вызовах липнет между командами — пути абсолютные или с `cd` в начале · чужое незакоммиченное в дереве (артефакты арбитража) не трогать и не «прибирать» · голову D-лога и шапку PROGRESS сверять грепом перед закрытием (отставание головы — известный класс дефекта). (04.08.2026, оркестратор №12). ✅
|
||||
**4. Грабли преемнику (проверено на себе):** пермишен-классифаер блокирует сорсинг `.env` — живые пробы промтом бэкенд-сессии или `!`-командой владельца · счёт очереди ТОЛЬКО скриптом по таблице (ручной список «скоро» недосчитывает жирные веса) · cwd в Bash-вызовах липнет между командами — пути абсолютные или с `cd` в начале · чужое незакоммиченное в дереве (артефакты арбитража) не трогать и не «прибирать» · голову D-лога и шапку PROGRESS сверять грепом перед закрытием (отставание головы — известный класс дефекта).
|
||||
|
||||
**5. ДОБОР (тот же день): владелец поймал «актуализацию» на частичности — исполнен ПОЛНЫЙ док-свип** (6 сканеров по кластерам, 89 находок: 17 operative-wrong · 42 stale-pointer · 2 архив-кандидата · 28 nice-to-have; 11 файлов чисты). Применено ~60 правок по 15 файлам: CLAUDE.md (координация зонных журналов · контракт в источниках · онбординг платформы) · глоссарий +7 терминов (Платформа · S/P-нумерация · зонные журналы · контракт 14 · провенанс · ПТ-N · paused) · PROGRESS (два ПОТЕРЯННЫХ хроникальных заголовка D39.97/98 восстановлены — мои же правки их съели; пять 95-указателей → контракт 14; штампы; амендмент-маркеры «короткой приёмки»; разрыв таблицы склеен) · голова D-лога: два supersede-указателя (D39.88 · норма 30.07) · 09-target (стейл isRuTarget → D39.64; баннер пост-D39.101; ссылка на архив) · 10-prompt (пар-пути; язык промпта = Р6 отрицателен; Q4a/Q4c измерены; снапшот-фолд построен) · 13-tech-debt (9 закрытий стрелками «→ Dxx») · полигон-промт (P4-хвост ЗАКРЫТ ×2 · пре-рег-исключение · указатели) · ПТ-реестр (6 + квалификация STACK-путей) · ревью-шапки research/16 и /23 (контракт ратифицирован) · фронт-промты (S3: замок открыт, строка 95 снята; стоящий: 5 датированных поправок D39.99/100) · **S2-промт заархивирован** (`archive/prompts/FRONTEND_S2_SESSION_PROMPT.md`). **Отложено до приёмки P0 (зона живая): 2 правки `platform/README.md`** (стейл «промта ещё нет»; «живая стоимость» против D39.84) и архивация P0-промта — №13 при лендинге платформы. Урок — в памяти оркестратора (`doc-actualization-means-full-sweep`). (04.08.2026, оркестратор №12). ✅
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
# Целевая архитектура и дорожная карта (арх-ресет 2026-07-13)
|
||||
|
||||
> **Статус:** проектный документ оркестратора, ратифицирован **D39** (`05-decisions-log.md`). Рождён из арх-ресета
|
||||
> (`ORCHESTRATOR_ARCH_RESET_PROMPT.md`, 5 концернов владельца) и синк-аудита «сломанного телефона»
|
||||
> (`../archive/prompts/ORCHESTRATOR_ARCH_RESET_PROMPT_2026-07-13.md`, 5 концернов владельца) и синк-аудита «сломанного телефона»
|
||||
> (`../archive/architecture/08-sync-audit-ledger.md`, 65 находок, адверсариально верифицированы; архивирован 25.07 как отработанный). Решения владельца по подходу:
|
||||
> **фазовый** (build-now ∥ ресёрч, пере-прогон после) + **слой пар языков = сеам сейчас, контент только zh→ru**.
|
||||
>
|
||||
> Это карта «куда и почему», а не пошаговая спека. Спеки — в хендофф-промтах сессий; контракт — в D-логе.
|
||||
|
||||
> **⟶ СТАТУС СТРОЙКИ (2026-08-01, пост-D39.63; баннер — не переписывание, тело ниже = замысел арх-ресета 13.07).** Карта «слой → статус → пак/D»:
|
||||
> **⟶ СТАТУС СТРОЙКИ (освежён 04.08, пост-D39.101: слои 4/5 добраны паками банка/чекеров D39.69/78/82; репо на стандартах — `make battery`, tmvet/archguard, D39.96/97; поверх слоёв движка: контракт API v0 = `14-api-contract/` (D39.99), платформа = зона `platform/`, открыта D39.100. Ранее 2026-08-01, пост-D39.63; баннер — не переписывание, тело ниже = замысел арх-ресета 13.07).** Карта «слой → статус → пак/D»:
|
||||
> | Слой | Статус | Пак / D |
|
||||
> |---|---|---|
|
||||
> | 1 Сегментация | ✅ ПОСТРОЕН: бюджет в выходных токенах снапшот-folded (`chunk.SegBudget`), edit-единицы декаплены; когезия/carryover — НЕ строится (D39.7/8: эффекты под floor 0.126; кнобы `STMDepth`/`OverlapTokens` УДАЛЕНЫ, WS2 §2а), граница `logical` — не рычаг (exp15), greedy остался | пак-11 (D39.13 WS2 · D39.17 волны · D39.18 c-lite) |
|
||||
|
|
@ -116,7 +116,7 @@ snapshot-дисциплина, эталонные сеамы `config→stage-lis
|
|||
пар-агностичные чекеры + embedded-данные + книго-overlay `langpack_extend` (пак-14) · пар-калибровки
|
||||
`configs/pairs/` + промпт-резолв конвенцией `prompts/<пара>/<роль>.md` (D39.23г). Извлечение правил из ТЕЛА
|
||||
промтов (дискурс-нормы, few-shot) — ещё открыто (форсинг-функция = ja→ru-реплика). `x/text/language.Tag`
|
||||
ОТВЕРГНУТ для гейт-предикатов (CLDR-инстабильность в снапшот-вердиктах — держим точные `isRuTarget`).
|
||||
ОТВЕРГНУТ для гейт-предикатов (CLDR-инстабильность в снапшот-вердиктах); → исполнено иначе D39.64: `isRuTarget` удалён, гейт-предикаты = `TargetActive`/`TargetScriptNonLatin` из данных пары — отказ от `language.Tag` в силе.
|
||||
|
||||
### Слой 3 — Контракт переводчик/редактор (роли = узкие проходы) · концерн 1
|
||||
- research/07 предписывает **узкие мандаты + диффы, а не полную перегенерацию** — сейчас ровно наоборот (4 мандата,
|
||||
|
|
|
|||
|
|
@ -13,13 +13,15 @@
|
|||
|
||||
| Вопрос владельца | Статус | Где живёт |
|
||||
|---|---|---|
|
||||
| **Язык самого промпта** (сейчас всё по-русски; для zh→en русский не должен участвовать) | ОТКРЫТ, спроектирован: язык промпта = **свойство пакета пары**, не хардкод. Измерение «на языке цели vs оригинала vs ru» — полигон-вопрос ПОСЛЕ exp15 (нужен не-ru таргет с реальной книгой) | START_PROMT V4-п5 · аудит `L4-prompt-language-always-russian` (CONFIRMED/HIGH) · `09` §2-слой-2 · D39 п.7 |
|
||||
| **Язык самого промпта** (сейчас всё по-русски; для zh→en русский не должен участвовать) | ОТКРЫТ, спроектирован: язык промпта = **свойство пакета пары**, не хардкод. Первый замер ИСПОЛНЕН: Р6/D39.61 — ru/en-срез ОТРИЦАТЕЛЕН (эхо-ось), «не закрыт окончательно» оговоркой; остаток — язык промпта как свойство пакета для не-ru таргетов, вернётся с ja→ru | START_PROMT V4-п5 · аудит `L4-prompt-language-always-russian` (CONFIRMED/HIGH) · `09` §2-слой-2 · D39 п.7 |
|
||||
| **Вырезать правила языка из промтов в отдельный слой** (Палладий/Поливанов, дискурс-нормы, few-shot) | СЕАМ ПОСТРОЕН (пак-1, D39.2): конфиг pair-keyed `prompts: {zh-ru: …}` + `Book.LangPair()` + fail-loud на чужую пару. **Контент ещё НЕ извлечён** — правила по-прежнему в теле zh-ru-файлов; извлечение в структурированный пакет гейтится exp15 + research/18 §D-3 («форма пакета не разрешена») | research/18 §B2.2/§C#15 · `09` §2-слой-2 · D39-решение владельца «сеам сейчас, контент zh→ru» · пак-1 T3.3 |
|
||||
| **Почему структура абзацев и расширенный язык-промпт — только у РЕДАКТОРА?** | ОСОЗНАННОЕ решение D30.2 (дешёвый буквальный черновик + вся реструктуризация у умного билингв-редактора; exp12: построчность = корень нечитаемости), НО альтернатива «переводчик отдаёт структуру» **никогда не мерилась** — это ровно армы **Q4a/Q4c exp15** (сильный переводчик; reflow отдельным пассом). До exp15 асимметрия сохраняется намеренно | D-лог D30.2 (`05:366` — «механизм реверстки — открытый вопрос») · аудит `L1-*`/`H3` · research/19 §C · exp15 Q4 |
|
||||
| **Почему структура абзацев и расширенный язык-промпт — только у РЕДАКТОРА?** | ОСОЗНАННОЕ решение D30.2 (дешёвый буквальный черновик + вся реструктуризация у умного билингв-редактора; exp12: построчность = корень нечитаемости), альтернатива «переводчик отдаёт структуру» — Q4a ИЗМЕРЕН (D39.9: верность на translate-стадии не покупается), Q4b/Q4c не гонялись; асимметрия сохранена по данным; diff-контракт редактора — строка 106 | D-лог D30.2 (`05:366` — «механизм реверстки — открытый вопрос») · аудит `L1-*`/`H3` · research/19 §C · exp15 Q4 |
|
||||
| **Все промты zh→ru-центричны — неправильно для мультиязычного бэкенда** | Ратифицирован **инвариант общности** (`09` §0.1, поправка владельца 13.07): пара = ось данных, не кода. Латентный баг закрыт паком-1 (ja-книга теперь fail-loud, не едет тихо через «китайский паратаксис»). Новая пара = новый пакет-данные, не переделка кода | `09` §0.1 · D39 п.7 · пак-1 T3.2/T3.3 · аудит `H2` |
|
||||
|
||||
## 2. Инвентарь промтов (после пака-1/1.5, HEAD)
|
||||
|
||||
⚠ Пути таблицы устарели механически: промпты живут ПАР-каталогами `backend/prompts/zh-ru/<файл>` (+ `zh-ru/repair/`, + `classifier.md` — D39.69); читать `<файл>` как `zh-ru/<файл>` (испр. оркестратором 04.08, D39.101).
|
||||
|
||||
| Файл | Роль | Что внутри | Пара |
|
||||
|---|---|---|---|
|
||||
| `backend/prompts/translator.md` | черновик (flash) | брифинг-переменные `{{lang/genre/honorifics/transcription/venuti/footnotes}}` + слабая вёрстка-однострочка (D30.2) | де-факто zh→ru (ключ `zh-ru` в конфиге) |
|
||||
|
|
@ -39,9 +41,9 @@
|
|||
работает). Гейты на стройку: exp15 (какие правила реально несут) + research/18 §D-3 (форма пакета).
|
||||
|
||||
## 4. Открытое по теме (маршрутизировано)
|
||||
1. **Язык промпта** — полигон-замер после exp15, на реальной не-ru книге (V4-п5; не гадать).
|
||||
1. **Язык промпта** — первый замер Р6/D39.61 отрицателен (см. §1); добор — с реальной не-ru книгой (ja→ru).
|
||||
2. **Извлечение правил в пакет** — exp15 ЗАВЕРШЁН; **данные-часть майнера ИЗВЛЕЧЕНА (D39.16:** zh/Палладий-инвентари →
|
||||
`internal/lang`+`configs/langpacks/`, тот же pair-keyed идиом, что промпты, снапшот-фолд отложен до wiring майнера R1**)**;
|
||||
`internal/lang`+`configs/langpacks/`, тот же pair-keyed идиом, что промпты, снапшот-фолд langpack-байтов ПОСТРОЕН (`LangpackVersion`, D39.15/16)**)**;
|
||||
извлечение правил из ТЕЛА zh-ru-промтов (дискурс/few-shot) — ещё открыто, форсинг = ja→ru-реплика. `x/text/language.Tag`
|
||||
ОТВЕРГНУТ для гейт-предикатов (CLDR-инстабильность в вердиктах — D39.16).
|
||||
3. **Транскрипция per-book** (Палладий/Поливанов vs фандомные формы) — research/19 §E.3, решение
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
# Якоря техдолга — справочник к строкам бэклога (НЕ трекер)
|
||||
|
||||
> ⚠ **Освежение 04.08 (D39.101):** якоря были входом пакета-чекеров (исполнен D39.78) и арки банка (закрыта D39.69/71); часть находок ниже уже ЗАКРЫТА — закрытия помечены стрелками «→» по месту, счёт закрытий не дублируется в трекер.
|
||||
> **Единственный трекер — таблица «Бэклог» в `../PROGRESS.md`.** Этот файл — справочные file:line-якоря и скоуп-заметки к её строкам (родился как пост-сверка свипа D39.66, 01.08.2026; вынесен из архива решением владельца — содержимое ЖИВОЕ). Актуализируется лендингами паков, которые трогают эти строки; исполненный пункт помечать ссылкой на D-номер, не удалять.
|
||||
|
||||
**Метод:** 4 адверсариальных верификатора (author≠reviewer к свипу) против backend-кода и D-лога; вердикты CONFIRMED_LOST / ALREADY_BUILT / ALREADY_CLOSED / RESCOPE, evidence обязателен. **Итог: 23 пункта — 20 CONFIRMED_LOST · 3 RESCOPE · 0 ALREADY_CLOSED (передумываний не найдено).** RESCOPE вправлены в бэклог тем же лендингом (строки 81/73/49). file:line-якоря ниже — вход для пакета-чекеров (строка 25) и дизайн-пака арки (73).
|
||||
|
|
@ -12,7 +13,7 @@
|
|||
|
||||
**Фикс/скоуп:** Сузить строку 81 до двух реально отложенных работ: «Поливанов-валидатор (translit_policy Phase 2, store/migrate.go:186/194) + kana-омограф POS/known-word гейтинг / B6-токенизатор (memory.go:1048)»; компонент «чек-лист kana-алиасов сида (D16.4)» пометить built (backend/README.md:38 + seeding.go:47) — в чек-листе остаётся лишь Ф2-хвост «двойные чтения (強敵→とも) полная дизамбигуация», который и так под B6.
|
||||
|
||||
### [CONFIRMED_LOST] Строка 83 — F4: бэкап + integrity_check SQLite перед платным прогоном (VACUUM INTO)
|
||||
### [CONFIRMED_LOST] Строка 83 — F4: бэкап + integrity_check SQLite перед платным прогоном (VACUUM INTO) → **ИСПОЛНЕНО D39.82: `tmctl backup` + pre-flight (`backend/cmd/tmctl/backup.go`), строка 83 закрыта; остаток F4-хвоста — строка 93**
|
||||
|
||||
grep -rni 'VACUUM|integrity_check|backup' по backend/cmd/tmctl/ и backend/internal/store/ — 0 вхождений; расширенный grep по всему backend/ — тоже 0. Подкоманды tmctl (backend/cmd/tmctl/main.go:73–83) — только translate|report|status|export|redrive|seed-lint, команды бэкапа нет; в internal/store/ (chunkstatus.go, glossary.go, jobs.go, ledger.go, migrate.go, requestlog.go, ruby.go, store.go, voice.go) нет ни файла, ни функции бэкапа/integrity-проверки. SPOF из 06-реестра F4 реально ничем не закрыт.
|
||||
|
||||
|
|
@ -30,7 +31,7 @@ backend/internal/llm/provider_openai.go:166–171: normalizeOpenAIFinish схл
|
|||
|
||||
**Фикс/скоуп:** Не требуется — занесено правильно (NOT-do пака-12 без решения, полигон-пакет до МАСШТАБА).
|
||||
|
||||
### [CONFIRMED_LOST] Дописка к строке 53 — внутрифайловый дубль ключа pair-файла → громкая ошибка (PACK15 §Внутрифайловый)
|
||||
### [CONFIRMED_LOST] Дописка к строке 53 — внутрифайловый дубль ключа pair-файла → громкая ошибка → **частично ИСПОЛНЕНО D39.82 (putUniqueDC, строка 53 закрыта); остаток parseCategoryRows — строка 111** (PACK15 §Внутрифайловый)
|
||||
|
||||
backend/internal/lang/langpack.go:824 (parseCategoryRows): `cats[f[0]][f[1]] = val` — повторный ключ ВНУТРИ одного файла молча перезаписывает предыдущий (last-wins), без проверки дубля. Громкая коллизия есть только на стыке уже слитого состояния и следующего источника: unionStringMap (langpack.go:466–474, «key … is already defined … and the overlay redefines it») — но внутрифайловые дубли схлопываются в parseCategoryRows ДО того, как merge их увидит. Ровно так это и зафиксировано открытым в отчёте: docs/archive/reports/PACK15_STRUCTURE_REPORT_2026-07-25.md:274–276 «Дубль ключа ВНУТРИ одного pair-файла всё ещё тихо разрешается „последний выигрывает" … фикс — кандидат следующего пака». Теста на внутрифайловый дубль в langpack_test.go нет (grep duplicate/дубл/already defined — 0).
|
||||
|
||||
|
|
@ -56,7 +57,7 @@ grep sanitiz по backend/configs/pipeline-c2.yaml — 0 вхождений (exi
|
|||
|
||||
В backend/internal/ резюме-механизма НЕТ: grep summary/резюме даёт только несвязанное — RedriveSummary (pipeline/status.go:592-593, план redrive), SanitizerResult.Summary() (checks/sanitizer.go:165-167, текст флага), детектор ХВОСТОВОГО edit-summary модели (sanitizer.go:90), коммент-плейсхолдер «approved-glossary+summary+series-bible» в pipeline/snapshot.go:391 при том, что memoryVersion() материализует ТОЛЬКО frozen APPROVED glossary rows (snapshot.go:179-189); в схеме store/migrate.go нет таблицы/колонки резюме (строка 18 — лишь коммент о payload снапшота). Не закрыт решением: 05-decisions-log.md:373 (D30.8 п.8) — «слой авто-памяти/состояния (Annotator, межглавные резюме…) — Ф2, связка с пилотом Ф2.5 зафиксирована» — отложено, не отменено; в списке «ЗАКРЫТО ЯВНО» D39.66 его нет.
|
||||
|
||||
**Фикс/скоуп:** Строка верна как есть: дизайн-пак 73 обязан дать диспозицию «строить в Ф2.5 или закрыть с обоснованием».
|
||||
**Фикс/скоуп:** → **Диспозиция ДАНА D39.69: закрыт по нужности; строка 80 = гейт пилота Ф2.5.** (Историческая формулировка: дизайн-пак 73 обязан дать диспозицию «строить в Ф2.5 или закрыть с обоснованием».)
|
||||
|
||||
### [CONFIRMED_LOST] Строка 82: морфо-гейт РОДА (C3, глагол прош. вр. при gender=hidden)
|
||||
|
||||
|
|
@ -74,19 +75,19 @@ grep sanitiz по backend/configs/pipeline-c2.yaml — 0 вхождений (exi
|
|||
|
||||
Половина УЖЕ ПОСТРОЕНА: инъективность dst (B2, «два исходных → один целевой») реализована как membank.InjectivityCollisions (membank/memory.go:1101-1126: группировка approved-строк по нормализованному dst, ≥2 разных src = коллизия) и вызывается на загрузке как warning-only диагностика (pipeline/seeding.go:157). НЕ построены две другие части исходного обязательства (04-unhappy-paths.md:19: «тип ranked-set + проверка инъективности … и порядка ступеней»): типа ranked-set нет (type — свободный текст «name|term|title|…», migrate.go:181; grep ranked-set/tier/ступен по backend = 0 кодовых хитов) и проверки ПОРЯДКА ступеней при перечислениях нет.
|
||||
|
||||
**Фикс/скоуп:** Переформулировать кандидата в 73: «ranked-set: тип записи + проверка порядка ступеней (инъективность dst УЖЕ есть — InjectivityCollisions, warning-only на seeding.go:157; решить, нужен ли hard-режим для ranked-set-строк)».
|
||||
**Фикс/скоуп:** → **Закрыто D39.69 §1 + D39.71 (Q4 не строить).** (Исторически: переформулировать кандидата в 73: «ranked-set: тип записи + проверка порядка ступеней (инъективность dst УЖЕ есть — InjectivityCollisions, warning-only на seeding.go:157; решить, нужен ли hard-режим для ranked-set-строк)».)
|
||||
|
||||
### [CONFIRMED_LOST] Кандидат 73: STITCH-ретирование инъекции отработанных термов
|
||||
|
||||
Механизма подавления инъекции терма, стабильно отработанного N чанков подряд (research/15-voice-and-state.md:204), в membank НЕТ: бюджет Select ранжирует по priorityRank = confirmed/exact/sticky (memory.go:645-661) без какого-либо счётчика «отработанности»; sticky A5 — ИНЕРЦИЯ в противоположную сторону (наследование в следующий чанк, memory.go:500-505); grep retire/streak/consecutive/отработ по internal/ даёт только loopguard (повтор сегментов) и retired-конфиг-флаги — не о том. Post-check (mempostcheck.go) следит за промахами, но не влияет на подачу.
|
||||
|
||||
**Фикс/скоуп:** Кандидат занесён правильно; в дизайн-паке учесть, что счётная база для «N чанков подряд без промаха» уже есть в retrieval_state/post-check — стройка сводится к политике селекции.
|
||||
**Фикс/скоуп:** → **Закрыто D39.69 (реопен-триггеры: бюджет инъекции / измеренный эффект размера).** (Исторически: кандидат занесён правильно; счётная база для «N чанков подряд без промаха» уже есть в retrieval_state/post-check — стройка сводится к политике селекции.)
|
||||
|
||||
### [CONFIRMED_LOST] Кандидат 73: эмбеддинг-второй-эшелон A7/D2 (дать диспозицию)
|
||||
|
||||
В ДВИЖКЕ ретривала по эмбеддингам нет: единственные следы — плейсхолдер-колонка `embedding_tier_used INTEGER NOT NULL DEFAULT 0, -- always 0 in v1 (no embeddings on the hot path, Р3)` (store/migrate.go:248) и её протаскивание в store/glossary.go:71,305-391; miner_substrate.go:15 прямо декларирует «$0, no LLM, no embeddings»; grep cosine/vector/embedding по internal/ иных хитов не даёт. В eval бенч существует (eval/retrieval_bench.py). Реестр держит A7/D2 отложенными в Ф2 low-trust (06-memory-risk-registry.md:32,61,105) — живо, не закрыто.
|
||||
|
||||
**Фикс/скоуп:** Занесено правильно как «дать диспозицию» (строить low-trust Ф2-слой или явно закрыть); формулировка точна.
|
||||
**Фикс/скоуп:** → **Закрыто по нужности D39.69 (реопен: измеренный recall-разрыв на масштабе).** (Исторически: занесено как «дать диспозицию»; формулировка точна.)
|
||||
|
||||
### [CONFIRMED_LOST] Кандидат 73: tmctl «замена термина с главы N»
|
||||
|
||||
|
|
@ -138,13 +139,13 @@ membank/mempostcheck.go:12 — пост-чек стоит на посылке «
|
|||
|
||||
Обе половины подтверждены. (а) checkers.go:411-412 — «A CORRECT rendering anywhere in the chunk (the ok-suppressor) suppresses the flag»; код 426-435: `!c.qianwanOKRE.MatchString(final)` и `strings.Contains(final, ...)` — весь чанк, не пер-вхождение; одно верное 千万 маскирует второе неверное. DC1 аналогично берёт только ПЕРВЫЙ матч (checkers.go:358 FindStringSubmatch). (б) Р2 (D39.63(1): «жёсткий флаг ТОЛЬКО за неверное ЗНАЧЕНИЕ; неконвертированная форма = мягкий счётчик») не имплементирован: lintPercentScale (checkers.go:482-506) файрит по ФОРМЕ (нет процентного слова + есть дробный кью), pct вычисляется только для сообщения, сравнения значений нет; cheapgates.go:84-89 прямо признаёт: «A correct fix compares the rendered VALUE… a design, not a patch. Left firing». Сплита hard/soft в CheapGateResult нет.
|
||||
|
||||
**Фикс/скоуп:** Пер-вхожденческое сопоставление (FindAllString + попарный матчинг) и имплементация Р2: сравнение значения (нужны цель-данные числительных), split жёсткий-дефект/мягкий-линт в результате чекера. — **✅ Р2-split ИСПОЛНЕН (пакет-чекеров 02.08):** `CheapGateResult.UnitScaleHard()`={DC1 ruNum≠2n · NumberMagnitude — слово-магнитуда неверного ПОРЯДКА, ошибка значения (→HARD по находке ревью-агента)} / `UnitScaleSoft()`={DC2 гипербола-неоднозначна, PercentScale верное значение в форме-дроби}; `Total()` не тронут (голден-нейтрально). **Пер-вхожденческий супрессор — ⊘ НЕ строил:** под Р2 PercentScale стал SOFT-наблюдаемостью, локальность-window эвристична и низкоценна → Р4-потолок. HARD-value-чек 成/万 требует ru-numeral-word-данных (потолок записан в v5-блоке шапки cheapgates.go §5-A4 + отчёте; inline-записи на самих функциях НЕТ — хвост в строке 93) — §6-Q3 владельцу (строка 92).
|
||||
**Фикс/скоуп:** Пер-вхожденческое сопоставление (FindAllString + попарный матчинг) и имплементация Р2: сравнение значения (нужны цель-данные числительных), split жёсткий-дефект/мягкий-линт в результате чекера. — **✅ Р2-split ИСПОЛНЕН (пакет-чекеров 02.08):** `CheapGateResult.UnitScaleHard()`={DC1 ruNum≠2n · NumberMagnitude — слово-магнитуда неверного ПОРЯДКА, ошибка значения (→HARD по находке ревью-агента)} / `UnitScaleSoft()`={DC2 гипербола-неоднозначна, PercentScale верное значение в форме-дроби}; `Total()` не тронут (голден-нейтрально). **Пер-вхожденческий супрессор — ⊘ НЕ строил:** под Р2 PercentScale стал SOFT-наблюдаемостью, локальность-window эвристична и низкоценна → Р4-потолок. HARD-value-чек 成/万 требует ru-numeral-word-данных (потолок записан в v5-блоке шапки cheapgates.go §5-A4 + отчёте; inline-записи на самих функциях НЕТ — хвост в строке 93) — → **§6-Q3 РЕШЁН D39.79 п.4: не строить; реопен = флип hard-gate (строка 12) либо поток value-дефектов с добора идеала.**
|
||||
|
||||
### [CONFIRMED_LOST] #8 两 отсутствует в классе cheng_re
|
||||
|
||||
configs/langpacks/zh-ru/dc-checkers.txt:65 — `cheng_re ([0-9一二三四五六七八九十])成([0-9一二三四五六七八九]?)` — ни 两, ни 兩 нет ни в одном из классов, хотя тот же пак знает 两: строка 9 `cjk_numeral 两 2`, строка 41 shichen_re содержит 两. 两成 (20%) невидимо для lintPercentScale. По D39.63(3) данные-правки на этой фазе перестали быть дорогими (стендовый корпус одноразовый) — «данные, батчем» в строке 25 корректно.
|
||||
|
||||
**Фикс/скоуп:** Добавить 两/兩 в оба класса cheng_re батчем данных-правок (одна правка dc-checkers.txt, resnapshot по дисциплине D39.63). — **✅ ИСПОЛНЕНО как ДАННЫЕ (пакет-чекеров 02.08):** 两/兩 в оба класса cheng_re + 兩=2 в cjk_numeral (парс-полнота). **Нужность на labels = 0** — 两成 в acceptance:10:0/minirun:10:0 замаскировано супрессором #1 (там есть «процент»); правомерно как generality/consistency-фикс. 兩-traditional — §6-Q2 владельцу (0 стоимости, подтвердить или откатить).
|
||||
**Фикс/скоуп:** → **Подтверждено D39.79 п.3, довершено D39.82 (shichen_re).** (Исторически: добавить 两/兩 батчем данных-правок, resnapshot по дисциплине D39.63). — **✅ ИСПОЛНЕНО как ДАННЫЕ (пакет-чекеров 02.08):** 两/兩 в оба класса cheng_re + 兩=2 в cjk_numeral (парс-полнота). **Нужность на labels = 0** — 两成 в acceptance:10:0/minirun:10:0 замаскировано супрессором #1 (там есть «процент»); правомерно как generality/consistency-фикс. 兩-traditional — §6-Q2 владельцу (0 стоимости, подтвердить или откатить).
|
||||
|
||||
### [CONFIRMED_LOST] Резидуал R4 пака-11: DC7 grade/role-чекер · omission-бэкстоп · DC2 word↔word дроби
|
||||
|
||||
|
|
@ -196,7 +197,7 @@ backend/prompts/zh-ru/editor.md:6 — «Правь стиль: убирай ка
|
|||
|
||||
Сырьё существует, суд не докуплен (проверено счётом файлов и метаданными, тексты не читались). P4-артефакты: ~/books/gu-zhenren/research15-probes/probes/raw/ — 100 файлов, вкл. полные сетки echo-ds-gu008-{D0,D1,D2,DP}×{s0,s1,s2} (12 шт.) и echo-grok-gu-001..010×{G0..G4} (50 шт.). Судейское сырьё: ~/books/gu-zhenren/promptlang/judge_p4/votes.jsonl = 36 голосов ровно над 16 distinct (fam,arm,frag)-комбо: deepseek только gu008-s2×{D1,D2,DP} (3), grok G1×{001,002,004,005,006} + G2×{001,002,004,005} + G4×{001,002,004,005} (13). Отчёт POLYGON_PROMPTLANG_ANTIECHO_2026-07-31.md:775-776 («Судья остановлен своим капом $0.28 на 16 парах из 24») и :784 («Добрать 8 несудимых пар P4 ≈$0.10»); файлы несудимых комбо (ds-gu008 s0/s1 × 3 арма; grok gu-006 G2/G4 и далее) в raw/ присутствуют.
|
||||
|
||||
**Фикс/скоуп:** Не требуется — дописка 74 точна: сырьё лежит, добор ≈$0.10 реально отложен «до предмета wiring».
|
||||
**Фикс/скоуп:** → **Строка 74 закрыта D39.95, P4-хвост принят D39.61; добор ≈$0.10 — резидуал §12.7 D39.61 (цены записаны там), отдельного носителя не заводилось.** (Исторически: сырьё лежит, добор отложен «до предмета wiring».)
|
||||
|
||||
### [RESCOPE] (7) Протокол гендер-твиста D5.1 (дописка 49): «redrive есть, селективного by-until_ch пути нет»
|
||||
|
||||
|
|
|
|||
|
|
@ -4,10 +4,12 @@
|
|||
|
||||
## Роли и фазы
|
||||
|
||||
- **Оркестратор / Бэкенд / Полигон / Фронт** — роли сессий с зонами записи (CLAUDE.md §Роли). «Оркестратор №N» — канонический счётчик преемственности роли (текущий N — в шапке ORCHESTRATOR_SESSION_PROMPT).
|
||||
- **Оркестратор / Бэкенд / Полигон / Фронт / Платформа** — роли сессий с зонами записи (CLAUDE.md §Роли); платформа = SaaS control plane (`platform/`, D39.81). «Оркестратор №N» — канонический счётчик преемственности роли (текущий N — в шапке ORCHESTRATOR_SESSION_PROMPT).
|
||||
- **Хендофф(-промт)** — передача роли новой сессии файлом-промтом; аддендумы к бегущей сессии доезжают только релеем владельца.
|
||||
- **Владелец** — человек; ратифицирует деньги, скоуп-сдвиги, продукт, 18+; связной между сессиями.
|
||||
- **Ф0–Ф3** — фазы: Ф0 скелет · Ф1 инфраструктура · Ф2 качество (судья/гейты) · Ф2.5 пилот · Ф3 продукт (веб-фронт, ридер-IDE).
|
||||
- **S0–S7 / P0** — нумерация кодовых сессий зон: S-этапы фронта (D39.84) · P-этапы платформы (P0 — бутстрап, D39.100); не путать с фазами Ф0–Ф3.
|
||||
- **Зонный журнал / зонный бэклог** — `frontend/docs/frontend-PROGRESS.md` · `platform/docs/platform-PROGRESS.md` и BACKLOG зоны: прогресс/пинги фронта и платформы живут ТОЛЬКО там (D39.100); их строки единый бэклог не принимает (D39.84).
|
||||
- **Полигон** — eval-зона платных/бесплатных экспериментов (`eval/`, отчёты exp01–exp16).
|
||||
|
||||
## Решения и документы
|
||||
|
|
@ -23,6 +25,8 @@
|
|||
- **Пак** — пакет работ одной сессии; **свип** — полная перепроверка обязательств (D39.66: 951 позиция); **добор идеала** — очередь качества после ре-пробы flash; **МАСШТАБ** — прогон целой книги.
|
||||
- **Строка N** — стабильный ID строки единого бэклога (PROGRESS §Бэклог; не перенумеровывается); **вес** — блокер-очереди / скоро / когда-нибудь; **носитель** — артефакт, в котором обязательство живёт; **хвост** — незакрытый остаток; **петля** — вопрос, обязанный получить диспозицию; **слот** — зарезервированное место в будущем пакете/замере.
|
||||
- **Гвоздь** — регрессионный тест, прибивающий контракт (негативный гвоздь — тест на ОТСУТСТВИЕ поведения).
|
||||
- **Контракт 14 (API v0)** — ратифицированный контракт фронт↔платформа: `architecture/14-api-contract/` — нормативная спека OpenAPI 3.1 + компаньон-README; зонная копия `frontend/docs/api-contract/` — байт-зеркало (D39.99). **Провенанс ✓/◆/○** — классы утверждений компаньона: выведено из кода/ратификации · предложено (подтверждает названная зона) · открыто (К-вопросы). **spectral / openapi-typescript** — линт спеки и генерация типов фронта с дрифт-тестом (⚠ 3.1-условия генератор игнорирует — К-11).
|
||||
- **ПТ-N** — стабильный ID требования в `product-requirements.md`; не путать со строками единого бэклога. **paused / лимиты «как Claude Code»** — статус книги при стопе по потолку + страница статуса использования в настройках, сумм на экране нет (ПТ-35, D39.100).
|
||||
|
||||
## Пайплайн и код
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# Реестр продуктовых требований — «что продукт обязан уметь»
|
||||
|
||||
> Единый список требований владельца к продукту. Источники: `../START_PROMT.MD` (ЖИВОЙ бриф, идеи V0–V5) + владельческие находки H6–H18 (`architecture/09-target-architecture.md` §3). Статусы сверены кодом и D-логом при D39.80 (02.08.2026). **При конфликте с D-логом побеждает D-лог.** Правила: новую V-секцию владельца разбирает сюда оркестратор при первом касании; статус правится при лендинге пака, который его меняет; требование без носителя не оставлять.
|
||||
> Единый список требований владельца к продукту. Источники: `../START_PROMT.MD` (ЖИВОЙ бриф, идеи V0–V5) + владельческие находки H6–H18 (`architecture/09-target-architecture.md` §3). Статусы сверены кодом и D-логом при D39.80 (02.08.2026), освежены свипом D39.101 (04.08.2026). **При конфликте с D-логом побеждает D-лог.** Правила: новую V-секцию владельца разбирает сюда оркестратор при первом касании; статус правится при лендинге пака, который его меняет; требование без носителя не оставлять.
|
||||
>
|
||||
> Статусы: ✅ построено · 🔶 частично · ⭕ не построено · ❌ снято (отменено владельцем ИЛИ закрыто отрицательным замером — с D-ссылкой) · 🔒 открытый вопрос владельца.
|
||||
|
||||
|
|
@ -21,7 +21,7 @@
|
|||
| ID | Требование (источник) | Статус | Носитель / доказательство |
|
||||
|---|---|---|---|
|
||||
| ПТ-8 | Банк памяти на всю книгу, «крайне точный» (V0-п.7–8; Выводы-п.1) | ✅ | D39.69/75/77/78; recall банка 0.918/0.980 на холодном прогоне (D39.58). Смежный остаток H6 (running-summary): carryover закрыт замером (D39.7/8), проза-суммарайзер закрыт (D39.69), нарратив-состояние = строка 80 (гейт пилота Ф2.5) |
|
||||
| ПТ-9 | Глоссарий автосборкой: модель переводит термины с контекстом/жанром (V4-п.4, H15) | ✅ | терминолог пака-20 (D39.41–53), KWIC-контексты, подписной цикл. **Вход владельца 02.08 (D39.89):** банк = центральная ценность, арбитраж перевода термов должен быть консилиумом со скорами уверенности, но не ломать связность системы термов ⇒ качество МЕХАНИЗМА поставлено на проверку (строка 5, промт `BANK_ARBITRATION_RESEARCH_SESSION_PROMPT.md`); статус ПТ-9 «построено» не меняется — под вопросом не наличие, а алгоритм |
|
||||
| ПТ-9 | Глоссарий автосборкой: модель переводит термины с контекстом/жанром (V4-п.4, H15) | ✅ | терминолог пака-20 (D39.41–53), KWIC-контексты, подписной цикл. **Вход владельца 02.08 (D39.89):** банк = центральная ценность, арбитраж перевода термов должен быть консилиумом со скорами уверенности, но не ломать связность системы термов ⇒ качество МЕХАНИЗМА проверено полигоном: заход исполнен 04.08 (промт архивирован), артефакты ждут адверсариальной приёмки №13 (строка 5); статус ПТ-9 «построено» не меняется — под вопросом не наличие, а алгоритм |
|
||||
| ПТ-10 | Веб-фетч для терминов без культурного контекста (V0-п.16, V4-п.4) | ⭕ | гейт action-security = строка 70 (Ф3); до него — сид/бриф |
|
||||
| ПТ-11 | Голоса персонажей консистентны на книгу (V1-п.2; канон §1) | 🔶 | схема голосов построена (пак-19, D39.55/56); оси не подписаны — замер добора (строки 24 · 13б) |
|
||||
|
||||
|
|
@ -29,7 +29,7 @@
|
|||
|
||||
| ID | Требование (источник) | Статус | Носитель / доказательство |
|
||||
|---|---|---|---|
|
||||
| ПТ-12 | Низкий COGS: дешёвые модели + адресные дорогие вызовы (V0-п.3/12; канон §5) | ✅ | ~$0.85/ранобэ (D30.4); пере-калибровка после ре-пробы (строка 74) |
|
||||
| ПТ-12 | Низкий COGS: дешёвые модели + адресные дорогие вызовы (V0-п.3/12; канон §5) | ✅ | ~$0.85/ранобэ (D30.4); ре-проба исполнена и строка 74 закрыта (замер D39.86/91, закрытие D39.95); пере-калибровка цены — при следующем платном прогоне |
|
||||
| ПТ-13 | Телеметрия токенов/стоимости с первого вызова, БД (V0-п.25/31) | ✅ | SQLite `request_log`/леджер/смета; ⚠ леджер = нижняя граница (строка 78) |
|
||||
| ПТ-14 | Потолки бюджета и явное согласие на пере-оплату (канон §5) | ✅ | reserve/settle, потолки, `projectRebill`; щель терминолога = строка 38 |
|
||||
|
||||
|
|
@ -43,7 +43,7 @@
|
|||
|
||||
| ID | Требование (источник) | Статус | Носитель / доказательство |
|
||||
|---|---|---|---|
|
||||
| ПТ-16 | Абьюз/misuse-прескрин: дёшево, точно, до трат токенов, минимум false positive (V2-п.1, H8) | ⭕ | строка 94; UI-контракт отказа — проект-решение D39.80 к Ф3-брифу (вывод оркестратора, не цитата брифа) |
|
||||
| ПТ-16 | Абьюз/misuse-прескрин: дёшево, точно, до трат токенов, минимум false positive (V2-п.1, H8) | ⭕ | строка 94; UI-контракт отказа — проект-решение D39.80 к Ф3-брифу (вывод оркестратора, не цитата брифа); статус отказа в API — открытый К-9 контракта 14 (D39.99) |
|
||||
| ПТ-17 | Лимит размера входа настройкой (V2-п.3, H7) | ⭕ | строка 94 |
|
||||
| ПТ-18 | Стоп и продолжение пайплайна; абьюзивный прогон НЕ продолжать (V2-п.2, H10) | 🔶 | graceful stop по сигналу (`cmd/tmctl/main.go` NotifyContext) + чекпойнты/redrive; продукт-кнопки и связка с прескрином = строка 94; API-форма в контракте 14 (D39.99: stop/resume; статус отказа прескрина — открытый К-9) |
|
||||
| ПТ-19 | Скорость: «очень быстрый перевод книги — киллерфича» (V4-п.1, H9); видимый прогресс/ETA — из Ф3-видения ридер-IDE (цветная полоса статуса), не из V4 | 🔶 | волны параллельны по чанкам; замер скорости и ETA на целой книге = строка 54 (МАСШТАБ); пофазный индикатор draft/edit = строка 99 (БЛОКЕР контракта, D39.99); ETA ПОКАЗЫВАТЬ — решение владельца 04.08 (D39.100/К-5), `eta_seconds` в спеку правкой S3 |
|
||||
|
|
@ -52,13 +52,13 @@
|
|||
|
||||
| ID | Требование (источник) | Статус | Носитель / доказательство |
|
||||
|---|---|---|---|
|
||||
| ПТ-20 | Ридер-IDE: VS Code-подобный фронт агентного перевода (V0-п.20/23) | ⭕ | research/16 принят (D29); строки 69–71; F3-brief — D29 п.3. Ф3 ОТКРЫТА 02.08 (D39.81): фронт-сессия живёт на моках (`frontend/`, S0–S2 + контракт исполнены); контракт API ратифицирован (D39.99), платформа = П-1 (промт P0 выдан 04.08, D39.100) |
|
||||
| ПТ-20 | Ридер-IDE: VS Code-подобный фронт агентного перевода (V0-п.20/23) | ⭕ | research/16 принят (D29); строки 69–71; F3-brief — D29 п.3. Ф3 ОТКРЫТА 02.08 (D39.81): фронт-сессия живёт на моках (`frontend/`, S0–S2 + контракт исполнены); контракт API ратифицирован (D39.99), платформа = П-1 (P0 исполнен 04.08, D39.100/101 — ждёт приёмки №13) |
|
||||
| ПТ-21 | Параллельное чтение двух текстов с выравниванием по смыслам (V0-п.21); выравнивание грубое, по единицам экспорта — принято владельцем 02.08, спаны внутри текста не строятся | 🔶 | механизм готов: `tmctl export --pairs` выравнивает пары побайтно по единицам редактуры (`internal/pipeline/export.go:89-93`); якорь = **edit-unit**, НЕ чанк (переформулировано D39.84 — финальный текст существует только на уровне юнита, ~1.9 юнита/главу, местами глава = один блок; читалка обязана это выдерживать); UI-читалка = Ф3 (этап S6) |
|
||||
| ПТ-22 | Настройки от человека: 18+, жанр и т.п. (V0-п.22) | 🔶 | `book.yaml` (labels/жанр) данными; UI = Ф3 |
|
||||
| ПТ-23 | Веб-ПЕРВЫЙ фронт; SEO/ранжирование Google — куки, страницы-сироты, актуальные алгоритмы (V5-п.2); продукт = **SaaS**, не локальное приложение (решение владельца 02.08, D39.81 — натив-прицел V0-п.26 СНЯТ этим решением, вернуть только новым словом владельца); SEO только под Google, Яндекс снят; рынок глобальный; десктоп = PWA первым шагом, Tauri по явным триггерам (решения владельца 02.08, D39.84) | ⭕ | строка 71 (Ф3-бриф); SEO вошёл в стек-дизайн ДО выбора (D39.84, требование исполнено): двухконтурный деплой — SPA `app.<домен>` целиком под noindex + статический публичный контур ≤3 кликов от главной (лечение страниц-сирот), `STACK_DECISIONS.md` §4; SSR-вопрос закрыт этим решением |
|
||||
| ПТ-23 | Веб-ПЕРВЫЙ фронт; SEO/ранжирование Google — куки, страницы-сироты, актуальные алгоритмы (V5-п.2); продукт = **SaaS**, не локальное приложение (решение владельца 02.08, D39.81 — натив-прицел V0-п.26 СНЯТ этим решением, вернуть только новым словом владельца); SEO только под Google, Яндекс снят; рынок глобальный; десктоп = PWA первым шагом, Tauri по явным триггерам (решения владельца 02.08, D39.84) | ⭕ | строка 71 (Ф3-бриф); SEO вошёл в стек-дизайн ДО выбора (D39.84, требование исполнено): двухконтурный деплой — SPA `app.<домен>` целиком под noindex + статический публичный контур ≤3 кликов от главной (лечение страниц-сирот), `frontend/docs/STACK_DECISIONS.md` §4; SSR-вопрос закрыт этим решением |
|
||||
| ПТ-24 | Цикл согласования глоссария с профпереводчиком/редактором (V0-п.23) | 🔶 | подписной цикл терминолога в бэкенде есть; UI = Ф3 |
|
||||
| ПТ-33 | Интерфейс НЕ раскрывает конвейер: ни моделей, ни стадий, ни внутренней терминологии — пользователь видит «загрузка → разбор → перевод → подпись банка → финал → готово» (решение владельца 02.08) | ⭕ | инвариант D39.81; контракт API v0 РАТИФИЦИРОВАН (D39.99, `architecture/14-api-contract/`): словарь десяти статусов принят владельцем 04.08 (D39.100/К-1); карта «вердикт → фраза» — приложение А компаньона, слова заполняет владелец (В-3); ревью-вопрос «сменится стадия — править ли фронт?» отвечен таблицей §5 компаньона |
|
||||
| ПТ-34 | Пользовательский перевод НИКОГДА не попадает на публично индексируемый URL — ни витрин примеров, ни «поделиться главой», ни публичных ссылок чтения (жёсткий продуктовый запрет, решение владельца 02.08; авторское право на исходники + политика Google по масштабируемому машин-контенту действуют на весь домен) | ⭕ | инвариант D39.84; носители: двухконтурный деплой `STACK_DECISIONS.md` §4 (SPA под `X-Robots-Tag: noindex` на каждом HTML-ответе; публичный контур без контента переводов) + контракт 95 + платформенный бэклог П-1 |
|
||||
| ПТ-34 | Пользовательский перевод НИКОГДА не попадает на публично индексируемый URL — ни витрин примеров, ни «поделиться главой», ни публичных ссылок чтения (жёсткий продуктовый запрет, решение владельца 02.08; авторское право на исходники + политика Google по масштабируемому машин-контенту действуют на весь домен) | ⭕ | инвариант D39.84; носители: двухконтурный деплой `frontend/docs/STACK_DECISIONS.md` §4 (SPA под `X-Robots-Tag: noindex` на каждом HTML-ответе; публичный контур без контента переводов) + контракт 14 (`architecture/14-api-contract/`, D39.99) + платформенный бэклог П-1 |
|
||||
| ПТ-35 | Лимиты «как в Claude Code» (решение владельца 04.08, D39.100): страница лимитов/использования в настройках (статус, НЕ суммы — запрет денег на экране в силе); стоп по потолку = статус `paused` + оповещение «перевод остановлен: лимиты исчерпаны» | ⭕ | контракт К-8 закрыт; API — П-5 (платформа), статус в спеке — правка S3 |
|
||||
|
||||
## Качество процесса и самоулучшение
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
# research/16 — Ридер-IDE: выравнивание, статусы доверия, HITL-редактура (2026-07-11)
|
||||
|
||||
> **→ 04.08 (D39.99): поверхность API/статусов ратифицирована контрактом 14** (`../architecture/14-api-contract/`) — контракт-эскизы ниже читать как входы истории, не спеку.
|
||||
> **⚠ Ревью-шапка оркестратора (12.07, D29; тело ниже не редактировалось).** Вердикт адверсариального ревью (4 оси: 2 источник-батча по первоисточникам, независимая реплика $0-пробы, red-team контракта против кода/D15.2-спеки): **ACCEPT_WITH_FIXES — абсорбция через D29**. Ядро выводов (чанк=несущий якорь; калибровка YELLOW важнее покрытия; детект-флаггер вместо форс-структуры; «не вырезание» — подтверждено и усилено) — выживает. Поправки чтения:
|
||||
> 1. **Числа §0 — верхний край метрик-диапазона, база устарела.** Проба считана по stale-экспорту (ch1/4 показан красным при redriven-OK в store; сама проба напечатала `<<MISMATCH`-варнинг — проигнорирован) и с багом выбора draft-попытки («самый длинный ответ» вместо `final_hash` — length-обрезок бывает длиннее). По DB-истине: **57.4% точно / 70.4% ±1 / агрегат 0.9695; редактор 49/54=90.7%** (не 93%); чистый драфт 59.3%. Хуже: адаптивная метрика абзаца схлопывает смешанную вёрстку 13/54 финалов — line-based определение даёт **44.4%**, т.е. «58%» = верх диапазона **44–58%, зависящего от определения абзаца**; сравнение с внешними 60.2% (предложения!) — только направление. Полоса arity-паспорта обязана пиновать определение. Из «двух худших» чанков только ch14/1 — настоящее слияние; ch19/1/ch1/4 — артефакты вёрстки.
|
||||
> 2. **Новое требование к экспорту (находка реплики): 8/54 финалов содержат markdown-заголовки `###`** — финалы пайплайна не чистый plain text; нормализация выхода — в экспорт-контракт.
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
# 23 — Шов движок ↔ платформа: как индустрия интегрирует batch-движок с control plane
|
||||
|
||||
> **→ 04.08 (D39.99/101): контракт API v0 РАТИФИЦИРОВАН по этому шву** — `../architecture/14-api-contract/`; строка 95 закрыта, хвосты движка = блокеры 99/100/101/103/125; код платформы существует (P0, ждёт приёмки). Упоминания «строки 95» ниже — история.
|
||||
> **Ревью-шапка (оркестратор №9, 02.08.2026).** Статус: ПРИНЯТ, направление ратифицировано **D39.85**. Метод: 5-агентный воркфлоу — три веб-направления по первоисточникам (официальные доки/блоги авторов инструментов, вторичных статей в выводах нет) + репо-инвентаризация + независимый арбитраж репо-находок (все 9 вердиктов подтверждены, 3 мелкие поправки внесены сюда). Правила `internal` проверены ЖИВЫМИ сборками на go1.26.4, не пересказом доков. Стоимость $0. Вопрос ресёрча: как чисто организовать read-путь и статус-поток от движка (CLI, процесс-на-прогон, приватный SQLite под EXCLUSIVE flock) к платформе (отдельный Go-модуль, net/http + Postgres + River + SSE) — не нарушая инвариантов «сервер в backend не пишется» (D39.81) и «пользователи/квоты/HTTP не проникают в движок».
|
||||
|
||||
## §0. Решение одним экраном
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue