# Правила развития ## Единственный источник истины Публичный компонент, его CSS, документация, registry entry и catalog example изменяются одним pull/merge request в этом репозитории. Приложения не должны исправлять общий компонент локальным копированием. Если срочный adapter неизбежен, он должен: - оборачивать публичный компонент; - не копировать его внутреннюю реализацию; - иметь ссылку на issue/design-system change; - быть внесён в `docs/ADOPTION.md` как временный долг. ## Добавление компонента Компонент принимается в систему, если: 1. он независим от доменной модели; 2. его API можно описать без упоминания конкретной таблицы/ноды/проекта; 3. он использует существующую тему и layer scale; 4. определены keyboard и disabled/pending states; 5. добавлен React или DOM adapter в зависимости от потребителей; 6. есть catalog example; 7. обновлён registry. ## Изменение геометрии Геометрия меняется централизованно. Нельзя исправлять высоту/радиус в одном приложении, если изменение относится к общему контролу. Допустимы density variants, если они имеют устойчивое назначение (`default`, `compact`) и тестируются как часть API. ## Типографика и операционные сообщения Продуктовый интерфейс использует только типографические токены. Browser-default размеры у `h1`–`h6`, `p`, `strong` и form controls не являются допустимым стилем. `--nodedc-font-size-title` разрешён только для заголовка страницы или окна; названия конфигураций, статусы, ошибки, подписи полей и сообщения внутри рабочей сцены используют `md`, `sm`, `xs` или готовую типографику канонического компонента. Ошибка сохранения или запроса не рендерится свободным текстовым блоком поверх рабочей сцены. Приложение использует семантический error-state канонического поля либо `ToastStack`, который владеет размером текста, цветом, положением и закрытием. Ошибка автосохранения modeless-инспектора не блокирует закрытие окна: draft остаётся в текущем просмотре, окно закрывается сразу, а сбой показывается неблокирующим error toast. ## Deprecated Перед удалением export: - он получает статус deprecated в registry; - документация указывает replacement; - минимум один minor release сохраняет совместимость; - после миграции известных consumers export удаляется в major release. ## Проверки Минимум для merge: - typecheck всех пакетов; - registry validation; - production build каталога; - ручная визуальная проверка dark/light и нескольких accent; - keyboard smoke test для Dropdown, Select, Window и Inspector. Следующий уровень зрелости — автоматические screenshot regression и interaction tests. Они добавляются до массовой миграции приложений. ## Владение У дизайн-системы должен быть явный code owner. Product team может предлагать компоненты, но общий API и theme contract проходят отдельное review, потому что изменение распространяется на все будущие приложения.