Skip to content

Claude Sonnet 5.5 (effort default (no --effort flag) · thinking on) on Fix 14 WCAG issues in a static HTML page without losing content

AClaude Sonnet 5.5default · thinking on · Claude Code 2.1.299 (headless -p) · cloud · 2026-10-16 · by @bobsiopener

Trust 80%Fully autonomoussuccess · first try
Estimated cost
$0.07
Wall time
28s
Human step-ins
0
Outcome
Pass

Compare with other models on this task →

Summary

Exact prompt (this run)

# Task: fix accessibility issues in a static page `index.html` is a public library events page that fails a WCAG 2.2 AA review. Fix it in place (HTML only; you may adjust the inline CSS). Keep all existing visible text content, all links (same hrefs) and the form fields (same `name`s), and keep the page working without JavaScript where possible. Address at least: document language, landmarks (header/nav/main), skip link, image alternatives (informative vs decorative: the divider is decorative, the logo and storytime photo are not), heading hierarchy, ambiguous link text, data table semantics, form labels and grouping, the fake button, iframe title, positive tabindex, focusable content hidden from assistive tech, and the low-contrast `.muted` text (#999 on white). Write `A11Y_NOTES.md` listing each fix (one line each). No network.

Static checks: lang, landmarks, skip link, decorative vs informative alt, heading order, link text, th/scope, labels, real button, iframe title, tabindex, aria-hidden focusables, contrast ≥4.5:1, content preserved. Original benchmark task written for usecaserank.com (not based on a specific public post). Headless, offline run on a reproducible fixture. Each run's notes say how its cost was measured (estimates are marked).

Success criteria: 1. html has lang starting with 'en'. 2. header, nav and main elements present. 3. First link is a skip link pointing to an existing id. 4. Logo and storytime images have alt text longer than 3 characters; the divider image has alt="". 5. Exactly one h1, first heading is h1, no heading level skips. 6. No link text 'click here'/'here'/'read more'/'more'. 7. At least 3 th cells with scope (or a thead). 8. Every input/select has a label (for/id, wrapping label, aria-label or aria-labelledby). 9. No onclick on non-button elements, and a real submit button exists. 10. Every iframe has a non-empty title. 11. No positive tabindex. 12. No focusable element inside aria-hidden="true". 13. .muted text colour has contrast >= 4.5:1 on white. 14. Original key text, all original hrefs, the form action and the 4 field names are preserved. 15. A11Y_NOTES.md has at least 10 list lines. (A table caption is reported but not required.)

Setup notes: Use Case Scout batch 4 case d06-a11y-static-html (offline fixture). Prepared with batch4/prepare.sh; hidden key/tests kept outside the agent's work dir. Prompt = TASK.md verbatim. Scored with the scout's scorer: `python score.py WORKDIR`. Tools: Read/Write/Edit/Glob/Grep/Bash, web disabled. Single run, no retries. Rescored 2026-10-16 with Scout's fixed scorer (see batch4/CHANGES-2026-10-16.md). The original score was 16/17 checks (fail), and the model's output is unchanged. Claude Code's own reported cost for claude-sonnet-5.5: $0.069633. Score: 17/17 checks. Cost is an ESTIMATE: measured tokens x pricing.json list price (Claude Pro subscription, nothing billed); input_tokens include cache reads and writes. Single run.

Estimated cost List-price estimate; not actually billed.

Metrics

Estimated cost
$0.07
Wall time
28s
Human step-ins
0
Turns
3
Model usage
ModelInput tokOutput tokCost
AClaude Sonnet 5.5anthropic/claude-sonnet-5.5effort default (no --effort flag) · thinking on58,4232,960$0.07

Reproduce this run

  1. Use the exact prompt shown above for this run (the use case page has the shared prompt).
  2. Same setup: Claude Sonnet 5.5 (anthropic/claude-sonnet-5.5, effort default (no --effort flag) · thinking on) via Claude Code 2.1.299 (headless -p), cloud.
  3. It counts as a success only if it meets every success criterion: 1. html has lang starting with 'en'. 2. header, nav and main elements present. 3. First link is a skip link pointing to an existing id. 4. Logo and storytime images have alt text longer than 3 characters; the divider image has alt="". 5. Exactly one h1, first heading is h1, no heading level skips. 6. No link text 'click here'/'here'/'read more'/'more'. 7. At least 3 th cells with scope (or a thead). 8. Every input/select has a label (for/id, wrapping label, aria-label or aria-labelledby). 9. No onclick on non-button elements, and a real submit button exists. 10. Every iframe has a non-empty title. 11. No positive tabindex. 12. No focusable element inside aria-hidden="true". 13. .muted text colour has contrast >= 4.5:1 on white. 14. Original key text, all original hrefs, the form action and the 4 field names are preserved. 15. A11Y_NOTES.md has at least 10 list lines. (A table caption is reported but not required.)
  4. Log model, tokens, wall time, human step-ins and the evidence log, then submit it as a reproduction. A different model? Submit a head-to-head rerun.

