chore: remove unused css tokens

This commit is contained in:
2026-09-26 15:58:57 +05:00
parent e2bd786d46
commit 8801c3dd91
4 changed files with 33 additions and 21 deletions
+4 -4
View File
@@ -51,16 +51,16 @@
только если темы нет в существующем документе; иначе обновляется источник
истины.
## Текущий baseline Q6f.4
## Текущий baseline Q7a
На момент фиксации Q6f.4:
На момент фиксации Q7a:
- production registry содержит 122 инструмента;
- `pnpm --dir web check` проходит без ошибок и предупреждений;
- `pnpm --dir web test` — 43 test files / 465 tests;
- `pnpm --dir web test:rules` — 4 test files / 74 tests;
- `pnpm --dir web lint:all` — 0 errors и 0 i18n warnings; остаются 4 unused
design tokens от token audit;
- `pnpm --dir web lint:all` — 0 errors, 0 i18n warnings и 0 unused design tokens
от token audit;
- coverage `src/lib` — statements 91.77%, branches 83.3%, functions 74.31%,
lines 92.53% при порогах 90 / 82 / 72 / 91;
- `pnpm verify` проходит;
+26 -8
View File
@@ -43,8 +43,8 @@
- `pnpm verify` объединяет typecheck, unit, rule-тесты, lint, форматирование,
docs и production build; deploy выполняет его перед сборкой.
- `i18n/dict-consistency` даёт 0 warnings на текущем baseline; отдельный debt —
4 unused design tokens от token audit.
- `i18n/dict-consistency` даёт 0 warnings на текущем baseline; после Q7 вычищены
4 неиспользуемых design token, token audit тоже чист.
- E2E-контракт использует semantic locators и общий source-aware schema
resolver; активных known-issue `test.fixme` нет.
- `ToolError` хранится как key/vars и переводится только при выводе; смена
@@ -133,8 +133,8 @@ pnpm --dir web test:e2e
option-группы из `ru.ts`.
- Исправлен tie-break placeholder parity: при равенстве голосов выбирается
`BASE_LOCALE`.
- `lint-all` запускает ESLint с `--max-warnings=0`; token audit пока оставляет 4
unused-token warnings отдельным debt.
- `lint-all` запускает ESLint с `--max-warnings=0`; unused-token сообщение
оставалось неблокирующим и закрыто в Q7.
- Plural-формы остаются отдельной задачей после Q2 и не смешиваются с этим
этапом.
@@ -390,9 +390,26 @@ file-result-инструментам.
**Оценка:** M. **Зависимости:** Q1, Q2, Q3.
- Очистить или использовать unused design tokens; после очистки решить, должен
ли unused audit быть fail-режимом.
- Добавить тесты для token audit и PostCSS HCT-плагина.
#### Q7a. Очистка неиспользуемых design tokens
**Статус:** выполнен. Token audit чист: `All app.css tokens are used somewhere`.
- Удалены `--color-text-accent-muted` (light и dark, иначе ломается parity),
`--space-text-s: 0`, `--size-content-max: 880px` и `--duration-m: 0.3s`.
- Проверено, что мёртвые токены — это пыль, а не признак хардкода: дублирующих
значений (`max-width`, `0.3s`, muted-цвет) в `src` нет. Потребители
`space-text-m/xl/2xl`, `size-content-max-wide` и `size-workspace-min`
используются, поэтому шкалы не тронуты.
- Шкалы остались неполными намеренно (`duration-s/l` без `m`, `space-text` без
`s`): мёртвый элемент шкалы хуже, чем «дырявая» шкала, а вернуть его можно
вместе с потребителем.
- Второй пункт («после очистки решить, должен ли unused audit быть
fail-режимом») остаётся открытым: сам audit пока только сообщает.
#### Q7b–Q7d. Оставшиеся направления
- Добавить тесты для token audit и PostCSS HCT-плагина: у них сейчас нет
покрытия, `test:rules` их не видит.
- Покрыть базовым JS recommended сам код ESLint-плагинов и lint-скриптов.
- Отдельно решить, должен ли обычный CSS проходить проверку undefined tokens и
hardcoded colors наравне со Svelte styles.
@@ -544,7 +561,8 @@ refactor, новые i18n-правила и исправление продук
- Нужны ли browser/mobile matrix и visual snapshots до coverage thresholds?
Решено: matrix — Q6f.3, coverage — Q6f.4, visual snapshots отложены с
обоснованием в Q6f.5.
- Какие unused design tokens можно удалить, а какие должны остаться?
- Какие unused design tokens можно удалить, а какие должны остаться? Решено в
Q7a: удалены все четыре, audit чист.
- Какие browser/e2e проверки должны быть обязательными для PR, а какие —
отдельным ночным прогоном?
+3 -4
View File
@@ -80,10 +80,9 @@ per-project лимит воркеров, а browser matrix упирается в
- `errors` завершают соответствующий инструмент ненулевым кодом.
- После Q2 ESLint запускается с `--max-warnings=0`: новые ESLint warnings
блокируют gate.
- Token audit пока оставляет unused-token warnings отдельным неблокирующим
сообщением.
- `lint:all` по-прежнему сообщает 4 unused-token warnings отдельным
предупреждением token audit; это следующий debt Q7.
- Token audit оставляет unused-token сообщение неблокирующим: после Q7 пыль
вычищена, но решение о fail-режиме остаётся открытым.
- `lint:all` сейчас чист: 0 errors, 0 i18n warnings, 0 unused tokens.
- `dict-consistency` использует base-locale fallback для registry metadata и
pattern-based policy для временно неиспользуемых `tools.*.params`; это не
молчаливый `allowPaths`-список.
-5
View File
@@ -112,7 +112,6 @@
--color-text: hct(from var(--brand-main) h 5.9 1.7);
--color-text-muted: hct(from var(--brand-main) h 13.4 19.2);
--color-text-accent: hct(from var(--brand-alt) h 5.9 1.7);
--color-text-accent-muted: hct(from var(--brand-alt) h 13.4 19.2);
--color-main: hct(from var(--brand-main) h 80 48);
--color-accent: hct(from var(--brand-alt) h 80 48);
@@ -141,7 +140,6 @@
--space-page-top: 48px;
--space-page-bottom: 72px;
--space-text-s: 0;
--space-text-m: 0.04em;
--space-text-l: 0.08em;
--space-text-xl: 0.12em;
@@ -164,7 +162,6 @@
--size-card-min-narrow: 200px;
--size-parts-grid-min: 120px;
--size-workspace-min: 260px;
--size-content-max: 880px;
--size-content-max-wide: 1680px;
--font-size-s: 12px;
@@ -178,7 +175,6 @@
--radius-m: 4px;
--duration-s: 0.15s;
--duration-m: 0.3s;
--duration-l: 0.8s;
}
@@ -197,7 +193,6 @@
--color-text: hct(from var(--brand-main) h 25 90);
--color-text-muted: hct(from var(--brand-main) h 22 70);
--color-text-accent: hct(from var(--brand-alt) h 25 90);
--color-text-accent-muted: hct(from var(--brand-alt) h 22 70);
--color-main: hct(from var(--brand-main) h 60 56);
--color-accent: hct(from var(--brand-alt) h 60 56);