Contrast — measure, don't eyeball. For rendered HTML, RUN the real-render gates and report their actual output (CLAUDE.md → Verification Protocol): node scripts/measurerender.mjs <file> [--dark] (every text element) AND node scripts/verifystates.mjs <file> [--dark] (every interactive element in default/hover/focus — catches hover-state failures). For loose color pairs, python3 scripts/contrast.py "<fg>" "<bg>". Never state a ratio you did not measure.
A findings table: WCAG criterion (e.g. 1.4.3) · severity (P0/P1/P2) · what fails · specific fix. Confirm passes explicitly. Accessibility may never be traded for aesthetics.