
Where the step was missing
Findings from an external auditor sat unactioned for months while sales conversations kept hitting them. Every finding is prose: “some toggle controls and edit fields are not explicitly labeled” tells you a criterion fails, but not which of ninety-seven component templates, or what the control should announce.
That translation step, from audit language to merged code, was unowned. It is also the step that is entirely design judgment.
Generated labels still need review. A label can pass an automated check while describing the control incorrectly, so I checked the intended meaning before asking AI to implement it.
The audit report is the source of truth
Work had already started against a generated list of twenty-two “Level A failure areas”, with no page references and an empty column for which repository each item lived in. I pulled the source conformance report and rebuilt scope line by line, which cut it to ten real gaps.
Twelve areas were already rated Supports or Not Applicable — including page language, for which I had a fix staged locally. Deleting my own work was the correct first move. Every hour spent on an already-passing criterion is an hour not spent on the keyboard trap.
Families, tiers and intent packs
Thirteen finding families, each one the set of violations a single pull-request pattern clears. Three tiers layered on top: Tier 1 is mechanical and needs no design input, Tier 2 needs a design decision before any code is correct, Tier 3 is architecture and gets flagged rather than patched.
Splitting batching from sequencing is what made the work parallel — engineering could clear Tier 1 without waiting on my intent packs, and I could write intent without waiting on their review queue.
An intent pack is a plain-language rule set for one family: what each control announces, which ARIA method carries it, and what happens when the pattern is ambiguous. Five written, eight in the backlog.
And where it was not allowed to decide
The agent finds every instance in the source and drafts a narrowly scoped patch. I hold authority over intent and over what each control announces. The rule the whole system rests on is that ambiguity gets flagged for a person and is never resolved by the generator.
Engineering reviews and merges through its normal process. The pipeline packages the design decision for review.
Four fixes killed before review
A focus-ring fix duplicated indicators the theme already shipped through a token. A login-page bundle was unnecessary, because that page already met every criterion it was accused of failing. A skip link on the login page was wrong on principle — bypass blocks is about skipping repeated navigation, and a bare login form has none.
And an automated scan I believed had reached the authenticated interior had been photographing the login screen. I caught it because the screenshots were 80KB instead of 400KB.
All four were the tool being wrong in the direction of more work, never less. Verify-before-claim is now a gate rather than a habit.
What is true today
Scope went from twenty-two unverified areas to ten defensible ones, each carrying the auditor’s exact wording and a page number.
Skip navigation was built, deployed to a development environment and verified with real keyboard input in an authenticated session. Contrast measured 6.06:1 light and 8.10:1 dark against a 4.5:1 requirement — read from the compiled stylesheet, not the mockup. The mockup version would have failed at 4.39:1.
The loop now runs without me. The product’s own designer opens the pull requests, a product engineer reviews and merges, and a first batch is in the repository. A second product group adopted the approach after a five-minute demo.
As of August 2026, the changes were verified in development and a second product group had adopted the process. Production rollout was still pending.
Six weeks for four lines of HTML
Two heading elements in two templates, held while a designer and a researcher worked out whether panel headers should be headings at all across the whole product. They were right to stop it.
The code change was small, but it depended on agreement about the heading structure. The workflow gave six functions the same design instructions and screenshots to review.