You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Ask which audits a change affects, instead of remembering
Yesterday's work removed fifty keyboard tab stops and altered two control sizes,
and the audits re-run afterwards were chosen from memory -- so keyboard-audit,
wcag22-audit, row-actions-audit, tooltip-audit, wcag-audit, icon-audit and
table-audit were all skipped, every one a check measuring exactly what had
changed.
Run now, and the tab-stop removal broke nothing: keyboard-audit 146 screens at
1280 and again at 375 with no findings, axe 160 pages 0 violations, wcag22 no
failures, tooltip 653 icon-only controls 0 defects, table-audit 155 tables with
0 mixed weights.
Two audits exit non-zero and neither is from yesterday: icon-audit reports
`bi-arrow-left-right` and `bi-key` as glyphs absent from the lexicon, and
row-actions-audit reports /admin/barcode_items carrying 3 inline actions with no
menu. One genuine inconsistency surfaced: `bi-envelope` carries three labels --
"Re-send invitation" on /organization against "Re-send invite" in
admin/users/_list and partners/_partner_row -- for the same action. Pre-existing,
but it took a proper `aria-label` for the audit to see it.
bin/design/which-audits.rb is the fix, and it is deliberately not a checklist: a
checklist is memory written down, correct the day it is written and silently
wrong the day an audit is added. Omission is impossible by construction instead:
* each audit declares its inputs in its own header, `AUDIT-READS: RENDER`, so
the declaration cannot drift from the code it describes
* the script enumerates bin/design itself and never carries a list of audits
* a file that neither declares nor is named a non-audit FAILS the run, so a
new audit cannot drop silently out of every future selection
* six non-audits are excused with a reason each, because an unexplained
absence reads identically to an oversight
* it prints what it considered and did not select, and a pasteable command
Bundles are coarse on purpose. A browser audit drives real pages, so for a
render-path change the honest answer is most of them -- asked by hand about one
view and one controller I picked six and the truthful number was twenty-eight.
Three controls, in the three directions the failure can hide: a view change
selects the render audits; a docs-only change selects zero browser audits,
without which it is not selecting but saying "everything"; and a planted
undeclared file exits 2 naming the file, proven with it present and again after
removing it. Its own answer for this commit was three audits -- seam-check,
page-audit, audit-selftest -- all run, all clean.
Fixed on the way: the state.rb paragraph in onboarding.md was inside a ```bash
fence and rendering as shell. One pre-existing rubocop warning is left in
page-audit.rb, verified present at HEAD before this change.
Generalised into `audit-suite` as "after a change, do not choose the audits from
memory".
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
0 commit comments