feat: режим «Значение + статичный значок» (#588)

Пятый вариант «Отображение»: маркер показывает выбранное значение и при этом
никогда не меняет цвет — ни по состоянию, ни по тревоге, ни по недоступности,
ни под цвет RGB-света, ни по активности.

Четыре прежних режима задавали одним выбором две независимые вещи: что
нарисовано внутри маркера и красится ли он состоянием. Поэтому вместо
сравнения с одним токеном появились два производных предиката рядом с
`normalizeDeviceDisplay` — `displayWantsValue` и `displayIsNeutral`, — и их
спрашивают политика, слой пульсации, внешний бейдж, редактор и три ветки
живого слоя пылесоса.

Две ловушки, из-за которых режим не сводится к одной строке в словаре:

- быстрый путь «статичному маркеру источники не нужны» (`sourceDetails: false`)
  — это основной путь рендера плана, карточки пространства и PDF. Он оставлен
  только режиму без значения: иначе число пропало бы именно на плане и
  осталось в предпросмотре редактора;
- три ветки живого пылесоса сравнивают режим строкой и не читают политику,
  поэтому зелёная политика их не гарантирует. Свидетель держит две
  конфигурации карты: сопоставленная доказывает puck и след, несопоставленная
  — бейдж маршрута (при совпадающей калибровке маршрут `ready`, и бейджа не
  было бы ни в одном режиме). Бейдж проверяется при наполненном буфере
  позиций, иначе его отсутствие объяснялось бы первой веткой.

Потолок initial View перецентрирован 291_700 → 292_400 без изменения общего
бюджета: измеренный факт 291 346 Б оставлял под прежним центром 354 Б —
внутри шумовой полосы метрики.

Эталон: в `device-icon-state-table-{light,dark}` включённая RGB-лампа
переведена в новый режим. Кадры обязаны разойтись; приёмка — отдельным
коммитом класса D с полного линуксового артефакта Validate.

Issue: #588
User-Visible: yes
This commit is contained in:
Claude
2026-09-18 13:40:57 +03:00
parent 03aaad3e2b
commit 99e1765d22
75 changed files with 1324 additions and 765 deletions
+9 -1
View File
@@ -282,8 +282,16 @@ export const LOW_HEADROOM_WARNING_BYTES = 15_000;
* синхронный View до первого движущегося кадра; общий renderer бумажных фигур
* удержал объединённый факт на 291 058 Б — 642 Б сверху и 1 358 Б до нижней
* границы полосы.
*
* 2026-09-18, #588: потолок перецентрирован 291_700 → 292_400 без изменения
* общего бюджета. Пятый режим «Отображение» — это два производных предиката
* вместо одной проверки токена и пятая строка в двух словарях ярлыков; всё это
* синхронный View, потому что режим решает, что нарисовано внутри маркера при
* первом кадре. Факт на `dev` был 291 156 Б, измеренный факт 291 346 Б (+190 Б)
* оставлял под прежним центром 354 Б сверху — внутри шумовой полосы метрики.
* Новый центр даёт 1 054 Б сверху и 946 Б до нижней границы полосы.
*/
export const INITIAL_VIEW_GZIP_CEILING = 291_700;
export const INITIAL_VIEW_GZIP_CEILING = 292_400;
export const INITIAL_VIEW_CEILING_BAND = 2_000;
/**