@verndale/accessibility-standards 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/OPERATING.md +5 -0
- package/README.md +22 -0
- package/bin/accessibility-standards.mjs +32 -0
- package/dist/manifest.json +202 -0
- package/dist/profiles/ai-orchestration/coverage-manifest.json +202 -0
- package/dist/profiles/ai-orchestration/implementation/accessibility.md +329 -0
- package/dist/profiles/ai-orchestration/pattern-contracts.json +697 -0
- package/dist/profiles/ai-orchestration/patterns/accordion.md +12 -0
- package/dist/profiles/ai-orchestration/patterns/alert.md +11 -0
- package/dist/profiles/ai-orchestration/patterns/carousel.md +12 -0
- package/dist/profiles/ai-orchestration/patterns/combobox.md +11 -0
- package/dist/profiles/ai-orchestration/patterns/consequential-submission.md +11 -0
- package/dist/profiles/ai-orchestration/patterns/dialog.md +12 -0
- package/dist/profiles/ai-orchestration/patterns/disclosure.md +11 -0
- package/dist/profiles/ai-orchestration/patterns/dynamic-status.md +11 -0
- package/dist/profiles/ai-orchestration/patterns/field.md +11 -0
- package/dist/profiles/ai-orchestration/patterns/image.md +11 -0
- package/dist/profiles/ai-orchestration/patterns/listbox.md +12 -0
- package/dist/profiles/ai-orchestration/patterns/media-player.md +11 -0
- package/dist/profiles/ai-orchestration/patterns/menu-button.md +11 -0
- package/dist/profiles/ai-orchestration/patterns/pagination.md +11 -0
- package/dist/profiles/ai-orchestration/patterns/popover.md +11 -0
- package/dist/profiles/ai-orchestration/patterns/progress.md +11 -0
- package/dist/profiles/ai-orchestration/patterns/tabs.md +12 -0
- package/dist/profiles/ai-orchestration/patterns/tooltip.md +12 -0
- package/dist/profiles/ai-orchestration/patterns/validation.md +11 -0
- package/dist/profiles/ai-orchestration/review/accessibility.md +67 -0
- package/dist/profiles/ai-orchestration/semantics/accessible-name.md +8 -0
- package/dist/profiles/ai-orchestration/semantics/alert.md +8 -0
- package/dist/profiles/ai-orchestration/semantics/consequential-action.md +8 -0
- package/dist/profiles/ai-orchestration/semantics/data-table.md +8 -0
- package/dist/profiles/ai-orchestration/semantics/expanded-state.md +8 -0
- package/dist/profiles/ai-orchestration/semantics/focus.initial.md +8 -0
- package/dist/profiles/ai-orchestration/semantics/focus.return.md +8 -0
- package/dist/profiles/ai-orchestration/semantics/focus.visible.md +8 -0
- package/dist/profiles/ai-orchestration/semantics/form-error.md +8 -0
- package/dist/profiles/ai-orchestration/semantics/form-label.md +8 -0
- package/dist/profiles/ai-orchestration/semantics/form-required.md +8 -0
- package/dist/profiles/ai-orchestration/semantics/headings.md +8 -0
- package/dist/profiles/ai-orchestration/semantics/keyboard.escape.md +8 -0
- package/dist/profiles/ai-orchestration/semantics/keyboard.md +8 -0
- package/dist/profiles/ai-orchestration/semantics/landmarks.md +8 -0
- package/dist/profiles/ai-orchestration/semantics/live-status.md +8 -0
- package/dist/profiles/ai-orchestration/semantics/media-alternatives.md +8 -0
- package/dist/profiles/ai-orchestration/semantics/motion-control.md +8 -0
- package/dist/profiles/ai-orchestration/semantics/name-role-value.md +8 -0
- package/dist/profiles/ai-orchestration/semantics/native-dialog.md +8 -0
- package/dist/profiles/ai-orchestration/semantics/native-elements.md +8 -0
- package/dist/profiles/ai-orchestration/semantics/non-text-alternative.md +8 -0
- package/dist/profiles/ai-orchestration/semantics/roles-states-properties.md +8 -0
- package/dist/profiles/ai-orchestration/semantics/selected-state.md +8 -0
- package/dist/profiles/ai-orchestration/semantics/target-size.md +8 -0
- package/dist/profiles/ai-orchestration/semantics.json +289 -0
- package/dist/profiles/ai-orchestration/testing/accessibility.md +138 -0
- package/dist/profiles/conductor/a11y-semantics.md +152 -0
- package/dist/profiles/conductor/accessibility-quality.md +179 -0
- package/dist/profiles/conductor/applicability-matrix.json +428 -0
- package/dist/profiles/conductor/coverage-manifest.json +202 -0
- package/dist/profiles/conductor/pattern-contracts.json +697 -0
- package/dist/profiles/conductor/patterns/accordion.json +44 -0
- package/dist/profiles/conductor/patterns/alert.json +34 -0
- package/dist/profiles/conductor/patterns/carousel.json +45 -0
- package/dist/profiles/conductor/patterns/combobox.json +44 -0
- package/dist/profiles/conductor/patterns/consequential-submission.json +38 -0
- package/dist/profiles/conductor/patterns/dialog.json +47 -0
- package/dist/profiles/conductor/patterns/disclosure.json +39 -0
- package/dist/profiles/conductor/patterns/dynamic-status.json +36 -0
- package/dist/profiles/conductor/patterns/field.json +39 -0
- package/dist/profiles/conductor/patterns/image.json +35 -0
- package/dist/profiles/conductor/patterns/listbox.json +43 -0
- package/dist/profiles/conductor/patterns/media-player.json +45 -0
- package/dist/profiles/conductor/patterns/menu-button.json +41 -0
- package/dist/profiles/conductor/patterns/pagination.json +39 -0
- package/dist/profiles/conductor/patterns/popover.json +40 -0
- package/dist/profiles/conductor/patterns/progress.json +37 -0
- package/dist/profiles/conductor/patterns/tabs.json +42 -0
- package/dist/profiles/conductor/patterns/tooltip.json +37 -0
- package/dist/profiles/conductor/patterns/validation.json +42 -0
- package/dist/profiles/conductor/semantics.json +289 -0
- package/dist/projection-manifest.json +90 -0
- package/dist/requirements-to-implementation.md +21 -0
- package/lib/build-manifest.mjs +20 -0
- package/lib/build.mjs +31 -0
- package/lib/compile-applicability.mjs +56 -0
- package/lib/digest.mjs +11 -0
- package/lib/index.mjs +4 -0
- package/lib/load.mjs +40 -0
- package/lib/render.mjs +71 -0
- package/lib/sync.mjs +94 -0
- package/lib/validate.mjs +31 -0
- package/package.json +46 -0
- package/profiles/ai-orchestration/profile.json +1 -0
- package/profiles/ai-orchestration/templates/implementation/README.md +3 -0
- package/profiles/ai-orchestration/templates/patterns/README.md +3 -0
- package/profiles/ai-orchestration/templates/review/README.md +3 -0
- package/profiles/ai-orchestration/templates/semantics/README.md +3 -0
- package/profiles/ai-orchestration/templates/testing/README.md +3 -0
- package/profiles/conductor/profile.json +1 -0
- package/profiles/conductor/templates/applicability/README.md +3 -0
- package/profiles/conductor/templates/evidence/README.md +3 -0
- package/profiles/conductor/templates/patterns/README.md +3 -0
- package/profiles/conductor/templates/semantics/README.md +3 -0
- package/schemas/applicability-matrix.schema.json +1 -0
- package/schemas/consumer-config.schema.json +1 -0
- package/schemas/consumer-routes.schema.json +1 -0
- package/schemas/manifest.schema.json +1 -0
- package/schemas/pattern.schema.json +1 -0
- package/schemas/profile.schema.json +1 -0
- package/schemas/projection-manifest.schema.json +1 -0
- package/schemas/record.schema.json +1 -0
- package/schemas/semantic.schema.json +1 -0
- package/src/applicability/facts.yml +1 -0
- package/src/applicability/matrix.yml +20 -0
- package/src/evidence/proof-routing.yml +1 -0
- package/src/foundations/conformance-boundary.yml +1 -0
- package/src/foundations/standards-hierarchy.yml +1 -0
- package/src/foundations/wcag-2.2.yml +1 -0
- package/src/patterns/disclosure/accordion.yml +1 -0
- package/src/patterns/disclosure/disclosure.yml +1 -0
- package/src/patterns/feedback/alert.yml +1 -0
- package/src/patterns/feedback/dynamic-status.yml +1 -0
- package/src/patterns/feedback/progress.yml +1 -0
- package/src/patterns/forms/consequential-submission.yml +1 -0
- package/src/patterns/forms/field.yml +1 -0
- package/src/patterns/forms/validation.yml +1 -0
- package/src/patterns/media/carousel.yml +1 -0
- package/src/patterns/media/image.yml +1 -0
- package/src/patterns/media/media-player.yml +1 -0
- package/src/patterns/navigation/menu-button.yml +1 -0
- package/src/patterns/navigation/pagination.yml +1 -0
- package/src/patterns/navigation/tabs.yml +1 -0
- package/src/patterns/overlays/dialog.yml +1 -0
- package/src/patterns/overlays/popover.yml +1 -0
- package/src/patterns/overlays/tooltip.yml +1 -0
- package/src/patterns/selection/combobox.yml +1 -0
- package/src/patterns/selection/listbox.yml +1 -0
- package/src/policies/enhanced-quality.yml +1 -0
- package/src/policies/target-size.yml +1 -0
- package/src/semantics/accessible-names.yml +1 -0
- package/src/semantics/forms.yml +1 -0
- package/src/semantics/headings-landmarks.yml +1 -0
- package/src/semantics/keyboard-focus.yml +1 -0
- package/src/semantics/live-regions.yml +1 -0
- package/src/semantics/media.yml +1 -0
- package/src/semantics/native-elements.yml +1 -0
- package/src/semantics/roles-states-properties.yml +1 -0
- package/src/semantics/tables.yml +1 -0
- package/src/sources.yml +1 -0
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
<!-- GENERATED by @verndale/accessibility-standards; DO NOT EDIT -->
|
|
2
|
+
# Accessibility implementation contract
|
|
3
|
+
|
|
4
|
+
## semantics.accessible-name
|
|
5
|
+
|
|
6
|
+
Every interactive or meaning-bearing control has a concise programmatic name derived from visible text when available.
|
|
7
|
+
|
|
8
|
+
Proof: unit, axe, human.
|
|
9
|
+
|
|
10
|
+
## semantics.alert
|
|
11
|
+
|
|
12
|
+
Use alert semantics only for urgent, time-sensitive messages that require immediate announcement.
|
|
13
|
+
|
|
14
|
+
Proof: unit, human.
|
|
15
|
+
|
|
16
|
+
## semantics.consequential-action
|
|
17
|
+
|
|
18
|
+
Legal, financial, destructive, or data-submitting actions support review, confirmation, or reversal as required.
|
|
19
|
+
|
|
20
|
+
Proof: e2e, human.
|
|
21
|
+
|
|
22
|
+
## semantics.data-table
|
|
23
|
+
|
|
24
|
+
Tabular relationships use table markup with associated headers; interactive grids implement their full keyboard model.
|
|
25
|
+
|
|
26
|
+
Proof: axe, e2e, human.
|
|
27
|
+
|
|
28
|
+
## semantics.expanded-state
|
|
29
|
+
|
|
30
|
+
Expandable controls expose aria-expanded and identify the controlled region when needed.
|
|
31
|
+
|
|
32
|
+
Proof: unit, axe, e2e.
|
|
33
|
+
|
|
34
|
+
## semantics.focus.initial
|
|
35
|
+
|
|
36
|
+
On activation, focus moves to the deterministic target appropriate to the pattern.
|
|
37
|
+
|
|
38
|
+
Proof: unit, e2e.
|
|
39
|
+
|
|
40
|
+
## semantics.focus.return
|
|
41
|
+
|
|
42
|
+
On dismissal, focus returns to the invoking control or a documented logical successor.
|
|
43
|
+
|
|
44
|
+
Proof: unit, e2e.
|
|
45
|
+
|
|
46
|
+
## semantics.focus.visible
|
|
47
|
+
|
|
48
|
+
Keyboard focus is visible, sufficiently contrasted, and not fully obscured.
|
|
49
|
+
|
|
50
|
+
Proof: e2e, human.
|
|
51
|
+
|
|
52
|
+
## semantics.form-error
|
|
53
|
+
|
|
54
|
+
Identify errors in text, associate them with fields, and provide correction guidance.
|
|
55
|
+
|
|
56
|
+
Proof: unit, axe, e2e, human.
|
|
57
|
+
|
|
58
|
+
## semantics.form-label
|
|
59
|
+
|
|
60
|
+
Every form control has a persistent programmatically associated label.
|
|
61
|
+
|
|
62
|
+
Proof: unit, axe.
|
|
63
|
+
|
|
64
|
+
## semantics.form-required
|
|
65
|
+
|
|
66
|
+
Requiredness is communicated visually and programmatically before submission.
|
|
67
|
+
|
|
68
|
+
Proof: unit, axe.
|
|
69
|
+
|
|
70
|
+
## semantics.headings
|
|
71
|
+
|
|
72
|
+
Headings describe document structure without choosing levels for visual appearance.
|
|
73
|
+
|
|
74
|
+
Proof: axe, human.
|
|
75
|
+
|
|
76
|
+
## semantics.keyboard
|
|
77
|
+
|
|
78
|
+
All functionality is operable with a keyboard without traps.
|
|
79
|
+
|
|
80
|
+
Proof: e2e, human.
|
|
81
|
+
|
|
82
|
+
## semantics.keyboard.escape
|
|
83
|
+
|
|
84
|
+
Escape closes the topmost dismissible overlay without activating its trigger.
|
|
85
|
+
|
|
86
|
+
Proof: unit, e2e.
|
|
87
|
+
|
|
88
|
+
## semantics.landmarks
|
|
89
|
+
|
|
90
|
+
Use native landmarks and name repeated landmarks only when a name is required to distinguish them.
|
|
91
|
+
|
|
92
|
+
Proof: axe, human.
|
|
93
|
+
|
|
94
|
+
## semantics.live-status
|
|
95
|
+
|
|
96
|
+
Important asynchronous status updates are exposed through a correctly scoped, non-duplicative live region.
|
|
97
|
+
|
|
98
|
+
Proof: unit, e2e, human.
|
|
99
|
+
|
|
100
|
+
## semantics.media-alternatives
|
|
101
|
+
|
|
102
|
+
Prerecorded media provides applicable captions, transcripts, and audio description.
|
|
103
|
+
|
|
104
|
+
Proof: human.
|
|
105
|
+
|
|
106
|
+
## semantics.motion-control
|
|
107
|
+
|
|
108
|
+
Respect reduced-motion preferences and provide controls for moving or time-limited content where required.
|
|
109
|
+
|
|
110
|
+
Proof: e2e, human.
|
|
111
|
+
|
|
112
|
+
## semantics.name-role-value
|
|
113
|
+
|
|
114
|
+
Expose the correct accessible name, role, value, and state through the platform accessibility API.
|
|
115
|
+
|
|
116
|
+
Proof: unit, axe, human.
|
|
117
|
+
|
|
118
|
+
## semantics.native-dialog
|
|
119
|
+
|
|
120
|
+
Use dialog semantics with a programmatic name and modal state only when interaction is modal.
|
|
121
|
+
|
|
122
|
+
Proof: axe, e2e, human.
|
|
123
|
+
|
|
124
|
+
## semantics.native-elements
|
|
125
|
+
|
|
126
|
+
Use the native HTML element whose semantics and behavior match the control before adding ARIA.
|
|
127
|
+
|
|
128
|
+
Proof: axe, human.
|
|
129
|
+
|
|
130
|
+
## semantics.non-text-alternative
|
|
131
|
+
|
|
132
|
+
Meaningful non-text content has an equivalent alternative and decorative content is ignored by assistive technology.
|
|
133
|
+
|
|
134
|
+
Proof: axe, human.
|
|
135
|
+
|
|
136
|
+
## semantics.roles-states-properties
|
|
137
|
+
|
|
138
|
+
Apply only valid ARIA roles, states, and properties and keep exposed state synchronized with rendered behavior.
|
|
139
|
+
|
|
140
|
+
Proof: unit, axe, e2e.
|
|
141
|
+
|
|
142
|
+
## semantics.selected-state
|
|
143
|
+
|
|
144
|
+
Selection widgets expose current selection with the state required by their role.
|
|
145
|
+
|
|
146
|
+
Proof: unit, e2e.
|
|
147
|
+
|
|
148
|
+
## semantics.target-size
|
|
149
|
+
|
|
150
|
+
Pointer targets meet 24 by 24 CSS pixels or a WCAG 2.5.8 exception; 44 by 44 is an enhanced recommendation.
|
|
151
|
+
|
|
152
|
+
Proof: e2e, human.
|
|
153
|
+
|
|
154
|
+
## pattern.accordion
|
|
155
|
+
|
|
156
|
+
Requires: semantics.native-elements, semantics.accessible-name, semantics.expanded-state, semantics.keyboard, semantics.focus.visible.
|
|
157
|
+
|
|
158
|
+
Behavior:
|
|
159
|
+
- Toggle only the controlled panel
|
|
160
|
+
- Preserve DOM and focus order
|
|
161
|
+
|
|
162
|
+
Evidence: unit, axe, e2e, human.
|
|
163
|
+
|
|
164
|
+
## pattern.alert
|
|
165
|
+
|
|
166
|
+
Requires: semantics.alert.
|
|
167
|
+
|
|
168
|
+
Behavior:
|
|
169
|
+
- Announce once without moving focus
|
|
170
|
+
|
|
171
|
+
Evidence: unit, human.
|
|
172
|
+
|
|
173
|
+
## pattern.carousel
|
|
174
|
+
|
|
175
|
+
Requires: semantics.accessible-name, semantics.keyboard, semantics.focus.visible, semantics.motion-control, semantics.live-status.
|
|
176
|
+
|
|
177
|
+
Behavior:
|
|
178
|
+
- Pause rotation on interaction
|
|
179
|
+
- Provide named controls and current position
|
|
180
|
+
|
|
181
|
+
Evidence: unit, axe, e2e, human.
|
|
182
|
+
|
|
183
|
+
## pattern.combobox
|
|
184
|
+
|
|
185
|
+
Requires: semantics.accessible-name, semantics.expanded-state, semantics.selected-state, semantics.keyboard, semantics.live-status.
|
|
186
|
+
|
|
187
|
+
Behavior:
|
|
188
|
+
- Keyboard controls popup, option, and input independently
|
|
189
|
+
|
|
190
|
+
Evidence: unit, axe, e2e, human.
|
|
191
|
+
|
|
192
|
+
## pattern.consequential-submission
|
|
193
|
+
|
|
194
|
+
Requires: semantics.consequential-action, semantics.form-error, semantics.keyboard.
|
|
195
|
+
|
|
196
|
+
Behavior:
|
|
197
|
+
- Support review, correction, confirmation, or reversal
|
|
198
|
+
|
|
199
|
+
Evidence: e2e, human.
|
|
200
|
+
|
|
201
|
+
## pattern.dialog
|
|
202
|
+
|
|
203
|
+
Requires: semantics.native-dialog, semantics.accessible-name, semantics.keyboard.escape, semantics.focus.initial, semantics.focus.return.
|
|
204
|
+
|
|
205
|
+
Behavior:
|
|
206
|
+
- Manage initial, contained, and return focus
|
|
207
|
+
- Dismiss topmost dialog with Escape
|
|
208
|
+
|
|
209
|
+
Evidence: unit, axe, e2e, human.
|
|
210
|
+
|
|
211
|
+
## pattern.disclosure
|
|
212
|
+
|
|
213
|
+
Requires: semantics.native-elements, semantics.accessible-name, semantics.expanded-state, semantics.keyboard.
|
|
214
|
+
|
|
215
|
+
Behavior:
|
|
216
|
+
- Control toggles one region
|
|
217
|
+
|
|
218
|
+
Evidence: unit, axe, e2e.
|
|
219
|
+
|
|
220
|
+
## pattern.dynamic-status
|
|
221
|
+
|
|
222
|
+
Requires: semantics.live-status.
|
|
223
|
+
|
|
224
|
+
Behavior:
|
|
225
|
+
- Announce meaningful changes once
|
|
226
|
+
|
|
227
|
+
Evidence: unit, e2e, human.
|
|
228
|
+
|
|
229
|
+
## pattern.field
|
|
230
|
+
|
|
231
|
+
Requires: semantics.form-label, semantics.form-required, semantics.focus.visible.
|
|
232
|
+
|
|
233
|
+
Behavior:
|
|
234
|
+
- Expose label, instructions, and requiredness before interaction
|
|
235
|
+
|
|
236
|
+
Evidence: unit, axe, human.
|
|
237
|
+
|
|
238
|
+
## pattern.image
|
|
239
|
+
|
|
240
|
+
Requires: semantics.non-text-alternative.
|
|
241
|
+
|
|
242
|
+
Behavior:
|
|
243
|
+
- Alternative follows image purpose
|
|
244
|
+
|
|
245
|
+
Evidence: axe, human.
|
|
246
|
+
|
|
247
|
+
## pattern.listbox
|
|
248
|
+
|
|
249
|
+
Requires: semantics.accessible-name, semantics.selected-state, semantics.keyboard, semantics.focus.visible.
|
|
250
|
+
|
|
251
|
+
Behavior:
|
|
252
|
+
- Arrow keys move active option
|
|
253
|
+
- Selection follows declared model
|
|
254
|
+
|
|
255
|
+
Evidence: unit, axe, e2e, human.
|
|
256
|
+
|
|
257
|
+
## pattern.media-player
|
|
258
|
+
|
|
259
|
+
Requires: semantics.media-alternatives, semantics.accessible-name, semantics.keyboard, semantics.focus.visible, semantics.motion-control.
|
|
260
|
+
|
|
261
|
+
Behavior:
|
|
262
|
+
- Provide keyboard-operable named controls and required alternatives
|
|
263
|
+
|
|
264
|
+
Evidence: axe, e2e, human.
|
|
265
|
+
|
|
266
|
+
## pattern.menu-button
|
|
267
|
+
|
|
268
|
+
Requires: semantics.accessible-name, semantics.expanded-state, semantics.keyboard, semantics.focus.initial, semantics.focus.return.
|
|
269
|
+
|
|
270
|
+
Behavior:
|
|
271
|
+
- Open and navigate menu by keyboard
|
|
272
|
+
|
|
273
|
+
Evidence: unit, e2e, human.
|
|
274
|
+
|
|
275
|
+
## pattern.pagination
|
|
276
|
+
|
|
277
|
+
Requires: semantics.native-elements, semantics.accessible-name, semantics.landmarks, semantics.focus.visible.
|
|
278
|
+
|
|
279
|
+
Behavior:
|
|
280
|
+
- Expose current page and named navigation
|
|
281
|
+
|
|
282
|
+
Evidence: unit, axe, human.
|
|
283
|
+
|
|
284
|
+
## pattern.popover
|
|
285
|
+
|
|
286
|
+
Requires: semantics.native-elements, semantics.accessible-name, semantics.keyboard.escape, semantics.focus.return.
|
|
287
|
+
|
|
288
|
+
Behavior:
|
|
289
|
+
- Dismiss without trapping focus
|
|
290
|
+
|
|
291
|
+
Evidence: unit, e2e, human.
|
|
292
|
+
|
|
293
|
+
## pattern.progress
|
|
294
|
+
|
|
295
|
+
Requires: semantics.name-role-value, semantics.live-status.
|
|
296
|
+
|
|
297
|
+
Behavior:
|
|
298
|
+
- Expose value and completion changes without announcement noise
|
|
299
|
+
|
|
300
|
+
Evidence: unit, axe, human.
|
|
301
|
+
|
|
302
|
+
## pattern.tabs
|
|
303
|
+
|
|
304
|
+
Requires: semantics.accessible-name, semantics.selected-state, semantics.keyboard, semantics.focus.visible.
|
|
305
|
+
|
|
306
|
+
Behavior:
|
|
307
|
+
- Arrow keys move between tabs
|
|
308
|
+
- Selection and activation follow the documented model
|
|
309
|
+
|
|
310
|
+
Evidence: unit, axe, e2e, human.
|
|
311
|
+
|
|
312
|
+
## pattern.tooltip
|
|
313
|
+
|
|
314
|
+
Requires: semantics.accessible-name, semantics.keyboard.escape.
|
|
315
|
+
|
|
316
|
+
Behavior:
|
|
317
|
+
- Available on hover and focus
|
|
318
|
+
- Never contains interactive content
|
|
319
|
+
|
|
320
|
+
Evidence: unit, e2e, human.
|
|
321
|
+
|
|
322
|
+
## pattern.validation
|
|
323
|
+
|
|
324
|
+
Requires: semantics.form-error, semantics.live-status, semantics.focus.initial.
|
|
325
|
+
|
|
326
|
+
Behavior:
|
|
327
|
+
- Identify, associate, summarize, and focus errors deterministically
|
|
328
|
+
|
|
329
|
+
Evidence: unit, axe, e2e, human.
|