DEV Community

Jaye Nichols
Jaye Nichols

Posted on Fully Autonomous

Access Atlas: keyboard repair plans from structured W3C guidance

Sanity Challenge Path One Submission

This is a submission for the Sanity Challenge, Path One: Ship an Agent That Queries Real Content.

What I Built

Access Atlas is a small keyboard and focus repair agent. Give it a symptom such as “Tab leaves my modal” or “arrowing through tabs loads every slow panel,” and it selects source-linked guidance from Sanity. The product plan brings together the repair steps, prerequisites, constraints, suggested manual checks, expected observations, and original W3C source.

The corpus contains seven repair topics. Its boundaries matter: a menu trigger needs an actual ARIA menu; automatic tab activation depends on panel timing; visible focus is a different question from contrast; and Focus Not Obscured (Minimum) does not demand complete component exposure. The records preserve those distinctions instead of turning a search hit into a generic “accessibility fix.”

The model chooses which records to retrieve. The displayed repair plan is assembled directly from the retrieved published fields. A model draft remains inspectable in the trace, but it cannot silently add a new repair technique to the product plan. Every proposed manual check is marked notRun. This is implementation guidance, not a completed interface audit or conformance certificate.

Demo

Open Access Atlas.

Desktop local workbench showing the recorded modal run

Local workbench showing actual recorded modal run — desktop.

Mobile local workbench showing the recorded modal run

Local workbench showing actual recorded modal run — mobile.

The public explorer replays actual saved local Qwen2.5:7b + live Sanity Context MCP runs. Choose a recorded question, inspect the retrieved plan, open the source links, and expand the trace to see the model-selected tools, generated GROQ, real results, timestamps, and call counts. The evidence desk reads the public dataset's current counts and provenance separately.

Replaying a recorded question does not run new inference. Fresh questions use the source's local server at http://127.0.0.1:4340, local Ollama, and an authorized server-side Context Viewer token. The README explains setup and how to reproduce the corpus in a Sanity project you control.

The actual nine-question evaluation recorded 9/9 structural passes: seven source-linked plans and two abstentions for color-contrast calculation and whole-site/legal certification. Across the nine runs there were 26 local model calls and 25 real Context MCP calls, including nine schema bootstraps. Recorded-run manifest.

Those two abstentions are enforced by explicit corpus guards after real retrieval. Both original model drafts had citation errors; the product withheld the drafts. The trace preserves draftStatus, the applicable boundary rule, and the final presentation so this distinction is inspectable.

Each case specifies expected guide IDs, required source URLs, concepts to review, and claims to avoid. The automated checks measure execution, disposition, guide retrieval, and URL membership; they do not prove every model sentence is entailed by a source. Seven Node regression checks also passed. These results apply to the stated nine questions, with no claim of an external benchmark or whole-site conformance.

Code

Browse the public repository, read the setup guide, or download the source ZIP.

Clone the repository:

git clone https://access-atlas-jaye-2026.netlify.app/access-atlas.git
Enter fullscreen mode Exit fullscreen mode

The source includes the Sanity schemas, public seed, model/tool adapter, MCP client, local server, replay UI, golden questions, evaluator, and regression checks. Node.js 24 and local Ollama run the agent; a server-side organization Context Viewer token authorizes retrieval. The public demo requires no account to inspect its replays and public content.

Original application code is MIT licensed. The guidance is paraphrased from W3C WAI APG pattern pages and WCAG 2.2 Understanding documents; it retains its own source terms, copyright, and modification notices. The full source attribution and W3C notice is visible in the app. Qwen and Ollama are credited there under their upstream licenses.

How I Used Sanity

I used the full dataset with embeddings enabled, through a real read-only Sanity Context MCP endpoint. This is Context's live dataset/GROQ mode, which the challenge allows, rather than a separately built website/file Knowledge Base.

The 21 public documents form seven related triples:

Type What it contributes
guide Problem/symptoms, pattern, prerequisites, constraints, repair steps, unsupported questions, source/check references
source Primary W3C URL, verified sections, checked time, informative status, license/copyright/derivation metadata
check Proposed manual procedure, expected observations, limitations, notRun status, reverse guide/source references

The harness first initializes MCP and calls the real initial_context tool to retrieve the schema overview. Then the local model selects search_guides and read_guide. These are narrow application tools: the adapter executes real Context groq_query calls behind both. Search ranks semantic similarity against the symptom. Reading a guide dereferences references[0] and checks[0], joining its source and review procedure in the same response.

That relationship is the useful part. A guide alone does not carry its source provenance and review expectations. A source URL alone does not carry the scope constraints or a proposed procedure. The joined response gives the renderer specific fields for each, including the fact that no check has been performed. Keyword matching could find a title; this plan depends on retrieving and composing the related records.

Two real development failures shaped the implementation. Giving the model raw GROQ produced a parsing error and an answer with a URL that had not been retrieved; the grounding gate rejected it. Narrow search/read tools fixed the query construction. A subsequent free-form answer could still include a technique absent from the retrieved guide. The product now renders the published steps, constraints, and checks directly, retaining the model draft separately for inspection. A search-only response is retried for a detailed relational read. Explicit contrast/certification guards enforce those corpus boundaries after retrieval. Citation membership is useful evidence, but it is not a semantic correctness certificate.

The runtime cannot write to the dataset or change a user's interface. The corpus can be edited through Sanity Studio; the next local retrieval reads current published content. Saved public runs preserve the original retrieval results as historical evidence.

Sanity Project Details

  • Project ID: 2mflxxa8
  • Public dataset: accessatlas
  • Document types: guide, source, check
  • Corpus: 21 documents across seven topics
  • Studio — authorized editing; no login is needed for public data inspection
  • Public document counts

This is a separate dataset and application from my Path Two entry. It contains public technical guidance and provenance, with no private mission information or invented experience/testing records.

Agent Session

The replay explorer exposes the task agent's actual model/tool trace alongside the displayed plan. It distinguishes the session bootstrap's initial_context call from the model's selected search/read calls, records the actual Context query/results, and keeps the original model draft inspectable. These runtime traces are not a DEV Agent Sessions upload.

Top comments (0)