Accessibility / content QA (V2.0)
Umbrella for the V2.0 a11y + content-QA work. Two PRs:
PR #112 (merged) — media a11y content sweep
Fixed 103 source-level a11y issues across 16 pages (iframe title=, video aria-label, image alt), written to describe the actual media.
PR #113 — off-the-shelf content-QA gate + baseline triage
Decision
Use industry-standard tooling for commodity problems (links/HTML → html-proofer); reserve small bespoke checks (check_a11y, check_seo_frontmatter) only for conventions with no off-the-shelf equivalent. Chose html-proofer over pa11y/axe to avoid a Node + Chromium toolchain; deep WCAG (contrast/ARIA) via axe/pa11y remains an optional later layer.
Tracked debt (gate ignores, each annotated in content-lint.yml)
Out of scope
Closed by #113 (residual content debt tracked in #114/#115).
Accessibility / content QA (V2.0)
Umbrella for the V2.0 a11y + content-QA work. Two PRs:
PR #112 (merged) — media a11y content sweep
Fixed 103 source-level a11y issues across 16 pages (iframe
title=, videoaria-label, image alt), written to describe the actual media.PR #113 — off-the-shelf content-QA gate + baseline triage
link-checkjob) for broken links/anchors/missing-alt/HTML — industry-standard, no new toolchain (Ruby). External checks disabled (deferrable to a separate non-blocking job).check_a11y(media-a11yjob) for the source conventions html-proofer can't see (emptyalt="", iframe/video labels) — the a11y analogue ofcheck_seo_frontmatter.website-dev.md.Decision
Use industry-standard tooling for commodity problems (links/HTML → html-proofer); reserve small bespoke checks (
check_a11y,check_seo_frontmatter) only for conventions with no off-the-shelf equivalent. Chose html-proofer over pa11y/axe to avoid a Node + Chromium toolchain; deep WCAG (contrast/ARIA) via axe/pa11y remains an optional later layer.Tracked debt (gate ignores, each annotated in content-lint.yml)
makeabilitylab/signals, Signals Lessons #116)Out of scope
Closed by #113 (residual content debt tracked in #114/#115).