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

This commit is contained in:
heaven 2026-09-02 15:47:05 +03:00
parent aca06cdd1d
commit 47dee6d324
4 changed files with 57 additions and 8 deletions

View file

@ -26,4 +26,6 @@
§2.8 (слова банка) и §2.11 (канал потока) с тех пор пере-решены. Черновик 0.2.x отвечал бы на эти
вопросы устаревшим способом молча.
Исходное тело — в истории git этого файла.
Тело исполнено в каноне `docs/architecture/14-api-contract/README.md` §2.12.13 — те же номера
(греп `### 2.1. Язык — код``### 2.13. ПТ-34`). ⚠ Отсылка «в истории git этого файла» снята
02.09: git АДРЕСОМ не является — по нему нельзя ни грепнуть, ни проверить утверждение.

View file

@ -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`. Модель по этому замеру была построена и ОТКАЧЕНА

View file

@ -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:**

View file

@ -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 и прошла паки P0P11 плюс 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 того же доклада, они и вписаны.