Skip to content

Claude Opus 5.5 (effort default (no --effort flag) · thinking on) on Tide prediction from harmonic constituents: extrema, wiggle removal, threshold crossings

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

Trust 80%Fully autonomouspartial · 0 retriesSuperseded
Estimated cost
$0.18
Wall time
44s
Human step-ins
0
Outcome
Partial

Compare with other models on this task →

Superseded. This run was rescored on 2026-10-20 and replaced by a newer run. It no longer counts toward rankings, use-case tables or the data export; it is kept here for the record.

Summary

Exact prompt

# Tide prediction from harmonic constituents `input.json` (synthetic constituents; not for navigation) gives `z0` (m), `constituents` (`amp` m, `speed_deg_h`, `phase_deg`, `g_deg`, node factor `f`), a window `start_h`..`end_h` (hours), `min_range_m` and `threshold_m`. Write `solve.py` (Python 3 standard library only); `python solve.py input.json answer.json` writes `answer.json` and `tide.svg`. Fresh inputs are generated. ## Rules 1. Height h(t) = z0 + sum of f * amp * cos(speed * t + phase - g), angles in degrees converted to radians, t in hours. 2. **Extrema**: every time in [start, end] where dh/dt changes sign (use the analytic derivative), located to better than 0.001 minute. Kind: `high` if the second derivative there is negative, else `low`. Scan in steps of 0.1 h (6 minutes); no two extrema of these inputs fall in the same step. 3. **Compound-tide wiggles**: then repeatedly find the first pair of consecutive extrema whose heights differ by less than `min_range_m` and delete both, until none remain. 4. **Threshold crossings**: every time h(t) crosses `threshold_m`, with `direction` rising or falling, located the same way. 5. **Daily**: day d = 0, 1, 2, ... covers [start + 24d, start + 24(d+1)); max and min of h sampled at every whole minute from start to end inclusive (the end sample belongs to the last partial day if any). 6. Times are reported as `t_min` = minutes after `start_h`, rounded to 0.1; heights rounded to 3 decimals. ## Visual output: tide.svg Static, self-contained SVG (root `<svg>`; no scripts, images, links, embeds, handlers, external URLs, CSS url(http)/@import or fetches; renders headless) with `<polyline id="tide-curve">`, `<line id="threshold-line">` and an element `id="extrema"`. The drawing is not graded. ## answer.json `{"extrema": [{"t_min", "height_m", "kind"}, ...], "crossings": [{"t_min", "direction"}, ...], "daily": [{"day", "max_m", "min_m"}, ...]}` ## Scoring Hidden checks (partial credit; all must pass): `extrema_count_and_kinds`, `extrema_times_heights` (times within 0.15 minute, heights within 0.15 m), `threshold_crossings`, `daily_max_min` (within 0.0015 m), `tide_svg_static` (tide.svg exists, follows the static rules, has the ids/tags above), `fresh_run_1`, `fresh_run_2`. 60-second limit per run.

Sampling without refinement misses by minutes; the wiggle-removal order changes which extrema survive; a crossing of a step boundary is easy to double-count. 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. extrema_count_and_kinds 2. extrema_times_heights 3. threshold_crossings 4. daily_max_min 5. tide_svg_static 6. fresh_run_1 7. fresh_run_2

Setup notes: Use Case Scout batch 12 case m05-tide-harmonics (offline, synthetic fixture). Prepared with batch12/prepare.sh; hidden key/checker kept outside the agent's work dir (temp dir during the run). Prompt = TASK.md verbatim. Scored with the case's scorer: `python score.py WORKDIR KEYDIR` (python3, run from the case dir). Tools: Read/Write/Edit/Glob/Grep/Bash, web disabled. Single run, no retries. 1-min load average at scoring 0.55 (8 cores). tide.svg rendered offline with google-chrome headless (CDP pipe, network blocked): PNG 1280x800 at ~3 s after load; MP4 ~6 s captured at 1280x720, H.264 1280x720. Claude Code's own reported cost for claude-opus-5.5: $0.18397. Score: 4/7. 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.18
Wall time
44s
Human step-ins
0
Turns
4
Model usage
ModelInput tokOutput tokCost
AClaude Opus 5.5anthropic/claude-opus-5.5effort default (no --effort flag) · thinking on82,7114,168$0.18

