From 47dee6d32465271d9830a58754f811305a8b27b6 Mon Sep 17 00:00:00 2001 From: heaven Date: Wed, 2 Sep 2026 15:47:05 +0300 Subject: [PATCH] Apply the controller's dofix in the frontend zone: restore what the cut lost and repair what it broke, including places where the text asserted the wrong thing about the code --- frontend/docs/API_CONTRACT_DRAFT.md | 4 ++- frontend/docs/FRONTEND_PLAN.md | 10 +++--- frontend/docs/FRONTEND_SESSION_PROMPT.md | 6 +++- frontend/docs/frontend-PROGRESS.md | 45 ++++++++++++++++++++++-- 4 files changed, 57 insertions(+), 8 deletions(-) diff --git a/frontend/docs/API_CONTRACT_DRAFT.md b/frontend/docs/API_CONTRACT_DRAFT.md index 1c301985..0f4ab061 100644 --- a/frontend/docs/API_CONTRACT_DRAFT.md +++ b/frontend/docs/API_CONTRACT_DRAFT.md @@ -26,4 +26,6 @@ §2.8 (слова банка) и §2.11 (канал потока) с тех пор пере-решены. Черновик 0.2.x отвечал бы на эти вопросы устаревшим способом молча. -Исходное тело — в истории git этого файла. +Тело исполнено в каноне `docs/architecture/14-api-contract/README.md` §2.1–2.13 — те же номера +(греп `### 2.1. Язык — код` … `### 2.13. ПТ-34`). ⚠ Отсылка «в истории git этого файла» снята +02.09: git АДРЕСОМ не является — по нему нельзя ни грепнуть, ни проверить утверждение. diff --git a/frontend/docs/FRONTEND_PLAN.md b/frontend/docs/FRONTEND_PLAN.md index acb30376..580608c2 100644 --- a/frontend/docs/FRONTEND_PLAN.md +++ b/frontend/docs/FRONTEND_PLAN.md @@ -405,10 +405,12 @@ rm -f *.deb && cd .. **ОТВЕРГНУТО — не переоткрывать:** - **тёплый ряд поверхностей `#17191a` полотном, `#27292b` приподнятой, `#353739` выбранной - строкой.** Он снят с `fleet.png` и держится в §1.1 промта как отменённый; тон отверг владелец, - и токены стоят на нейтральном ряде `fleet_2`/antigravity выше. Заодно развелись роли: §1.1 - отдавал `#353739` разом «выбранной строке» и «активной вкладке», а в кадре это разные вещи — - вкладка документа `#142f4c`, вкладка панели серая, и `#353739` под вкладками не встречается вовсе; + строкой.** Он снят с `fleet.png` и отменён; ⚠ в §1.1 промта таблицы поверхностей БОЛЬШЕ НЕТ + (`FRONTEND_SESSION_PROMPT.md` греп `Таблицы поверхностей здесь БОЛЬШЕ НЕТ`) — действующие числа + здесь, в §5.1. Тон отверг владелец, и токены стоят на нейтральном ряде `fleet_2`/antigravity + выше. Заодно развелись роли: §1.1 отдавал `#353739` разом «выбранной строке» и «активной + вкладке», а в кадре это разные вещи — вкладка документа `#142f4c`, вкладка панели серая, + и `#353739` под вкладками не встречается вовсе; - **модель «вырез в хроме» под активную вкладку.** Срез по вертикали через активную вкладку `fleet_2` (x=790, y=36‥68) даёт `#181818` без единой разделительной линии до содержимого, тогда как соседняя неактивная лежит на `#292929`. Модель по этому замеру была построена и ОТКАЧЕНА diff --git a/frontend/docs/FRONTEND_SESSION_PROMPT.md b/frontend/docs/FRONTEND_SESSION_PROMPT.md index 51ed60b4..feb2d068 100644 --- a/frontend/docs/FRONTEND_SESSION_PROMPT.md +++ b/frontend/docs/FRONTEND_SESSION_PROMPT.md @@ -58,7 +58,7 @@ OpenAPI 3.1, типы генерятся из спеки), и слой данн Владелец сформулировал прямо: **«взять макет Fleet как он есть по блокам и стилю и полностью скопировать, переделав под наши нужды»**. Это не тот случай, где нужна своя эстетика. Нужна чужая, воспроизведённая точно. -### 1.1. Измеренные значения — брать эти, не выводить свои +### 1.1. Замеры референса: геометрия и шесть поверхностей Antigravity ниже — живые (носитель `FRONTEND_PLAN.md` §5.1); три поверхности Fleet отвергнуты Ниже — не оценка на глаз, а **замер пикселей** `fleet.png` (Python/PIL: гистограмма поверхностей, поиск насыщенных пикселей, срез по горизонтали, детект края скругления). Скриншот снят при масштабе **2x** — установлено по кнопкам окна macOS: шаг 40 физических пикселей против штатных 20 CSS. Все размеры ниже уже переведены в CSS-пиксели. @@ -66,6 +66,10 @@ OpenAPI 3.1, типы генерятся из спеки), и слой данн полотном, `#27292b` приподнятой поверхностью и `#353739` выбранной строкой — все три отменены пере-замером палитры по слову владельца и в токенах не стоят (`FRONTEND_PLAN.md` §5.1, блок «что отвергнуто»). Действующие числа — только `src/tokens/tokens.css` и §5.1 плана. +Акцент и красный индикатора здесь тоже больше не описываются тоном и насыщенностью: и то и другое +выводится из hex, а hex живёт токеном — `frontend/src/tokens/tokens.css` греп `--color-accent` +(`#746deb`) и греп `--color-danger` (`#bd2f47`, ПОДНЯТ против замера `#b82e45` ради контраста, +`FRONTEND_PLAN.md` §5.1). Второго носителя у этих чисел быть не должно. **Геометрия Fleet:** diff --git a/frontend/docs/frontend-PROGRESS.md b/frontend/docs/frontend-PROGRESS.md index d016b277..70daa1bb 100644 --- a/frontend/docs/frontend-PROGRESS.md +++ b/frontend/docs/frontend-PROGRESS.md @@ -3,7 +3,7 @@ ## ПИНГ оркестратора №20 → зоне фронта (30.08, аудит доков; зона ЗАМОРОЖЕНА — это к первому касанию при разморозке) Зона заморожена, работы не заказываю: перечисленное ждёт разморозки и правится ТВОЕЙ сессией (её журнал и бэклог — твоя зона). -1. **В-3 (каким словом называть ступень замечания) — с листа владельца СНЯТ.** D39.176 п.4 (30.08): фразы В-3 · К-6 · Приложение А ДЕЛЕГИРОВАНЫ проекту, подписи владельца не ждём. Требование ИНЖЕНЕРНОЕ: фраза не литерал ни в Go платформы, ни в TSX фронта, а ДАННЫЕ по машинному коду причины и локали; словарь — один на продукт. То же снимает развилку **Ф-61** («платформа отвечает по-английски») — направление задано, выбор «кто и чем» больше не открыт. +1. **В-3 (каким словом называть ступень замечания) — с листа владельца СНЯТ.** ⚠ Строка В-3 удалена из таблицы вопросов 02.09, поэтому предмет ищется носителями: `docs/research/28-contract-review.md:1443`=`К-6 (ступени замечания)` и `docs/research/28-contract-review.md:1547`=`К-6, ступени замечаний`, хвост зоны — `frontend/docs/BACKLOG.md:25`=`Ф-21`. D39.176 п.4 (30.08): фразы В-3 · К-6 · Приложение А ДЕЛЕГИРОВАНЫ проекту, подписи владельца не ждём. Требование ИНЖЕНЕРНОЕ: фраза не литерал ни в Go платформы, ни в TSX фронта, а ДАННЫЕ по машинному коду причины и локали; словарь — один на продукт. То же снимает развилку **Ф-61** («платформа отвечает по-английски») — направление задано, выбор «кто и чем» больше не открыт. 2. **Ф-43 протухла обеими половинами** (сверено деревом 30.08): движковый сайдкар банка построен (`backend/internal/pipeline/bankexport.go`), платформа его декодирует и отдаёт проекцией. Основание «S5 непостроим» и зависимости Ф-44/Ф-46 «после Ф-43» больше не держатся. Первый пинг об этом был 16.08 и не исполнен — потому повторяю. 3. **В-1** утверждал «платформы ещё нет ни строки» — платформа живёт с 04.08 и прошла паки P0–P11 плюс sqlc; половина вопроса снята фактом (текст строки В-1 поправлен 02.09 при чистке журнала). 4. **Состояние зеркала контракта — 0.2.3 против канона 0.9.0** (0.9.0 ЗАЛЕНДЖЕН 31.08 с паком P12, D39.180): СЕМЬ миноров, первый из них ломающий, 16 операций против 20. Синк зеркала + перегенерация типов — первое касание при разморозке, ОДНОЙ перегенерацией. @@ -99,6 +99,20 @@ экран открывается **вкладкой в центре**, как документ, а правая панель ведёт в него действием «Подписать банк». В витрине эта связка показана. +### 02.08 — данные: моки берут форму от движка + +Владелец: **«всё на диске лежит, и главы, и банки памяти»**. Разбор бэкенда подтвердил: моя +первая фикстура выдумывала поля (`kind: 'имя'`, `state: 'подписан'`), а промт прямо запрещает +изобретать API. Формы были переписаны по настоящим. + +⚠ Сам перечень форм (банк · пары · причины замечаний) снят отсюда чисткой 02.09 и здесь НЕ +пересказывается: один факт — один носитель. Действующие формы — канон компаньона +`docs/architecture/14-api-contract/README.md`, греп `### 2.8. Банк` (словари банка, включая +поправку «`auto` пишет СТАТУС, а не провенанс») и греп `### 2.7. Состояние пары`. Первичные +структуры движка ищутся символами: `backend/internal/store/migrate.go` греп `glossary`, +`backend/internal/pipeline/export.go` греп `ChunkExport`, +`backend/internal/pipeline/disposition.go` греп `FlagReason`. + ### 02.08 — шов данных заведён: моки выкидываются одной папкой Владелец: **«все моки рано или поздно придётся выкинуть; нужна минимальность моков, @@ -147,7 +161,7 @@ | # | Вопрос | Почему это его вопрос | |---|---|---| | В-1 | **Данные привязаны к одной машине.** Вся фактура — прогоны, экспорты, банки — лежит в `/home/ubuntu/books/gu-zhenren/` вне git; оба `backend/example/sample-*.db` пустые (только схема); пути стенда зашиты в тесты (`miner_parity_test.go:33-35`, `labelharness_test.go:43`) и в `book.yaml` абсолютными путями. Владелец сказал: «мне не нравится, что это живёт конкретно на моём диске». Лечение — платформа (`platform/README.md`, раздел библиотеки книг: хранение исходников и экспортов); она с тех пор построена и принята (D39.109), поэтому половина вопроса снята фактом — пинг №20 п.3. Фронт от этого не зависит (работает на моках), но **вопрос на движок/платформу, а не на фронт** | скоуп-решение и порядок работ | -| В-8 | **Какое слово о состоянии книги стоит в дереве.** Замечание 23 потребовало бейджу ФИКС-место, и оно сделано; но две метки словаря в него не помещаются и усекаются с тултипом — «остановлена: лимиты» (19 знаков) и ветка неизвестного «неизвестное состояние» (21). Укоротить их сессия НЕ вправе: фраза паузы зарезервирована за владельцем (В-6), и первый заход S3.5 её укоротил и был откачен собственным ревью. Варианты: (а) оставить усечение с тултипом, (б) владелец даёт короткое слово для дерева, а полная фраза остаётся в статус-полосе, (в) расширить колонку бейджа за счёт названия книги | продуктовая формулировка, которую видит пользователь | +| В-8 | **Какое слово о состоянии книги стоит в дереве.** Замечание 23 потребовало бейджу ФИКС-место, и оно сделано; но две метки словаря в него не помещаются и усекаются с тултипом — «остановлена: лимиты» (19 знаков) и ветка неизвестного «неизвестное состояние» (21). Укоротить их сессия НЕ вправе: фраза паузы зарезервирована за владельцем (прежний В-6 снят с листа 02.09 как ЗАКРЫТЫЙ; носитель — `docs/architecture/14-api-contract/README.md:972`=`К-13`, закрыт D39.132 п.2а), и первый заход S3.5 её укоротил и был откачен собственным ревью. Варианты: (а) оставить усечение с тултипом, (б) владелец даёт короткое слово для дерева, а полная фраза остаётся в статус-полосе, (в) расширить колонку бейджа за счёт названия книги | продуктовая формулировка, которую видит пользователь | | В-7 | **Физический масштаб интерфейса на мониторе.** Замечание 1 говорит «масштабы великоваты, особенно на 27″ 2K, на 24″ терпимее». Замер при вьюпорте референса расхождения с Fleet не нашёл (§5.5 плана): промежутки, ширины панелей, шаг строки и высота вкладки совпадают. Значит речь про физический размер на конкретном экране, а он зависит от масштабирования ОС, и «просто уменьшить токены» означало бы уехать от референса, который владелец принял. Правильное лекарство — ручка «плотность интерфейса» в настройках (3 ступени), но она требует перевода ВСЕХ размерных токенов в rem и пере-замера, то есть отдельного прохода (Ф-36). Вопрос: нужна ли ручка, и какой масштаб ОС стоит на 27″ 2K — по нему видно, во сколько раз расходится физика | продуктовое решение и цена отдельного пакета | | В-9 | **Какие языки интерфейса продукт обещает.** Механизм переводимости построен (S3.7, Ф-35): слова интерфейса живут в каталоге `src/i18n/ru.ts`, второй язык — второй файл того же вида плюс строка в `src/i18n/language.ts`, ни один компонент при этом не трогается. Чего фронт сделать не может и не должен: решить, какие языки продукт обещает, и выдумать сами переводы. Пока список из одного значения (`ru`), и каркасный пункт настроек честно говорит «сейчас интерфейс только русский» | продуктовое решение и обещание пользователю | | В-11 | **Фразы отказа книги (PD-173) — на утверждение.** Контракт 0.2.3 несёт машинную причину (`source_unreadable` · `not_configured` · `parser_unavailable`), а слова пишет клиент — их сочинила эта сессия по слову владельца 14.08 и они ждут его «да»: «Файл не удалось разобрать на разделы» / «Проверьте файл — возможно, это не текст книги — и добавьте её заново»; «Сервис пока не готов принять эту книгу» / «Файл здесь ни при чём: повторная загрузка поможет не раньше, чем мы это наладим»; «Не удалось обработать файл на нашей стороне» / «Файл здесь ни при чём: попробуйте добавить книгу позже»; неизвестная причина — «Книгу не удалось принять» / «Причина не названа. Попробуйте добавить книгу заново или позже» | продуктовая формулировка, которую видит пользователь | @@ -220,3 +234,30 @@ `backend/docs/SEAM_PACK_FINDINGS.md` — там файл назван как УРОК о снесённом механизме. Кода не трогаю; правка за зоной. + +### Дофикс реза доков — 02.09.2026 (агент-исполнитель, зона фронта тронута ИЗВНЕ) + +⚠ **Правил не фронт-сессия, а агент дофикса пакета `bd2077b..HEAD`, по прямой санкции владельца +01.09 на документацию всех зон.** Зона остаётся ЗАМОРОЖЕННОЙ (D39.147); нового реза здесь нет — +только возврат снятого и починка того, что рез сломал. + +**Тронуто (четыре файла, только доки):** +- `frontend-PROGRESS.md` — (а) возвращена реплика владельца **«всё на диске лежит, и главы, и банки + памяти»** с первой фразой разбора бэкенда (раздел «02.08 — данные: моки берут форму от движка»); + перечень форм не пересказан, дан адрес каноном; (б) висячая ссылка «(В-6)» в строке В-8 переведена + на живой носитель `К-13`; (в) пинг №20 п.1 получил носители снятой строки В-3. +- `FRONTEND_PLAN.md` — мёртвый указатель «держится в §1.1 промта как отменённый» (блок «ОТВЕРГНУТО» + §5.1): в промте таблицы поверхностей уже нет, теперь так и написано. +- `FRONTEND_SESSION_PROMPT.md` — заголовок §1.1 больше не обещает «брать эти значения» над + предупреждением «таблицы нет / все три отменены»; плюс адрес токенов вместо снятых «тон 243°, + насыщенность 0.76» и «тон 350°». +- `API_CONTRACT_DRAFT.md` — «Исходное тело — в истории git этого файла» заменено адресом канона: + git АДРЕСОМ не является. + +**НЕ тронуто:** `frontend/src/**` (код зоны), `frontend/docs/api-contract/**` (зеркало 0.2.3 — +ратифицированное отставание, D39.142 п.5), `BACKLOG.md`, `API_CONTRACT_INPUT.md`, +`STACK_DECISIONS.md`, `frontend/docs/archive/**`. + +**Отступление от наряда, объявляю:** наряд просил указать носителем В-3 раздел §5 доклада +`docs/research/28-contract-review.md`. Проверено командой — §5 это «Предложение состава батча 0.3.0» +и материала В-3/К-6 не несёт; настоящие носители — §6 и §8 того же доклада, они и вписаны.