Files

4.9 KiB

Context

JSON v1 хранится в shared/theme и импортируется при сборке. Zod-схема и большая часть token tests обслуживают неподдерживаемый сценарий произвольного входного документа. App/Storybook уже используют общий public API.

Goals / Non-Goals

Goals: прямое потребление локального JSON, сохранение адаптации и визуальных значений, небольшой тест собственных преобразований.

Non-Goals: замена runtime-схемы новой системой типов или генератором, изменение JSON/компонентов/провайдеров, удаление Zod из бизнес-форм, внешняя загрузка токенов, редизайн и новые зависимости.

Decisions

  • Удалить tokens.schema.ts и связанные negative/document-shape tests. theme.ts напрямую импортирует tokens.json, сохраняет public exports и Mantine rem/rgba/getThemeColor adaptation.
  • Использовать вывод типов JSON и существующие типы/helpers Mantine там, где JSON расширяет литералы; не создавать параллельное полное описание token contract. Type assertions при необходимости ограничены границей адаптера и не считаются validation.
  • Два кратких theme.test.ts сценария защищают собственные преобразования: scale-aware размеры/тени и unscaled breakpoints; semantic color references. Это оставшаяся полезная часть текущих тестов, без тестирования схемы.
  • Формат JSON и правила редактирования сохраняются в as-built docs. Корректность локальных изменений проверяется обычными repository gates, review и UI proof; полный автоматический отказ для произвольного invalid JSON больше не обещается.

UI/UX Applicability and Package

Applicability and scope: N/A: значения, стили, экраны, states, interactions и responsive behavior не меняются; удаляется только runtime-проверка конфигурации. Новый визуальный пакет не требуется.

Delivery Map

Area Status Architectural outcome or N/A reason
frontend affected Прямой JSON adapter, компактный theme test и ownership docs
backend N/A API/auth/storage и денежная логика не затронуты
specs affected Уточнён контракт доверенного локального источника
docs affected As-built описание прямого адаптера и границ проверки

Contract Gate Decision

Gate Status Reason
runtime-openapi N/A Ни одна сторона API contract не меняется

Risks / Trade-offs

Произвольное некорректное значение не обязано вызывать раннюю ошибку загрузки. Это согласованное упрощение для конфигурации репозитория, а не снятие проверки на границе внешних данных: такого входа здесь нет. Если появится внешняя загрузка, её trust boundary и validation должны проектироваться отдельно.

Migration Plan

Сохранить baseline преобразований; удалить схему и её тесты, подключить JSON напрямую; актуализировать документацию и проверить неизменность темы. Прямое разрешение владельца распространяется на planning и delivery без session records и повторных промежуточных approvals.

Rollback Contract

Field Decision
Status required
Trigger Адаптер меняет представление либо потребителю необходим прежний runtime-отказ
Actions Вернуть delivery diff и согласовать обратную spec delta; historical archives не менять
Data safety JSON v1 и пользовательские данные остаются прежними
Verification Прежние преобразования и обе сборки проходят проверки