@verndale/accessibility-standards 1.0.0 → 2.0.1
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 +2 -0
- package/README.md +4 -0
- package/bin/accessibility-standards.mjs +1 -1
- package/dist/manifest.json +39 -21
- package/dist/profiles/ai-orchestration/coverage-manifest.json +109 -2
- package/dist/profiles/ai-orchestration/implementation/accessibility.md +334 -0
- package/dist/profiles/ai-orchestration/pattern-contracts.json +125 -39
- package/dist/profiles/ai-orchestration/patterns/accordion.md +9 -0
- package/dist/profiles/ai-orchestration/patterns/alert.md +9 -0
- package/dist/profiles/ai-orchestration/patterns/carousel.md +9 -0
- package/dist/profiles/ai-orchestration/patterns/combobox.md +9 -0
- package/dist/profiles/ai-orchestration/patterns/consequential-submission.md +9 -0
- package/dist/profiles/ai-orchestration/patterns/dialog.md +9 -0
- package/dist/profiles/ai-orchestration/patterns/disclosure.md +9 -0
- package/dist/profiles/ai-orchestration/patterns/dynamic-status.md +9 -0
- package/dist/profiles/ai-orchestration/patterns/field.md +9 -0
- package/dist/profiles/ai-orchestration/patterns/image.md +9 -0
- package/dist/profiles/ai-orchestration/patterns/listbox.md +9 -0
- package/dist/profiles/ai-orchestration/patterns/media-player.md +9 -0
- package/dist/profiles/ai-orchestration/patterns/menu-button.md +9 -0
- package/dist/profiles/ai-orchestration/patterns/pagination.md +9 -0
- package/dist/profiles/ai-orchestration/patterns/popover.md +9 -0
- package/dist/profiles/ai-orchestration/patterns/progress.md +9 -0
- package/dist/profiles/ai-orchestration/patterns/tabs.md +9 -0
- package/dist/profiles/ai-orchestration/patterns/tooltip.md +9 -0
- package/dist/profiles/ai-orchestration/patterns/validation.md +9 -0
- package/dist/profiles/ai-orchestration/review/accessibility.md +8 -1
- package/dist/profiles/ai-orchestration/semantics/accessible-name.md +1 -0
- package/dist/profiles/ai-orchestration/semantics/alert.md +1 -0
- package/dist/profiles/ai-orchestration/semantics/consequential-action.md +1 -0
- package/dist/profiles/ai-orchestration/semantics/data-table.md +1 -0
- package/dist/profiles/ai-orchestration/semantics/expanded-state.md +1 -0
- package/dist/profiles/ai-orchestration/semantics/focus.initial.md +1 -0
- package/dist/profiles/ai-orchestration/semantics/focus.return.md +1 -0
- package/dist/profiles/ai-orchestration/semantics/focus.visible.md +1 -0
- package/dist/profiles/ai-orchestration/semantics/form-error.md +1 -0
- package/dist/profiles/ai-orchestration/semantics/form-label.md +1 -0
- package/dist/profiles/ai-orchestration/semantics/form-required.md +1 -0
- package/dist/profiles/ai-orchestration/semantics/headings.md +1 -0
- package/dist/profiles/ai-orchestration/semantics/keyboard.escape.md +1 -0
- package/dist/profiles/ai-orchestration/semantics/keyboard.md +1 -0
- package/dist/profiles/ai-orchestration/semantics/landmarks.md +1 -0
- package/dist/profiles/ai-orchestration/semantics/live-status.md +1 -0
- package/dist/profiles/ai-orchestration/semantics/media-alternatives.md +1 -0
- package/dist/profiles/ai-orchestration/semantics/motion-control.md +1 -0
- package/dist/profiles/ai-orchestration/semantics/name-role-value.md +1 -0
- package/dist/profiles/ai-orchestration/semantics/native-dialog.md +1 -0
- package/dist/profiles/ai-orchestration/semantics/native-elements.md +1 -0
- package/dist/profiles/ai-orchestration/semantics/non-text-alternative.md +1 -0
- package/dist/profiles/ai-orchestration/semantics/roles-states-properties.md +1 -0
- package/dist/profiles/ai-orchestration/semantics/selected-state.md +1 -0
- package/dist/profiles/ai-orchestration/semantics/target-size.md +1 -0
- package/dist/profiles/ai-orchestration/semantics.json +48 -1
- package/dist/profiles/ai-orchestration/testing/accessibility.md +1 -1
- package/dist/profiles/ai-orchestration/ui-design-brain-bindings.json +856 -0
- package/dist/profiles/conductor/a11y-semantics.md +22 -1
- package/dist/profiles/conductor/accessibility-quality.md +314 -0
- package/dist/profiles/conductor/applicability-matrix.json +111 -28
- package/dist/profiles/conductor/coverage-manifest.json +109 -2
- package/dist/profiles/conductor/pattern-contracts.json +125 -39
- package/dist/profiles/conductor/patterns/accordion.json +13 -3
- package/dist/profiles/conductor/patterns/alert.json +13 -3
- package/dist/profiles/conductor/patterns/carousel.json +13 -3
- package/dist/profiles/conductor/patterns/combobox.json +13 -3
- package/dist/profiles/conductor/patterns/consequential-submission.json +13 -3
- package/dist/profiles/conductor/patterns/dialog.json +13 -3
- package/dist/profiles/conductor/patterns/disclosure.json +13 -3
- package/dist/profiles/conductor/patterns/dynamic-status.json +13 -3
- package/dist/profiles/conductor/patterns/field.json +23 -3
- package/dist/profiles/conductor/patterns/image.json +23 -3
- package/dist/profiles/conductor/patterns/listbox.json +13 -3
- package/dist/profiles/conductor/patterns/media-player.json +23 -3
- package/dist/profiles/conductor/patterns/menu-button.json +13 -3
- package/dist/profiles/conductor/patterns/pagination.json +13 -3
- package/dist/profiles/conductor/patterns/popover.json +13 -3
- package/dist/profiles/conductor/patterns/progress.json +13 -3
- package/dist/profiles/conductor/patterns/tabs.json +13 -3
- package/dist/profiles/conductor/patterns/tooltip.json +13 -3
- package/dist/profiles/conductor/patterns/validation.json +23 -3
- package/dist/profiles/conductor/semantics.json +48 -1
- package/dist/profiles/conductor/ui-design-brain-bindings.json +856 -0
- package/dist/projection-manifest.json +103 -78
- package/dist/requirements-to-implementation.md +2 -0
- package/lib/build-manifest.mjs +12 -6
- package/lib/build.mjs +19 -5
- package/lib/compile-applicability.mjs +131 -10
- package/lib/coverage.mjs +20 -0
- package/lib/index.mjs +1 -1
- package/lib/load.mjs +31 -1
- package/lib/provenance.mjs +49 -0
- package/lib/render.mjs +69 -29
- package/lib/sync.mjs +240 -26
- package/lib/validate.mjs +255 -24
- package/package.json +24 -11
- package/profiles/ai-orchestration/profile.json +1 -1
- package/profiles/conductor/profile.json +1 -1
- package/schemas/consumer-config.schema.json +1 -1
- package/schemas/contract.schema.json +1 -0
- package/schemas/manifest.schema.json +1 -1
- package/schemas/projection-manifest.schema.json +84 -1
- package/schemas/ui-design-brain-bindings.schema.json +86 -0
- package/src/applicability/facts.yml +29 -1
- package/src/applicability/matrix.yml +3 -2
- package/src/applicability/ui-design-brain-bindings.yml +210 -0
- package/src/contract.yml +1 -0
- package/src/patterns/disclosure/accordion.yml +1 -1
- package/src/patterns/disclosure/disclosure.yml +1 -1
- package/src/patterns/feedback/alert.yml +1 -1
- package/src/patterns/feedback/dynamic-status.yml +1 -1
- package/src/patterns/feedback/progress.yml +1 -1
- package/src/patterns/forms/consequential-submission.yml +1 -1
- package/src/patterns/forms/field.yml +1 -1
- package/src/patterns/forms/validation.yml +1 -1
- package/src/patterns/media/carousel.yml +1 -1
- package/src/patterns/media/image.yml +1 -1
- package/src/patterns/media/media-player.yml +1 -1
- package/src/patterns/navigation/menu-button.yml +1 -1
- package/src/patterns/navigation/pagination.yml +1 -1
- package/src/patterns/navigation/tabs.yml +1 -1
- package/src/patterns/overlays/dialog.yml +1 -1
- package/src/patterns/overlays/popover.yml +1 -1
- package/src/patterns/overlays/tooltip.yml +1 -1
- package/src/patterns/selection/combobox.yml +1 -1
- package/src/patterns/selection/listbox.yml +1 -1
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
<!-- GENERATED by @verndale/accessibility-standards; DO NOT EDIT -->
|
|
2
|
+
<!-- package: @verndale/accessibility-standards@2.0.1; profile: ai-orchestration@2.0.1; schema: 2; source-digest: 5123634b229ba2ada6a8270b53276f3074ed628c8d8a32db26b88ae7688df49b; profile-digest: f8485b4e166fe305a4a779a00700f8b9fc7e8b8f49904d24ddcdac016a5792a3 -->
|
|
2
3
|
# Accessibility implementation contract
|
|
3
4
|
|
|
5
|
+
## foundation.conformance-boundary
|
|
6
|
+
|
|
7
|
+
Automated checks provide evidence but do not establish conformance; every applicable outcome needs its declared proof routes.
|
|
8
|
+
|
|
9
|
+
## foundation.standards-hierarchy
|
|
10
|
+
|
|
11
|
+
Prefer native platform semantics; apply WCAG conformance, ARIA only where needed, APG interaction guidance, then non-conflicting product policy.
|
|
12
|
+
|
|
13
|
+
## foundation.wcag-2.2
|
|
14
|
+
|
|
15
|
+
Meet WCAG 2.2 Level A and AA. Target size minimum is 24 by 24 CSS pixels or an allowed exception; 44 by 44 is enhanced guidance only.
|
|
16
|
+
|
|
4
17
|
## semantics.accessible-name
|
|
5
18
|
|
|
6
19
|
Every interactive or meaning-bearing control has a concise programmatic name derived from visible text when available.
|
|
@@ -155,175 +168,496 @@ Proof: e2e, human.
|
|
|
155
168
|
|
|
156
169
|
Requires: semantics.native-elements, semantics.accessible-name, semantics.expanded-state, semantics.keyboard, semantics.focus.visible.
|
|
157
170
|
|
|
171
|
+
Scope: Grouped disclosure sections.
|
|
172
|
+
|
|
158
173
|
Behavior:
|
|
159
174
|
- Toggle only the controlled panel
|
|
160
175
|
- Preserve DOM and focus order
|
|
161
176
|
|
|
177
|
+
Product decisions: single_or_multiple_open.
|
|
178
|
+
|
|
179
|
+
Functional Spec bindings: behavior, states, keyboard.
|
|
180
|
+
|
|
181
|
+
Implementation outcomes: accordion-control, accordion-panel.
|
|
182
|
+
|
|
162
183
|
Evidence: unit, axe, e2e, human.
|
|
163
184
|
|
|
164
185
|
## pattern.alert
|
|
165
186
|
|
|
166
187
|
Requires: semantics.alert.
|
|
167
188
|
|
|
189
|
+
Scope: Urgent message.
|
|
190
|
+
|
|
168
191
|
Behavior:
|
|
169
192
|
- Announce once without moving focus
|
|
170
193
|
|
|
194
|
+
Product decisions: urgency.
|
|
195
|
+
|
|
196
|
+
Functional Spec bindings: messaging.
|
|
197
|
+
|
|
198
|
+
Implementation outcomes: alert-announcement.
|
|
199
|
+
|
|
171
200
|
Evidence: unit, human.
|
|
172
201
|
|
|
173
202
|
## pattern.carousel
|
|
174
203
|
|
|
175
204
|
Requires: semantics.accessible-name, semantics.keyboard, semantics.focus.visible, semantics.motion-control, semantics.live-status.
|
|
176
205
|
|
|
206
|
+
Scope: Rotating content set.
|
|
207
|
+
|
|
177
208
|
Behavior:
|
|
178
209
|
- Pause rotation on interaction
|
|
179
210
|
- Provide named controls and current position
|
|
180
211
|
|
|
212
|
+
Product decisions: auto_rotation, looping.
|
|
213
|
+
|
|
214
|
+
Functional Spec bindings: behavior, states, controls.
|
|
215
|
+
|
|
216
|
+
Implementation outcomes: carousel-controls, carousel-rotation.
|
|
217
|
+
|
|
181
218
|
Evidence: unit, axe, e2e, human.
|
|
182
219
|
|
|
183
220
|
## pattern.combobox
|
|
184
221
|
|
|
185
222
|
Requires: semantics.accessible-name, semantics.expanded-state, semantics.selected-state, semantics.keyboard, semantics.live-status.
|
|
186
223
|
|
|
224
|
+
Scope: Input with selectable popup.
|
|
225
|
+
|
|
187
226
|
Behavior:
|
|
188
227
|
- Keyboard controls popup, option, and input independently
|
|
189
228
|
|
|
229
|
+
Product decisions: editable, autocomplete, selection_commit.
|
|
230
|
+
|
|
231
|
+
Functional Spec bindings: behavior, states, keyboard.
|
|
232
|
+
|
|
233
|
+
Implementation outcomes: combobox-state-machine.
|
|
234
|
+
|
|
190
235
|
Evidence: unit, axe, e2e, human.
|
|
191
236
|
|
|
192
237
|
## pattern.consequential-submission
|
|
193
238
|
|
|
194
239
|
Requires: semantics.consequential-action, semantics.form-error, semantics.keyboard.
|
|
195
240
|
|
|
241
|
+
Scope: Legal, financial, destructive, or irreversible submission.
|
|
242
|
+
|
|
196
243
|
Behavior:
|
|
197
244
|
- Support review, correction, confirmation, or reversal
|
|
198
245
|
|
|
246
|
+
Product decisions: safeguard, reversal_window.
|
|
247
|
+
|
|
248
|
+
Functional Spec bindings: submission, confirmation.
|
|
249
|
+
|
|
250
|
+
Implementation outcomes: submission-safeguard.
|
|
251
|
+
|
|
199
252
|
Evidence: e2e, human.
|
|
200
253
|
|
|
201
254
|
## pattern.dialog
|
|
202
255
|
|
|
203
256
|
Requires: semantics.native-dialog, semantics.accessible-name, semantics.keyboard.escape, semantics.focus.initial, semantics.focus.return.
|
|
204
257
|
|
|
258
|
+
Scope: Modal and non-modal dialogs.
|
|
259
|
+
|
|
205
260
|
Behavior:
|
|
206
261
|
- Manage initial, contained, and return focus
|
|
207
262
|
- Dismiss topmost dialog with Escape
|
|
208
263
|
|
|
264
|
+
Product decisions: modal, initial_focus, dismissal.
|
|
265
|
+
|
|
266
|
+
Functional Spec bindings: behavior, states, focus, keyboard.
|
|
267
|
+
|
|
268
|
+
Implementation outcomes: dialog-semantics, dialog-focus-lifecycle.
|
|
269
|
+
|
|
209
270
|
Evidence: unit, axe, e2e, human.
|
|
210
271
|
|
|
211
272
|
## pattern.disclosure
|
|
212
273
|
|
|
213
274
|
Requires: semantics.native-elements, semantics.accessible-name, semantics.expanded-state, semantics.keyboard.
|
|
214
275
|
|
|
276
|
+
Scope: Show and hide supplementary content.
|
|
277
|
+
|
|
215
278
|
Behavior:
|
|
216
279
|
- Control toggles one region
|
|
217
280
|
|
|
281
|
+
Product decisions: initial_state.
|
|
282
|
+
|
|
283
|
+
Functional Spec bindings: behavior, states.
|
|
284
|
+
|
|
285
|
+
Implementation outcomes: disclosure-control.
|
|
286
|
+
|
|
218
287
|
Evidence: unit, axe, e2e.
|
|
219
288
|
|
|
220
289
|
## pattern.dynamic-status
|
|
221
290
|
|
|
222
291
|
Requires: semantics.live-status.
|
|
223
292
|
|
|
293
|
+
Scope: Asynchronous status message.
|
|
294
|
+
|
|
224
295
|
Behavior:
|
|
225
296
|
- Announce meaningful changes once
|
|
226
297
|
|
|
298
|
+
Product decisions: announcement_copy.
|
|
299
|
+
|
|
300
|
+
Functional Spec bindings: messaging, states.
|
|
301
|
+
|
|
302
|
+
Implementation outcomes: status-live-region.
|
|
303
|
+
|
|
227
304
|
Evidence: unit, e2e, human.
|
|
228
305
|
|
|
229
306
|
## pattern.field
|
|
230
307
|
|
|
231
308
|
Requires: semantics.form-label, semantics.form-required, semantics.focus.visible.
|
|
232
309
|
|
|
310
|
+
Scope: Labeled form input.
|
|
311
|
+
|
|
233
312
|
Behavior:
|
|
234
313
|
- Expose label, instructions, and requiredness before interaction
|
|
235
314
|
|
|
315
|
+
Product decisions: required, instructions.
|
|
316
|
+
|
|
317
|
+
Functional Spec bindings: fields, requiredness.
|
|
318
|
+
|
|
319
|
+
Implementation outcomes: field-associations.
|
|
320
|
+
|
|
236
321
|
Evidence: unit, axe, human.
|
|
237
322
|
|
|
238
323
|
## pattern.image
|
|
239
324
|
|
|
240
325
|
Requires: semantics.non-text-alternative.
|
|
241
326
|
|
|
327
|
+
Scope: Informative, functional, complex, or decorative image.
|
|
328
|
+
|
|
242
329
|
Behavior:
|
|
243
330
|
- Alternative follows image purpose
|
|
244
331
|
|
|
332
|
+
Product decisions: purpose, long_description.
|
|
333
|
+
|
|
334
|
+
Functional Spec bindings: content.
|
|
335
|
+
|
|
336
|
+
Implementation outcomes: image-alternative.
|
|
337
|
+
|
|
245
338
|
Evidence: axe, human.
|
|
246
339
|
|
|
247
340
|
## pattern.listbox
|
|
248
341
|
|
|
249
342
|
Requires: semantics.accessible-name, semantics.selected-state, semantics.keyboard, semantics.focus.visible.
|
|
250
343
|
|
|
344
|
+
Scope: Single or multi-select option list.
|
|
345
|
+
|
|
251
346
|
Behavior:
|
|
252
347
|
- Arrow keys move active option
|
|
253
348
|
- Selection follows declared model
|
|
254
349
|
|
|
350
|
+
Product decisions: single_or_multi, selection_follows_focus.
|
|
351
|
+
|
|
352
|
+
Functional Spec bindings: behavior, states, keyboard.
|
|
353
|
+
|
|
354
|
+
Implementation outcomes: listbox-keyboard-model.
|
|
355
|
+
|
|
255
356
|
Evidence: unit, axe, e2e, human.
|
|
256
357
|
|
|
257
358
|
## pattern.media-player
|
|
258
359
|
|
|
259
360
|
Requires: semantics.media-alternatives, semantics.accessible-name, semantics.keyboard, semantics.focus.visible, semantics.motion-control.
|
|
260
361
|
|
|
362
|
+
Scope: Audio or video playback.
|
|
363
|
+
|
|
261
364
|
Behavior:
|
|
262
365
|
- Provide keyboard-operable named controls and required alternatives
|
|
263
366
|
|
|
367
|
+
Product decisions: captions, transcript, audio_description, autoplay.
|
|
368
|
+
|
|
369
|
+
Functional Spec bindings: content, controls, behavior.
|
|
370
|
+
|
|
371
|
+
Implementation outcomes: media-alternatives, media-controls.
|
|
372
|
+
|
|
264
373
|
Evidence: axe, e2e, human.
|
|
265
374
|
|
|
266
375
|
## pattern.menu-button
|
|
267
376
|
|
|
268
377
|
Requires: semantics.accessible-name, semantics.expanded-state, semantics.keyboard, semantics.focus.initial, semantics.focus.return.
|
|
269
378
|
|
|
379
|
+
Scope: Button opening a command menu.
|
|
380
|
+
|
|
270
381
|
Behavior:
|
|
271
382
|
- Open and navigate menu by keyboard
|
|
272
383
|
|
|
384
|
+
Product decisions: focus_strategy.
|
|
385
|
+
|
|
386
|
+
Functional Spec bindings: behavior, keyboard, focus.
|
|
387
|
+
|
|
388
|
+
Implementation outcomes: menu-button-keyboard.
|
|
389
|
+
|
|
273
390
|
Evidence: unit, e2e, human.
|
|
274
391
|
|
|
275
392
|
## pattern.pagination
|
|
276
393
|
|
|
277
394
|
Requires: semantics.native-elements, semantics.accessible-name, semantics.landmarks, semantics.focus.visible.
|
|
278
395
|
|
|
396
|
+
Scope: Paged result navigation.
|
|
397
|
+
|
|
279
398
|
Behavior:
|
|
280
399
|
- Expose current page and named navigation
|
|
281
400
|
|
|
401
|
+
Product decisions: url_behavior.
|
|
402
|
+
|
|
403
|
+
Functional Spec bindings: states, navigation.
|
|
404
|
+
|
|
405
|
+
Implementation outcomes: pagination-current-page.
|
|
406
|
+
|
|
282
407
|
Evidence: unit, axe, human.
|
|
283
408
|
|
|
284
409
|
## pattern.popover
|
|
285
410
|
|
|
286
411
|
Requires: semantics.native-elements, semantics.accessible-name, semantics.keyboard.escape, semantics.focus.return.
|
|
287
412
|
|
|
413
|
+
Scope: Non-modal transient surface.
|
|
414
|
+
|
|
288
415
|
Behavior:
|
|
289
416
|
- Dismiss without trapping focus
|
|
290
417
|
|
|
418
|
+
Product decisions: dismissal, focus_entry.
|
|
419
|
+
|
|
420
|
+
Functional Spec bindings: behavior, focus.
|
|
421
|
+
|
|
422
|
+
Implementation outcomes: popover-dismissal.
|
|
423
|
+
|
|
291
424
|
Evidence: unit, e2e, human.
|
|
292
425
|
|
|
293
426
|
## pattern.progress
|
|
294
427
|
|
|
295
428
|
Requires: semantics.name-role-value, semantics.live-status.
|
|
296
429
|
|
|
430
|
+
Scope: Determinate or indeterminate progress.
|
|
431
|
+
|
|
297
432
|
Behavior:
|
|
298
433
|
- Expose value and completion changes without announcement noise
|
|
299
434
|
|
|
435
|
+
Product decisions: determinate.
|
|
436
|
+
|
|
437
|
+
Functional Spec bindings: states, messaging.
|
|
438
|
+
|
|
439
|
+
Implementation outcomes: progress-value.
|
|
440
|
+
|
|
300
441
|
Evidence: unit, axe, human.
|
|
301
442
|
|
|
302
443
|
## pattern.tabs
|
|
303
444
|
|
|
304
445
|
Requires: semantics.accessible-name, semantics.selected-state, semantics.keyboard, semantics.focus.visible.
|
|
305
446
|
|
|
447
|
+
Scope: Tabbed interfaces.
|
|
448
|
+
|
|
306
449
|
Behavior:
|
|
307
450
|
- Arrow keys move between tabs
|
|
308
451
|
- Selection and activation follow the documented model
|
|
309
452
|
|
|
453
|
+
Product decisions: automatic_or_manual_activation.
|
|
454
|
+
|
|
455
|
+
Functional Spec bindings: behavior, states, keyboard.
|
|
456
|
+
|
|
457
|
+
Implementation outcomes: tabs-keyboard-model.
|
|
458
|
+
|
|
310
459
|
Evidence: unit, axe, e2e, human.
|
|
311
460
|
|
|
312
461
|
## pattern.tooltip
|
|
313
462
|
|
|
314
463
|
Requires: semantics.accessible-name, semantics.keyboard.escape.
|
|
315
464
|
|
|
465
|
+
Scope: Supplementary description.
|
|
466
|
+
|
|
316
467
|
Behavior:
|
|
317
468
|
- Available on hover and focus
|
|
318
469
|
- Never contains interactive content
|
|
319
470
|
|
|
471
|
+
Product decisions: delay.
|
|
472
|
+
|
|
473
|
+
Functional Spec bindings: behavior.
|
|
474
|
+
|
|
475
|
+
Implementation outcomes: tooltip-description.
|
|
476
|
+
|
|
320
477
|
Evidence: unit, e2e, human.
|
|
321
478
|
|
|
322
479
|
## pattern.validation
|
|
323
480
|
|
|
324
481
|
Requires: semantics.form-error, semantics.live-status, semantics.focus.initial.
|
|
325
482
|
|
|
483
|
+
Scope: Client or server validation.
|
|
484
|
+
|
|
326
485
|
Behavior:
|
|
327
486
|
- Identify, associate, summarize, and focus errors deterministically
|
|
328
487
|
|
|
488
|
+
Product decisions: validation_timing, error_summary.
|
|
489
|
+
|
|
490
|
+
Functional Spec bindings: validation, messaging, focus.
|
|
491
|
+
|
|
492
|
+
Implementation outcomes: validation-associations, error-summary.
|
|
493
|
+
|
|
329
494
|
Evidence: unit, axe, e2e, human.
|
|
495
|
+
|
|
496
|
+
## applicability.page-context
|
|
497
|
+
|
|
498
|
+
When: `{"equals":{"fact":"artifact.page_context","value":true}}`
|
|
499
|
+
|
|
500
|
+
Outcomes: semantics.headings, semantics.landmarks.
|
|
501
|
+
|
|
502
|
+
Evidence: axe, human.
|
|
503
|
+
|
|
504
|
+
## applicability.non-text-content
|
|
505
|
+
|
|
506
|
+
When: `{"equals":{"fact":"content.has_non_text","value":true}}`
|
|
507
|
+
|
|
508
|
+
Outcomes: pattern.image.
|
|
509
|
+
|
|
510
|
+
Evidence: axe, human.
|
|
511
|
+
|
|
512
|
+
## applicability.media
|
|
513
|
+
|
|
514
|
+
When: `{"equals":{"fact":"content.has_media","value":true}}`
|
|
515
|
+
|
|
516
|
+
Outcomes: pattern.media-player.
|
|
517
|
+
|
|
518
|
+
Evidence: e2e, human.
|
|
519
|
+
|
|
520
|
+
## applicability.forms
|
|
521
|
+
|
|
522
|
+
When: `{"equals":{"fact":"component.has_form_fields","value":true}}`
|
|
523
|
+
|
|
524
|
+
Outcomes: pattern.field.
|
|
525
|
+
|
|
526
|
+
Evidence: unit, axe.
|
|
527
|
+
|
|
528
|
+
## applicability.validation
|
|
529
|
+
|
|
530
|
+
When: `{"equals":{"fact":"component.has_validation","value":true}}`
|
|
531
|
+
|
|
532
|
+
Outcomes: pattern.validation.
|
|
533
|
+
|
|
534
|
+
Evidence: unit, axe, e2e, human.
|
|
535
|
+
|
|
536
|
+
## applicability.consequential-submission
|
|
537
|
+
|
|
538
|
+
When: `{"contains":{"fact":"component.submission_consequence","value":"consequential"}}`
|
|
539
|
+
|
|
540
|
+
Outcomes: pattern.consequential-submission.
|
|
541
|
+
|
|
542
|
+
Evidence: e2e, human.
|
|
543
|
+
|
|
544
|
+
## applicability.dynamic-status
|
|
545
|
+
|
|
546
|
+
When: `{"equals":{"fact":"component.has_dynamic_status","value":true}}`
|
|
547
|
+
|
|
548
|
+
Outcomes: pattern.dynamic-status.
|
|
549
|
+
|
|
550
|
+
Evidence: unit, e2e, human.
|
|
551
|
+
|
|
552
|
+
## applicability.overlays
|
|
553
|
+
|
|
554
|
+
When: `{"any":[{"contains":{"fact":"component.ui_pattern_ids","value":"modal"}},{"contains":{"fact":"component.ui_pattern_ids","value":"popover"}},{"contains":{"fact":"component.ui_pattern_ids","value":"tooltip"}}]}`
|
|
555
|
+
|
|
556
|
+
Outcomes: semantics.keyboard.escape, semantics.focus.return.
|
|
557
|
+
|
|
558
|
+
Evidence: e2e.
|
|
559
|
+
|
|
560
|
+
## applicability.motion-timing
|
|
561
|
+
|
|
562
|
+
When: `{"equals":{"fact":"interaction.has_motion_or_timing","value":true}}`
|
|
563
|
+
|
|
564
|
+
Outcomes: semantics.motion-control.
|
|
565
|
+
|
|
566
|
+
Evidence: e2e, human.
|
|
567
|
+
|
|
568
|
+
## applicability.complex-pointer
|
|
569
|
+
|
|
570
|
+
When: `{"equals":{"fact":"interaction.has_complex_pointer","value":true}}`
|
|
571
|
+
|
|
572
|
+
Outcomes: semantics.keyboard.
|
|
573
|
+
|
|
574
|
+
Evidence: e2e, human.
|
|
575
|
+
|
|
576
|
+
## applicability.character-shortcuts
|
|
577
|
+
|
|
578
|
+
When: `{"equals":{"fact":"interaction.has_character_shortcuts","value":true}}`
|
|
579
|
+
|
|
580
|
+
Outcomes: semantics.keyboard.
|
|
581
|
+
|
|
582
|
+
Evidence: unit, e2e.
|
|
583
|
+
|
|
584
|
+
## applicability.orientation-sensory
|
|
585
|
+
|
|
586
|
+
When: `{"equals":{"fact":"content.uses_orientation_or_sensory_cues","value":true}}`
|
|
587
|
+
|
|
588
|
+
Outcomes: semantics.name-role-value.
|
|
589
|
+
|
|
590
|
+
Evidence: human.
|
|
591
|
+
|
|
592
|
+
## applicability.target-size
|
|
593
|
+
|
|
594
|
+
When: `{"equals":{"fact":"interaction.has_pointer_targets","value":true}}`
|
|
595
|
+
|
|
596
|
+
Outcomes: semantics.target-size.
|
|
597
|
+
|
|
598
|
+
Evidence: e2e, human.
|
|
599
|
+
|
|
600
|
+
## applicability.focus-obstruction
|
|
601
|
+
|
|
602
|
+
When: `{"equals":{"fact":"interaction.can_obscure_focus","value":true}}`
|
|
603
|
+
|
|
604
|
+
Outcomes: semantics.focus.visible.
|
|
605
|
+
|
|
606
|
+
Evidence: e2e, human.
|
|
607
|
+
|
|
608
|
+
## applicability.authentication-captcha
|
|
609
|
+
|
|
610
|
+
When: `{"equals":{"fact":"flow.has_authentication","value":true}}`
|
|
611
|
+
|
|
612
|
+
Outcomes: semantics.form-label, semantics.form-error.
|
|
613
|
+
|
|
614
|
+
Evidence: axe, e2e, human.
|
|
615
|
+
|
|
616
|
+
## applicability.redundant-entry
|
|
617
|
+
|
|
618
|
+
When: `{"equals":{"fact":"flow.repeats_entry","value":true}}`
|
|
619
|
+
|
|
620
|
+
Outcomes: semantics.form-label.
|
|
621
|
+
|
|
622
|
+
Evidence: e2e, human.
|
|
623
|
+
|
|
624
|
+
## applicability.consistent-help
|
|
625
|
+
|
|
626
|
+
When: `{"equals":{"fact":"artifact.has_help","value":true}}`
|
|
627
|
+
|
|
628
|
+
Outcomes: semantics.landmarks.
|
|
629
|
+
|
|
630
|
+
Evidence: human.
|
|
631
|
+
|
|
632
|
+
## applicability.locale-bidi
|
|
633
|
+
|
|
634
|
+
When: `{"equals":{"fact":"content.has_locale_or_bidi","value":true}}`
|
|
635
|
+
|
|
636
|
+
Outcomes: semantics.native-elements.
|
|
637
|
+
|
|
638
|
+
Evidence: unit, human.
|
|
639
|
+
|
|
640
|
+
## applicability.data-table-grid
|
|
641
|
+
|
|
642
|
+
When: `{"equals":{"fact":"component.has_data_table_or_grid","value":true}}`
|
|
643
|
+
|
|
644
|
+
Outcomes: semantics.data-table.
|
|
645
|
+
|
|
646
|
+
Evidence: axe, e2e, human.
|
|
647
|
+
|
|
648
|
+
## policy.enhanced-quality
|
|
649
|
+
|
|
650
|
+
Enhanced guidance is advisory and cannot be represented as a conformance failure unless the consumer explicitly adopts it as product policy.
|
|
651
|
+
|
|
652
|
+
## policy.target-size
|
|
653
|
+
|
|
654
|
+
Enforce WCAG 2.5.8 at 24 by 24 CSS pixels or a documented exception; report 44 by 44 as enhanced guidance, never as the AA minimum.
|
|
655
|
+
|
|
656
|
+
## Evidence routing
|
|
657
|
+
|
|
658
|
+
Tool availability changes the evidence route, never requirement applicability. A missing required capability is a blocker.
|
|
659
|
+
|
|
660
|
+
- unit: semantic state and deterministic resolver behavior; capability: unit
|
|
661
|
+
- axe: automated rule evidence; capability: axe
|
|
662
|
+
- e2e: keyboard, focus, and integrated behavior; capability: e2e
|
|
663
|
+
- human: judgment, assistive technology, content, and visual evidence; capability: human
|