identity.missing-stable-identity
Нет стабильного идентификатора
ИдентификаторыОшибкаАвтоматически
Почему это мешает передаче
У всех важных для передачи элементов, включая корневые декоративные слои и ресурсы, должен быть стабильный идентификатор: устойчивое имя слоя или резервное значение тега, задающее идентификатор.
Как исправитьЕсли тип элемента уже задан метаданными Figma, дайте слою английское имя в kebab-case. Булевы теги `[decor]` и `[asset]` описывают визуальное назначение или политику и сами по себе не идентифицируют плохо названный слой.
identity.breakpoint-specific-id
Идентификатор зависит от контрольной ширины
ИдентификаторыОшибкаАвтоматически
Почему это мешает передаче
Необязательное значение идентификатора DFC Bridge должно описывать логический элемент, а не контрольную ширину. Например, `[control=button-reviews-box-375]` внутри корня `[bp=375]` недопустим, если суффикс совпадает с текущей шириной.
Как исправитьУдалите из необязательного идентификатора суффикс ширины. Для обычной кнопки или элемента управления уберите такой идентификатор целиком и используйте `Отзывы мобилка [action=modal:marketplaces-modal]`.
identity.repeated-item-no-index
Повторяющиеся элементы не различаются
ИдентификаторыОшибкаЭвристически
Почему это мешает передаче
Подготовленным экземплярам повторяющихся элементов списка или сетки нужны разные стабильные опорные идентификаторы макета. `[item=...]` обозначает только их общую повторяемую роль или тип, а не идентичность экземпляра.
Как исправитьДайте каждому экземпляру осмысленное стабильное имя слоя или ключ макета, например `product-card-oak-chair` и `product-card-wool-lamp`; оба могут использовать `[item=product-card]`. Числовые суффиксы допустимы только как запасной вариант макета, но не как идентификаторы рабочих данных.
syntax.identity-value-not-kebab-case
Значение идентификатора записано не в kebab-case
ИдентификаторыПредупреждениеАвтоматически
Почему это мешает передаче
Заданные вручную значения тегов идентичности, якоря и виды должны быть стабильными английскими именами в kebab-case, чтобы валидаторы и адаптеры могли однозначно их сопоставлять.
Как исправитьЗамените пробелы, локализованные слова, прописные буквы и знаки пунктуации стабильным английским значением в kebab-case, например `product-card-1`, `contact-modal`, `faq` или `not-found`.
identity.decor-asset-flags-not-identities
Признаки decor и asset ошибочно считаются идентификаторами
ИдентификаторыОшибкаАвтоматически
Почему это мешает передаче
Теги `[decor]` и `[asset]` описывают визуальное назначение или политику. Их нельзя считать тегами идентичности или несколькими идентификаторами, когда они используются вместе.
Как исправитьОпределяйте идентичность по стабильному имени слоя, например `sneg`, а `[decor]` и `[asset]` сохраняйте как признаки. Применяйте `[decor=...]` или `[asset=...]` только как резервный вариант для плохого или стандартного имени.
layout.page-root-missing-auto-layout
У корня страницы нет Auto Layout
ГеометрияОшибкаАвтоматически
Почему это мешает передаче
Каждый корень страницы DFC Bridge обязан использовать нативный Auto Layout Figma даже при нуле или одном дочернем слое. Корень страницы является адаптивным контейнером содержимого, а не примитивом или конечной геометрией, и не может пометить себя `[asset]` ради обхода правила.
Как исправитьВключите на корне страницы вертикальный, горизонтальный или сеточный Auto Layout и задайте в Figma внутренние отступы, интервалы, выравнивание и перенос. `[asset]`, `[decor]`, абсолютное позиционирование и тег исключения на корне страницы не подавляют эту блокирующую ошибку.
layout.page-root-cannot-be-asset
Корень страницы объявлен ресурсом
ГеометрияОшибкаАвтоматически
Почему это мешает передаче
Корень страницы DFC Bridge не должен содержать `[asset]`. Страница является живым адаптивным контрактом содержимого, а не одним непрозрачным экспортируемым визуалом; корневой `[asset]` не создаёт непрозрачную границу, и потомки продолжают проверяться.
Как исправитьУдалите `[asset]` с корня страницы, сохраните на нём нативный Auto Layout и применяйте `[asset]` только к настоящим дочерним визуалам, переносимым непрозрачными единицами. Если на том же корне режим раскладки NONE, отдельно покажите ошибку Auto Layout.
layout.section-missing-auto-layout
У корня секции нет Auto Layout
ГеометрияОшибкаАвтоматически
Почему это мешает передаче
Каждый редактируемый узел FRAME или COMPONENT с `[section]`, кроме корня страницы, найденный в объявленном дереве проверки — дереве страницы или выбранном поддереве секции, — обязан использовать нативный Auto Layout Figma даже при нуле или одном дочернем слое, если точный узел не является настоящим непрозрачным цельным `[asset]` без живого контентного потока. Для проверки выбранной секции `[asset]` должен находиться на самом корне секции; секция под другим непрозрачным родительским ресурсом, не являющимся корнем страницы, блокируется как недопустимая область, а не наследует исключение. Недопустимый `[asset]` на корне страницы никогда не создаёт непрозрачность. Размещённый INSTANCE атомарен и исключён из правила; проверки источника не переходят к его исходному компоненту и не анализируют его.
Как исправитьВключите Auto Layout на найденном узле FRAME или COMPONENT с `[section]`. Редактируемый исходный компонент размещённого экземпляра проверяйте отдельно; не отсоединяйте и не уплощайте экземпляр ради обхода. `[decor]` и теги исключения не отменяют контракт раскладки; применяйте `[asset]` только на действительно непрозрачном корне цельной визуальной секции, а живую секцию вынесите за границу родительского ресурса.
layout.container-missing-auto-layout
У контейнера содержимого нет Auto Layout
ГеометрияОшибкаАвтоматически
Почему это мешает передаче
Контейнер содержимого с поддержкой Auto Layout вне поддерева `[asset]`, имеющий не менее двух видимых значимых прямых дочерних элементов в потоке, обязан использовать нативный Auto Layout Figma. Примитивы и конечная геометрия исключены.
Как исправитьВключите нативный Auto Layout и задайте в Figma направление, внутренние отступы, интервалы, выравнивание, перенос и размеры. Намеренные абсолютные визуальные дочерние слои могут оставаться абсолютными внутри такого родителя, но `[decor]` и теги исключения не превращают его в контейнер с ручной раскладкой и не подавляют ошибку.
layout.group-outside-asset
Группа находится вне экспортируемого ресурса
ГеометрияОшибкаАвтоматически
Почему это мешает передаче
Узел GROUP Figma вне поддерева `[asset]` недопустим, потому что кодирует геометрию без переносимого контракта раскладки. Один `[decor]` не является исключением, а `[bridge-exception=manual-layout] [reason=...]` лишь фиксирует предлагаемое отклонение и не подавляет эту блокирующую ошибку.
Как исправитьЗамените GROUP фреймом или компонентом с нативным Auto Layout. Если всё поддерево переносится как единый непрозрачный визуальный ресурс, пометьте его корень `[asset]`, а `[decor]` добавьте только для оформления. Если преобразование действительно невозможно, запишите manual-layout и конкретную причину на самой группе, затем передайте сохраняющуюся находку на отдельную процедуру принятия отклонения.
layout.positioned-without-intent
Вынесенный слой не имеет понятного назначения
ИсключенияПредупреждениеАвтоматически
Почему это мешает передаче
Абсолютно позиционированный, визуально вынесенный или перекрывающийся элемент вне поддерева `[asset]` должен иметь понятное назначение на самом этом узле. `[decor]` допустим только для намеренного абсолютного визуального слоя и не освобождает родителя или произвольное поддерево от правил Auto Layout и GROUP.
Как исправитьГеометрию задавайте нативным позиционированием Figma. Намеренный абсолютный декор помечайте `[decor]`, цельный непрозрачный визуал — `[asset]`, либо используйте подходящую цель модального окна или состояния. Для намеренного наложения, которое нельзя описать иначе, применяйте `[bridge-exception=overlay] [reason=...]`; не ставьте `[decor]` на контейнер ради подавления ошибок раскладки.
layout.one-child-wrapper-without-role
Одноэлементная обёртка не имеет причины
НазначениеПредупреждениеЭвристически
Почему это мешает передаче
Обёртка с единственным дочерним элементом без структурной причины, скорее всего, лишь усложняет дерево.
Как исправитьУдалите обёртку либо сделайте её назначение в Figma явным через структуру, имя, обрезку, общую поверхность, область цели или группировку ресурсов.
layout.overlap-without-overlay-role
Перекрытие слоёв не объяснено
ГеометрияПредупреждениеЭвристически
Почему это мешает передаче
Перекрывающиеся границы требуют явного назначения наложения, абсолютного декора, цельного ресурса, цели или исключения на самом перекрывающемся узле.
Как исправитьУкажите `[decor]` только на намеренном абсолютном визуальном слое, используйте `[asset]` для непрозрачного визуального поддерева, добавьте подходящий тег цели либо запишите `[bridge-exception=overlay] [reason=...]`. Позиционирование по-прежнему берётся из метаданных Figma.
responsive.identity-missing-in-required-breakpoint
Элемент отсутствует на обязательном адаптиве
АдаптивыОшибкаАвтоматически
Почему это мешает передаче
Важный идентификатор присутствует в одном обязательном сравниваемом адаптивном контексте, но отсутствует в другом явно объявленном контексте той же страницы/вида или выбранной секции.
Как исправитьСохраните тот же идентификатор у того же родителя и меняйте адаптивную видимость. Иначе опишите отличие отдельным состоянием, вариантом, правилом коллекции или структурным исключением. Незапрошенный вариант секции не считается отсутствующим контекстом.
responsive.visual-intent-drift
Назначение визуального слоя расходится между адаптивами
АдаптивыОшибкаАвтоматически
Почему это мешает передаче
У одного идентификатора различаются теги визуального назначения или политики в сравниваемых объявленных адаптивных контекстах: например, `sneg [decor] [asset]` в одном выбранном варианте и просто `sneg` в другом.
Как исправитьСохраняйте теги визуального назначения во всех объявленных контекстах либо оформите отличие как явное состояние, вариант, правило для конкретной цели или исключение DFC Bridge.
content.text-changed-between-breakpoints
Текст изменён между адаптивами
ИдентификаторыОшибкаЭвристически
Почему это мешает передаче
Продуктовый текст с одним идентификатором различается между сравниваемыми объявленными адаптивными контекстами, включая явно выбранные варианты одной секции. Текст внутри декоративных слоёв и корневых визуальных ресурсов в такую проверку не входит.
Как исправитьСохраняйте адаптивный продуктовый текст одинаковым. Локаль, эксперимент или продуктовый вариант моделируйте отдельно от адаптивных вариантов. Для декора и корневых визуальных ресурсов сохраняйте идентификатор и теги назначения корня, не сравнивая внутренний текст как продуктовый.
content.decorative-asset-text-excluded-from-product-drift
Текст декоративного ресурса исключён из сравнения контента
СвязиСправкаАвтоматически
Почему это мешает передаче
Текст внутри слоёв `[decor]` или корневых визуальных ресурсов `[asset]` не является продуктовым содержимым и не должен считаться расхождением контента.
Как исправитьНе сравнивайте внутренний текст декора и корневых визуальных ресурсов как продуктовый, но продолжайте проверять наличие идентификатора корня и стабильность его визуального назначения между ширинами.
content.manual-line-break-in-dynamic-text
Динамический текст содержит ручной перенос
СвязиОшибкаЭвристически
Почему это мешает передаче
Динамический текст не должен зависеть от принудительных переносов строки или `<br>` ради попадания в макет.
Как исправитьПозвольте тексту переноситься по ширине контейнера с помощью высоты по содержимому, минимальной высоты, максимальной ширины и явных правил переполнения или сокращения. `[bridge-exception=manual-line-break] [reason=...]` используйте только для смысловых переносов или утверждённой брендовой композиции.
content.manual-line-break-exception-without-reason
Исключение для переноса строки не имеет причины
ИсключенияОшибкаАвтоматически
Почему это мешает передаче
Исключение для ручного переноса строки должно объяснять, почему перенос имеет смысловое значение или требуется брендом.
Как исправитьДополните `[bridge-exception=manual-line-break]` тегом `[reason=...]`, например `[reason=brand-lockup]` или `[reason=postal-address-format]`.
content.strict-content-drift
Строгое продуктовое содержимое расходится
СвязиОшибкаЭвристически
Почему это мешает передаче
Строгое содержимое — например, цена, юридический текст или призыв к действию — различается между контрольными ширинами.
Как исправитьСинхронизируйте строгое содержимое или задокументируйте утверждённый вариант.
content.hidden-layer-source-of-truth
Скрытый слой используется как источник правды
ИсключенияОшибкаЭвристически
Почему это мешает передаче
Скрытые слои с идентификаторами могут содержать альтернативное содержимое, ошибочно воспринимаемое как источник правды.
Как исправитьПеренесите альтернативы в объявленные состояния или варианты либо отправьте их в архив.
interaction.clickable-without-action
Интерактивный элемент не имеет назначения
СвязиПредупреждениеЭвристически
Почему это мешает передаче
Визуально интерактивный элемент не имеет известного маркера взаимодействия: `[href=...]`, `[action=...]`, `[link]` или `[control]`.
Как исправитьДля известной навигации добавьте `[href=...]`, для известного действия без навигации — `[action=...]`, для пока неизвестного адреса — `[link]`, а для пока неизвестного действия — `[control]`.
state.required-state-missing
Обязательное состояние отсутствует
СвязиПредупреждениеЭвристически
Почему это мешает передаче
Интерактивным и динамическим компонентам часто нужны пустое состояние, загрузка, ошибка, отключённое состояние, наведение или фокус.
Как исправитьДобавьте необходимые состояния или объясните, почему они не нужны.
overflow.text-clipping-risk
Текст может быть обрезан
ГеометрияОшибкаЭвристически
Почему это мешает передаче
Текст может обрезаться из-за фиксированной высоты или недостаточного размера области.
Как исправитьИспользуйте высоту по содержимому, минимальную высоту или явное правило сокращения текста.
asset.raster-text-without-reason
Текст превращён в изображение без причины
ИсключенияОшибкаЭвристически
Почему это мешает передаче
Текстовое содержимое не следует без причины экспортировать как растровое изображение.
Как исправитьИспользуйте нативный текст или добавьте причину исключения для ресурса.
design-system.token-missing
Значение не связано с токеном дизайн-системы
ГеометрияПредупреждениеЭвристически
Почему это мешает передаче
Цвет, типографика, радиус или отступ, вероятно, не связаны с токенами дизайн-системы.
Как исправитьИспользуйте токены дизайн-системы или объявите исключение.
component.page-instance-declares-component-tag
Экземпляр вручную повторяет тег компонента
СвязиПредупреждениеЭвристически
Почему это мешает передаче
Экземпляры на странице не должны дублировать источник компонента Figma тегом `[component=...]`.
Как исправитьУдалите `[component=...]` из имени экземпляра на странице и полагайтесь на метаданные Figma или `UI Kit`.
routing.page-route-missing
У страницы пока нет рабочего маршрута
СвязиСправкаАвтоматически
Почему это мешает передаче
Отсутствие `[route=...]` или `[route-pattern=...]` у корня страницы — черновая задача, пока рабочий маршрут неизвестен, а не критическая ошибка.
Как исправитьНе придумывайте фиктивные маршруты. Добавляйте `[route=/path]` или `[route-pattern=/path/:param]` только после того, как станет известен настоящий рабочий маршрут.
routing.page-root-required
Не найден корневой фрейм страницы
СвязиОшибкаАвтоматически
Почему это мешает передаче
Для проверки страницы нужен хотя бы один корневой фрейм со стабильным идентификатором `[page=...]`. Корень может быть прямым потомком страницы Figma или находиться только под нативными организаторами SECTION Figma.
Как исправитьДобавьте `[page=page-id]` на каждый адаптивный корневой фрейм страницы. Оставьте корень прямо на странице Figma или под нативными организаторами SECTION Figma, не оборачивайте его обычным FRAME/GROUP, затем запустите проверку для этого идентификатора.
routing.page-view-route-drift
Маршрут страницы расходится между состояниями
АдаптивыОшибкаАвтоматически
Почему это мешает передаче
Виды и контрольные ширины одной страницы не должны использовать разные известные рабочие маршруты.
Как исправитьСохраняйте один известный `[route=...]` во всех вариантах `[view=...]` и `[bp=...]` страницы. Если маршрут неизвестен, последовательно не указывайте его до уточнения.
variation.breakpoint-content-drift
Содержимое меняется только из-за ширины
АдаптивыОшибкаЭвристически
Почему это мешает передаче
Продуктовое содержимое изменилось между контрольными ширинами без отдельной оси вариативности. Текст декора и корневых визуальных ресурсов не считается таким расхождением.
Как исправитьСохраняйте продуктовое содержимое одинаковым на всех ширинах либо опишите изменение через `[view=...]`, `[locale=...]`, `[experiment=...]` или другую явную ось. Идентификаторы и теги корней декора и ресурсов должны сохраняться между ширинами.
variation.theme-content-drift
Тема оформления меняет содержимое
ИсключенияОшибкаЭвристически
Почему это мешает передаче
Варианты темы оформления не должны изменять текстовое содержимое.
Как исправитьСохраняйте содержимое одинаковым во всех темах: тема должна менять только визуальные токены.
data.schema-contract-incomplete
Схема данных описана не полностью
ИдентификаторыОшибкаВручную
Почему это мешает передаче
Отображение данных должно задавать стабильные поля, измерения, показатели, строки и связи, а не полагаться на примерные значения.
Как исправитьОпишите в структурированном контракте стабильные ключи, типы, допустимость пустых значений, идентификаторы, связи, количество и агрегацию.
data.required-state-contract-missing
Не описано обязательное состояние данных
ИсключенияОшибкаЭвристически
Почему это мешает передаче
Для отображения рабочих данных должны быть описаны применимые состояния загрузки, пустоты, ошибки, частичных, устаревших, автономных и закрытых данных.
Как исправитьДобавьте каждое применимое состояние, сообщение, сохраняемое содержимое, восстановление, объявление и переход обратно к рабочим данным.
interaction.reaction-effect-incomplete
Эффект реакции описан не полностью
СвязиОшибкаВручную
Почему это мешает передаче
Реакция должна описывать каждый продуктовый эффект, цель, изменение состояния, переход, объявление, сохранение и возможный откат.
Как исправитьДополните упорядоченный список эффектов: стабильные цели, итоговое состояние, обратную связь, сохраняемые значения и откат либо компенсацию.
accessibility.reaction-focus-effect-missing
В реакции не описан фокус
СвязиОшибкаВручную
Почему это мешает передаче
Реакция, которая открывает, закрывает, удаляет, добавляет, переключает или сообщает содержимое, должна задавать изменение фокуса и объявление.
Как исправитьУкажите начальный и возвращаемый фокус, порядок после изменения, живое объявление и способ перехода клавиатурой к результату.
interaction.async-outcome-missing
Не описан исход асинхронной реакции
ИсключенияОшибкаВручную
Почему это мешает передаче
Для асинхронной реакции должны быть описаны применимые ожидание, успех, пустой результат, ошибка, повтор, отмена, тайм-аут и устаревший ответ.
Как исправитьЗадайте состояния и переходы, блокировку или оптимистичное управление, повтор и отмену, тайм-аут и отбрасывание устаревшего ответа.
motion.driver-missing
Не задан источник движения
СвязиОшибкаВручную
Почему это мешает передаче
Для последовательности движения нужно явно указать, что управляет её ходом: время, событие, прокрутка, видимость, медиапроигрывание, данные или системное состояние.
Как исправитьУкажите тип и источник, условие начала, соответствие прогресса или событие, повторение и состояние после завершения источника.
motion.range-or-timing-missing
Не задан диапазон или хронометраж движения
ГеометрияОшибкаВручную
Почему это мешает передаче
Дорожка движения должна задавать входной диапазон или время, изменяемые свойства, значения и единицы, последовательность, плавность и прерывание.
Как исправитьОпишите начальные и конечные значения, единицы, длительность или диапазон, задержки, плавность, повторы, связи, координаты, отмену и возврат.
motion.reduced-motion-strategy-missing
Не описан режим уменьшенного движения
ИсключенияОшибкаВручную
Почему это мешает передаче
Для каждой нетривиальной анимации нужен режим уменьшенного движения, сохраняющий содержимое, действия, состояние, фокус и выполнение задачи.
Как исправитьУкажите, какое движение убирается или заменяется, и опишите устойчивую композицию, время, управление, конечное состояние и фокус.
motion.essential-content-animation-dependent
Значимое содержимое зависит от анимации
СвязиОшибкаЭвристически
Почему это мешает передаче
Значимое содержимое, действие или обязательное продуктовое состояние не должно существовать только во время движения либо зависеть от события его завершения.
Как исправитьПокажите понятные неподвижные состояния в документе, оставьте управление доступным и завершайте продуктовое состояние независимо от воспроизведения.
accessibility.page-profile-missing
Не описан профиль доступности страницы
СвязиОшибкаВручную
Почему это мешает передаче
Для каждой страницы или крупного вида нужен профиль доступности с языком, областями, заголовками, порядком чтения, фокусом и объявлениями.
Как исправитьДобавьте профиль и проверьте области, иерархию заголовков, порядок документа и чтения, пропуск блоков, вход фокуса и живые области.
accessibility.component-profile-missing
Не описан профиль доступности компонента
НазначениеПредупреждениеВручную
Почему это мешает передаче
Для переиспользуемого интерактивного компонента должны быть заданы смысловая роль, доступное имя и описание, клавиатура, фокус, состояния и ошибки.
Как исправитьДобавьте профиль с нативной семантикой, вычислением имени, клавишами, видимостью и движением фокуса, блокировкой, загрузкой и ошибками.
delivery.deviation-undeclared
Отклонение от контракта не объявлено
ИсключенияОшибкаВручную
Почему это мешает передаче
Любое принятое отклонение от контракта DFC Bridge должно иметь область, причину, риск, владельца, срок или дату просмотра, меры и подтверждение.
Как исправитьСоздайте запись об отклонении, свяжите элементы и цели, назначьте ответственного, задайте пересмотр или срок и опишите меры с одобрением.
capability.essential-experience-missing
Не описан обязательный опыт
СвязиОшибкаВручную
Почему это мешает передаче
Для каждого профиля целевой среды укажите содержимое, действия, данные, материалы и результаты задачи, которые должны сохраняться даже при ограничениях.
Как исправитьПеречислите обязательные идентификаторы и результаты DFC Bridge для цели, включая слабую сеть, автономность, экономию данных и энергии, где применимо.
capability.asset-delivery-policy-missing
Не описана доставка ресурса
СвязиПредупреждениеВручную
Почему это мешает передаче
Для медиаматериалов и крупных визуальных ресурсов укажите применимые к целевой среде размеры, форматы, варианты композиции и кадрирования, приоритет загрузки, постер или запасной вариант и требования к качеству.
Как исправитьДобавьте профиль доставки для применимых целей и условий: свяжите стабильный элемент и укажите размеры, форматы, качество, кадрирование, приоритет и замену.
capability.data-scale-strategy-missing
Не описана работа с объёмом данных
СвязиПредупреждениеВручную
Почему это мешает передаче
Для потенциально большого набора данных нужно задать ожидаемый и максимальный объём, а также пагинацию, окно, виртуализацию, агрегацию или упрощение.
Как исправитьЗапишите ожидаемое и максимальное количество, выберите однозначную стратегию масштаба, сохраните доступность и выбор и приложите проверку на характерном объёме.
contract.open-question-untracked
Открытый вопрос не отслеживается
ИсключенияОшибкаВручную
Почему это мешает передаче
Каждая нерешённая неизвестность, влияющая на реализацию, должна быть открытым вопросом с областью, владельцем, признаком блокировки, сроком и запасным решением.
Как исправитьПеренесите TODO, TBD, неизвестное и неподдерживаемое в `bridge.openQuestions`: свяжите область, назначьте владельца и срок и задайте запасной вариант для блокирующего вопроса.