Ratify D39.100: four contract questions closed by owner, limits requirement PT-35, platform prompt in canon maps, registry references refreshed

This commit is contained in:
heaven 2026-08-04 13:48:53 +03:00
parent cffae5646a
commit 250e4160eb
6 changed files with 34 additions and 8 deletions

View file

@ -19,7 +19,7 @@ Go-бэкенд издательского художественного пер
| **Полигон (eval)** | `eval/` + `docs/experiments/` | только пре-рег фризы | то же |
| **Оркестратор** | `docs/` (architecture/research/PROGRESS) + корневые онбординг-доки, ревью чужого кода read-only | да | ратифицирует решения, пишет хендофф-промты |
| **Фронт** | `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/PROGRESS.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`НЕ читать при онбординге, только по конкретной ссылке. Параллельные сессии — норма: чужие незакоммиченные файлы в дереве не трогать; сессия считается ЖИВОЙ, пока владелец не сказал обратное.

View file

@ -1,6 +1,7 @@
# Журнал прогресса
> **⟶ ТЕКУЩЕЕ СОСТОЯНИЕ** (на 2026-08-04, голова D39.99).
> **⟶ ТЕКУЩЕЕ СОСТОЯНИЕ** (на 2026-08-04, голова D39.100).
> - **РЕШЕНИЯ ВЛАДЕЛЬЦА 04.08 ВЕЧЕР РАТИФИЦИРОВАНЫ (D39.100):** К-1 (десять статусов) · К-8 (лимиты «как Claude Code»: `paused` + оповещение + страница в настройках — ПТ-35/П-5) · К-5 (ETA показывать) · К-3 (метка главы из ДАННЫХ — зашитого «Глава N» не существует) · К-6 (принцип: ступени по читательскому эффекту). Правки спеки — первый шаг S3 (блок в промте). **ПЛАТФОРМА ОТКРЫТА: промт P0 выдан** (`platform/docs/PLATFORM_SESSION_PROMPT.md`; скелет+стек+дизайн-ответы К-4/К-7/К-12/П-5, $0). **Зонные журналы = name-PROGRESS** (фронт/платформа пишут только туда, включая оркестратора). Хвосты: приёмка банк-арбитража — ПОЗЖЕ (слово владельца) · В-3 фразы + карта К-6 — позже одним листом · confirm-лист D39.98 закрыт (оба решения подтверждены; подчистка санкционирована).
> - **КОНТРАКТ API v0 РАТИФИЦИРОВАН (D39.99, 04.08): строка 95 ЗАКРЫТА.** Дом — `docs/architecture/14-api-contract/` (нормативная спека OpenAPI 3.1 + компаньон-README с провенансом ✓/◆/○ и К-вопросами); написан фронт-сессией S3, принят тремя адверсариальными пассами (0 опровергнутых из 19 подтверждённых находок за все пассы, все вправлены). Типы фронта генерятся из спеки (дрифт-тест = голден-паттерн). **Строки 99/100/101/103 перевешены в «скоро» — БЛОКЕРЫ контракта**; новые 125 (банк-экспорт) · 126 (поднятие потолка) · 127 (DDL-коммент). **Открыто на владельце:** продуктовые К-1/К-3/К-5/К-6/К-8 контракта + фразы В-3 (заготовка — приложение А компаньона) + прежние (confirm двух решений 04.08 из журнала фронта · авторство подчистки D-лога · приёмка банк-арбитража — артефакты в дереве не залендены). **Следующий разговор на берегу — бутстрап платформы (П-1): у второй стороны контракта ноль строк кода.**
> - **ФРОНТ S2 + ДОФИКС ПО РЕВЬЮ ПРИНЯТЫ И ЗАЛЕНДЕНЫ (D39.98, 04.08: `ece94ef` сессией по старому канону + `02872b6` лендинг оркестратора).** Git-канон v2 разнесён по носителям: коммитит ТОЛЬКО оркестратор (владелец 04.08, supersede D39.88 — запись в D39.98 п.3; ⚠ там же процедурная нота о подчистке тел D-лога). **В дереве НЕТРЕКНУТЫЕ артефакты банк-арбитража** (`docs/research/24-bank-arbitration.md` · `eval/bank_arbitration/`) — ждут отдельной приёмки (строка 5). **Открыто на владельце (+D39.98 п.4):** confirm двух «решений 04.08» из журнала фронта · авторство подчистки D-лога.
> - **ПАК СТАНДАРТОВ + ДОФИКС ARCHGUARD ПРИНЯТЫ И ЗАЛЕНДЕНЫ (D39.96/97, 0304.08; семь pathspec-коммитов `e8d4ac0`…`0e64efe`). Строки 107/112/117 ЗАКРЫТЫ.** Репо на стандартах: `.golangci.yml` 0 issues · `make battery` = единая точка входа · типовые анализаторы archguard (38 посадок, 9/9 мутаций, семь осознанных пропусков — 121(д)) · x/net 0.57 (живая проба PASS 3/3, `reasoning_content` подтверждён на проводе, $0.0053) · пять шиппинг-конфигов на `low`. **Задачи №12:** (1) выдать промт пака экрана 46 — D39.94 п.3 (фикстура 113 первой; денежный шаг ТОЛЬКО с подписью владельца); (2) малый пак tools/go.mod — решение принято D39.97 п.4 (строка 118). **ОТКРЫТО НА ВЛАДЕЛЬЦЕ:** 116 (порог «≥4/5 при N=5» подан) · строка 5 (находки прерванного банк-ресёрча или пере-запуск; промт подрезать до $1.20) · мини-проба 44 «low+16k» (~$0.05) · подпись денежного шага 46. **Вахта:** маппинг эффорта `deepseek-v4-pro` «early August 2026» (реестр 108, триггер >05.08 — БЛИЗКО). **Источник истины по РЕШЕНИЯМ — `architecture/05-decisions-log.md`; этот файл — ЖУРНАЛ.**
@ -132,6 +133,10 @@
| 124 | **Калибровка снапшота (вопрос владельца 04.08, разбор D39.97 п.5): нацеленность, не агрессивность.** Три оси одним дизайн-паком: (а) недо-чувствительность — вердикт-несущие вызовы x/text не свёрнуты (вход: строка 119); (б) пере-охват — `EmbeddedVersion` фолдит все пары разом → пер-парный хеш (родня 115/120); (в) дешёвая перекупка: `tmctl resnapshot --dry-run` — байт-сверка тел по чекпойнтам (`msgsContentHash`), идентичные юниты пере-привязываются без пере-вызова, платятся только изменившиеся. «Поведенческий отпечаток вместо строки версии» отложен (пол ≠ доказательство) | бэкенд | когда-нибудь (перед МАСШТАБОМ — когда перекупки станут реальными деньгами) | дизайн-пак по D39.97 п.5 | D39.97 |
## Оркестратор №12 — решения владельца по контракту ратифицированы, платформа открыта промтом P0 (D39.100), 04.08
Четыре К закрыты владельцем (десять статусов · лимиты «как Claude Code» → ПТ-35/П-5/`paused` · ETA показывать · метка главы из данных — канон-урок: зашитого «Глава N» нет) + принцип К-6; правки спеки переданы S3 первым шагом. Платформа: полноценный промт P0 (`platform/docs/PLATFORM_SESSION_PROMPT.md`), зонный журнал заведён; норма name-PROGRESS вписана в CLAUDE.md/README. Confirm-хвосты D39.98 закрыты. Детали — D39.100.
## Оркестратор №12 — КОНТРАКТ API v0 РАТИФИЦИРОВАН: строка 95 закрыта, форма OpenAPI, три пасса приёмки (D39.99), 04.08
S3 упёрлась в замок (контракта нет) — по слову владельца написала вход Ф-14 + черновик; форма по решению владельца сменена на OpenAPI 3.1 (типы генерятся, спека линтуется — класс «фикстура выдумала форму», случившийся четырежды, закрыт механически). Приёмка: три воркфлоу-пасса (16+6 агентов), 19 подтверждённых находок (2 high: withheld ≠ «текст не выдан» — движок отгружает текст под флагом; чтения без канала шва), ноль опровергнутых; все вправлены двумя раундами дофикса, каждый раунд перепроверен. Пост-мортем процесса — в D39.99 п.4 (промт S3 велел пинговать в чужую зону — противоречие канона и зонного решения владельца закрыто правкой CLAUDE.md; чек-пункты в промт оркестратора). Детали — D39.99.

