@verndale/accessibility-standards 1.0.0 → 2.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.
Files changed (124) hide show
  1. package/OPERATING.md +2 -0
  2. package/README.md +4 -0
  3. package/bin/accessibility-standards.mjs +1 -1
  4. package/dist/manifest.json +39 -21
  5. package/dist/profiles/ai-orchestration/coverage-manifest.json +109 -2
  6. package/dist/profiles/ai-orchestration/implementation/accessibility.md +334 -0
  7. package/dist/profiles/ai-orchestration/pattern-contracts.json +125 -39
  8. package/dist/profiles/ai-orchestration/patterns/accordion.md +9 -0
  9. package/dist/profiles/ai-orchestration/patterns/alert.md +9 -0
  10. package/dist/profiles/ai-orchestration/patterns/carousel.md +9 -0
  11. package/dist/profiles/ai-orchestration/patterns/combobox.md +9 -0
  12. package/dist/profiles/ai-orchestration/patterns/consequential-submission.md +9 -0
  13. package/dist/profiles/ai-orchestration/patterns/dialog.md +9 -0
  14. package/dist/profiles/ai-orchestration/patterns/disclosure.md +9 -0
  15. package/dist/profiles/ai-orchestration/patterns/dynamic-status.md +9 -0
  16. package/dist/profiles/ai-orchestration/patterns/field.md +9 -0
  17. package/dist/profiles/ai-orchestration/patterns/image.md +9 -0
  18. package/dist/profiles/ai-orchestration/patterns/listbox.md +9 -0
  19. package/dist/profiles/ai-orchestration/patterns/media-player.md +9 -0
  20. package/dist/profiles/ai-orchestration/patterns/menu-button.md +9 -0
  21. package/dist/profiles/ai-orchestration/patterns/pagination.md +9 -0
  22. package/dist/profiles/ai-orchestration/patterns/popover.md +9 -0
  23. package/dist/profiles/ai-orchestration/patterns/progress.md +9 -0
  24. package/dist/profiles/ai-orchestration/patterns/tabs.md +9 -0
  25. package/dist/profiles/ai-orchestration/patterns/tooltip.md +9 -0
  26. package/dist/profiles/ai-orchestration/patterns/validation.md +9 -0
  27. package/dist/profiles/ai-orchestration/review/accessibility.md +8 -1
  28. package/dist/profiles/ai-orchestration/semantics/accessible-name.md +1 -0
  29. package/dist/profiles/ai-orchestration/semantics/alert.md +1 -0
  30. package/dist/profiles/ai-orchestration/semantics/consequential-action.md +1 -0
  31. package/dist/profiles/ai-orchestration/semantics/data-table.md +1 -0
  32. package/dist/profiles/ai-orchestration/semantics/expanded-state.md +1 -0
  33. package/dist/profiles/ai-orchestration/semantics/focus.initial.md +1 -0
  34. package/dist/profiles/ai-orchestration/semantics/focus.return.md +1 -0
  35. package/dist/profiles/ai-orchestration/semantics/focus.visible.md +1 -0
  36. package/dist/profiles/ai-orchestration/semantics/form-error.md +1 -0
  37. package/dist/profiles/ai-orchestration/semantics/form-label.md +1 -0
  38. package/dist/profiles/ai-orchestration/semantics/form-required.md +1 -0
  39. package/dist/profiles/ai-orchestration/semantics/headings.md +1 -0
  40. package/dist/profiles/ai-orchestration/semantics/keyboard.escape.md +1 -0
  41. package/dist/profiles/ai-orchestration/semantics/keyboard.md +1 -0
  42. package/dist/profiles/ai-orchestration/semantics/landmarks.md +1 -0
  43. package/dist/profiles/ai-orchestration/semantics/live-status.md +1 -0
  44. package/dist/profiles/ai-orchestration/semantics/media-alternatives.md +1 -0
  45. package/dist/profiles/ai-orchestration/semantics/motion-control.md +1 -0
  46. package/dist/profiles/ai-orchestration/semantics/name-role-value.md +1 -0
  47. package/dist/profiles/ai-orchestration/semantics/native-dialog.md +1 -0
  48. package/dist/profiles/ai-orchestration/semantics/native-elements.md +1 -0
  49. package/dist/profiles/ai-orchestration/semantics/non-text-alternative.md +1 -0
  50. package/dist/profiles/ai-orchestration/semantics/roles-states-properties.md +1 -0
  51. package/dist/profiles/ai-orchestration/semantics/selected-state.md +1 -0
  52. package/dist/profiles/ai-orchestration/semantics/target-size.md +1 -0
  53. package/dist/profiles/ai-orchestration/semantics.json +48 -1
  54. package/dist/profiles/ai-orchestration/testing/accessibility.md +1 -1
  55. package/dist/profiles/ai-orchestration/ui-design-brain-bindings.json +856 -0
  56. package/dist/profiles/conductor/a11y-semantics.md +22 -1
  57. package/dist/profiles/conductor/accessibility-quality.md +314 -0
  58. package/dist/profiles/conductor/applicability-matrix.json +111 -28
  59. package/dist/profiles/conductor/coverage-manifest.json +109 -2
  60. package/dist/profiles/conductor/pattern-contracts.json +125 -39
  61. package/dist/profiles/conductor/patterns/accordion.json +13 -3
  62. package/dist/profiles/conductor/patterns/alert.json +13 -3
  63. package/dist/profiles/conductor/patterns/carousel.json +13 -3
  64. package/dist/profiles/conductor/patterns/combobox.json +13 -3
  65. package/dist/profiles/conductor/patterns/consequential-submission.json +13 -3
  66. package/dist/profiles/conductor/patterns/dialog.json +13 -3
  67. package/dist/profiles/conductor/patterns/disclosure.json +13 -3
  68. package/dist/profiles/conductor/patterns/dynamic-status.json +13 -3
  69. package/dist/profiles/conductor/patterns/field.json +23 -3
  70. package/dist/profiles/conductor/patterns/image.json +23 -3
  71. package/dist/profiles/conductor/patterns/listbox.json +13 -3
  72. package/dist/profiles/conductor/patterns/media-player.json +23 -3
  73. package/dist/profiles/conductor/patterns/menu-button.json +13 -3
  74. package/dist/profiles/conductor/patterns/pagination.json +13 -3
  75. package/dist/profiles/conductor/patterns/popover.json +13 -3
  76. package/dist/profiles/conductor/patterns/progress.json +13 -3
  77. package/dist/profiles/conductor/patterns/tabs.json +13 -3
  78. package/dist/profiles/conductor/patterns/tooltip.json +13 -3
  79. package/dist/profiles/conductor/patterns/validation.json +23 -3
  80. package/dist/profiles/conductor/semantics.json +48 -1
  81. package/dist/profiles/conductor/ui-design-brain-bindings.json +856 -0
  82. package/dist/projection-manifest.json +103 -78
  83. package/dist/requirements-to-implementation.md +2 -0
  84. package/lib/build-manifest.mjs +12 -6
  85. package/lib/build.mjs +19 -5
  86. package/lib/compile-applicability.mjs +131 -10
  87. package/lib/coverage.mjs +20 -0
  88. package/lib/index.mjs +1 -1
  89. package/lib/load.mjs +31 -1
  90. package/lib/provenance.mjs +49 -0
  91. package/lib/render.mjs +69 -29
  92. package/lib/sync.mjs +240 -26
  93. package/lib/validate.mjs +255 -24
  94. package/package.json +24 -11
  95. package/profiles/ai-orchestration/profile.json +1 -1
  96. package/profiles/conductor/profile.json +1 -1
  97. package/schemas/consumer-config.schema.json +1 -1
  98. package/schemas/contract.schema.json +1 -0
  99. package/schemas/manifest.schema.json +1 -1
  100. package/schemas/projection-manifest.schema.json +84 -1
  101. package/schemas/ui-design-brain-bindings.schema.json +86 -0
  102. package/src/applicability/facts.yml +29 -1
  103. package/src/applicability/matrix.yml +3 -2
  104. package/src/applicability/ui-design-brain-bindings.yml +210 -0
  105. package/src/contract.yml +1 -0
  106. package/src/patterns/disclosure/accordion.yml +1 -1
  107. package/src/patterns/disclosure/disclosure.yml +1 -1
  108. package/src/patterns/feedback/alert.yml +1 -1
  109. package/src/patterns/feedback/dynamic-status.yml +1 -1
  110. package/src/patterns/feedback/progress.yml +1 -1
  111. package/src/patterns/forms/consequential-submission.yml +1 -1
  112. package/src/patterns/forms/field.yml +1 -1
  113. package/src/patterns/forms/validation.yml +1 -1
  114. package/src/patterns/media/carousel.yml +1 -1
  115. package/src/patterns/media/image.yml +1 -1
  116. package/src/patterns/media/media-player.yml +1 -1
  117. package/src/patterns/navigation/menu-button.yml +1 -1
  118. package/src/patterns/navigation/pagination.yml +1 -1
  119. package/src/patterns/navigation/tabs.yml +1 -1
  120. package/src/patterns/overlays/dialog.yml +1 -1
  121. package/src/patterns/overlays/popover.yml +1 -1
  122. package/src/patterns/overlays/tooltip.yml +1 -1
  123. package/src/patterns/selection/combobox.yml +1 -1
  124. package/src/patterns/selection/listbox.yml +1 -1
