Skip to content

Claude Haiku 5.5 (effort default (no --effort flag) · thinking on) on Looping fireworks show in one self-contained HTML file

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

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

Compare with other models on this task →

Summary

Exact prompt

# Looping fireworks show in one self-contained HTML file Make a fireworks show that keeps going: rockets, bursts, sparkles, finales, your call. Style, colours and technique (CSS, SVG, canvas) are up to you. **Looks are not scored**; only the objective checks below are. Write one file, `fireworks.html`, in the working directory. ## Checks (all must pass; partial credit = fraction passed) 1. `file_exists_under_size_limit`: `fireworks.html` exists and is at most 100,000 bytes (100 KB). 2. `no_external_requests`: fully self-contained. No `http://`, `https://` or `//` URLs in `src`, `href`, `srcset`, `poster`, `action`, `data` or `url()`, no asset URLs anywhere, no `@import`, `fetch(`, `XMLHttpRequest`, `WebSocket`, `EventSource`, `sendBeacon`, JS `import`, `<script src>` or `<link href>` (inline everything; `data:` URIs are fine). When a browser is used, any non-file request the page attempts also fails this check. 3. `animation_present`: CSS `@keyframes` plus an `animation`/`animation-name` property, or `requestAnimationFrame(` / `setInterval(`. 4. `loops_forever`: an `infinite` CSS animation (`animation-iteration-count: infinite` or `infinite` in the `animation` shorthand), or rAF/`setInterval` with no `cancelAnimationFrame`/`clearInterval` anywhere; when a browser is used, the page must also still change between ~6 s and ~7 s after load. 5. `page_animates`: when a headless Chrome/Chromium is available, the page is opened once with the network blocked at 800x600, and screenshots at ~1.5 s and ~2.5 s after load must differ. Without a browser (or if it fails to start) this and the browser part of check 4 fall back to the static checks 3-4; the scorer reports `check_mode` (`headless-browser` or `static-fallback`). 6. `required_id_and_title`: an element with `id="fireworks"` and a `<title>` containing "Fireworks" (case-insensitive). No other files, no build step, no network. Run time limit for scoring: 120 s.

Create a looping fireworks show in a single offline HTML page using CSS, SVG or canvas. Passing requires a file under 100 KB with no external requests, an animation that loops forever and changes between screenshots taken in headless Chrome, and the stated element id and title. The scorer ignores aesthetics; a public poll compares the results. 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. file_exists_under_size_limit 2. no_external_requests 3. animation_present 4. loops_forever 5. page_animates 6. required_id_and_title

Setup notes: Use Case Scout batch 11 case l04-fireworks-show (offline, open-ended creative brief). Prepared with batch11/prepare.sh; hidden checker kept outside the agent's work dir. Prompt = TASK.md verbatim. Scored with the case's scorer (`python score.py WORKDIR KEYDIR`, headless Chrome over a CDP pipe, network blocked). Tools: Read/Write/Edit/Glob/Grep/Bash, web disabled. Single run, no retries. Output rendered offline (google-chrome headless, network blocked): PNG 1280x800 at ~3 s after load; MP4 1280x720 H.264 ~6 s. Claude Code's own reported cost for claude-haiku-5.5: $0.007099. Score: 6/6. 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.

Output

Metrics

Estimated cost
$0.0071
Wall time
31s
Human step-ins
0
Turns
5
Model usage
ModelInput tokOutput tokCost
AClaude Haiku 5.5anthropic/claude-haiku-5.5effort default (no --effort flag) · thinking on97,7396,767$0.0071

Reproduce this run

  1. Use the use case prompt on the use case page.
  2. Same setup: Claude Haiku 5.5 (anthropic/claude-haiku-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. file_exists_under_size_limit 2. no_external_requests 3. animation_present 4. loops_forever 5. page_animates 6. required_id_and_title
  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": 29119,
  "stop_reason": "end_turn",
  "session_id": "[REDACTED]",
  "total_cost_usd": 0.00709894,
  "usage": {
   "input_tokens": 8,
   "cache_creation_input_tokens": 14407,
   "cache_read_input_tokens": 83324,
   "output_tokens": 6767,
   "output_tokens_details": {
    "thinking_tokens": 2514
   },
   "server_tool_use": {
    "web_search_requests": 0,
    "web_fetch_requests": 0
   },
   "service_tier": "standard",
   "cache_creation": {
    "ephemeral_1h_input_tokens": 14407,
    "ephemeral_5m_input_tokens": 0
   },
   "inference_geo": "global",
   "iterations": [
    {
     "input_tokens": 2,
     "output_tokens": 466,
     "cache_read_input_tokens": 26177,
     "cache_creation_input_tokens": 769,
     "cache_creation": {
      "ephemeral_5m_input_tokens": 0,
      "ephemeral_1h_input_tokens": 769
     },
     "type": "message"
    }
   ],
   "speed": "standard",
   "fallback_credit": null
  },
  "modelUsage": {
   "claude-haiku-5-5": {
    "inputTokens": 8,
    "outputTokens": 6767,
    "cacheReadInputTokens": 83324,
    "cacheCreationInputTokens": 14407,
    "webSearchRequests": 0,
    "costUSD": 0.00709894,
    "contextWindow": 1000000,
    "maxOutputTokens": 128000,
    "thinkingTokens": 2514,
    "canonicalModel": "claude-haiku-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": 5,
  "subtype": "success",
  "api_error_status": null,
  "result": "I wrote `fireworks.html` in the working directory. It's a self-contained canvas fireworks show at 5.8 KB, well under the 100 KB limit.\n\nIt has rockets that burst into ring, peony, willow and double-ring patterns, with trailing sparks and background stars. A finale of nine rockets fires every 16 seconds, and random launches continue between them. The title is \"Fireworks\" and the canvas has `id=\"fireworks\"`.\n\nChecks I ran:\n- **Size:** 5,784 bytes.\n- **External requests:** none. The only matches for `//` are JS comments, not URLs in any attribute or `url()`. There is no `@import`, `fetch(`, socket or `import` usage.\n- **Animation and looping:** `requestAnimationFrame` loops forever, with no cancel call. A CSS `infinite` animation also drives the small corner label.\n- **Headless browser:** `/usr/bin/google-chrome` is installed. Screenshots at 1.5 s and 2.5 s after load at 800x600 differ (different md5 hashes), and the second frame shows rockets in new positions. I did not run the scorer itself, so the exact `check_mode` it reports is unconfirmed.",
  "ttft_ms": 10748,
  "type": "result",
  "duration_ms": 30681,
  "uuid": "[REDACTED]",
  "ttft_stream_ms": 1261,
  "time_to_request_ms": 306,
  "first_content_frame_ms": 1261,
  "queued_turn_count": 0,
  "result_index": 0
 }
]

Get new runs and ranking changes weekly