vrinda.dev / glm-vs-sonnet
‹ all comparisons

03 / glm-vs-sonnet · T9-racing-car

Same prompt. 1/4 the price.

The same 785-byte base card, on three GLM arms and one raw Sonnet baseline — a byte-identical prompt for the glm-bare vs sonnet-raw pair; the +spec and +combo arms prepend an extra layer on that same card. The cheapest GLM arm ran at $0.0347 against Sonnet’s $0.1514 — roughly a quarter of the price — and the eye called the GLM build premium. Read the caveat on that verdict below; it matters.

# byte-identical base card

T9 prompt sha-256 (both waves)

2c0f286382c2580e2c88496582c31b618115d694648405f44b7baf91036b7763

Both the wave-06 (GLM) and wave-11 (Sonnet) T9 cards are the same 785-byte base text, hashed independently to this sha-256. The byte-identical head-to-head is glm-bare vs sonnet-raw, which run this base card with nothing prepended; the +spec and +combo arms add an extra instruction layer on top of the same base card. This is the same card as the showdown page (a nice cross-check — same base T9 prompt).

show the exact prompt
Build a playable single-file HTML 3D car racing game using exactly ONE external script:
the Three.js CDN (no other dependencies, no import maps, no modules). Requirements:
a road with side barriers scrolling toward the camera; a player car controlled with
arrow keys / A-D (lane steering) that feels responsive; oncoming obstacle cars spawning
at increasing frequency; collision ends the run with a game-over panel and Restart
button (restart fully resets state); score = distance, increasing over time, shown in
a HUD; speed ramps up gradually; the FIRST SCREEN is the actual playable game already
running (no start overlay); mobile-responsive canvas; and a DOM-mirrored QA hook
<script id="qa-state" type="application/json"> updated every ~500ms with
{state, score, speed, crashes}.

785 bytes · sha-256 recomputed directly from wave-06.spec.json and wave-11.spec.json — identical on both sides

# same base card, four builds, four prices

armmodelwavemetered costusd_sourceartifact
glm-bare z-ai/glm-5.2 wave-06 $0.0347api api 24,148 B
sha f167cbdb…
glm+combo z-ai/glm-5.2 wave-06 $0.0562api api 17,016 B
sha 34372d84…
glm+spec z-ai/glm-5.2 wave-06 $0.0827api api 19,668 B
sha 5e1a50c8…
sonnet-raw anthropic/claude-sonnet-5 wave-11 $0.1514api-backfill api-backfill 13,019 B
sha 6b60250d…

Cost delta (metered): cheapest GLM ($0.0347) is ~4.4× cheaper than Sonnet RAW ($0.1514); the +combo arm ($0.0562) ~2.7× cheaper. The three GLM arms are usd_source = api; Sonnet is api-backfill (backfilled, not live-metered at call time).

costs & gen-ids: pivot-qv/receipts.jsonl (wave-06 lines 122/123/125, wave-11 line 150) · all four finish_reason “stop”, none empty/failed

# the verdict (verbatim) — with its caveat

mandatory — apples-to-apples caveat

The “premium” quote below was the eye’s read of the “GLM Best One Call” (wave-10, an evolved ~2000-byte prompt) against Sonnet RAW — not the byte-identical wave-06 tiles this page ships. This page deliberately uses the tighter byte-identical W6-vs-W11 pairing for the cost proof; the quote is directional quality context, not a verdict rendered on these exact tiles.

quality verdict · source line 82

From that, we are able to manage the quality of the playing experience with our systems, including the broad one. Also, the sales Explorer data Explorer is looking just okay-ish, slightly old-fashioned, so our iterations are beating them anyway. Anyway, our GLM best one is the best of the lot. It looks very premium, and even the best one also looks premium compared to Sonnet RAW.

racing background · source line 80

When it comes to Sonnet, the spreadsheet one did not generate. There is a truncated length issue. The racing car one's background looks very premium, like it's bright. For all our remaining racing ones, the background is black. It feels like maybe we might have mentioned that it should be in the night or black or whatever, but here the background is like the race is happening in the morning time. That's why the background looks nice.

Night-vs-day caveat: there is no night / dark / black instruction in any racer prompt or spec — the dark scene is GLM’s own taste, the bright daytime one is Sonnet’s. So the “premium” nod to Sonnet’s background was substantially about the bright lighting, not overall build quality.

verbatim, unaveraged: pivot-qv/SPONSOR-VERDICTS-WAVES-1-5.md (lines 80, 82, 94)

# open the artifacts

cheapest
glm-bare
z-ai/glm-5.2 · wave-06
$0.0347

artifact loads once published

sha f167cbdb…open full screen ↗
glm
glm+combo
z-ai/glm-5.2 · wave-06
$0.0562

artifact loads once published

sha 34372d84…open full screen ↗
glm
glm+spec
z-ai/glm-5.2 · wave-06
$0.0827

artifact loads once published

sha 5e1a50c8…open full screen ↗
baseline
sonnet-raw
anthropic/claude-sonnet-5 · wave-11
$0.1514

artifact loads once published

sha 6b60250d…open full screen ↗

Previews are sandboxed (sandbox="allow-scripts", no same-origin access) and load on click. The + in two filenames is URL-encoded as %2B. Until the artifacts are published, each tile shows its placeholder and its open full screen link.

# receipts