View file

@ -15,7 +15,7 @@
- `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; остальные 0116 — отчёты закрытых экспериментов (судьба — в баннерах/D-логе).
- `research/` — фактура ресёрчей 0122; у принятых — ревью-шапки, часть тел под ⚠ 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) (полигон, отложен). **Бэкендного активного промта НЕТ** — пак стандартов + дофикс archguard исполнены, приняты и залендены (D39.96/97, 04.08; промты в `archive/prompts/`); следующие бэкендные: пак экрана 46 (промт ждёт выдачи по D39.94 п.3) и малый пак tools/go.mod (строка 118, D39.97 п.4) · [BANK_ARBITRATION_RESEARCH_SESSION_PROMPT.md](BANK_ARBITRATION_RESEARCH_SESSION_PROMPT.md) (**ресёрч+полигон**, D39.89; ⚠ заход 02.08 ПРЕРВАН владельцем, находки в дерево не попали — перед пере-выдачей промт ПОДРЕЗАТЬ по D39.90 п.5: §3-A+B1+B3, B2 → под-проба, §5-C отложен, потолок $1.20; вопрос владельцу о находках прерванной сессии открыт, D39.94 п.4). Фронт-промт — в чужой зоне `frontend/docs/`.
- Активные хендофф-промты сессий (состав обновляется при каждом лендинге — норма 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) · [BANK_ARBITRATION_RESEARCH_SESSION_PROMPT.md](BANK_ARBITRATION_RESEARCH_SESSION_PROMPT.md) (**ресёрч+полигон**, D39.89; ⚠ заход 02.08 ПРЕРВАН владельцем, находки в дерево не попали — перед пере-выдачей промт ПОДРЕЗАТЬ по D39.90 п.5: §3-A+B1+B3, B2 → под-проба, §5-C отложен, потолок $1.20; вопрос владельцу о находках прерванной сессии открыт, D39.94 п.4). Фронт-промт — в чужой зоне `frontend/docs/`.
- Зоны фронта (чужие, читать при касании стыка; каждая ведёт СВОЙ зонный бэклог — единый бэклог их строк не принимает, D39.84): [../frontend/](../frontend/) — веб-интерфейс: промт фронт-сессий S0S7 + [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).
- `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).

