diff --git a/docs/modules/concelier/operations/source-credentials.md b/docs/modules/concelier/operations/source-credentials.md index 76f25d4f8..66054c3fa 100644 --- a/docs/modules/concelier/operations/source-credentials.md +++ b/docs/modules/concelier/operations/source-credentials.md @@ -29,6 +29,16 @@ Then: Sensitive fields never round-trip back to the browser. A stored secret is shown only as retained state. Leaving a password field blank keeps the retained secret. Explicitly checking the clear control removes the stored secret. +### Blocked or sleeping sources + +If an operator enables a source that still lacks required credentials or required URIs, Concelier now preserves the enable intent but marks the source as `blocked` instead of pretending it is runnable. + +- `enabled=true` means the operator wants the source scheduled once it becomes usable. +- `syncState=blocked` means the source is intentionally on hold because required configuration is still missing. +- Manual or batch sync attempts will report that the source is blocked and will echo the missing-configuration reason, typically `SOURCE_CONFIG_REQUIRED`. + +This is the expected state for credential-gated sources that have been selected before the upstream token or client-secret values are available. + ### CLI Inspect current persisted source configuration: diff --git a/src/Web/StellaOps.Web/docs/ACCESSIBILITY_AUDIT_BINARY_RESOLUTION.md b/src/Web/StellaOps.Web/docs/ACCESSIBILITY_AUDIT_BINARY_RESOLUTION.md deleted file mode 100644 index 85d21d5a2..000000000 --- a/src/Web/StellaOps.Web/docs/ACCESSIBILITY_AUDIT_BINARY_RESOLUTION.md +++ /dev/null @@ -1,259 +0,0 @@ -# Accessibility Audit: Binary Resolution UI - -**Sprint:** SPRINT_1227_0003_0001 (Backport-Aware Resolution UI) -**Task:** T10 — Accessibility audit -**Standard:** WCAG 2.1 Level AA - ---- - -## Scope - -This audit covers the following components: -- `ResolutionChipComponent` -- `EvidenceDrawerComponent` -- `FunctionDiffComponent` -- `AttestationViewerComponent` -- Updated `VulnerabilityDetailComponent` - ---- - -## Audit Results Summary - -| Criterion | Status | Notes | -|-----------|--------|-------| -| 1.1.1 Non-text Content | ✅ Pass | Icons have aria-hidden, text alternatives provided | -| 1.3.1 Info and Relationships | ✅ Pass | Semantic HTML, proper heading hierarchy | -| 1.4.1 Use of Color | ✅ Pass | Status not conveyed by color alone (text + icons) | -| 1.4.3 Contrast (Minimum) | ✅ Pass | All text meets 4.5:1 contrast ratio | -| 1.4.11 Non-text Contrast | ✅ Pass | UI components meet 3:1 ratio | -| 2.1.1 Keyboard | ✅ Pass | All functions keyboard accessible | -| 2.1.2 No Keyboard Trap | ✅ Pass | Escape closes drawer, Tab cycles through | -| 2.4.3 Focus Order | ✅ Pass | Logical tab order | -| 2.4.4 Link Purpose | ✅ Pass | Links have descriptive text | -| 2.4.6 Headings and Labels | ✅ Pass | Descriptive headings in drawer | -| 2.4.7 Focus Visible | ✅ Pass | Focus indicators visible | -| 4.1.2 Name, Role, Value | ✅ Pass | ARIA attributes properly set | - ---- - -## Detailed Findings - -### 1. ResolutionChipComponent - -#### Passes - -**1.1.1 Non-text Content** -```html - -``` -- Icons are decorative and marked with `aria-hidden="true"` -- Accessible text provided via `aria-label` on the chip - -**1.4.1 Use of Color** -- Status communicated via: - - Color (visual cue) - - Icon (🔍, ✅, ⚠️, ❓) - - Text label ("Fixed (backport)", "Vulnerable") - -**2.4.7 Focus Visible** -```scss -&:focus-within { - box-shadow: 0 0 0 2px currentColor; -} -``` -- Visible focus ring on chip interaction - -**4.1.2 Name, Role, Value** -```html - -``` -- `role="status"` for screen reader announcements -- Comprehensive `aria-label` including confidence percentage - ---- - -### 2. EvidenceDrawerComponent - -#### Passes - -**1.3.1 Info and Relationships** -```html - -``` -- Semantic `