From 84b575880dfe191b4c79732e949992989128093a Mon Sep 17 00:00:00 2001 From: KoiosSG Date: Wed, 27 May 2026 21:59:50 +0200 Subject: [PATCH] Add enterprise dashboard accessibility guard --- .../.gitignore | 3 + .../README.md | 33 +++ .../acceptance-notes.md | 24 ++ .../demo.js | 81 +++++++ .../index.js | 210 ++++++++++++++++++ .../make-demo-video.py | 136 ++++++++++++ .../package.json | 12 + .../reports/accessibility-report.md | 9 + .../reports/blocked-packet.json | 75 +++++++ .../reports/clean-packet.json | 22 ++ .../reports/demo.mp4 | Bin 0 -> 104275 bytes .../reports/summary.svg | 24 ++ .../reports/warning-packet.json | 29 +++ .../requirements-map.md | 16 ++ .../sample-data.js | 149 +++++++++++++ .../test.js | 62 ++++++ 16 files changed, 885 insertions(+) create mode 100644 enterprise-dashboard-accessibility-guard/.gitignore create mode 100644 enterprise-dashboard-accessibility-guard/README.md create mode 100644 enterprise-dashboard-accessibility-guard/acceptance-notes.md create mode 100644 enterprise-dashboard-accessibility-guard/demo.js create mode 100644 enterprise-dashboard-accessibility-guard/index.js create mode 100644 enterprise-dashboard-accessibility-guard/make-demo-video.py create mode 100644 enterprise-dashboard-accessibility-guard/package.json create mode 100644 enterprise-dashboard-accessibility-guard/reports/accessibility-report.md create mode 100644 enterprise-dashboard-accessibility-guard/reports/blocked-packet.json create mode 100644 enterprise-dashboard-accessibility-guard/reports/clean-packet.json create mode 100644 enterprise-dashboard-accessibility-guard/reports/demo.mp4 create mode 100644 enterprise-dashboard-accessibility-guard/reports/summary.svg create mode 100644 enterprise-dashboard-accessibility-guard/reports/warning-packet.json create mode 100644 enterprise-dashboard-accessibility-guard/requirements-map.md create mode 100644 enterprise-dashboard-accessibility-guard/sample-data.js create mode 100644 enterprise-dashboard-accessibility-guard/test.js diff --git a/enterprise-dashboard-accessibility-guard/.gitignore b/enterprise-dashboard-accessibility-guard/.gitignore new file mode 100644 index 00000000..75b3a515 --- /dev/null +++ b/enterprise-dashboard-accessibility-guard/.gitignore @@ -0,0 +1,3 @@ +frames/ +__pycache__/ +*.tmp diff --git a/enterprise-dashboard-accessibility-guard/README.md b/enterprise-dashboard-accessibility-guard/README.md new file mode 100644 index 00000000..8c82fa3a --- /dev/null +++ b/enterprise-dashboard-accessibility-guard/README.md @@ -0,0 +1,33 @@ +# Enterprise Dashboard Accessibility Guard + +Self-contained Enterprise Tooling slice for issue #19. + +This module evaluates institutional admin dashboard releases before they are shown to admins, included in scheduled exports, or summarized through webhook notices. It uses synthetic dashboard records only and does not call external accessibility scanners, SSO providers, webhook endpoints, or private institutional systems. + +## What It Checks + +- Critical metric color contrast +- Missing screen-reader labels +- Keyboard reachability and focus traps +- Private user or project data embedded in accessibility text +- Missing table and export summaries +- Heading-order skips +- Missing reduced-motion fallbacks for animated dashboard content + +## Commands + +```bash +npm run check +npm test +npm run demo +npm run demo:video +``` + +`npm run demo` writes JSON, Markdown, and SVG reviewer artifacts under `reports/`. `npm run demo:video` renders a short local MP4 walkthrough. + +## Safety + +- Synthetic sample data only +- No private dashboard data, SSO records, webhook calls, or network access +- No credentials, tokens, payment details, or institutional secrets +- Release decisions are guard outputs, not production enforcement actions diff --git a/enterprise-dashboard-accessibility-guard/acceptance-notes.md b/enterprise-dashboard-accessibility-guard/acceptance-notes.md new file mode 100644 index 00000000..6d94ec18 --- /dev/null +++ b/enterprise-dashboard-accessibility-guard/acceptance-notes.md @@ -0,0 +1,24 @@ +# Acceptance Notes + +- Adds `enterprise-dashboard-accessibility-guard/` as an independent module. +- Keeps all records synthetic and local. +- Uses dependency-free Node.js logic for deterministic dashboard release decisions. +- Covers blocked, clean, and warning-only dashboard states with tests. +- Generates reviewer artifacts: + - `reports/blocked-packet.json` + - `reports/clean-packet.json` + - `reports/warning-packet.json` + - `reports/accessibility-report.md` + - `reports/summary.svg` + - `reports/demo.mp4` + +## Local Validation + +Run: + +```bash +npm run check +npm test +npm run demo +npm run demo:video +``` diff --git a/enterprise-dashboard-accessibility-guard/demo.js b/enterprise-dashboard-accessibility-guard/demo.js new file mode 100644 index 00000000..36656709 --- /dev/null +++ b/enterprise-dashboard-accessibility-guard/demo.js @@ -0,0 +1,81 @@ +const fs = require('fs'); +const path = require('path'); + +const { assessDashboardRelease } = require('./index'); +const { blockedDashboard, cleanDashboard, warningDashboard } = require('./sample-data'); + +const reportsDir = path.join(__dirname, 'reports'); +fs.mkdirSync(reportsDir, { recursive: true }); + +const packets = [ + ['blocked-packet.json', assessDashboardRelease(blockedDashboard)], + ['clean-packet.json', assessDashboardRelease(cleanDashboard)], + ['warning-packet.json', assessDashboardRelease(warningDashboard)] +]; + +for (const [fileName, packet] of packets) { + fs.writeFileSync(path.join(reportsDir, fileName), `${JSON.stringify(packet, null, 2)}\n`); +} + +fs.writeFileSync(path.join(reportsDir, 'accessibility-report.md'), renderMarkdown(packets)); +fs.writeFileSync(path.join(reportsDir, 'summary.svg'), renderSvg(packets)); + +for (const [fileName, packet] of packets) { + console.log(`${fileName}: ${packet.status}; findings=${packet.findings.length}; digest=${packet.auditDigest.slice(0, 12)}`); +} + +function renderMarkdown(packetRows) { + const lines = [ + '# Enterprise Dashboard Accessibility Report', + '', + '| Packet | Status | Dashboard | Export | Webhook | Findings |', + '| --- | --- | --- | --- | --- | --- |' + ]; + + for (const [fileName, packet] of packetRows) { + lines.push([ + fileName, + packet.status, + packet.releaseLanes.adminDashboard, + packet.releaseLanes.scheduledExport, + packet.releaseLanes.webhookNotice, + packet.findings.map((finding) => finding.code).join(', ') || 'none' + ].join(' | ').replace(/^/, '| ').replace(/$/, ' |')); + } + + lines.push(''); + lines.push('All packets use synthetic dashboard records and deterministic SHA-256 audit digests.'); + return `${lines.join('\n')}\n`; +} + +function renderSvg(packetRows) { + const rows = packetRows.map(([, packet], index) => { + const y = 105 + index * 72; + const color = packet.status === 'hold_accessibility_release' ? '#dc2626' : packet.status === 'remediate_before_public_release' ? '#d97706' : '#16a34a'; + return ` + + + + ${escapeXml(packet.dashboardId)} + ${escapeXml(packet.status)} | findings ${packet.findings.length} | digest ${packet.auditDigest.slice(0, 16)} + `; + }).join(''); + + return [ + '', + ' ', + ' Enterprise Dashboard Accessibility Guard', + ' Institutional dashboards, exports, and webhook notices are gated before release.', + rows, + '', + '' + ].join('\n'); +} + +function escapeXml(value) { + return String(value) + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"'); +} diff --git a/enterprise-dashboard-accessibility-guard/index.js b/enterprise-dashboard-accessibility-guard/index.js new file mode 100644 index 00000000..ede63f3a --- /dev/null +++ b/enterprise-dashboard-accessibility-guard/index.js @@ -0,0 +1,210 @@ +const crypto = require('crypto'); + +function assessDashboardRelease(dashboard) { + const findings = [ + ...assessVisualAndOperableComponents(dashboard), + ...assessMotion(dashboard) + ]; + const blockerCount = findings.filter((finding) => finding.severity === 'blocker').length; + const warningCount = findings.filter((finding) => finding.severity === 'warning').length; + + const packet = { + dashboardId: dashboard.dashboardId, + institutionId: dashboard.institutionId, + status: chooseStatus(blockerCount, warningCount), + releaseLanes: chooseReleaseLanes(blockerCount, warningCount), + findings, + actions: buildActions(dashboard, findings), + wcagSignals: buildWcagSignals(findings), + assessedAt: dashboard.assessedAt + }; + + packet.auditDigest = digestPacket(packet); + return packet; +} + +function assessVisualAndOperableComponents(dashboard) { + const components = [ + ...(dashboard.widgets || []), + ...(dashboard.alerts || []), + ...(dashboard.exports || []) + ]; + const findings = []; + + for (const component of components) { + if (component.foreground && component.background) { + const contrast = contrastRatio(component.foreground, component.background); + if (component.critical && contrast < 4.5) { + findings.push(finding( + component, + 'LOW_CONTRAST_CRITICAL_METRIC', + 'blocker', + `Critical component contrast is ${contrast.toFixed(2)}:1, below the 4.5:1 release threshold.` + )); + } + } + + if (!component.screenReaderLabel || !component.screenReaderLabel.trim()) { + findings.push(finding(component, 'MISSING_SCREEN_READER_LABEL', 'blocker', 'Component lacks a meaningful screen-reader label.')); + } + + if (component.keyboardReachable === false || component.focusTrap) { + findings.push(finding(component, 'KEYBOARD_TRAP', 'blocker', 'Keyboard users cannot reach or leave this component predictably.')); + } + + if (component.ariaTextContainsPrivateData || containsPrivateData(component.screenReaderLabel)) { + findings.push(finding(component, 'PRIVATE_DATA_IN_ACCESSIBILITY_TEXT', 'blocker', 'Accessibility text exposes private user, lab, or project data.')); + } + + if ((component.type === 'table' || component.format) && !component.tableSummary) { + findings.push(finding(component, 'MISSING_TABLE_SUMMARY', 'blocker', 'Table or export output needs a concise nonvisual summary.')); + } + } + + findings.push(...assessHeadingOrder(components)); + return findings; +} + +function assessHeadingOrder(components) { + const findings = []; + let previousLevel = null; + + for (const component of components.filter((item) => item.headingLevel)) { + if (previousLevel !== null && component.headingLevel > previousLevel + 1) { + findings.push(finding(component, 'HEADING_ORDER_SKIP', 'warning', 'Heading order skips a level and may confuse screen-reader navigation.')); + } + previousLevel = component.headingLevel; + } + + return findings; +} + +function assessMotion(dashboard) { + if (dashboard.motion?.animatedCharts?.length && !dashboard.motion.reducedMotionFallback) { + return dashboard.motion.animatedCharts.map((componentId) => ({ + componentId, + code: 'MISSING_REDUCED_MOTION_FALLBACK', + severity: 'warning', + message: 'Animated dashboard content needs a reduced-motion fallback before public release.' + })); + } + return []; +} + +function finding(component, code, severity, message) { + return { + componentId: component.id, + code, + severity, + message + }; +} + +function chooseStatus(blockerCount, warningCount) { + if (blockerCount > 0) return 'hold_accessibility_release'; + if (warningCount > 0) return 'remediate_before_public_release'; + return 'release_with_accessibility_monitoring'; +} + +function chooseReleaseLanes(blockerCount, warningCount) { + if (blockerCount > 0) { + return { + adminDashboard: 'blocked', + scheduledExport: 'blocked', + webhookNotice: 'blocked' + }; + } + if (warningCount > 0) { + return { + adminDashboard: 'internal_only', + scheduledExport: 'blocked', + webhookNotice: 'internal_only' + }; + } + return { + adminDashboard: 'allowed', + scheduledExport: 'allowed', + webhookNotice: 'allowed' + }; +} + +function buildActions(dashboard, findings) { + if (!findings.length) return ['release_with_accessibility_monitoring']; + + const actions = new Set(); + const hasBlocker = findings.some((item) => item.severity === 'blocker'); + if (hasBlocker) actions.add(`block_release:${dashboard.dashboardId}`); + + for (const item of findings) { + if (item.code === 'MISSING_REDUCED_MOTION_FALLBACK') { + actions.add(`add_reduced_motion_fallback:${item.componentId}`); + } + if (item.code === 'MISSING_TABLE_SUMMARY') { + actions.add(`add_table_summary:${item.componentId}`); + } + if (item.code === 'MISSING_SCREEN_READER_LABEL') { + actions.add(`add_screen_reader_label:${item.componentId}`); + } + } + + return [...actions].sort(); +} + +function buildWcagSignals(findings) { + const codes = new Set(findings.map((finding) => finding.code)); + return { + perceivable: !codes.has('LOW_CONTRAST_CRITICAL_METRIC') && !codes.has('MISSING_TABLE_SUMMARY'), + operable: !codes.has('KEYBOARD_TRAP') && !codes.has('MISSING_REDUCED_MOTION_FALLBACK'), + understandable: !codes.has('PRIVATE_DATA_IN_ACCESSIBILITY_TEXT') && !codes.has('HEADING_ORDER_SKIP'), + robust: !codes.has('MISSING_SCREEN_READER_LABEL') + }; +} + +function contrastRatio(foreground, background) { + const fg = relativeLuminance(hexToRgb(foreground)); + const bg = relativeLuminance(hexToRgb(background)); + const lighter = Math.max(fg, bg); + const darker = Math.min(fg, bg); + return (lighter + 0.05) / (darker + 0.05); +} + +function hexToRgb(hex) { + const normalized = hex.replace('#', ''); + const bigint = parseInt(normalized, 16); + return { + r: (bigint >> 16) & 255, + g: (bigint >> 8) & 255, + b: bigint & 255 + }; +} + +function relativeLuminance({ r, g, b }) { + const channels = [r, g, b].map((channel) => { + const srgb = channel / 255; + return srgb <= 0.03928 ? srgb / 12.92 : ((srgb + 0.055) / 1.055) ** 2.4; + }); + return 0.2126 * channels[0] + 0.7152 * channels[1] + 0.0722 * channels[2]; +} + +function containsPrivateData(value = '') { + return /[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}|private lab|restricted project/i.test(value); +} + +function digestPacket(packet) { + return crypto.createHash('sha256').update(stableStringify(packet)).digest('hex'); +} + +function stableStringify(value) { + if (Array.isArray(value)) return `[${value.map(stableStringify).join(',')}]`; + if (value && typeof value === 'object') { + return `{${Object.keys(value) + .sort() + .map((key) => `${JSON.stringify(key)}:${stableStringify(value[key])}`) + .join(',')}}`; + } + return JSON.stringify(value); +} + +module.exports = { + assessDashboardRelease +}; diff --git a/enterprise-dashboard-accessibility-guard/make-demo-video.py b/enterprise-dashboard-accessibility-guard/make-demo-video.py new file mode 100644 index 00000000..8f779777 --- /dev/null +++ b/enterprise-dashboard-accessibility-guard/make-demo-video.py @@ -0,0 +1,136 @@ +from pathlib import Path +import subprocess +import sys + +from PIL import Image, ImageDraw, ImageFont + + +ROOT = Path(__file__).resolve().parent +REPORTS = ROOT / "reports" +FRAMES = ROOT / "frames" + + +def load_font(size): + candidates = [ + Path("C:/Windows/Fonts/arial.ttf"), + Path("C:/Windows/Fonts/segoeui.ttf"), + Path("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf"), + ] + for candidate in candidates: + if candidate.exists(): + return ImageFont.truetype(str(candidate), size=size) + return ImageFont.load_default() + + +def draw_frame(path, title, subtitle, accent, bullets): + image = Image.new("RGB", (1280, 720), "#111827") + draw = ImageDraw.Draw(image) + title_font = load_font(48) + subtitle_font = load_font(28) + bullet_font = load_font(25) + + draw.rectangle((0, 0, 1280, 18), fill=accent) + draw.text((70, 82), title, fill="#f9fafb", font=title_font) + draw.text((74, 154), subtitle, fill="#d1d5db", font=subtitle_font) + + y = 242 + for bullet in bullets: + draw.rounded_rectangle((84, y + 4, 106, y + 26), radius=5, fill=accent) + draw.text((130, y), bullet, fill="#e5e7eb", font=bullet_font) + y += 64 + + draw.text((74, 656), "Synthetic dashboard data only - no SSO, webhook, export, or private institution calls", fill="#9ca3af", font=load_font(20)) + image.save(path) + + +def main(): + REPORTS.mkdir(exist_ok=True) + FRAMES.mkdir(exist_ok=True) + + slides = [ + ( + "Enterprise Dashboard Accessibility Guard", + "Issue #19 admin dashboard release slice", + "#60a5fa", + [ + "Gates institutional dashboards before admin release", + "Checks contrast, labels, keyboard reachability, table summaries, and motion fallbacks", + "Keeps export and webhook lanes aligned with accessibility readiness", + ], + ), + ( + "Blocked Release", + "Critical accessibility and privacy issues", + "#ef4444", + [ + "Critical metrics fail contrast threshold", + "Screen-reader labels are missing or expose private data", + "Keyboard traps and missing table summaries block dashboard and export release", + ], + ), + ( + "Warning Release", + "Internal-only until remediated", + "#f59e0b", + [ + "Reduced-motion fallback is missing for animated charts", + "Dashboard and webhook notices stay internal-only", + "Scheduled exports remain blocked until the fallback is attached", + ], + ), + ( + "Clean Release", + "Allowed with monitoring", + "#22c55e", + [ + "WCAG-oriented signals are all true", + "Admin dashboard, export, and webhook lanes are allowed", + "Reviewer packet includes stable SHA-256 audit evidence", + ], + ), + ] + + frame_paths = [] + for index, slide in enumerate(slides): + frame_path = FRAMES / f"frame-{index:03d}.png" + draw_frame(frame_path, *slide) + frame_paths.append(frame_path) + + concat_file = FRAMES / "frames.txt" + concat_lines = [] + for frame_path in frame_paths: + concat_lines.append(f"file '{frame_path.as_posix()}'") + concat_lines.append("duration 1.5") + concat_lines.append(f"file '{frame_paths[-1].as_posix()}'") + concat_file.write_text("\n".join(concat_lines) + "\n", encoding="utf-8") + + output = REPORTS / "demo.mp4" + subprocess.run( + [ + "ffmpeg", + "-y", + "-f", + "concat", + "-safe", + "0", + "-i", + str(concat_file), + "-vf", + "fps=24,format=yuv420p", + "-movflags", + "+faststart", + str(output), + ], + check=True, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + ) + print(f"wrote {output}") + + +if __name__ == "__main__": + try: + main() + except Exception as exc: + print(f"demo video generation failed: {exc}", file=sys.stderr) + raise diff --git a/enterprise-dashboard-accessibility-guard/package.json b/enterprise-dashboard-accessibility-guard/package.json new file mode 100644 index 00000000..fa2ed07d --- /dev/null +++ b/enterprise-dashboard-accessibility-guard/package.json @@ -0,0 +1,12 @@ +{ + "name": "enterprise-dashboard-accessibility-guard", + "version": "1.0.0", + "private": true, + "type": "commonjs", + "scripts": { + "check": "node --check index.js && node --check sample-data.js && node --check test.js && node --check demo.js && python -m py_compile make-demo-video.py", + "test": "node test.js", + "demo": "node demo.js", + "demo:video": "python make-demo-video.py" + } +} diff --git a/enterprise-dashboard-accessibility-guard/reports/accessibility-report.md b/enterprise-dashboard-accessibility-guard/reports/accessibility-report.md new file mode 100644 index 00000000..0af26adf --- /dev/null +++ b/enterprise-dashboard-accessibility-guard/reports/accessibility-report.md @@ -0,0 +1,9 @@ +# Enterprise Dashboard Accessibility Report + +| Packet | Status | Dashboard | Export | Webhook | Findings | +| --- | --- | --- | --- | --- | --- | +| blocked-packet.json | hold_accessibility_release | blocked | blocked | blocked | PRIVATE_DATA_IN_ACCESSIBILITY_TEXT, MISSING_SCREEN_READER_LABEL, KEYBOARD_TRAP, MISSING_TABLE_SUMMARY, LOW_CONTRAST_CRITICAL_METRIC, MISSING_TABLE_SUMMARY, HEADING_ORDER_SKIP, MISSING_REDUCED_MOTION_FALLBACK | +| clean-packet.json | release_with_accessibility_monitoring | allowed | allowed | allowed | none | +| warning-packet.json | remediate_before_public_release | internal_only | blocked | internal_only | MISSING_REDUCED_MOTION_FALLBACK | + +All packets use synthetic dashboard records and deterministic SHA-256 audit digests. diff --git a/enterprise-dashboard-accessibility-guard/reports/blocked-packet.json b/enterprise-dashboard-accessibility-guard/reports/blocked-packet.json new file mode 100644 index 00000000..e06ebec5 --- /dev/null +++ b/enterprise-dashboard-accessibility-guard/reports/blocked-packet.json @@ -0,0 +1,75 @@ +{ + "dashboardId": "enterprise-admin-overview", + "institutionId": "institution-redacted", + "status": "hold_accessibility_release", + "releaseLanes": { + "adminDashboard": "blocked", + "scheduledExport": "blocked", + "webhookNotice": "blocked" + }, + "findings": [ + { + "componentId": "compute-usage-critical", + "code": "PRIVATE_DATA_IN_ACCESSIBILITY_TEXT", + "severity": "blocker", + "message": "Accessibility text exposes private user, lab, or project data." + }, + { + "componentId": "private-project-table", + "code": "MISSING_SCREEN_READER_LABEL", + "severity": "blocker", + "message": "Component lacks a meaningful screen-reader label." + }, + { + "componentId": "private-project-table", + "code": "KEYBOARD_TRAP", + "severity": "blocker", + "message": "Keyboard users cannot reach or leave this component predictably." + }, + { + "componentId": "private-project-table", + "code": "MISSING_TABLE_SUMMARY", + "severity": "blocker", + "message": "Table or export output needs a concise nonvisual summary." + }, + { + "componentId": "webhook-failure-alert", + "code": "LOW_CONTRAST_CRITICAL_METRIC", + "severity": "blocker", + "message": "Critical component contrast is 3.08:1, below the 4.5:1 release threshold." + }, + { + "componentId": "weekly-admin-export", + "code": "MISSING_TABLE_SUMMARY", + "severity": "blocker", + "message": "Table or export output needs a concise nonvisual summary." + }, + { + "componentId": "private-project-table", + "code": "HEADING_ORDER_SKIP", + "severity": "warning", + "message": "Heading order skips a level and may confuse screen-reader navigation." + }, + { + "componentId": "compute-usage-critical", + "code": "MISSING_REDUCED_MOTION_FALLBACK", + "severity": "warning", + "message": "Animated dashboard content needs a reduced-motion fallback before public release." + } + ], + "actions": [ + "add_reduced_motion_fallback:compute-usage-critical", + "add_screen_reader_label:private-project-table", + "add_table_summary:private-project-table", + "add_table_summary:weekly-admin-export", + "block_release:enterprise-admin-overview" + ], + "wcagSignals": { + "perceivable": false, + "operable": false, + "understandable": false, + "robust": false + }, + "assessedAt": "2026-05-27T13:00:00Z", + "auditDigest": "c23d9d45d2282027a0571519fa0e8f8e75c43e21882757f6259b23f3ef547728" +} diff --git a/enterprise-dashboard-accessibility-guard/reports/clean-packet.json b/enterprise-dashboard-accessibility-guard/reports/clean-packet.json new file mode 100644 index 00000000..32bcfb6e --- /dev/null +++ b/enterprise-dashboard-accessibility-guard/reports/clean-packet.json @@ -0,0 +1,22 @@ +{ + "dashboardId": "enterprise-admin-clean", + "institutionId": "institution-redacted", + "status": "release_with_accessibility_monitoring", + "releaseLanes": { + "adminDashboard": "allowed", + "scheduledExport": "allowed", + "webhookNotice": "allowed" + }, + "findings": [], + "actions": [ + "release_with_accessibility_monitoring" + ], + "wcagSignals": { + "perceivable": true, + "operable": true, + "understandable": true, + "robust": true + }, + "assessedAt": "2026-05-27T13:00:00Z", + "auditDigest": "e3abe7a1521f56544cd037dc7fc520af8f8841edf3fbbde2841b57729e2f1e43" +} diff --git a/enterprise-dashboard-accessibility-guard/reports/demo.mp4 b/enterprise-dashboard-accessibility-guard/reports/demo.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..9f8ca46389667e6b00e68206df0016fa5543da9c GIT binary patch literal 104275 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≤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 literal 0 HcmV?d00001 diff --git a/enterprise-dashboard-accessibility-guard/reports/summary.svg b/enterprise-dashboard-accessibility-guard/reports/summary.svg new file mode 100644 index 00000000..6b4ce1ee --- /dev/null +++ b/enterprise-dashboard-accessibility-guard/reports/summary.svg @@ -0,0 +1,24 @@ + + + Enterprise Dashboard Accessibility Guard + Institutional dashboards, exports, and webhook notices are gated before release. + + + + + enterprise-admin-overview + hold_accessibility_release | findings 8 | digest c23d9d45d2282027 + + + + + enterprise-admin-clean + release_with_accessibility_monitoring | findings 0 | digest e3abe7a1521f5654 + + + + + enterprise-admin-motion-warning + remediate_before_public_release | findings 1 | digest bfa5b6aae578307a + + diff --git a/enterprise-dashboard-accessibility-guard/reports/warning-packet.json b/enterprise-dashboard-accessibility-guard/reports/warning-packet.json new file mode 100644 index 00000000..496fb404 --- /dev/null +++ b/enterprise-dashboard-accessibility-guard/reports/warning-packet.json @@ -0,0 +1,29 @@ +{ + "dashboardId": "enterprise-admin-motion-warning", + "institutionId": "institution-redacted", + "status": "remediate_before_public_release", + "releaseLanes": { + "adminDashboard": "internal_only", + "scheduledExport": "blocked", + "webhookNotice": "internal_only" + }, + "findings": [ + { + "componentId": "research-output-trend", + "code": "MISSING_REDUCED_MOTION_FALLBACK", + "severity": "warning", + "message": "Animated dashboard content needs a reduced-motion fallback before public release." + } + ], + "actions": [ + "add_reduced_motion_fallback:research-output-trend" + ], + "wcagSignals": { + "perceivable": true, + "operable": false, + "understandable": true, + "robust": true + }, + "assessedAt": "2026-05-27T13:00:00Z", + "auditDigest": "bfa5b6aae578307ad58b740178a32b2a53dac335acea64ac2ee20afa87ca4864" +} diff --git a/enterprise-dashboard-accessibility-guard/requirements-map.md b/enterprise-dashboard-accessibility-guard/requirements-map.md new file mode 100644 index 00000000..811a918c --- /dev/null +++ b/enterprise-dashboard-accessibility-guard/requirements-map.md @@ -0,0 +1,16 @@ +# Requirements Map + +Issue #19 asks for enterprise tooling around admin dashboards, API and webhook integrations, export pipelines, compliance tracking, usage visibility, and institution-scale governance. + +| Issue Area | This Slice | +| --- | --- | +| Admin dashboards | Gates institutional dashboard widgets before release to admins. | +| Contributor and usage analytics | Checks that critical metrics are perceivable, labeled, keyboard reachable, and safe for nonvisual users. | +| Compliance tracking | Produces WCAG-oriented readiness signals and deterministic audit evidence for institutional governance. | +| Export pipelines | Blocks scheduled exports when tables lack summaries or dashboard views are not accessible enough for release. | +| Webhook support | Keeps webhook notices internal-only when the dashboard state has nonblocking accessibility warnings. | +| Enterprise governance | Detects private-data leakage in screen-reader text before dashboard or export surfaces are published. | + +## Non-Overlap + +This is distinct from the existing dashboard/export/webhook replay/compliance/identity/retention/data-residency/SLA/secret-rotation/quota/API-change/connector-certification/incident/funder/AI-model/dashboard-attribution/initiative-tag/policy-exception/IRB/data-export/SCIM/deposit-reconciliation/admin-notification/cost-allocation/LMS/payload-redaction/vendor-DPA/cohort-privacy/API-rate-limit slices. It focuses specifically on accessibility readiness for institutional admin dashboards and their downstream export/webhook release lanes. diff --git a/enterprise-dashboard-accessibility-guard/sample-data.js b/enterprise-dashboard-accessibility-guard/sample-data.js new file mode 100644 index 00000000..3c9e103e --- /dev/null +++ b/enterprise-dashboard-accessibility-guard/sample-data.js @@ -0,0 +1,149 @@ +const blockedDashboard = { + dashboardId: 'enterprise-admin-overview', + institutionId: 'institution-redacted', + assessedAt: '2026-05-27T13:00:00Z', + widgets: [ + { + id: 'compute-usage-critical', + type: 'metric', + title: 'Compute usage', + foreground: '#64748b', + background: '#f8fafc', + critical: true, + keyboardReachable: true, + screenReaderLabel: 'Compute usage for private lab alice@example.edu', + ariaTextContainsPrivateData: true, + headingLevel: 2 + }, + { + id: 'private-project-table', + type: 'table', + title: 'Private projects', + foreground: '#111827', + background: '#ffffff', + critical: true, + keyboardReachable: false, + focusTrap: true, + screenReaderLabel: '', + tableSummary: '', + headingLevel: 4 + } + ], + alerts: [ + { + id: 'webhook-failure-alert', + title: 'Webhook delivery failed', + foreground: '#ef4444', + background: '#fee2e2', + critical: true, + keyboardReachable: true, + screenReaderLabel: 'Webhook delivery failed', + headingLevel: 3 + } + ], + exports: [ + { + id: 'weekly-admin-export', + format: 'csv', + tableSummary: '', + screenReaderLabel: 'Weekly admin export' + } + ], + motion: { + animatedCharts: ['compute-usage-critical'], + reducedMotionFallback: false + } +}; + +const cleanDashboard = { + dashboardId: 'enterprise-admin-clean', + institutionId: 'institution-redacted', + assessedAt: '2026-05-27T13:00:00Z', + widgets: [ + { + id: 'open-access-compliance', + type: 'metric', + title: 'Open access compliance', + foreground: '#0f172a', + background: '#ffffff', + critical: true, + keyboardReachable: true, + screenReaderLabel: 'Open access compliance percentage across hosted projects', + headingLevel: 2 + }, + { + id: 'lab-output-table', + type: 'table', + title: 'Lab output', + foreground: '#0f172a', + background: '#f8fafc', + critical: false, + keyboardReachable: true, + screenReaderLabel: 'Research output by lab', + tableSummary: 'Rows list labs; columns show projects, reviews, storage, and reproducibility score.', + headingLevel: 3 + } + ], + alerts: [ + { + id: 'repo-sync-alert', + title: 'Repository sync complete', + foreground: '#14532d', + background: '#dcfce7', + critical: false, + keyboardReachable: true, + screenReaderLabel: 'Repository sync complete', + headingLevel: 3 + } + ], + exports: [ + { + id: 'quarterly-accessibility-export', + format: 'json', + tableSummary: 'Export includes aggregate accessibility status only.', + screenReaderLabel: 'Quarterly accessibility readiness export' + } + ], + motion: { + animatedCharts: ['open-access-compliance'], + reducedMotionFallback: true + } +}; + +const warningDashboard = { + dashboardId: 'enterprise-admin-motion-warning', + institutionId: 'institution-redacted', + assessedAt: '2026-05-27T13:00:00Z', + widgets: [ + { + id: 'research-output-trend', + type: 'metric', + title: 'Research output trend', + foreground: '#172554', + background: '#dbeafe', + critical: false, + keyboardReachable: true, + screenReaderLabel: 'Research output trend for all departments', + headingLevel: 2 + } + ], + alerts: [], + exports: [ + { + id: 'trend-export', + format: 'json', + tableSummary: 'Trend export contains aggregate department counts only.', + screenReaderLabel: 'Research output trend export' + } + ], + motion: { + animatedCharts: ['research-output-trend'], + reducedMotionFallback: false + } +}; + +module.exports = { + blockedDashboard, + cleanDashboard, + warningDashboard +}; diff --git a/enterprise-dashboard-accessibility-guard/test.js b/enterprise-dashboard-accessibility-guard/test.js new file mode 100644 index 00000000..0ff2701f --- /dev/null +++ b/enterprise-dashboard-accessibility-guard/test.js @@ -0,0 +1,62 @@ +const assert = require('assert'); + +const { assessDashboardRelease } = require('./index'); +const { blockedDashboard, cleanDashboard, warningDashboard } = require('./sample-data'); + +function codes(packet) { + return packet.findings.map((finding) => finding.code).sort(); +} + +function testCriticalAccessibilityIssuesBlockDashboardRelease() { + const packet = assessDashboardRelease(blockedDashboard); + const findingCodes = codes(packet); + + assert.equal(packet.status, 'hold_accessibility_release'); + assert.equal(packet.releaseLanes.adminDashboard, 'blocked'); + assert.equal(packet.releaseLanes.scheduledExport, 'blocked'); + assert.equal(packet.releaseLanes.webhookNotice, 'blocked'); + assert.ok(findingCodes.includes('LOW_CONTRAST_CRITICAL_METRIC')); + assert.ok(findingCodes.includes('MISSING_SCREEN_READER_LABEL')); + assert.ok(findingCodes.includes('KEYBOARD_TRAP')); + assert.ok(findingCodes.includes('PRIVATE_DATA_IN_ACCESSIBILITY_TEXT')); + assert.ok(findingCodes.includes('MISSING_TABLE_SUMMARY')); + assert.ok(packet.actions.includes('block_release:enterprise-admin-overview')); + assert.match(packet.auditDigest, /^[a-f0-9]{64}$/); +} + +function testCleanDashboardReleasesWithWcagSignals() { + const packet = assessDashboardRelease(cleanDashboard); + + assert.equal(packet.status, 'release_with_accessibility_monitoring'); + assert.equal(packet.releaseLanes.adminDashboard, 'allowed'); + assert.equal(packet.releaseLanes.scheduledExport, 'allowed'); + assert.equal(packet.releaseLanes.webhookNotice, 'allowed'); + assert.deepEqual(packet.findings, []); + assert.equal(packet.wcagSignals.perceivable, true); + assert.equal(packet.wcagSignals.operable, true); + assert.equal(packet.wcagSignals.understandable, true); + assert.equal(packet.wcagSignals.robust, true); +} + +function testWarningsAllowInternalOnlyPreview() { + const packet = assessDashboardRelease(warningDashboard); + + assert.equal(packet.status, 'remediate_before_public_release'); + assert.equal(packet.releaseLanes.adminDashboard, 'internal_only'); + assert.equal(packet.releaseLanes.scheduledExport, 'blocked'); + assert.equal(packet.releaseLanes.webhookNotice, 'internal_only'); + assert.deepEqual(codes(packet), ['MISSING_REDUCED_MOTION_FALLBACK']); + assert.ok(packet.actions.includes('add_reduced_motion_fallback:research-output-trend')); +} + +const tests = [ + testCriticalAccessibilityIssuesBlockDashboardRelease, + testCleanDashboardReleasesWithWcagSignals, + testWarningsAllowInternalOnlyPreview +]; + +for (const test of tests) { + test(); +} + +console.log(`enterprise-dashboard-accessibility-guard tests passed (${tests.length})`);