160 lines
6.3 KiB
JSON
Executable file
160 lines
6.3 KiB
JSON
Executable file
{
|
|
"updated_at": "2026-02-22T00:00:00.000Z",
|
|
"scope": "8.0 Experience Polish Track",
|
|
"workflows": [
|
|
{
|
|
"id": "runboard_triage_and_drilldown",
|
|
"title": "Runboard triage and drill-down",
|
|
"primary_surface": "Runboard",
|
|
"goal": "Operators can filter, inspect, and remediate runs without ambiguous labels or inaccessible state transitions.",
|
|
"required_dimensions": ["labels"],
|
|
"checks": [
|
|
{
|
|
"dimension": "labels",
|
|
"type": "component",
|
|
"path": "scriptoriumai-ui/src/__tests__/Runboard.states.test.tsx",
|
|
"focus": "Filter controls expose accessible labels for status, kind, and project selectors."
|
|
},
|
|
{
|
|
"dimension": "labels",
|
|
"type": "e2e",
|
|
"path": "scriptoriumai-ui/tests/e2e/runboard-remediation.spec.ts",
|
|
"focus": "Core remediation and artifact drill-down flows remain executable end-to-end on the runboard surface."
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "corpus_graph_root_exploration",
|
|
"title": "Corpus graph root exploration",
|
|
"primary_surface": "CorpusGraph",
|
|
"goal": "Core graph filters and traversal controls remain discoverable and labeled for keyboard/screen-reader navigation.",
|
|
"required_dimensions": ["labels"],
|
|
"checks": [
|
|
{
|
|
"dimension": "labels",
|
|
"type": "a11y",
|
|
"path": "scriptoriumai-ui/src/__tests__/CorpusGraph.a11y.test.tsx",
|
|
"focus": "Root selection, traversal, relation filters, and drift controls are label-bound."
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "command_surfaces_overlay_navigation",
|
|
"title": "Command surfaces overlay navigation",
|
|
"primary_surface": "Command Palette + Shortcuts Modal",
|
|
"goal": "Overlay command surfaces preserve keyboard focus order, trap tab navigation, and restore focus on close.",
|
|
"required_dimensions": ["focus_order", "keyboard_trap", "focus_restore"],
|
|
"checks": [
|
|
{
|
|
"dimension": "focus_order",
|
|
"type": "a11y",
|
|
"path": "scriptoriumai-ui/src/__tests__/command-palette.a11y.test.tsx",
|
|
"focus": "Command palette opens with deterministic initial focus on the search input."
|
|
},
|
|
{
|
|
"dimension": "focus_restore",
|
|
"type": "a11y",
|
|
"path": "scriptoriumai-ui/src/__tests__/command-palette.a11y.test.tsx",
|
|
"focus": "Command palette restores focus to the invoking control on escape-close."
|
|
},
|
|
{
|
|
"dimension": "focus_order",
|
|
"type": "a11y",
|
|
"path": "scriptoriumai-ui/src/__tests__/keyboard-shortcuts-modal.a11y.test.tsx",
|
|
"focus": "Shortcuts dialog establishes deterministic tab order across dialog controls."
|
|
},
|
|
{
|
|
"dimension": "keyboard_trap",
|
|
"type": "a11y",
|
|
"path": "scriptoriumai-ui/src/__tests__/keyboard-shortcuts-modal.a11y.test.tsx",
|
|
"focus": "Shortcuts dialog traps tab/shift+tab navigation within the dialog."
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "editor_glyph_manager_accessibility_loop",
|
|
"title": "Editor glyph manager accessibility loop",
|
|
"primary_surface": "EditorPanel glyph manager",
|
|
"goal": "Glyph insertion/management UI exposes labeled controls and deterministic focus behavior during open/close cycles.",
|
|
"required_dimensions": ["labels", "focus_order", "focus_restore"],
|
|
"checks": [
|
|
{
|
|
"dimension": "labels",
|
|
"type": "a11y",
|
|
"path": "scriptoriumai-ui/src/__tests__/EditorPanel.a11y.test.tsx",
|
|
"focus": "Glyph controls and manager fields expose explicit labels and named region semantics."
|
|
},
|
|
{
|
|
"dimension": "focus_order",
|
|
"type": "a11y",
|
|
"path": "scriptoriumai-ui/src/__tests__/EditorPanel.a11y.test.tsx",
|
|
"focus": "Glyph manager opens with deterministic focus on the first managed field."
|
|
},
|
|
{
|
|
"dimension": "focus_restore",
|
|
"type": "a11y",
|
|
"path": "scriptoriumai-ui/src/__tests__/EditorPanel.a11y.test.tsx",
|
|
"focus": "Escape-close restores focus to the glyph manager toggle control."
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"contrast_checks": [
|
|
{
|
|
"id": "panel_text_main",
|
|
"description": "Primary panel body text on standard cross-corpus panel surface.",
|
|
"foreground_var": "--cc-color-text-main",
|
|
"background_var": "--cc-color-panel-bg",
|
|
"backdrop_var": "--cc-color-panel-bg-subtle",
|
|
"min_ratio": 4.5
|
|
},
|
|
{
|
|
"id": "panel_text_muted",
|
|
"description": "Muted supporting text on standard cross-corpus panel surface.",
|
|
"foreground_var": "--cc-color-text-muted",
|
|
"background_var": "--cc-color-panel-bg",
|
|
"backdrop_var": "--cc-color-panel-bg-subtle",
|
|
"min_ratio": 4.5
|
|
},
|
|
{
|
|
"id": "status_neutral_pill",
|
|
"description": "Neutral status-pill text on status-pill background over panel surface.",
|
|
"foreground_var": "--cc-status-neutral-fg",
|
|
"background_var": "--cc-status-neutral-bg",
|
|
"backdrop_var": "--cc-color-panel-bg-subtle",
|
|
"min_ratio": 4.5
|
|
},
|
|
{
|
|
"id": "status_info_pill",
|
|
"description": "Info status-pill text on status-pill background over panel surface.",
|
|
"foreground_var": "--cc-status-info-fg",
|
|
"background_var": "--cc-status-info-bg",
|
|
"backdrop_var": "--cc-color-panel-bg-subtle",
|
|
"min_ratio": 4.5
|
|
},
|
|
{
|
|
"id": "status_success_pill",
|
|
"description": "Success status-pill text on status-pill background over panel surface.",
|
|
"foreground_var": "--cc-status-success-fg",
|
|
"background_var": "--cc-status-success-bg",
|
|
"backdrop_var": "--cc-color-panel-bg-subtle",
|
|
"min_ratio": 4.5
|
|
},
|
|
{
|
|
"id": "status_warning_pill",
|
|
"description": "Warning status-pill text on status-pill background over panel surface.",
|
|
"foreground_var": "--cc-status-warning-fg",
|
|
"background_var": "--cc-status-warning-bg",
|
|
"backdrop_var": "--cc-color-panel-bg-subtle",
|
|
"min_ratio": 4.5
|
|
},
|
|
{
|
|
"id": "status_danger_pill",
|
|
"description": "Danger status-pill text on status-pill background over panel surface.",
|
|
"foreground_var": "--cc-status-danger-fg",
|
|
"background_var": "--cc-status-danger-bg",
|
|
"backdrop_var": "--cc-color-panel-bg-subtle",
|
|
"min_ratio": 4.5
|
|
}
|
|
]
|
|
}
|