76 lines
4.9 KiB
Markdown
76 lines
4.9 KiB
Markdown
## 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 | Прежние преобразования и обе сборки проходят проверки |
|