identity.missing-stable-identity
Missing stable identity
Identityerrorautomatic
Important transferable elements, including decorative and asset roots, must have a stable identity: a stable layer name or an identity-bearing fallback tag value.
How to fixUse an English kebab-case layer name when Figma metadata provides the type. Boolean `[decor]` and `[asset]` are visual-intent/policy flags and are not enough by themselves to identify a poorly named layer.
identity.duplicate-identity
Duplicate identity
Identityerrorautomatic
Two elements inside the same declared audit context—such as one page breakpoint/view or one selected-section variant—must not share one stable design identity.
How to fixPrefer semantic fixture keys that survive reordering, such as `product-card-sku-blue`; use positional indexes such as `product-card-1` only as a design-fixture fallback. Never treat a positional suffix as a runtime data key.
identity.same-identity-different-type
Same identity different type
Identityerrorautomatic
The same identity must not resolve to different logical element types across comparable declared responsive contexts, including explicitly selected variants of one section.
How to fixKeep the Figma node/component type stable across the declared contexts or model a separate entity. Do not invent page or breakpoint tags on a selected section.
identity.breakpoint-specific-id
Breakpoint specific id
Identityerrorautomatic
Optional DFC Bridge identity values must describe logical elements, not responsive breakpoints. A value such as `[control=button-reviews-box-375]` inside a `[bp=375]` root is invalid when the suffix matches the current breakpoint.
How to fixRemove the breakpoint suffix from the optional id. For ordinary buttons/controls, remove the optional id completely and use `Отзывы мобилка [action=modal:marketplaces-modal]`.
identity.repeated-item-no-index
Repeated item no index
Identityerrorheuristic
Authored repeated list or grid occurrences need distinct stable design-instance anchors. `[item=...]` only classifies their shared repeated role or type; it is not an instance identity.
How to fixGive each occurrence a meaningful stable layer or design-instance key, such as `product-card-oak-chair` and `product-card-wool-lamp`, while both may use `[item=product-card]`. Use numeric fixture suffixes only as a fallback, never as runtime-data identity.
identity.multiple-identity-tags
Multiple identity tags
Identitywarningautomatic
One layer must not declare multiple competing identity tags such as `[section=...]` and `[modal=...]`.
How to fixKeep the one tag that represents the layer's logical identity. Express behavior and visual intent with non-identity tags such as `[href=...]`, `[action=...]`, `[decor]`, or `[asset]`.
syntax.decor-asset-value-not-kebab-case
Decor asset value not kebab case
Roleserrorautomatic
Boolean `[decor]` and `[asset]` are valid without values. If a fallback value is present in `[decor=...]` or `[asset=...]`, it must be English kebab-case.
How to fixPrefer a stable layer identity plus boolean flags, for example `sneg [decor] [asset]`. Use value form only for poor/default layer names, for example `Frame 182 [decor=snow-bg]`.
syntax.identity-value-not-kebab-case
Identity value not kebab case
Identitywarningautomatic
Authored identity-like tag values, anchors, and views should use stable English kebab-case so validators and adapters can compare them deterministically.
How to fixReplace spaces, localized words, uppercase characters, and punctuation with a stable English kebab-case value such as `product-card-1`, `contact-modal`, `faq`, or `not-found`.
identity.decor-asset-flags-not-identities
Decor asset flags not identities
Identityerrorautomatic
`[decor]` and `[asset]` are visual-intent/policy flags and must not be counted as identity tags or as multiple identities when they appear together.
How to fixResolve identity from the stable layer name such as `sneg`; keep `[decor]` and `[asset]` as flags. Use `[decor=...]` or `[asset=...]` only as fallback for poor/default layer names.
syntax.duplicate-tag
Duplicate tag
Roleserrorautomatic
A layer must not repeat the same DFC Bridge tag key.
How to fixKeep one canonical value for the key. If two values describe different concerns, model them with the appropriate distinct tags or split the logical entities.
syntax.figma-metadata-tag-invalid
Figma metadata tag invalid
Roleserrorautomatic
Tags derived from native Figma metadata, including `[text]`, `[image]`, `[icon]`, `[container]`, `[layout]`, `[abs]`, and `[component]`, must not be authored in layer names.
How to fixRemove the metadata tag and express the property through the native Figma node type, component source, layout mode, positioning, fills, or export settings.
section.role-prefix-in-name
Role prefix in name
Identitywarningheuristic
Section layer names should not repeat the role with prefixes such as `Section /` or `Секция /`.
How to fixKeep the human label concise. Resolve the section from the `Page Sections` source component when possible, or use `[section=...]` only for frame sections, generic components, or explicit overrides.
section.identity-as-human-heading
Identity as human heading
Identitywarningheuristic
A section key should describe the reusable section component, not copy the page-specific heading.
How to fixUse the layer name for the contextual heading. Resolve the stable section key from `Page Sections` or use `[section=...]` only when an explicit fallback/override is needed.
section.component-source-unclassified
Component source unclassified
Identitywarningheuristic
A page-level section component instance should come from the `Page Sections` library page, or the layer should declare an explicit `[section=...]` fallback.
How to fixMove the source component to `Page Sections`, register it as a section component, or add `[section=...]` only when the layer is a frame section, a generic component, or an explicit override.
section.redundant-instance-section-tag
Redundant instance section tag
Identitywarningheuristic
Instances of components from `Page Sections` should not repeat `[section=...]` on the page layer.
How to fixRemove the redundant page-layer `[section=...]`; resolve section id from the source component or component set name.
component.ui-kit-used-as-section
Ui kit used as section
Roleswarningheuristic
Components from `UI Kit` are ordinary interface components and should not be inferred as page sections.
How to fixUse a component from `Page Sections` for a page-level section, or add `[section=...]` only for a deliberate frame section or override.
naming.default-layer-name
Default layer name
Roleswarningheuristic
Default names such as `Frame 53` or `Group 271` usually hide missing structure or intent.
How to fixRename the layer with a stable English kebab-case identity; add DFC Bridge intent tags only where needed.
layout.missing-role
Missing role
Roleserrorautomatic
Every layer must be classifiable from Figma metadata or DFC Bridge intent tags.
How to fixFix the Figma structure/metadata first; add DFC Bridge tags only for product or transfer intent such as `[section=...]`, `[href=...]`, `[link]`, `[action=...]`, `[control]`, `[field=...]`, `[decor]`, `[asset]`, `[modal=...]`, or `[state=...]`.
layout.page-root-missing-auto-layout
Page root missing auto layout
Geometryerrorautomatic
Every DFC Bridge page root must use native Figma Auto Layout, even when it has zero or one child. A page root is a responsive content container, not primitive or leaf geometry, and cannot mark itself `[asset]` to bypass the rule.
How to fixEnable vertical, horizontal, or grid Auto Layout on the page root and define its padding, gap, alignment, and wrapping in Figma. `[asset]`, `[decor]`, absolute positioning, and an exception tag on the page root do not suppress this blocking finding.
layout.page-root-cannot-be-asset
Page root cannot be asset
Geometryerrorautomatic
A DFC Bridge page root must not carry `[asset]`. A page is a live responsive content contract, never one opaque exported visual; root-level `[asset]` does not create an opaque boundary and descendants must still be validated.
How to fixRemove `[asset]` from the page root, keep native Auto Layout on the root, and apply `[asset]` only to genuine descendant visuals transferred as opaque units. Report the Auto Layout finding separately when the same page root also has layout mode NONE.
layout.section-missing-auto-layout
Section missing auto layout
Geometryerrorautomatic
Every editable non-page FRAME or COMPONENT carrying `[section]` that is encountered in a declared audit tree—either a page tree or a selected-section subtree—must use native Figma Auto Layout, even with zero or one child, unless that exact node is a legitimate opaque whole-visual `[asset]` with no live content flow. For selected-section entry, `[asset]` must be on that exact section root; a section below a different non-page-root opaque asset ancestor is a blocked scope precondition, not an inherited exemption. An invalid page-root `[asset]` never creates opacity. A placed INSTANCE is atomic and excluded from this rule; source-tool checks do not resolve or inspect its source component.
How to fixEnable Auto Layout on the encountered `[section]` FRAME or COMPONENT. Audit a placed instance's editable source component separately; do not flatten or detach the instance as a workaround. `[decor]` and exception tags do not waive the section layout contract; use `[asset]` only on a genuinely opaque whole-visual section root, and move a live section outside any ancestor asset boundary.
layout.container-missing-auto-layout
Container missing auto layout
Geometryerrorautomatic
An Auto Layout-capable content container outside an `[asset]` subtree with at least two visible meaningful direct children participating in content flow must use native Figma Auto Layout. Primitive and leaf geometry are exempt.
How to fixEnable native Auto Layout and express direction, padding, gap, alignment, wrapping, and sizing in Figma. Intended absolute visual children may remain absolute inside that parent, but `[decor]` and exception tags do not turn the parent into a manual-layout container or suppress this finding.
layout.group-outside-asset
Group outside asset
Geometryerrorautomatic
A Figma GROUP outside an `[asset]` subtree is invalid because it encodes geometry without a transferable layout contract. `[decor]` alone is not an exemption, and `[bridge-exception=manual-layout] [reason=...]` records a proposed deviation without suppressing this blocking finding.
How to fixReplace the GROUP with a frame or component using native Auto Layout. If the whole subtree is transferred as one opaque visual, mark its root `[asset]` and add `[decor]` only when it is ornamental. When conversion is genuinely impossible, record manual-layout and a specific reason on that GROUP, then process the still-reported finding through the separate deviation-acceptance gate.
layout.positioned-without-intent
Positioned without intent
Exceptionswarningautomatic
An absolutely positioned, visually detached, or overlapping element outside an `[asset]` subtree must have clear intent on that exact node. `[decor]` is valid only for the intended absolute visual layer and does not exempt a parent or freeform subtree from Auto Layout and GROUP rules.
How to fixKeep geometry in native Figma positioning. Mark an intended absolute ornament `[decor]`, a whole opaque visual `[asset]`, or use an appropriate modal/state target. For an intentional overlay that cannot be modeled otherwise, use `[bridge-exception=overlay] [reason=...]`; never put `[decor]` on a container merely to silence layout errors.
layout.one-child-wrapper-without-role
One child wrapper without role
Roleswarningheuristic
A one-child wrapper without a structural reason is likely unnecessary noise.
How to fixRemove the wrapper or make its Figma purpose clear through structure, naming, clipping, shared surface, target scope, or asset grouping.
layout.wrapper-chain-too-deep
Wrapper chain too deep
Roleswarningheuristic
Deep wrapper chains often make responsive mapping fragile.
How to fixFlatten structure or ensure each wrapper has a real Figma purpose.
layout.overlap-without-overlay-role
Overlap without overlay role
Geometrywarningheuristic
Overlapping bounds require clear overlay, absolute decor, whole-asset, target, or explicit exception intent on the overlapping node.
How to fixDeclare `[decor]` only on the intended absolute visual layer, use `[asset]` for an opaque visual subtree, add the appropriate target tag, or record `[bridge-exception=overlay] [reason=...]`. Positioning still comes from Figma metadata.
layout.z-index-ambiguous
Z index ambiguous
Geometrywarningheuristic
Layer order is visually important but not declared as overlay/stacking intent.
How to fixDeclare overlay scope or stacking behavior.
responsive.missing-breakpoint-root
Missing breakpoint root
Breakpointserrorautomatic
Responsive root frames must declare `[bp=...]`.
How to fixAdd explicit breakpoint tags to root frames.
responsive.view-missing-required-breakpoint
View missing required breakpoint
Breakpointserrorautomatic
Every declared page view must have a root for each required breakpoint in that page contract.
How to fixAdd the missing `[page=...] [view=...] [bp=...]` root, or remove the breakpoint/view from the declared page contract when it is not actually required.
responsive.identity-missing-in-required-breakpoint
Identity missing in required breakpoint
Breakpointserrorautomatic
An important identity exists in one required comparable responsive context but is missing from another explicitly declared context for the same page/view or selected section.
How to fixKeep the same identity in the same parent and change responsive visibility instead of deleting it, or model a separate state, variant, collection rule, or structural exception. An unrequested section variant is not a missing context.
responsive.tree-cardinality-changed
Tree cardinality changed
Breakpointserrorautomatic
Comparable responsive roots for the same page/view or explicitly selected section variants do not preserve the same logical element tree/cardinality.
How to fixKeep the same transferable identities across the declared responsive contexts, or model the difference as a collection rule, state, variant, or structural exception.
responsive.parent-changed-across-breakpoints
Parent changed across breakpoints
Breakpointserrorautomatic
A transferable identity changes parent identity across comparable declared responsive contexts, including explicitly selected variants of one section.
How to fixPreserve parent-child topology across the declared contexts, use shared wrappers, or declare an explicit structural exception.
responsive.order-changed-without-reason
Order changed without reason
Breakpointswarningheuristic
Sibling order changed across breakpoints without an order strategy.
How to fixPreserve semantic order or declare an order strategy.
responsive.visual-intent-drift
Visual intent drift
Breakpointserrorautomatic
The same identity has different visual-intent/policy tags across comparable declared responsive contexts, for example `sneg [decor] [asset]` in one selected variant and plain `sneg` in another.
How to fixKeep visual-intent flags stable across the declared contexts, or model the difference as an explicit state, variant, target-specific rule, or DFC Bridge exception.
content.text-changed-between-breakpoints
Text changed between breakpoints
Identityerrorheuristic
The same product text identity has different content across comparable declared responsive contexts, including explicitly selected variants of one section. Text inside decorative or root asset visuals is excluded from product-content drift checks.
How to fixKeep responsive product text identical. Model locale, experiment, or product variants outside responsive variants. For decorative or root asset visuals, preserve the root identity and visual-intent tags instead of comparing inner text as product content.
content.decorative-asset-text-excluded-from-product-drift
Decorative asset text excluded from product drift
Dependenciesinfoautomatic
Text inside `[decor]` layers or root `[asset]` visuals is not product content and should not be reported as product-content drift.
How to fixSkip inner text product-drift comparison for decorative/root asset visuals, but still validate root identity coverage and visual-intent stability across breakpoints.
content.manual-line-break-in-dynamic-text
Manual line break in dynamic text
Dependencieserrorheuristic
Dynamic text must not rely on forced line breaks or <br> to fit the layout.
How to fixLet text wrap by its container using hug/min-height, max-width, and explicit overflow/truncation rules. Use `[bridge-exception=manual-line-break] [reason=...]` only for semantic or approved brand-lockup breaks.
content.manual-line-break-exception-without-reason
Manual line break exception without reason
Exceptionserrorautomatic
A manual line break exception must explain why the break is semantic or brand-required.
How to fixPair `[bridge-exception=manual-line-break]` with `[reason=...]`, for example `[reason=brand-lockup]` or `[reason=postal-address-format]`.
content.strict-content-drift
Strict content drift
Dependencieserrorheuristic
Strict content such as price, legal copy, or CTA changed across breakpoints.
How to fixSynchronize strict content or document an approved variant.
content.hidden-layer-source-of-truth
Hidden layer source of truth
Exceptionserrorheuristic
Hidden keyed layers may contain alternative source-of-truth content.
How to fixMove alternatives into declared states/variants or archive them.
interaction.clickable-without-action
Clickable without action
Dependencieswarningheuristic
A visually clickable element has no known interaction marker: no `[href=...]`, `[action=...]`, `[link]`, or `[control]`.
How to fixAdd `[href=...]` for known navigation, `[action=...]` for known non-navigation behavior, `[link]` for an unknown draft destination, or `[control]` for an unknown draft action.
interaction.control-without-action
Control without action
Dependenciesinfoautomatic
Boolean `[control]` or advanced `[control=...]` without `[action=...]` is a valid draft marker for an unknown action, not a syntax error. Final handoff should resolve it.
How to fixIf the action is known, replace the draft marker with `[action=modal:...]`, `[action=state:...]`, `[action=submit:...]`, `[action=reset:...]`, or `[action=none]`. Keep `[control=...]` only as an optional advanced id when a stable machine id is needed.
interaction.link-without-href
Link without href
Dependenciesinfoautomatic
Boolean `[link]` or advanced `[link=...]` without `[href=...]` is a valid draft marker for an unknown destination, not a syntax error. Final handoff should resolve it.
How to fixIf the destination is known, use `[href=...]`. Keep `[link=...]` only as an optional advanced id when a stable machine id is needed. Do not use `[href=#]` as a placeholder.
interaction.link-has-second-destination
Link has second destination
Dependencieserrorautomatic
Links must not declare a second destination such as `[to=...]` or `[action=link:...]` alongside `[href=...]`.
How to fixKeep only `[href=...]` for navigation destination. `[href=...]` is already enough to classify the layer as a link.
interaction.href-placeholder-invalid
Href placeholder invalid
Dependencieserrorautomatic
`[href=#]` is not a valid unknown href placeholder. `#faq` is a real same-page anchor; `#` alone does not declare a destination.
How to fixUse `[link]` while the destination is unknown, or replace `#` with a real href such as `[href=#faq]` or `[href=/contacts]`.
interaction.optional-id-value-invalid
Optional id value invalid
Identityerrorautomatic
Advanced optional ids in `[link=...]` and `[control=...]` must be English kebab-case and must not include breakpoint names or width suffixes when a value is present.
How to fixPrefer no optional id for ordinary links/buttons: use `[href=...]`, `[link]`, `[action=...]`, or `[control]`. If an id is required, use a breakpoint-neutral kebab-case value.
interaction.href-invalid
Href invalid
Dependencieserrorautomatic
An `[href=...]` value must be a supported real destination: an internal path, same-page anchor, `http`/`https` URL, `mailto:` URL, or `tel:` URL.
How to fixCorrect the destination syntax. If the destination is not known yet, remove `[href=...]` and use the boolean draft marker `[link]`.
interaction.action-invalid
Action invalid
Dependencieserrorautomatic
An `[action=...]` value must use a supported action grammar: `modal:target-id`, `state:target-id`, `submit:form-id`, `reset:target-id`, or `none`.
How to fixCorrect the action value and use a breakpoint-neutral kebab-case target id. If the action is not known yet, remove `[action=...]` and use the boolean draft marker `[control]`.
interaction.control-action-duplicate
Control action duplicate
Dependencieserrorautomatic
One control must not declare more than one `[action=...]` value.
How to fixKeep one canonical action. Model alternative behavior as an explicit state, variant, or separate control.
interaction.modal-target-missing
Modal target missing
Dependencieserrorautomatic
A modal action must point to an existing modal target.
How to fixCreate `[modal=target-id]` target or change the action.
interaction.state-target-missing
State target missing
Dependencieserrorautomatic
A state action must point to an existing state target.
How to fixCreate `[state=target-id]` target or change the action.
interaction.form-target-missing
Form target missing
Dependencieserrorautomatic
A submit action must point to an existing form target in the same page contract.
How to fixCreate `[form=target-id]` or change `[action=submit:...]` to the correct form id.
interaction.reset-target-missing
Reset target missing
Dependencieswarningautomatic
A reset action should point to an existing state, form, or other declared reset target in the same page contract.
How to fixCreate the declared target or change `[action=reset:...]` to the identity that owns the resettable state.
interaction.modal-missing-close
Modal missing close
Dependencieserrorheuristic
Modal targets need close behavior.
How to fixAdd close button/action and define backdrop/escape behavior.
interaction.form-field-missing-label
Form field missing label
Dependencieswarningautomatic
Form fields need labels or accessible names.
How to fixAdd label text and field identity.
interaction.form-missing-submit-action
Form missing submit action
Dependencieserrorautomatic
Forms need a submit action or declared endpoint/handler.
How to fixAdd `[action=submit:...]` to the submit control or form.
state.required-state-missing
Required state missing
Dependencieswarningheuristic
Interactive or dynamic components often need empty, loading, error, disabled, hover, or focus states.
How to fixAdd required states or declare why they are not needed.
height.fixed-height-without-reason
Fixed height without reason
Exceptionswarningautomatic
Fixed height must be intentional.
How to fixUse hug/min-height or add `[height=fixed] [reason=...]`.
overflow.hidden-without-policy
Hidden without policy
Exceptionswarningautomatic
Clipped surfaces need explicit overflow policy.
How to fixAdd `[overflow=hidden]`, `[overflow=visible]`, `[overflow=scroll]`, or `[overflow=truncate]`.
overflow.text-clipping-risk
Text clipping risk
Geometryerrorheuristic
Text appears likely to clip due to fixed height or insufficient bounds.
How to fixUse hug height, min-height, or truncation policy.
asset.raster-text-without-reason
Raster text without reason
Exceptionserrorheuristic
Text-like content should not be exported as a raster asset without reason.
How to fixUse native text or add asset exception reason.
asset.image-missing-focal-point
Image missing focal point
Geometrywarningmanual
Responsive images need a crop/focal strategy.
How to fixDeclare focal point, fit mode, or crop policy.
asset.media-missing-fallback
Media missing fallback
Exceptionswarningmanual
Video/Lottie/complex media should define fallback behavior.
How to fixAdd poster, fallback asset, controls, and autoplay policy.
design-system.token-missing
Token missing
Geometrywarningheuristic
Color, typography, radius, or spacing values appear detached from tokens.
How to fixUse design tokens or declare an exception.
accessibility.touch-target-too-small
Touch target too small
Geometrywarningautomatic
Interactive target is smaller than recommended touch size.
How to fixIncrease hit area or declare target-specific exception.
accessibility.contrast-risk
Contrast risk
Exceptionswarningheuristic
Text/background contrast may be insufficient.
How to fixAdjust colors or document intentional exception.
accessibility.decorative-layer-exposed
Decorative layer exposed
Dependencieswarningautomatic
A `[decor]` layer should not be exposed as product content in the accessibility tree.
How to fixTreat the transferred decorative layer as `aria-hidden` or otherwise exclude it from accessibility/content semantics.
component.page-instance-declares-component-tag
Page instance declares component tag
Dependencieswarningheuristic
Page instances should not duplicate Figma component source with `[component=...]` tags.
How to fixRemove `[component=...]` from page instance names and rely on Figma/UI Kit metadata.
component.required-state-missing
Required state missing
Dependencieswarningheuristic
UI Kit component source is missing required states for its component family.
How to fixAdd states to the UI Kit component set instead of drawing them on a page.
routing.page-route-missing
Page route missing
Dependenciesinfoautomatic
A page root without `[route=...]` or `[route-pattern=...]` is a Draft TODO when the production route is not known yet, not a hard error.
How to fixDo not invent fake routes. Add `[route=/path]` or `[route-pattern=/path/:param]` only when the real production route is known.
routing.page-root-required
Page root required
Dependencieserrorautomatic
Page preflight requires at least one root frame with a stable `[page=...]` identity. A root may be a direct child of the Figma page or reached only through native Figma SECTION canvas organizers.
How to fixAdd `[page=page-id]` to every responsive root frame that belongs to the page. Keep each root directly on the Figma page or under native Figma SECTION organizers; do not wrap it in an ordinary FRAME/GROUP, then run preflight for that page identity.
routing.default-view-missing
Default view missing
Dependencieswarningautomatic
Every page identity should declare a `view=default` root for its normal product state.
How to fixAdd `[view=default]` to the normal page roots, or create the default view before modeling empty, loading, error, or permission-specific views.
routing.route-not-production-url
Route not production url
Dependencieserrorautomatic
When `[route=...]` or `[route-pattern=...]` is present, it must be a real production URL/path or route template, not a fake placeholder.
How to fixRemove the route while unknown, or replace it with the real production route such as `[route=/contacts]` or `[route-pattern=/catalog/:slug]`.
routing.duplicate-route
Duplicate route
Dependencieserrorautomatic
Two concrete pages must not declare the same route unless intentionally modeled as views of one page.
How to fixUse one `[page=...]` with multiple `[view=...]` states, or change the duplicate route.
routing.href-internal-route-missing
Href internal route missing
Dependencieserrorautomatic
Internal href points to a route that is not declared in the known route contract.
How to fixAdd a page with the matching real `[route=...]` when known, correct the href, or leave route resolution as a draft TODO if page routes are not known yet.
routing.href-anchor-missing
Href anchor missing
Dependencieserrorautomatic
Internal href points to an anchor that is not declared on the target page.
How to fixAdd `[anchor=...]` to the target section or correct the href fragment.
routing.page-view-route-drift
Page view route drift
Breakpointserrorautomatic
Views or breakpoints of one page identity must not use different known production routes.
How to fixKeep one known `[route=...]` across all `[view=...]` and `[bp=...]` variants of the page. If the route is unknown, omit it consistently until it is known.
variation.breakpoint-content-drift
Breakpoint content drift
Breakpointserrorheuristic
Product content changed across breakpoints without a non-responsive variation axis. Decorative and root asset text is not product content drift.
How to fixKeep breakpoint product content identical, or model the change with `[view=...]`, `[locale=...]`, `[experiment=...]`, or another explicit axis. Preserve decorative/asset root identities and tags across breakpoints.
variation.theme-content-drift
Theme content drift
Exceptionserrorheuristic
Theme variants must not change text content.
How to fixKeep content identical across themes; theme should change visual tokens only.
variation.axis-overload
Axis overload
Exceptionswarningheuristic
One variation axis appears to hide a different reason for variation.
How to fixUse the correct axis: breakpoint for layout, view for data state, locale for translation, experiment for A/B, role-view for permissions.
adapter.unsupported-feature
Unsupported feature
Exceptionswarningautomatic
The selected target adapter does not support a declared feature.
How to fixChange the design, add asset fallback, or choose another adapter.
data.source-contract-missing
Source contract missing
Dependencieserrormanual
A runtime data display must declare its source or owner, refresh behavior, and the policy for stale or unavailable data.
How to fixAdd the source dataset or service owner, refresh cadence, freshness threshold, and fallback behavior to the structured data contract.
data.schema-contract-incomplete
Schema contract incomplete
Identityerrormanual
A data display must declare stable field, dimension, measure, row, and relationship semantics instead of relying on sample values.
How to fixDocument stable keys, value types, nullability, identifiers, relationships, cardinality, and aggregation semantics in the structured data contract.
data.format-contract-missing
Format contract missing
Dependencieswarningmanual
Data values with locale, time, currency, unit, precision, rounding, or missing-value semantics need an explicit format contract.
How to fixDeclare locale and time-zone behavior, currency or unit, notation, precision, rounding, and distinct missing or suppressed value markers.
data.required-state-contract-missing
Required state contract missing
Exceptionserrorheuristic
A runtime data display must define all applicable loading, empty, error, partial, stale, offline, and unauthorized states and recovery behavior.
How to fixAdd every applicable data state, its message and retained content, recovery action, announcement behavior, and transition back to usable data.
data.accessible-equivalent-missing
Accessible equivalent missing
Dependencieserrormanual
A chart, map, canvas, or other complex visual data display must provide an accessible equivalent that exposes the same values and conclusion.
How to fixReference a semantic table, list, description, or downloadable dataset and preserve names, relationships, keyboard operation, and the principal finding.
responsive.transformation-mapping-incomplete
Transformation mapping incomplete
Breakpointserrormanual
A declared responsive structural transformation must map every source identity and meaning to its target composition without silent content or action loss.
How to fixRecord source identities, target composition, activation range, field and action mapping, semantic and focus order, state preservation, and accessible parity.
interaction.reaction-guard-ambiguous
Reaction guard ambiguous
Dependencieserrormanual
A conditional reaction must define mutually understandable guards, priority, and fallback so the same event cannot resolve ambiguously.
How to fixDeclare each guard from observable state or data, define precedence for overlapping conditions, and add an explicit default or impossible-case rule.
interaction.reaction-effect-incomplete
Reaction effect incomplete
Dependencieserrormanual
A reaction must declare every product effect, target, state mutation, navigation, announcement, persistence, and rollback consequence.
How to fixComplete the ordered effect list and name stable targets, resulting state, user feedback, persisted values, and rollback or compensating behavior.
accessibility.reaction-focus-effect-missing
Reaction focus effect missing
Dependencieserrormanual
A reaction that opens, closes, removes, inserts, navigates, or reports content must declare its focus and announcement effects.
How to fixSpecify initial and restored focus, focus order after mutation, live announcement behavior, and how keyboard users reach the resulting content.
interaction.async-outcome-missing
Async outcome missing
Exceptionserrormanual
An asynchronous reaction must define pending, success, empty, failure, retry, cancellation, timeout, duplicate input, and stale-response behavior where applicable.
How to fixModel the asynchronous states and transitions, disabled or optimistic controls, retry and cancellation rules, timeout handling, and stale-response suppression.
motion.driver-missing
Driver missing
Dependencieserrormanual
A motion sequence must identify the time, event, scroll, view, media, data, or system driver that deterministically controls it.
How to fixDeclare the driver type and source, start condition, progress mapping or trigger, repeat policy, and the state reached when the driver ends.
motion.range-or-timing-missing
Range or timing missing
Geometryerrormanual
A motion track must define its input range or timing, affected properties, values and units, sequencing, easing, and interruption behavior.
How to fixRecord start and end values, units, duration or driver range, delays, easing, iterations, dependencies, coordinate space, cancel, reverse, and re-entry behavior.
motion.reduced-motion-strategy-missing
Reduced motion strategy missing
Exceptionserrormanual
Every nontrivial motion sequence must define a reduced-motion strategy that preserves content, actions, state, focus, and task completion.
How to fixDeclare which movement is removed or replaced and specify the stable reduced-motion composition, timing, controls, completion state, and focus behavior.
motion.fallback-missing
Fallback missing
Exceptionserrormanual
Essential content and actions in motion or long-scroll experiences must remain available without the preferred script, API, sticky, or animation mechanism.
How to fixProvide a normal-flow or static fallback, preserve document and action order, and define initialization for unsupported APIs, deep links, resize, and script failure.
motion.essential-content-animation-dependent
Essential content animation dependent
Dependencieserrorheuristic
Essential content, actions, or required product state must not exist only during animation or depend on animation completion events.
How to fixRepresent meaningful still states in the document, keep required controls reachable, and complete product state independently of animation events or playback.
accessibility.page-profile-missing
Page profile missing
Dependencieserrormanual
Each page or major view must declare its accessibility profile, including language, landmarks, heading outline, reading order, focus flow, and announcement regions.
How to fixAdd the page accessibility profile and review landmarks, one meaningful heading hierarchy, DOM and reading order, skip paths, focus entry, and live regions.
accessibility.component-profile-missing
Component profile missing
Roleswarningmanual
A reusable interactive component must declare semantic role, accessible name and description sources, keyboard model, focus behavior, states, and errors.
How to fixAdd a component accessibility profile covering native semantics, name computation, keyboard commands, focus visibility and movement, disabled/loading states, and errors.
delivery.required-evidence-missing
Required evidence missing
Dependencieserrormanual
A delivery gate must include traceable evidence for every required contract, review, automated check, supported target, and acceptance decision.
How to fixAttach versioned artifacts, check outputs, review owners and dates, target results, unresolved risks, and the final acceptance record to the delivery manifest.
delivery.deviation-undeclared
Deviation undeclared
Exceptionserrormanual
Any accepted deviation from the DFC Bridge contract must be declared with scope, reason, risk, owner, expiry or review date, mitigation, and evidence.
How to fixCreate a delivery deviation record, link affected identities and targets, assign an accountable owner, set review or expiry, and document mitigation and approval.
capability.essential-experience-missing
Essential experience missing
Dependencieserrormanual
Each delivery target profile must identify the content, actions, data, media, and task outcomes that remain essential under constrained conditions.
How to fixList the essential DFC Bridge identities and outcomes for the target, including low bandwidth, offline, data-saver, and low-power conditions where applicable.
capability.unsupported-feature-fallback-missing
Unsupported feature fallback missing
Exceptionserrormanual
A required capability that is unsupported by a target must have an explicit fallback and accountable owner without removing essential experience.
How to fixRecord the unsupported capability, map a semantically equivalent fallback, assign an owner, and verify that essential content, actions, state, and accessibility remain available.
capability.asset-delivery-policy-missing
Asset delivery policy missing
Dependencieswarningmanual
Media and large visual assets must declare target-aware dimensions, formats, art direction, loading priority, poster or fallback, and quality policy where applicable.
How to fixAdd an asset delivery profile per relevant target and condition; reference the stable element and define dimensions, formats, quality, crop or art direction, priority, and fallback.
capability.data-scale-strategy-missing
Data scale strategy missing
Dependencieswarningmanual
A potentially large data surface must declare expected and maximum scale plus pagination, windowing, virtualization, aggregation, or degradation strategy.
How to fixRecord expected and maximum item counts, choose a deterministic scale strategy, preserve accessibility and selection semantics, and include representative scale evidence.
delivery.performance-budget-evidence-missing
Performance budget evidence missing
Dependencieserrormanual
A declared performance budget must name the metric, numeric limit, accountable owner, measurement context, and delivery evidence from the target implementation.
How to fixAdd each metric and limit with units, owner, device or runtime and percentile context, then link reproducible measurement evidence to the delivery lifecycle.
contract.open-question-untracked
Open question untracked
Exceptionserrormanual
Every unresolved unknown that can affect implementation must be tracked as a scoped open question with owner, blocking status, review timing, and fallback.
How to fixMove TODO, TBD, unknown, and unsupported decisions into `bridge.openQuestions`; reference the affected scope, assign an owner, set due or review timing, and define a fallback when blocking.
No rules match these filters.