identity.missing-stable-identity缺少稳定标识
为什么会阻碍交付
重要的交付元素,包括装饰和资源根节点,都必须具有稳定标识:稳定的图层名称,或带有标识的后备标签值。
当 Figma 元数据已提供类型时,使用英文 kebab-case 图层名称。布尔标签 `[decor]` 和 `[asset]` 只表达视觉意图或交付策略,不能单独标识一个名称不明确的图层。
机器可读参考
在这个包含 107 条规则的目录里,查找问题、原因和修复方法。目录包含人工检查要求,并不表示插件会自动执行所有规则。
identity.missing-stable-identity重要的交付元素,包括装饰和资源根节点,都必须具有稳定标识:稳定的图层名称,或带有标识的后备标签值。
当 Figma 元数据已提供类型时,使用英文 kebab-case 图层名称。布尔标签 `[decor]` 和 `[asset]` 只表达视觉意图或交付策略,不能单独标识一个名称不明确的图层。
identity.duplicate-identity同一声明的检查上下文中,两个元素不能共用一个稳定设计标识。例如,一个页面的断点/视图组合,或一个选中区块变体,就是一个检查上下文。
优先使用重新排序后仍有效的语义样例键,例如 `product-card-sku-blue`;`product-card-1` 这样的顺序索引只能作为设计样例的后备命名。切勿将位置后缀用作运行时数据键。
identity.same-identity-different-type在可比较的已声明响应式上下文中,同一标识不能对应不同的逻辑元素类型。这也适用于明确选中的同一区块变体。
在声明的上下文中保持 Figma 节点/组件类型一致,或将其建模为独立实体。不要为选中的区块编造页面或断点标签。
identity.breakpoint-specific-id可选的 DFC Bridge 标识值必须描述逻辑元素,而不是响应断点。当后缀与当前断点匹配时,“[bp=375]”根中的“[control=button-reviews-box-375]”等值无效。
从可选 id 中删除断点后缀。对于普通按钮/控件,请完全删除可选 id 并使用 `Отзывы мобилка [action=modal:marketplaces-modal]`。
identity.repeated-item-no-index设计中重复列表或网格里的每个条目,都需要独立且稳定的设计实例标识。`[item=...]` 仅表示它们共同的角色或类型,不是实例标识。
为每个条目设置有意义的稳定图层名称或设计实例键,例如 `product-card-oak-chair` 和 `product-card-wool-lamp`;两者都可以使用 `[item=product-card]`。数字后缀只能作为设计样例的后备命名,不能作为运行时数据标识。
identity.multiple-identity-tags一层不得声明多个竞争身份标签,例如“[section=...]”和“[modal=...]”。
保留代表该层逻辑标识的一个标记。使用非身份标签(例如“[href=...]”、“[action=...]”、“[decor]”或“[asset]”)表达行为和视觉意图。
syntax.decor-asset-value-not-kebab-case布尔标签 `[decor]` 和 `[asset]` 不带值时也是有效形式。若后备形式 `[decor=...]` 或 `[asset=...]` 带有值,该值必须使用英文 kebab-case。
优先使用稳定图层标识与布尔标签,例如 `sneg [decor] [asset]`。只有图层名称不明确或仍是默认名称时,才使用带值形式,例如 `Frame 182 [decor=snow-bg]`。
syntax.identity-value-not-kebab-case用于标识的标签值、锚点和视图应采用稳定的英文 kebab-case,即小写单词用连字符连接,以便验证器和适配器进行确定性比较。
将空格、本地化文字、大写字母和其他标点改为稳定的英文 kebab-case 值,例如 `product-card-1`、`contact-modal`、`faq` 或 `not-found`。
identity.decor-asset-flags-not-identities`[decor]` 和 `[asset]` 只表达视觉意图或交付策略;它们不是身份标签,一起使用也不构成多个标识。
从 `sneg` 这样的稳定图层名称读取标识,保留 `[decor]` 和 `[asset]` 作为标记。只有名称不明确或仍为默认名称时,才使用 `[decor=...]` 或 `[asset=...]` 作为后备标识。
syntax.duplicate-tag层不得重复相同的 DFC Bridge 标签键。
为该键保留一个规范值。如果两个值描述不同的关注点,请使用适当的不同标签对它们进行建模或拆分逻辑实体。
syntax.figma-metadata-tag-invalid从原生 Figma 元数据派生的标签,包括“[text]”、“[image]”、“[icon]”、“[container]”、“[layout]”、“[abs]”和“[component]”,不得在图层名称中创作。
删除元数据标签并通过原生 Figma 节点类型、组件源、布局模式、定位、填充或导出设置来表达属性。
section.role-prefix-in-name区块图层名称不应通过 `Section /` 或 `Секция /` 等前缀重复其角色。
保持可读名称简洁。优先从 `Page Sections` 中的源组件确定区块;只有画框区块、通用组件或明确覆盖时,才使用 `[section=...]`。
section.identity-as-human-heading区块键应描述可复用的区块组件,而不是照搬某个页面专属的标题。
用图层名称表达当前上下文中的标题。从 `Page Sections` 读取稳定区块键;只有需要明确的后备标识或覆盖时,才使用 `[section=...]`。
section.component-source-unclassified页面级区块的组件实例应来自 `Page Sections` 库页面;否则,图层应显式声明 `[section=...]` 作为后备。
将源组件移入 `Page Sections`,或注册为区块组件。只有图层属于画框区块、通用组件或明确覆盖时,才添加 `[section=...]`。
section.redundant-instance-section-tag`Page Sections` 中的组件实例不应在页面图层上重复 `[section=...]`。
删除页面图层上多余的 `[section=...]`,从源组件或组件集名称读取区块标识。
component.ui-kit-used-as-section`UI Kit` 中的组件属于通用界面组件,不应自动推断为页面区块。
页面级区块使用 `Page Sections` 中的组件;只有明确采用画框区块或覆盖时,才添加 `[section=...]`。
naming.default-layer-name默认名称(例如“Frame 53”或“Group 271”)通常隐藏缺失的结构或意图。
使用稳定的英文 kebab-case 标识重命名图层;仅在需要时添加 DFC Bridge 意图标签。
layout.missing-role每个层都必须可以根据 Figma 元数据或 DFC Bridge 意图标签进行分类。
首先修复 Figma 结构/元数据;仅为产品或传输意图添加 DFC Bridge 标签,例如“[section=...]”、“[href=...]”、“[link]”、“[action=...]”、“[control]”、“[field=...]”、“[decor]”、“[asset]”、“[modal=...]”或“[state=...]”。
layout.page-root-missing-auto-layout每个 DFC Bridge 页面根都必须使用 Figma 原生 Auto Layout,即使没有子节点或只有一个子节点。页面根是响应式内容容器,不是基础图形或叶节点几何,不能通过标记 `[asset]` 绕过规则。
在页面根上启用垂直、水平或网格 Auto Layout,并在 Figma 中设置内边距、间距、对齐和换行。页面根上的 `[asset]`、`[decor]`、绝对定位和例外标签,都不会消除这项阻塞问题。
layout.page-root-cannot-be-assetDFC Bridge 页面根不能带有 `[asset]`。页面承载实时响应式内容契约,不是一个整体导出的视觉资源。页面根上的 `[asset]` 不会形成不透明边界,仍须检查后代节点。
删除页面根上的 `[asset]`,保留其原生 Auto Layout。只对确实整体交付、内部不再重建的后代视觉资源使用 `[asset]`。若同一页面根的布局模式为 NONE,仍应单独报告 Auto Layout 问题。
layout.section-missing-auto-layout在声明的检查树中,无论是页面树还是选中区块子树,带有 `[section]` 的可编辑非页面 FRAME 或 COMPONENT 都必须使用 Figma 原生 Auto Layout,即使没有子节点或只有一个子节点。唯一例外是该节点本身确实属于整体交付、没有实时内容流的 `[asset]`。检查选中区块时,`[asset]` 必须在该区块根本身;区块若位于另一个非页面根的资源祖先之下,属于范围前提不成立的阻塞问题,而不是继承豁免。页面根上的非法 `[asset]` 不会形成不透明边界。已放置的 INSTANCE 视为原子对象,不适用本规则;源工具检查不会继续解析其源组件。
在检查到的 `[section]` FRAME 或 COMPONENT 上启用 Auto Layout。单独检查已放置实例的可编辑源组件,不要通过拼合或分离实例来规避问题。`[decor]` 和例外标签不能免除区块布局要求。只有确实整体交付的视觉区块根才使用 `[asset]`;具有实时内容流的区块应移到祖先资源边界之外。
layout.container-missing-auto-layout在 `[asset]` 子树之外,支持 Auto Layout 的内容容器只要有至少两个可见、有意义且参与内容流的直接子节点,就必须使用 Figma 原生 Auto Layout。基础图形和叶节点几何不适用本规则。
启用原生 Auto Layout,并在 Figma 中设置方向、内边距、间距、对齐、换行和尺寸行为。有明确意图的视觉子节点可以在该父级内保持绝对定位,但 `[decor]` 和例外标签不能让父级免于 Auto Layout 要求,也不会消除这项问题。
layout.group-outside-asset位于 `[asset]` 子树之外的 Figma GROUP 无效:它只保存几何关系,没有可交付的布局契约。单独的 `[decor]` 不构成豁免;`[bridge-exception=manual-layout] [reason=...]` 只记录提出的偏差,不会消除该阻塞问题。
将 GROUP 替换为使用原生 Auto Layout 的画框或组件。只有整个子树确实作为一个不透明视觉资源交付时,才在根上标记 `[asset]`;只有装饰性资源才加 `[decor]`。如果确实无法转换,应在该 GROUP 上记录 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.wrapper-chain-too-deep多层容器嵌套往往会让不同宽度之间的响应式映射变得脆弱。
减少无意义的嵌套,或确认每一层容器在 Figma 中都有实际作用。
layout.overlap-without-overlay-role发生重叠的节点应有明确意图:叠加层、绝对定位装饰、整体资源、交互目标或显式例外。
只在具有明确意图的绝对定位视觉层上使用 `[decor]`;整体视觉子树使用 `[asset]`;交互目标添加对应标签;或记录 `[bridge-exception=overlay] [reason=...]`。定位信息仍来自 Figma 元数据。
layout.z-index-ambiguous图层顺序影响视觉效果,但尚未说明叠加或堆叠意图。
声明叠加范围或图层堆叠行为。
responsive.missing-breakpoint-root响应式页面根画框必须声明 `[bp=...]`。
在根画框上添加明确的断点标签。
responsive.view-missing-required-breakpoint每个声明的页面视图,都必须具备该页面契约要求的各断点根。
添加缺少的“[page=...] [view=...] [bp=...]”根,或者在实际不需要时从声明的页面契约中删除断点/视图。
responsive.identity-missing-in-required-breakpoint某个重要标识存在于一个必需且可比较的响应式上下文中,却在同一页面/视图或选中区块的另一个明确声明的上下文中缺失。
保留同一父级中的相同标识,通过响应式可见性控制显示,不要直接删除;或将差异建模为独立状态、变体、集合规则或结构例外。未请求的区块变体不算缺失上下文。
responsive.tree-cardinality-changed同一页面/视图或明确选中的区块变体,在可比较的响应式根之间没有保持相同的逻辑树或元素数量。
在声明的响应式上下文中保留相同的交付标识,或将差异建模为集合规则、状态、变体或结构例外。
responsive.parent-changed-across-breakpoints同一交付标识在可比较的已声明响应式上下文中,所属父级标识发生变化。这也适用于明确选中的同一区块变体。
在声明的上下文中保留父子关系,使用共用容器,或声明明确的结构例外。
responsive.order-changed-without-reason同级元素的顺序在不同断点间发生变化,却没有声明顺序策略。
保留语义顺序,或声明顺序策略。
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价格、法律文案或 CTA 等必须保持一致的内容,在不同断点间发生了变化。
同步这些内容,或记录已批准的变体。
interaction.clickable-without-action视觉上可点击的元素没有已知的交互标记:没有“[href=...]”、“[action=...]”、“[link]”或“[control]”。
为已知导航添加“[href=...]”,为已知非导航行为添加“[action=...]”,为未知草稿目的地添加“[link]”,为未知草稿操作添加“[control]”。
interaction.control-without-action不带 `[action=...]` 的布尔 `[control]` 或进阶形式 `[control=...]`,是动作尚未知时的有效草稿标记,不是语法错误。最终交付前应确定动作。
如果操作已知,请将草稿标记替换为“[action=modal:...]”、“[action=state:...]”、“[action=submit:...]”、“[action=reset:...]”或“[action=none]”。仅当需要稳定的机器 ID 时,才将“[control=...]”保留为可选的高级 ID。
interaction.link-without-href不带 `[href=...]` 的布尔 `[link]` 或进阶形式 `[link=...]`,是地址尚未知时的有效草稿标记,不是语法错误。最终交付前应确定目的地。
如果目的地已知,请使用“[href=...]”。仅当需要稳定的机器 ID 时,才将“[link=...]”保留为可选的高级 ID。不要使用“[href=#]”作为占位符。
interaction.link-has-second-destination链接不得在“[href=...]”旁边声明第二个目的地,例如“[to=...]”或“[action=link:...]”。
仅保留“[href=...]”作为导航目的地。`[href=...]` 已经足以将该层分类为链接。
interaction.href-placeholder-invalid`[href=#]` 不是有效的未知 href 占位符。`#faq` 是一个真正的同页锚点;单独的“#”并不声明目的地。
当目的地未知时使用“[link]”,或将“#”替换为真正的 href,例如“[href=#faq]”或“[href=/contacts]”。
interaction.optional-id-value-invalid进阶可选标识 `[link=...]` 和 `[control=...]` 带值时,必须使用英文 kebab-case,且不能包含断点名称或宽度后缀。
普通链接或按钮优先不加可选标识,使用 `[href=...]`、`[link]`、`[action=...]` 或 `[control]` 即可。确实需要标识时,使用与断点无关的 kebab-case 值。
interaction.href-invalid`[href=...]` 值必须是受支持的真实目的地:内部路径、同一页面锚点、`http`/`https` URL、`mailto:` URL 或 `tel:` URL。
更正目标语法。如果目的地未知,请删除“[href=...]”并使用布尔草稿标记“[link]”。
interaction.action-invalid`[action=...]` 值必须使用受支持的操作语法:`modal:target-id`、`state:target-id`、`submit:form-id`、`reset:target-id` 或 `none`。
修正动作值,并使用与断点无关的 kebab-case 目标标识。动作尚未知时,删除 `[action=...]`,使用布尔草稿标记 `[control]`。
interaction.control-action-duplicate一个控件不得声明多个“[action=...]”值。
保留一个确定的动作。将其他行为建模为明确的状态、变体或独立控件。
interaction.modal-target-missing模态操作必须指向现有的模态目标。
创建“[modal=target-id]”目标或更改操作。
interaction.state-target-missing状态动作必须指向已有的状态目标。
创建 `[state=target-id]` 目标,或修改动作。
interaction.form-target-missing提交操作必须指向同一页面合约中的现有表单目标。
创建“[form=target-id]”或将“[action=submit:...]”更改为正确的表单 ID。
interaction.reset-target-missing重置操作应指向同一页面合约中现有的状态、表单或其他声明的重置目标。
创建声明的目标或将“[action=reset:...]”更改为拥有可重置状态的标识。
interaction.modal-missing-close模态窗口目标必须定义关闭行为。
添加关闭按钮或动作,并定义点击背景遮罩和按 Escape 键时的行为。
interaction.form-field-missing-label表单字段需要可见标签或无障碍名称。
添加标签文本和字段标识。
interaction.form-missing-submit-action表单需要提交操作或声明的端点/处理程序。
将 `[action=submit:...]` 添加到提交控件或表单。
state.required-state-missing交互式或动态组件通常需要空、加载、错误、禁用、悬停或焦点状态。
添加必需的状态或声明为什么不需要它们。
height.fixed-height-without-reason固定高度必须体现明确的设计意图。
使用内容驱动高度或最小高度,或添加 `[height=fixed] [reason=...]`。
overflow.text-clipping-risk由于固定高度或边界不足,文本可能会被剪裁。
使用内容驱动高度、最小高度,或声明截断策略。
asset.raster-text-without-reason类似文本的内容不应无故导出为栅格资源。
保留原生文本,或说明作为资源导出的例外原因。
asset.image-missing-focal-point响应式图像需要裁剪/焦点策略。
声明焦点、拟合模式或裁剪策略。
asset.media-missing-fallback视频、Lottie 或其他复杂媒体应定义备用行为。
补充封面、备用资源、播放控件和自动播放策略。
design-system.token-missing颜色、字体排版、圆角或间距值似乎没有关联设计令牌。
使用设计令牌(design tokens),或声明例外。
accessibility.touch-target-too-small交互目标小于建议的触摸尺寸。
扩大可点击区域,或声明针对该目标的例外。
accessibility.contrast-risk文本/背景对比度可能不够。
调整颜色,或记录有明确理由的例外。
accessibility.decorative-layer-exposed`[decor]` 图层不应在无障碍树中作为产品内容暴露。
在实现中将装饰层设为 `aria-hidden`,或用其他方式将其排除在无障碍和内容语义之外。
component.page-instance-declares-component-tag页面实例不应使用“[component=...]”标签重复 Figma 组件源。
从页面实例名称中删除“[component=...]”并依赖 Figma/UI Kit 元数据。
component.required-state-missingUI Kit 组件源缺少其组件系列所需的状态。
将状态添加到 UI Kit 组件集中,而不是在页面上绘制它们。
routing.page-route-missing产品路径尚未知时,没有 `[route=...]` 或 `[route-pattern=...]` 的页面根属于 Draft TODO(草稿待办),不是阻塞错误。
不要编造路径。只有真实产品路径确定后,才添加 `[route=/path]` 或 `[route-pattern=/path/:param]`。
routing.page-root-required页面预检至少需要一个带有稳定 `[page=...]` 标识的根画框。它可以直接位于 Figma 页面下,也可以只经过原生 Figma SECTION 画布整理容器。
给属于该页面的每个响应式根画框添加 `[page=page-id]`。根应直接位于 Figma 页面下,或位于原生 SECTION 容器下,不能包在普通 FRAME/GROUP 中。随后对该页面标识运行预检。
routing.default-view-missing每个页面标识都应有一个 `view=default` 根,表示正常产品状态。
给正常页面根添加 `[view=default]`;先准备默认视图,再描述空、加载、错误或权限专属视图。
routing.route-not-production-url一旦声明 `[route=...]` 或 `[route-pattern=...]`,其值就必须是真实产品 URL、路径或路由模板,不能是虚构占位符。
路径未知时暂时删除路由标签;已知后替换为真实路径,例如 `[route=/contacts]` 或 `[route-pattern=/catalog/:slug]`。
routing.duplicate-route两个具体页面不得声明相同的路由,除非有意建模为一个页面的视图。
将一个“[page=...]”与多个“[view=...]”状态结合使用,或更改重复的路由。
routing.href-internal-route-missing内部 href 指向的路由没有在已知路由契约中声明。
路径已知时,为页面添加匹配的真实 `[route=...]`,或修正 href。如果页面路由尚未知,将路由解析保留为草稿待办。
routing.href-anchor-missing内部 href 指向的锚点没有在目标页面上声明。
给目标区块添加 `[anchor=...]`,或修正 href 的锚点片段。
routing.page-view-route-drift同一页面标识的不同视图或断点,不能使用不同的已知产品路径。
页面的所有 `[view=...]` 和 `[bp=...]` 变体应使用同一个已知 `[route=...]`。路径尚未知时,应在各变体中一致地省略,直到确定为止。
variation.breakpoint-content-drift产品内容在不同断点间变化,却没有通过其他非响应式变化轴说明原因。装饰或整体资源内部的文本不作为产品内容偏移。
不同断点应保持相同的产品内容,或通过 `[view=...]`、`[locale=...]`、`[experiment=...]` 等明确变化轴表达差异。装饰和资源根的标识与标签仍须跨断点保留。
variation.theme-content-drift主题变体不得更改文本内容。
不同主题应保持相同内容;主题只改变视觉设计令牌。
variation.axis-overload一个变化轴似乎还隐藏了其他性质的变化原因。
使用对应的变化轴:布局用断点,数据状态用 view,翻译用 locale,A/B 测试用 experiment,权限用 role-view。
adapter.unsupported-feature选定的目标适配器不支持声明的功能。
调整设计,增加资源形式的备用方案,或选择另一个适配器。
data.source-contract-missing运行时数据显示必须声明其来源或所有者、刷新行为以及陈旧或不可用数据的策略。
在结构化数据契约中补充来源数据集或服务负责人、刷新频率、新鲜度阈值和备用行为。
data.schema-contract-incomplete数据显示必须声明稳定的字段、维度、度量、行和关系语义,而不是依赖于样本值。
记录结构化数据契约中的稳定键、值类型、可空性、标识符、关系、基数和聚合语义。
data.format-contract-missing具有区域设置、时间、货币、单位、精度、舍入或缺失值语义的数据值需要显式格式约定。
声明地区与时区规则、货币或单位、记法、精度和舍入方式,并明确区分缺失值与被隐藏值的标记。
data.required-state-contract-missing运行时数据显示必须定义所有适用的加载、空、错误、部分、过期、离线和未授权状态,以及相应的恢复行为。
补充每个适用状态的提示、保留内容、恢复动作、辅助技术播报行为,以及如何回到可用数据状态。
data.accessible-equivalent-missing图表、地图、画布或其他复杂的视觉数据展示,必须提供无障碍等价形式,呈现相同的数据值和结论。
关联语义表格、列表、描述或可下载数据集,并保留名称、关系、键盘操作和主要结论。
responsive.transformation-mapping-incomplete声明的响应式结构转换必须将每个源标识及其含义映射到目标结构,不能默默丢失内容或动作。
记录源标识、目标结构、生效范围、字段和动作映射、语义与焦点顺序、状态保留,以及无障碍等价性。
interaction.reaction-guard-ambiguous条件反应必须明确各守卫条件、优先级和默认处理,使同一事件不会产生含糊的结果。
根据可观察的状态或数据声明每个守卫条件,说明条件重叠时的优先级,并明确默认情况或不可能情况的处理规则。
interaction.reaction-effect-incomplete反应必须说明所有产品效果、目标、状态变更、导航、辅助技术播报、持久化和回滚结果。
补全有顺序的效果列表,并声明稳定目标、结果状态、用户反馈、持久化值,以及回滚或补偿行为。
accessibility.reaction-focus-effect-missing涉及打开、关闭、移除、插入、导航或报告内容的反应,必须声明焦点变化和辅助技术播报效果。
说明初始焦点、恢复焦点、变更后的焦点顺序、动态播报方式,以及键盘用户如何到达结果内容。
interaction.async-outcome-missing异步反应必须按适用情况定义等待、成功、空结果、失败、重试、取消、超时、重复输入和过期响应的行为。
描述异步状态与转换、控件禁用或乐观更新、重试与取消规则、超时处理,以及如何忽略过期响应。
motion.driver-missing动效序列必须明确由什么确定性地驱动:时间、事件、滚动、元素可见性(view)、媒体、数据或系统信号。
声明驱动类型与来源、启动条件、进度映射或触发器、重复策略,以及驱动结束时达到的状态。
motion.range-or-timing-missing动效轨道必须定义输入范围或时序、受影响属性、值与单位、执行顺序、缓动和中断行为。
记录起止值、单位、时长或驱动范围、延迟、缓动、循环次数、依赖关系、坐标空间,以及取消、反向和重新进入时的行为。
motion.reduced-motion-strategy-missing每个非简单动效序列都必须定义减少动效策略,并保留内容、动作、状态、焦点和完成任务的能力。
说明哪些运动被移除或替换,并定义减少动效后的稳定构图、时序、控件、完成状态和焦点行为。
motion.fallback-missing即使首选脚本、API、粘性定位或动画机制不可用,动效或长滚动体验中的必要内容和动作仍必须可用。
提供正常文档流或静态备用方案,保留文档和动作顺序,并定义 API 不支持、深链接进入、尺寸变化和脚本失败时的初始化行为。
motion.essential-content-animation-dependent必要内容、动作或必需的产品状态,不能只在动画期间存在,也不能依赖动画完成事件。
在文档中保留有意义的静态状态,确保必需控件可到达,并让产品状态的完成不依赖动画事件或播放。
accessibility.page-profile-missing每个页面或主要视图都必须声明无障碍配置,包括语言、地标区域、标题层级、阅读顺序、焦点流程和播报区域。
补充页面无障碍配置,检查地标、有意义且统一的标题层级、DOM 与阅读顺序、跳过重复内容的路径、焦点入口和动态播报区域。
accessibility.component-profile-missing可复用交互组件必须声明语义角色、无障碍名称与描述的来源、键盘操作模型、焦点行为、状态和错误。
补充组件无障碍配置,覆盖原生语义、名称计算、键盘命令、焦点可见性与移动、禁用/加载状态和错误。
delivery.required-evidence-missing交付验收阶段必须为每项必需契约、评审、自动检查、支持的目标平台和验收决定提供可追溯证据。
在交付清单中关联带版本的产物、检查输出、评审负责人和日期、各目标平台结果、未解决风险以及最终验收记录。
delivery.deviation-undeclared已接受的 DFC Bridge 契约偏差,都必须声明范围、原因、风险、负责人、到期或复查日期、缓解措施和证据。
创建交付偏差记录,关联受影响的标识与目标,指定负责人,设置复查或到期时间,并记录缓解措施和审批结果。
capability.essential-experience-missing每个交付目标配置都必须明确在受限条件下仍不可缺少的内容、动作、数据、媒体和任务结果。
列出目标平台必须保留的 DFC Bridge 标识和结果,并按适用情况覆盖低带宽、离线、省流量和低功耗条件。
capability.unsupported-feature-fallback-missing目标平台不支持的必需能力,必须有明确的备用方案和负责人,且不能因此移除核心体验。
记录不支持的能力,映射语义等价的备用方案,指定负责人,并验证必要内容、动作、状态和无障碍能力仍然可用。
capability.asset-delivery-policy-missing媒体和大型视觉资源必须按目标平台及适用情况,声明尺寸、格式、构图、加载优先级、封面或备用方案,以及质量策略。
为各相关目标平台和条件添加资源交付配置,引用稳定元素,并定义尺寸、格式、质量、裁剪或构图、优先级和备用方案。
capability.data-scale-strategy-missing数据量可能较大的展示区域,必须声明预期和最大规模,以及分页、窗口化、虚拟化、聚合或降级策略。
记录预期和最大条目数,选择确定的数据规模处理策略,保留无障碍和选择语义,并提供代表性数据规模下的验证证据。
delivery.performance-budget-evidence-missing声明的性能预算必须包含指标、数值上限、负责人、测量上下文,以及目标实现的交付证据。
为每项指标及上限补充单位、负责人、设备或运行环境和百分位上下文,再将可重复的测量证据关联到交付生命周期。
contract.open-question-untracked所有可能影响实现的未决问题,都必须明确记录范围、负责人、是否阻塞、复查时点和备用方案。
将 TODO、TBD、未知和不支持的决定记录到 `bridge.openQuestions`,关联受影响范围,指定负责人,设置截止或复查时间;对阻塞项定义备用方案。
没有符合条件的规则。