View file

@ -1,4 +1,4 @@
# Журнал решений оркестратора — контракт D1D39.99 (развязки 04.07 · пакеты 0910.07 · приёмка/качество-первым/пивот/эмпирика 1112.07 · арх-ресет+стройка пере-прогонного стека 1319.07)
# Журнал решений оркестратора — контракт D1D39.100 (развязки 04.07 · пакеты 0910.07 · приёмка/качество-первым/пивот/эмпирика 1112.07 · арх-ресет+стройка пере-прогонного стека 1319.07)
> **КАРТА АКТУАЛЬНОСТИ (ревизия D31, продлена до D38.2 [12.07]; исторические записи ниже НЕ переписываются — дисциплина D23.3).** Читая контракт целиком, держи под рукой, что чем перекрыто:
> ⚠ **Навигация (актуализация 01.08):** карта ниже детально покрывает D1D39.28; решения D39.29+ живут хронологически в теле файла, **свежая голова — С ХВОСТА** (новые ноты аппендятся вниз). Сводка текущей головы и очередь — CURRENT-STATE в `../PROGRESS.md`.
@ -1444,3 +1444,13 @@ API-529-долг закрыт: 8-осевой refute-by-default воркфлоу
**4. Пост-мортем процесса (вопрос владельца «где мы ошиблись на берегу») — три слоя, фиксы в канон.** (а) Ошибка последовательности оркестратора: ратифицирован S3-промт с мёртвым основным сценарием (замок закрыт, промта строки 95 не существовало) — фронт три сессии упирался в один вход. (б) Ревью промта было структурным, не построчным: инструкция «пинг в docs/PROGRESS.md» дословно следовала таблице ролей CLAUDE.md, но противоречила решению владельца 02.08 из шапки зонного журнала. (в) Системная дыра: решения владельца, принятые в зонных сессиях, не доезжают до канона. **Фиксы:** CLAUDE.md — пинг-канал фронта/платформы = ЗОННЫЙ журнал (`frontend/docs/frontend-PROGRESS.md` — переименован по слову владельца, писать туда всем включая оркестратора), не docs/PROGRESS.md; промт оркестратора — два чек-пункта (хендофф-промты сверяются ПОСТРОЧНО: каждая инструкция с путём/каналом вне зоны — против зонной таблицы; при каждом лендинге зоны — свип новых «решений владельца» из зонного журнала на confirm списком); шапка `frontend/docs/BACKLOG.md` разведена «предлагать обязан / ратифицирует оркестратор» (просьба №3 сессии — прежняя формулировка спровоцировала остановку первого захода).
**5. Открыто на владельце:** продуктовые К контракта — К-1 (десять статусов) · К-3 (метка главы в дереве) · К-5 (ETA в MVP; ПТ-19 существует) · К-6 (ось ступеней замечаний — операторская унаследована) · К-8 (слово и статус стопа по потолку) + заполнение приложения А (В-3) + прежний список D39.98 п.4 (confirm двух решений · авторство подчистки · приёмка банк-арбитража). **Следующий разговор на берегу — бутстрап платформы П-1: у второй стороны контракта ноль строк кода, К-4/К-7/К-12 адресованы зоне, которой нет** (урок строки 95 — не ждать, пока три сессии упрутся). (04.08.2026, оркестратор №12). ✅
## D39.100 — РЕШЕНИЯ ВЛАДЕЛЬЦА 04.08 ВЕЧЕР: четыре К контракта закрыты, лимиты «как Claude Code» (ПТ-35), платформа ОТКРЫТА промтом P0, зонные журналы = name-PROGRESS (04.08). ✅
**1. К-вопросы контракта, закрытые владельцем:** **К-1** — десять статусов приняты. **К-8** — механизм «как Claude Code»: страница лимитов/использования в настройках (СТАТУС, не суммы — запрет денег на экране D39.84 в силе и НЕ superseded), стоп по потолку = новое 11-е значение `BookStatus:paused` + оповещение «перевод остановлен: лимиты исчерпаны»; заведены **ПТ-35** (реестр) и **П-5** (платформенный бэклог: API лимитов — форму проектирует P0). **К-5** — ETA показывать: `eta_seconds` в спеку (движок отдаёт, `status.go:112`). **К-6** — принцип принят: две ступени замечаний, граница по ЧИТАТЕЛЬСКОМУ эффекту, не по операторской шкале; карта пере-раскладки — одним листом с фразами В-3 на подпись (владелец: «позже»). **К-3** — закрыт канон-уточнением владельца: метка главы — ИЗ ДАННЫХ книги, зашитой формы «Глава N» не существует (это шаблон langpack-данных; легальна книга без номеров/глав вовсе) — фронту проверить спеку и фикстуры на зашитую форму. Правки спеки — задачей первого шага S3 (блок в `S3_SESSION_PROMPT.md`; минорный бамп версии + регенерация типов + байт-сверка копий; канон правит только оркестратор пере-ратификацией диффа).
**2. Платформа ОТКРЫТА:** выдан промт **P0** (`platform/docs/PLATFORM_SESSION_PROMPT.md`): стек live-сверкой → layout (гард D39.85: модуль НЕ под путём движка) → компилируемый скелет (HTTP+`/healthz` · session-auth каркас П-1 · драфт схемы read-model · интерфейс NDJSON-ингеста) → зонная батарея → дизайн-ответы К-4/К-7/К-12 + форма П-5 ПРЕДЛОЖЕНИЯМИ (ратифицирует оркестратор); $0, LLM не зовёт, не в скоупе П-2/деплой/UI. **Норма зонных журналов (решение владельца): весь прогресс фронта и платформы — в зонных `frontend/docs/frontend-PROGRESS.md` / `platform/docs/platform-PROGRESS.md`** (заведён), пишут все включая оркестратора; `docs/PROGRESS.md` = движок/полигон/доки.
**3. Старые хвосты:** оба «решения владельца 04.08» из журнала фронта CONFIRMED («+» в левой панели = Добавить книгу, половина Ф-7 закрыта легитимно · референсы возвращены на диск). Подчистка D-лога (D39.98 п.3): владелец — «не я, но санкционировал, может, и я» ⇒ закрыто как «санкционировано владельцем, исполнено сессией-синхронизатором»; дисциплина D23.3 впредь — без изменений. Приёмка банк-арбитража — ПОЗЖЕ по слову владельца (артефакты остаются в дереве незалендены). Заполнение приложения А (В-3 фразы + карта К-6) — позже, готовит оркестратор с фронтом одним листом.
**4. Актуализация носителей этим лендингом:** ПТ-реестр (ПТ-35 нов; ПТ-18/19/20/33 — ссылки на закрытую строку 95 заменены контрактом 14) · CLAUDE.md (пинг-канал платформы = зонный журнал) · docs/README (промт платформы в активных) · шапка ратифицированного компаньона (пост-ратификационные решения). Единый бэклог не менялся: счёт прежний (103 · скоро 21 · бэкенд 58/66, D39.99). (04.08.2026, оркестратор №12). ✅

