Inspiration
A checkout can look polished while still trapping a keyboard user before payment. Conventional scanners identify violations, but developers must still connect runtime behavior to source, choose a bounded repair, and prove that the same journey now works. AccessPatch EU closes that loop inside Codex.
What it does
AccessPatch EU runs a synthetic localhost checkout through Playwright and
axe-core, captures privacy-scrubbed evidence, assigns three stable finding IDs,
and maps each finding to a source marker. GPT-5.6 correlates bounded browser
evidence with source and proposes the smallest candidate change. The
interactive workflow pauses for explicit human approval, restricts edits to
src/checkout, replays the same keyboard journey, and publishes a validated
before/after receipt.
For judges, a no-login deterministic fixture path performs the same scans and
verification without an account or OpenAI Platform API key. Its manifest is
plainly labeled deterministic_fixture with actor test_fixture; it is not
represented as human approval.
Two critical and one serious fixture blockers were resolved, no new serious or critical axe finding appeared, and the scripted keyboard checkout completed.
How we built it
The single Vite/React application serves the Lattice Supply checkout and the evidence dashboard. A TypeScript CLI orchestrates strict Zod contracts, atomic run storage, Playwright traces, sanitized DOM and accessibility evidence, stable finding normalization, proposal and approval transitions, a Git allowlist, and deterministic verification.
Codex and GPT-5.6 accelerated architecture, implementation, testing, visual iteration, plugin packaging, and submission tooling. The model proposes from evidence; deterministic tests decide pass/fail. The human chose the problem, approved the design and safety boundary, and owns every real approval and external publishing action.
Challenges
The hardest part was preserving trustworthy provenance across a source-mutating demo. The implementation must atomically publish evidence, scrub form values, block external HTTP and WebSocket traffic, distinguish human approval from a fixture stand-in, reject out-of-scope diffs, and restore exact source bytes after success, failure, or interruption.
Accomplishments
- Three stable blockers connect browser evidence to source markers.
- Interactive edits cannot begin before explicit human approval.
- The final diff must stay inside both
src/checkoutand approved candidates. - The dashboard shows evidence, proposals, diff, tool versions, and receipt without invented metrics.
npm run demo:verifyends withAccessPatch verification: PASS.- The local judge path needs no login, credentials, or OpenAI Platform API key.
What we learned
Model reasoning is most useful when its evidence boundary is small and inspectable. Verification should remain deterministic and independent from the model that proposed a patch. Clear provenance labels are as important as the repair itself.
What's next
Future work could add more explicitly modeled journeys and framework adapters while retaining the same approval, privacy, allowlist, and deterministic verification boundaries. Arbitrary public-site auditing and legal certification remain outside scope.
Limitation
AccessPatch EU produces technical remediation evidence, not legal advice, certification, or a guarantee of EAA/WCAG compliance. AI-proposed patches require human review.
Built With
- accessibility
- axe-core
- codex
- developer-tools
- gpt-5.6
- openai
- playwright
- react
- typescript
- vite
- zod
Log in or sign up for Devpost to join the conversation.