armmodeltokens (in / out)durationusdusd_sourcegen-id
glm-barez-ai/glm-5.2 190 / 12,086287.53 s $0.03473886api gen-…tPZIhG
glm+comboz-ai/glm-5.2 513 / 18,148188.69 s $0.05621197api gen-…rxERiT
glm+specz-ai/glm-5.2 391 / 18,669257.33 s $0.0826519api gen-…lGwqgg
sonnet-rawanthropic/claude-sonnet-5 300 / 15,080142.45 s $0.1514api-backfill gen-…SJRiXV

Prompt-token counts differ (190 / 513 / 391 / 300) — the +spec and +combo arms prepend a spec layer to the identical base prompt, and GLM vs Claude-Sonnet tokenize the same bare text differently. The byte-identical claim is about the prompt_text (sha 2c0f2863), not token counts.

show all 4 verbatim receipt rows
{"wave": "wave-06", "task_id": "T9-racing-car", "arm": "glm-bare", "call_k": 1, "turn": 1, "model_slug": "z-ai/glm-5.2", "served_provider": "Novita", "served_quantization": "fp8", "gen_id": "gen-1784056130-tPZIhGgIhGAY9ziu9VPN", "finish_reason": "stop", "prompt_tokens": 190, "completion_tokens": 12086, "duration_s": 287.53, "usd": 0.03473886, "retry": 0, "ts": "2026-07-14T19:13:41Z", "usd_source": "api", "failed": false, "empty": false, "artifact": "glm-bare-c1.html"}

{"wave": "wave-06", "task_id": "T9-racing-car", "arm": "glm+combo", "call_k": 1, "turn": 1, "model_slug": "z-ai/glm-5.2", "served_provider": "Baidu", "served_quantization": "fp8", "gen_id": "gen-1784056181-rxERiTfBXIeFdPtJaOLT", "finish_reason": "stop", "prompt_tokens": 513, "completion_tokens": 18148, "duration_s": 188.69, "usd": 0.05621197, "retry": 0, "ts": "2026-07-14T19:12:53Z", "usd_source": "api", "failed": false, "empty": false, "artifact": "glm+combo-c1.html"}

{"wave": "wave-06", "task_id": "T9-racing-car", "arm": "glm+spec", "call_k": 1, "turn": 1, "model_slug": "z-ai/glm-5.2", "served_provider": "AkashML", "served_quantization": "fp8", "gen_id": "gen-1784056168-lGwqggwkN11g1hLr00NQ", "finish_reason": "stop", "prompt_tokens": 391, "completion_tokens": 18669, "duration_s": 257.33, "usd": 0.0826519, "retry": 0, "ts": "2026-07-14T19:13:48Z", "usd_source": "api", "failed": false, "empty": false, "artifact": "glm+spec-c1.html"}

{"wave": "wave-11", "task_id": "T9-racing-car", "arm": "sonnet-raw", "call_k": 1, "turn": 1, "model_slug": "anthropic/claude-sonnet-5", "served_provider": "Amazon Bedrock", "served_quantization": null, "gen_id": "gen-1784059269-SJRiXVi2MVYR25AiEboh", "finish_reason": "stop", "prompt_tokens": 300, "completion_tokens": 15080, "duration_s": 142.45, "usd": 0.1514, "retry": 0, "ts": "2026-07-14T20:03:34Z", "usd_source": "api-backfill", "failed": false, "empty": false, "artifact": "sonnet-raw-c1.html"}

source: pivot-qv/receipts.jsonl — rows copied verbatim (wave-06 lines 122/123/125, wave-11 line 150)

# disclosures

disclosures (7)
  1. mandatoryApples-to-apples substitution of the verdict quote. The “premium” quote was the eye’s read of “GLM Best One Call” (wave-10, an evolved ~2000-byte prompt) vs Sonnet RAW — not the byte-identical wave-06 tiles shipped here. This page uses the tighter byte-identical W6-vs-W11 pairing; the quote is directional quality context, not a verdict on these exact tiles.
  2. Night-vs-day background caveat. No night / dark / black instruction exists in any racer prompt or spec. The dark scene is GLM’s own taste, the bright daytime one Sonnet’s — so the “premium” nod to Sonnet was substantially about the bright background, not overall build quality.
  3. Same-prompt proof (independently recomputed). Both wave-06 and wave-11 T9 prompt_text are 785 bytes with identical sha-256 2c0f2863…, recomputed directly from the two spec files — not trusted from the sweep. This also equals the showdown card sha.
  4. prompt_tokens differ; the prompt text does not. glm-bare 190, glm+spec 391, glm+combo 513, sonnet-raw 300 prompt tokens — because the +spec/+combo arms prepend a spec layer and GLM/Claude tokenize differently. The byte-identical claim is about prompt_text, not token counts.
  5. Sonnet cost is usd_source = api-backfill (backfilled, not live-metered at call time); the three GLM arms are usd_source = api.
  6. Cost delta (metered): GLM $0.0347 (bare) / $0.0562 (+combo) / $0.0827 (+spec) vs Sonnet RAW $0.1514 on the identical prompt — cheapest GLM ~4.4× cheaper, +combo ~2.7× cheaper.
  7. mandatoryn=1 eye illustrative — one eye, directional, not claim-grade.
source: pivot-qv/ — disclosures.md, SPONSOR-VERDICTS-WAVES-1-5.md, BLOCKERS.md (condensed verbatim)