View file

@ -18,6 +18,16 @@ openapi.yaml РЯДОМ (байт-копия зонной frontend/docs/api-cont
(DDL-коммент). Приложение А — заготовка: фразы и ступени заполняет владелец (В-3).
Тело ниже — авторский текст фронт-сессии S3 (два раунда дофикса), не переписано.
ПОСТ-РАТИФИКАЦИЯ (решения владельца 04.08 вечер, D39.100): К-1 ЗАКРЫТ (десять
статусов приняты) · К-8 ЗАКРЫТ (механизм «как Claude Code»: BookStatus получает
11-е значение `paused`, оповещение «лимиты исчерпаны», страница лимитов в
настройках — ПТ-35/П-5; суммы денег на провод по-прежнему не идут) · К-5 ЗАКРЫТ
(ETA показывать: `eta_seconds` в спеку) · К-3 ЗАКРЫТ (метка главы — из ДАННЫХ
книги; зашитой формы «Глава N» не существует — легальна книга без номеров глав) ·
К-6 — принцип принят (две ступени по читательскому эффекту; карта — с В-3 позже).
Правки спеки исполняет S3 (блок в её промте) с минорным бампом версии; эта копия
пере-ратифицируется диффом при лендинге.
====================================================================== -->
# Контракт API v0 — спутник спеки: провенанс, обоснования, вопросы

View file

@ -45,20 +45,21 @@
|---|---|---|---|
| ПТ-16 | Абьюз/misuse-прескрин: дёшево, точно, до трат токенов, минимум false positive (V2-п.1, H8) | ⭕ | строка 94; UI-контракт отказа — проект-решение D39.80 к Ф3-брифу (вывод оркестратора, не цитата брифа) |
| ПТ-17 | Лимит размера входа настройкой (V2-п.3, H7) | ⭕ | строка 94 |
| ПТ-18 | Стоп и продолжение пайплайна; абьюзивный прогон НЕ продолжать (V2-п.2, H10) | 🔶 | graceful stop по сигналу (`cmd/tmctl/main.go` NotifyContext) + чекпойнты/redrive; продукт-кнопки и связка с прескрином = строка 94; API-форма — контракт 95 |
| ПТ-19 | Скорость: «очень быстрый перевод книги — киллерфича» (V4-п.1, H9); видимый прогресс/ETA — из Ф3-видения ридер-IDE (цветная полоса статуса), не из V4 | 🔶 | волны параллельны по чанкам; замер скорости и ETA на целой книге = строка 54 (МАСШТАБ); пофазный индикатор draft/edit = строка 99 (D39.84 — текущий done-счётчик стоит 0% всю черновую волну) |
| ПТ-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 |
## Фронт (Ф3)
| ID | Требование (источник) | Статус | Носитель / доказательство |
|---|---|---|---|
| ПТ-20 | Ридер-IDE: VS Code-подобный фронт агентного перевода (V0-п.20/23) | ⭕ | research/16 принят (D29); строки 6971; F3-brief — D29 п.3. Ф3 ОТКРЫТА 02.08 (D39.81): фронт-сессия живёт на моках (`frontend/`), бэкенд-сторона = строки 95/96 |
| ПТ-20 | Ридер-IDE: VS Code-подобный фронт агентного перевода (V0-п.20/23) | ⭕ | research/16 принят (D29); строки 6971; F3-brief — D29 п.3. Ф3 ОТКРЫТА 02.08 (D39.81): фронт-сессия живёт на моках (`frontend/`, S0S2 + контракт исполнены); контракт API ратифицирован (D39.99), платформа = П-1 (промт P0 выдан 04.08, D39.100) |
| ПТ-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-вопрос закрыт этим решением |
| ПТ-24 | Цикл согласования глоссария с профпереводчиком/редактором (V0-п.23) | 🔶 | подписной цикл терминолога в бэкенде есть; UI = Ф3 |
| ПТ-33 | Интерфейс НЕ раскрывает конвейер: ни моделей, ни стадий, ни внутренней терминологии — пользователь видит «загрузка → разбор → перевод → подпись банка → финал → готово» (решение владельца 02.08) | ⭕ | инвариант D39.81; носитель — строка 95 (контракт API: слой перевода внутренних вердиктов в продуктовые понятия); ревью-вопрос «сменится стадия конвейера — придётся ли править фронт?» |
| ПТ-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 |
| ПТ-35 | Лимиты «как в Claude Code» (решение владельца 04.08, D39.100): страница лимитов/использования в настройках (статус, НЕ суммы — запрет денег на экране в силе); стоп по потолку = статус `paused` + оповещение «перевод остановлен: лимиты исчерпаны» | ⭕ | контракт К-8 закрыт; API — П-5 (платформа), статус в спеке — правка S3 |
## Качество процесса и самоулучшение