@@ -1,6 +1,14 @@
1
1
  {
2
2
  "_generated": "GENERATED by @verndale/accessibility-standards; DO NOT EDIT",
3
- "schema_version": 1,
3
+ "_provenance": {
4
+ "package": "@verndale/accessibility-standards@2.0.0",
5
+ "profile": "conductor",
6
+ "profile_version": "2.0.0",
7
+ "profile_digest": "4840ac3a4910f8dc3a850df266a141e0e4df94ca3c8935ae4531c56f6be91e65",
8
+ "schema_version": 2,
9
+ "source_digest": "e4bf4272751c21e417ddd3e6c52308bf804fab097629ba843964532e7f97d9f0"
10
+ },
11
+ "schema_version": 2,
4
12
  "pattern": {
5
13
  "id": "pattern.media-player",
6
14
  "version": "1.0.0",
@@ -14,8 +22,20 @@
14
22
  "semantics.motion-control"
15
23
  ],
16
24
  "activation": {
17
- "fact": "content.has_media",
18
- "equals": true
25
+ "any": [
26
+ {
27
+ "contains": {
28
+ "fact": "component.accessibility_pattern_ids",
29
+ "value": "pattern.media-player"
30
+ }
31
+ },
32
+ {
33
+ "equals": {
34
+ "fact": "content.has_media",
35
+ "value": true
36
+ }
37
+ }
38
+ ]
19
39
  },
20
40
  "scope": "Audio or video playback",
21
41
  "behavior": [
@@ -1,6 +1,14 @@
1
1
  {
2
2
  "_generated": "GENERATED by @verndale/accessibility-standards; DO NOT EDIT",
3
- "schema_version": 1,
3
+ "_provenance": {
4
+ "package": "@verndale/accessibility-standards@2.0.0",
5
+ "profile": "conductor",
6
+ "profile_version": "2.0.0",
7
+ "profile_digest": "4840ac3a4910f8dc3a850df266a141e0e4df94ca3c8935ae4531c56f6be91e65",
8
+ "schema_version": 2,
9
+ "source_digest": "e4bf4272751c21e417ddd3e6c52308bf804fab097629ba843964532e7f97d9f0"
10
+ },
11
+ "schema_version": 2,
4
12
  "pattern": {
5
13
  "id": "pattern.menu-button",
6
14
  "version": "1.0.0",
@@ -14,8 +22,10 @@
14
22
  "semantics.focus.return"
15
23
  ],
16
24
  "activation": {
17
- "fact": "component.pattern",
18
- "equals": "menu-button"
25
+ "contains": {
26
+ "fact": "component.accessibility_pattern_ids",
27
+ "value": "pattern.menu-button"
28
+ }
19
29
  },
20
30
  "scope": "Button opening a command menu",
21
31
  "behavior": [
@@ -1,6 +1,14 @@
1
1
  {
2
2
  "_generated": "GENERATED by @verndale/accessibility-standards; DO NOT EDIT",
3
- "schema_version": 1,
3
+ "_provenance": {
4
+ "package": "@verndale/accessibility-standards@2.0.0",
5
+ "profile": "conductor",
6
+ "profile_version": "2.0.0",
7
+ "profile_digest": "4840ac3a4910f8dc3a850df266a141e0e4df94ca3c8935ae4531c56f6be91e65",
8
+ "schema_version": 2,
9
+ "source_digest": "e4bf4272751c21e417ddd3e6c52308bf804fab097629ba843964532e7f97d9f0"
10
+ },
11
+ "schema_version": 2,
4
12
  "pattern": {
5
13
  "id": "pattern.pagination",
6
14
  "version": "1.0.0",
@@ -13,8 +21,10 @@
13
21
  "semantics.focus.visible"
14
22
  ],
15
23
  "activation": {
16
- "fact": "component.pattern",
17
- "equals": "pagination"
24
+ "contains": {
25
+ "fact": "component.accessibility_pattern_ids",
26
+ "value": "pattern.pagination"
27
+ }
18
28
  },
19
29
  "scope": "Paged result navigation",
20
30
  "behavior": [
@@ -1,6 +1,14 @@
1
1
  {
2
2
  "_generated": "GENERATED by @verndale/accessibility-standards; DO NOT EDIT",
3
- "schema_version": 1,
3
+ "_provenance": {
4
+ "package": "@verndale/accessibility-standards@2.0.0",
5
+ "profile": "conductor",
6
+ "profile_version": "2.0.0",
7
+ "profile_digest": "4840ac3a4910f8dc3a850df266a141e0e4df94ca3c8935ae4531c56f6be91e65",
8
+ "schema_version": 2,
9
+ "source_digest": "e4bf4272751c21e417ddd3e6c52308bf804fab097629ba843964532e7f97d9f0"
10
+ },
11
+ "schema_version": 2,
4
12
  "pattern": {
5
13
  "id": "pattern.popover",
6
14
  "version": "1.0.0",
@@ -13,8 +21,10 @@
13
21
  "semantics.focus.return"
14
22
  ],
15
23
  "activation": {
16
- "fact": "component.pattern",
17
- "equals": "popover"
24
+ "contains": {
25
+ "fact": "component.accessibility_pattern_ids",
26
+ "value": "pattern.popover"
27
+ }
18
28
  },
19
29
  "scope": "Non-modal transient surface",
20
30
  "behavior": [
@@ -1,6 +1,14 @@
1
1
  {
2
2
  "_generated": "GENERATED by @verndale/accessibility-standards; DO NOT EDIT",
3
- "schema_version": 1,
3
+ "_provenance": {
4
+ "package": "@verndale/accessibility-standards@2.0.0",
5
+ "profile": "conductor",
6
+ "profile_version": "2.0.0",
7
+ "profile_digest": "4840ac3a4910f8dc3a850df266a141e0e4df94ca3c8935ae4531c56f6be91e65",
8
+ "schema_version": 2,
9
+ "source_digest": "e4bf4272751c21e417ddd3e6c52308bf804fab097629ba843964532e7f97d9f0"
10
+ },
11
+ "schema_version": 2,
4
12
  "pattern": {
5
13
  "id": "pattern.progress",
6
14
  "version": "1.0.0",
@@ -11,8 +19,10 @@
11
19
  "semantics.live-status"
12
20
  ],
13
21
  "activation": {
14
- "fact": "component.pattern",
15
- "equals": "progress"
22
+ "contains": {
23
+ "fact": "component.accessibility_pattern_ids",
24
+ "value": "pattern.progress"
25
+ }
16
26
  },
17
27
  "scope": "Determinate or indeterminate progress",
18
28
  "behavior": [
@@ -1,6 +1,14 @@
1
1
  {
2
2
  "_generated": "GENERATED by @verndale/accessibility-standards; DO NOT EDIT",
3
- "schema_version": 1,
3
+ "_provenance": {
4
+ "package": "@verndale/accessibility-standards@2.0.0",
5
+ "profile": "conductor",
6
+ "profile_version": "2.0.0",
7
+ "profile_digest": "4840ac3a4910f8dc3a850df266a141e0e4df94ca3c8935ae4531c56f6be91e65",
8
+ "schema_version": 2,
9
+ "source_digest": "e4bf4272751c21e417ddd3e6c52308bf804fab097629ba843964532e7f97d9f0"
10
+ },
11
+ "schema_version": 2,
4
12
  "pattern": {
5
13
  "id": "pattern.tabs",
6
14
  "version": "1.0.0",
@@ -13,8 +21,10 @@
13
21
  "semantics.focus.visible"
14
22
  ],
15
23
  "activation": {
16
- "fact": "component.pattern",
17
- "equals": "tabs"
24
+ "contains": {
25
+ "fact": "component.accessibility_pattern_ids",
26
+ "value": "pattern.tabs"
27
+ }
18
28
  },
19
29
  "scope": "Tabbed interfaces",
20
30
  "behavior": [
@@ -1,6 +1,14 @@
1
1
  {
2
2
  "_generated": "GENERATED by @verndale/accessibility-standards; DO NOT EDIT",
3
- "schema_version": 1,
3
+ "_provenance": {
4
+ "package": "@verndale/accessibility-standards@2.0.0",
5
+ "profile": "conductor",
6
+ "profile_version": "2.0.0",
7
+ "profile_digest": "4840ac3a4910f8dc3a850df266a141e0e4df94ca3c8935ae4531c56f6be91e65",
8
+ "schema_version": 2,
9
+ "source_digest": "e4bf4272751c21e417ddd3e6c52308bf804fab097629ba843964532e7f97d9f0"
10
+ },
11
+ "schema_version": 2,
4
12
  "pattern": {
5
13
  "id": "pattern.tooltip",
6
14
  "version": "1.0.0",
@@ -11,8 +19,10 @@
11
19
  "semantics.keyboard.escape"
12
20
  ],
13
21
  "activation": {
14
- "fact": "component.pattern",
15
- "equals": "tooltip"
22
+ "contains": {
23
+ "fact": "component.accessibility_pattern_ids",
24
+ "value": "pattern.tooltip"
25
+ }
16
26
  },
17
27
  "scope": "Supplementary description",
18
28
  "behavior": [
@@ -1,6 +1,14 @@
1
1
  {
2
2
  "_generated": "GENERATED by @verndale/accessibility-standards; DO NOT EDIT",
3
- "schema_version": 1,
3
+ "_provenance": {
4
+ "package": "@verndale/accessibility-standards@2.0.0",
5
+ "profile": "conductor",
6
+ "profile_version": "2.0.0",
7
+ "profile_digest": "4840ac3a4910f8dc3a850df266a141e0e4df94ca3c8935ae4531c56f6be91e65",
8
+ "schema_version": 2,
9
+ "source_digest": "e4bf4272751c21e417ddd3e6c52308bf804fab097629ba843964532e7f97d9f0"
10
+ },
11
+ "schema_version": 2,
4
12
  "pattern": {
5
13
  "id": "pattern.validation",
6
14
  "version": "1.0.0",
@@ -12,8 +20,20 @@
12
20
  "semantics.focus.initial"
13
21
  ],
14
22
  "activation": {
15
- "fact": "component.has_validation",
16
- "equals": true
23
+ "any": [
24
+ {
25
+ "contains": {
26
+ "fact": "component.accessibility_pattern_ids",
27
+ "value": "pattern.validation"
28
+ }
29
+ },
30
+ {
31
+ "equals": {
32
+ "fact": "component.has_validation",
33
+ "value": true
34
+ }
35
+ }
36
+ ]
17
37
  },
18
38
  "scope": "Client or server validation",
19
39
  "behavior": [
@@ -1,6 +1,37 @@
1
1
  {
2
2
  "_generated": "GENERATED by @verndale/accessibility-standards; DO NOT EDIT",
3
- "schema_version": 1,
3
+ "_provenance": {
4
+ "package": "@verndale/accessibility-standards@2.0.0",
5
+ "profile": "conductor",
6
+ "profile_version": "2.0.0",
7
+ "profile_digest": "4840ac3a4910f8dc3a850df266a141e0e4df94ca3c8935ae4531c56f6be91e65",
8
+ "schema_version": 2,
9
+ "source_digest": "e4bf4272751c21e417ddd3e6c52308bf804fab097629ba843964532e7f97d9f0"
10
+ },
11
+ "schema_version": 2,
12
+ "foundations": [
13
+ {
14
+ "id": "foundation.conformance-boundary",
15
+ "version": "1.0.0",
16
+ "title": "Conformance boundary",
17
+ "kind": "foundation",
18
+ "requirement": "Automated checks provide evidence but do not establish conformance; every applicable outcome needs its declared proof routes."
19
+ },
20
+ {
21
+ "id": "foundation.standards-hierarchy",
22
+ "version": "1.0.0",
23
+ "title": "Standards hierarchy",
24
+ "kind": "foundation",
25
+ "requirement": "Prefer native platform semantics; apply WCAG conformance, ARIA only where needed, APG interaction guidance, then non-conflicting product policy."
26
+ },
27
+ {
28
+ "id": "foundation.wcag-2.2",
29
+ "version": "1.0.0",
30
+ "title": "WCAG 2.2 AA baseline",
31
+ "kind": "foundation",
32
+ "requirement": "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."
33
+ }
34
+ ],
4
35
  "semantics": [
5
36
  {
6
37
  "id": "semantics.accessible-name",
@@ -285,5 +316,21 @@
285
316
  "human"
286
317
  ]
287
318
  }
319
+ ],
320
+ "policies": [
321
+ {
322
+ "id": "policy.enhanced-quality",
323
+ "version": "1.0.0",
324
+ "title": "Enhanced quality",
325
+ "kind": "policy",
326
+ "requirement": "Enhanced guidance is advisory and cannot be represented as a conformance failure unless the consumer explicitly adopts it as product policy."
327
+ },
328
+ {
329
+ "id": "policy.target-size",
330
+ "version": "1.0.0",
331
+ "title": "Target size policy",
332
+ "kind": "policy",
333
+ "requirement": "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."
334
+ }
288
335
  ]
289
336
  }