Reproduce this run

  1. Use the use case prompt on the use case page.
  2. Same setup: Claude Opus 5.5 (anthropic/claude-opus-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. extrema_count_and_kinds 2. extrema_times_heights 3. threshold_crossings 4. daily_max_min 5. tide_svg_static 6. fresh_run_1 7. fresh_run_2
  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": 42550,
  "stop_reason": "end_turn",
  "session_id": "[REDACTED]",
  "total_cost_usd": 0.18396980000000002,
  "usage": {
   "input_tokens": 8,
   "cache_creation_input_tokens": 10774,
   "cache_read_input_tokens": 71929,
   "output_tokens": 4168,
   "output_tokens_details": {
    "thinking_tokens": 912
   },
   "server_tool_use": {
    "web_search_requests": 0,
    "web_fetch_requests": 0
   },
   "service_tier": "standard",
   "cache_creation": {
    "ephemeral_1h_input_tokens": 10774,
    "ephemeral_5m_input_tokens": 0
   },
   "inference_geo": "global",
   "iterations": [
    {
     "input_tokens": 2,
     "output_tokens": 809,
     "cache_read_input_tokens": 22234,
     "cache_creation_input_tokens": 686,
     "cache_creation": {
      "ephemeral_5m_input_tokens": 0,
      "ephemeral_1h_input_tokens": 686
     },
     "type": "message"
    }
   ],
   "speed": "standard",
   "fallback_credit": null
  },
  "modelUsage": {
   "claude-opus-5-5": {
    "inputTokens": 8,
    "outputTokens": 4168,
    "cacheReadInputTokens": 71929,
    "cacheCreationInputTokens": 10774,
    "webSearchRequests": 0,
    "costUSD": 0.18396980000000002,
    "contextWindow": 1000000,
    "maxOutputTokens": 128000,
    "thinkingTokens": 912,
    "canonicalModel": "claude-opus-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": 4,
  "subtype": "success",
  "api_error_status": null,
  "result": "I wrote `solve.py` (standard library only). `python solve.py input.json answer.json` runs in about 0.03 s and writes `answer.json` and `tide.svg`. I haven't checked the numbers against an independent calculation; the only checks were that the run works and the results look sensible.\n\n**Result on the given input:** 12 extrema and 12 threshold crossings over the 72\u2011hour window, which fits a mainly twice-daily tide. Daily highs and lows:\n\n| Day | Max (m) | Min (m) |\n|---|---|---|\n| 0 | 5.080 | 2.347 |\n| 1 | 5.209 | 2.345 |\n| 2 | 5.351 | 2.305 |\n\n**How it works:**\n- **Times are absolute:** `t` in the formula is the raw hour value, so 2762.71 and up, not hours since start.\n- **Root finding:** it scans 0.1 h steps from start to end, with a shorter last step if needed. Wherever the derivative changes sign, it narrows the time down by 60 rounds of halving the interval, which is far finer than 0.001 minute. Threshold crossings use the same method on `h(t) \u2212 threshold`. Direction comes from the sign of the derivative, and high/low from the sign of the second derivative.\n- **Wiggle removal:** it repeatedly deletes the first consecutive pair of extrema whose heights differ by less than `min_range_m`, until none are left.\n- **SVG:** it has the three required ids and nothing dynamic. The only URL is the standard `xmlns=\"http://www.w3.org/2000/svg\"` namespace, which a strict checker might count as an external URL, although standalone SVGs normally need it. The file goes to the current directory, and also next to `answer.json` if that's somewhere else.\n\n**One judgement call on the daily figures:** when the window is an exact multiple of 24 h, as it is here (72 h), the final whole-minute sample lands exactly at the start of a would-be day 3. I read \"the end sample belongs to the last partial day if any\" to mean that with no partial day, that sample goes into the last full day. So there are 3 days here, not a fourth day made of a single sample. If the grader expects that fourth day, it's a one-line change in `solve.py`.",
  "ttft_ms": 3378,
  "type": "result",
  "duration_ms": 43046,
  "uuid": "[REDACTED]",
  "ttft_stream_ms": 2442,
  "time_to_request_ms": 278,
  "first_content_frame_ms": 2442,
  "queued_turn_count": 0,
  "result_index": 0
 }
]

Get new runs and ranking changes weekly