How runs are scored: Methodology.

Was this useful?

⇄ Rerun on another model

Automated checks

Trust 80% comes from these checks (how Trust % works).

Evidence log
[
 {
  "duration_api_ms": 26906,
  "stop_reason": "end_turn",
  "session_id": "[REDACTED]",
  "total_cost_usd": 0.06963330000000001,
  "usage": {
   "input_tokens": 6,
   "cache_creation_input_tokens": 8764,
   "cache_read_input_tokens": 49653,
   "output_tokens": 2960,
   "output_tokens_details": {
    "thinking_tokens": 288
   },
   "server_tool_use": {
    "web_search_requests": 0,
    "web_fetch_requests": 0
   },
   "service_tier": "standard",
   "cache_creation": {
    "ephemeral_1h_input_tokens": 8764,
    "ephemeral_5m_input_tokens": 0
   },
   "inference_geo": "global",
   "iterations": [
    {
     "input_tokens": 2,
     "output_tokens": 604,
     "cache_read_input_tokens": 18986,
     "cache_creation_input_tokens": 2317,
     "cache_creation": {
      "ephemeral_5m_input_tokens": 0,
      "ephemeral_1h_input_tokens": 2317
     },
     "type": "message"
    }
   ],
   "speed": "standard",
   "fallback_credit": null
  },
  "modelUsage": {
   "claude-sonnet-5-5": {
    "inputTokens": 6,
    "outputTokens": 2960,
    "cacheReadInputTokens": 49653,
    "cacheCreationInputTokens": 8764,
    "webSearchRequests": 0,
    "costUSD": 0.06963330000000001,
    "contextWindow": 1000000,
    "maxOutputTokens": 128000,
    "thinkingTokens": 288,
    "canonicalModel": "claude-sonnet-5-5",
    "provider": "firstParty",
    "costBasis": "list"
   }
  },
  "permission_denials": [],
  "terminal_reason": "completed",
  "fast_mode_state": "off",
  "fast_mode_disabled_reason": "sdk_opt_in_required",
  "subagent_stats": {
   "spawned": 0,
   "requested": {
    "background": 0,
    "foreground": 0,
    "unset": 0
   },
   "started_in_background": 0,
   "max_depth": 0,
   "spawned_by_subagents": 0,
   "completed": 0,
   "failed": 0,
   "killed": {
    "parent": 0,
    "user": 0,
    "system": 0
   },
   "refused": {
    "depth_limit": 0,
    "concurrency_limit": 0,
    "budget": 0
   },
   "by_type": {}
  },
  "safety_stops": 0,
  "is_error": false,
  "num_turns": 3,
  "subtype": "success",
  "api_error_status": null,
  "result": "I rewrote `index.html` in place and wrote `A11Y_NOTES.md` with one line per fix. I haven't opened the page or run an accessibility checker, so none of this is tested.\n\n- **Language and landmarks:** I added `lang=\"en\"` and replaced the generic divs with `<header>`, `<nav>` and `<main>`. A \"Skip to main content\" link appears when it takes focus.\n- **Images:** The logo and the storytime photo have descriptive alt text; the divider has `alt=\"\"`. I couldn't see the photo, so its alt text (\"Children and a librarian gathered for Story Time at the library\") is a guess. Please check it against the real image.\n- **Headings:** The order is now h1, then h2 for \"This week\", \"Book club\" and \"Register\".\n- **Ambiguous links:** The \"Click here\" text is unchanged. Each link now has extra text hidden from sighted users, such as \"for Story Time details\", so screen readers announce its purpose.\n- **Table:** It now has a caption hidden from sighted users, `<thead>`/`<tbody>`, column headers and row headers.\n- **Form:**\n  - Every field has a label, including a new visible \"Event\" label on the select.\n  - The fields sit in a `<fieldset>` with a hidden legend.\n  - The fake button is now a real `<button type=\"submit\">`, so the form submits without JavaScript.\n- **Remaining items:** The iframe has a title. The positive `tabindex` is gone, and so is the `aria-hidden` on the \"Old site\" link.\n- **Contrast:** `.muted` is now #595959 instead of #999. I also darkened the button background to #1a6b40 so its white text passes. I added visible focus outlines too.\n\nAll hrefs, form field names and the original visible text are unchanged. The one visible addition is the \"Event\" label on the select.",
  "ttft_ms": 5709,
  "type": "result",
  "duration_ms": 27241,
  "uuid": "[REDACTED]",
  "ttft_stream_ms": 5046,
  "time_to_request_ms": 250,
  "first_content_frame_ms": 5047,
  "queued_turn_count": 0,
  "result_index": 0
 }
]

Get new runs and ranking changes weekly