{
 "title": "River mini-game: Qwen3.8-27B on a Mac Studio vs a DGX Spark, thinking off and on",
 "date": "2026-09-29",
 "prompt": "Create a single self-contained HTML file: a three.js mini-game where the player shapes a river. Load three.js and OrbitControls from a CDN via an import map; no other assets.\n\n- Terrain: a 128x128 heightfield valley sloping from one edge to the opposite edge, rendered as a lit mesh with grass, dirt and rock colouring by height and slope.\n- Water: simulate it on the same grid (shallow-water or virtual-pipe heightfield, not a pre-drawn path). A spring at the high edge adds water every step; water drains off the low edge. Render depth as a translucent surface above the terrain, lighter or foamy where it moves fast.\n- Tools: left-drag raises terrain (drop rocks/land); shift-drag or right-drag lowers it (dig). A brush-size slider. Water must visibly find a new path within a few seconds of a change.\n- Flow: a slider plus the +/- keys set spring rate from 0 (the river dries up) to high (it floods its banks).\n- HUD: flow rate, total water volume, FPS, a Reset button.\n- Camera: orbit with the middle mouse or while holding Space, so it doesn't fight the tools. Keep the sim stable at any setting; clamp so it never blows up.\n\nOutput only the HTML.\n",
 "sampling": {
  "temperature": 0.7,
  "top_k": 20,
  "top_p": 0.95,
  "seeds": [
   42,
   43
  ],
  "max_tokens": 196000,
  "note": "Identical request on both machines. max_tokens 196,000 fits inside the Spark's 196,608 serving window (the largest window run on that box after a 262,144 window hung it earlier the same day); the Mac served 262,144."
 },
 "serving": {
  "engine": "TensorFold 0.3.6.3 (commit 1911880) on both",
  "checkpoint": "Vontra/Qwen3.8-27B-MLX-4bit + z-lab/Qwen3.8-27B-DFlash2 drafter (4-bit)",
  "mac": "Mac Studio M4 Max 128 GB, MLX lane engine, --context 262144",
  "spark": "one DGX Spark GB10 (spark-b610), NVIDIA pytorch:26.07-py3 container, CUDA engine, --context 196608, host-memory guard (never fired; >=78 GiB available throughout)",
  "determinism": "Same seed on Metal and CUDA diverges early; each machine's output is its own generation, not a re-render of the other."
 },
 "arms": {
  "spark-think-on-s43": {
   "machine": "Spark",
   "thinking": "on",
   "seed": 43,
   "title_in_file": "Watershed",
   "completion_tokens": 84000,
   "reasoning_chars": 217157,
   "wall_s": 2430.19,
   "ttft_s": 0.106,
   "decode_tok_s": 34.57,
   "finish_reason": "stop",
   "html_bytes": 30604,
   "original_sha256": "fd7e80f64594ba9de03bb0ee8523ed912d5d1ea1730561362c02aa69a59a43cb",
   "original_url": "/lab/qwen3.8-27blocal/river-27b-mac-vs-spark/spark-think-on-s43/",
   "video": "spark-think-on-s43.mp4",
   "capture_page_errors": 0,
   "verdict_by_eye": "Best of the eight. A winding river over lit, textured terrain; flow 0 shrinks it (HUD: \"seeping away\"), max floods the low end into a lake; the ridge and dig shift its shape a little. Zero console errors.",
   "repairs": 0
  },
  "spark-think-on-s42": {
   "machine": "Spark",
   "thinking": "on",
   "seed": 42,
   "title_in_file": "BEDLOAD",
   "completion_tokens": 98741,
   "reasoning_chars": 243780,
   "wall_s": 2152.64,
   "ttft_s": 0.33,
   "decode_tok_s": 45.88,
   "finish_reason": "stop",
   "html_bytes": 33493,
   "original_sha256": "829797ec3ba5b17e52167a43a49d50faafbbe5c9df84835ddd3d4d1a263d1d91",
   "original_url": "/lab/qwen3.8-27blocal/river-27b-mac-vs-spark/spark-think-on-s42/",
   "video": "spark-think-on-s42.mp4",
   "capture_page_errors": 0,
   "verdict_by_eye": "Good. Clean lit scene and HUD; water collects into a valley lake and the volume readout climbs 562 → 5,195 with flow. Rerouting around the ridge/dig is not obvious in the clip.",
   "repairs": 0
  },
  "mac-think-off-s43": {
   "machine": "Mac",
   "thinking": "off",
   "seed": 43,
   "title_in_file": "Riverwright",
   "completion_tokens": 12074,
   "reasoning_chars": 0,
   "wall_s": 151.5,
   "ttft_s": 0.103,
   "decode_tok_s": 79.75,
   "finish_reason": "stop",
   "html_bytes": 33433,
   "original_sha256": "89488e352eab4f6896291f769235c043480b7cfd49b5070366385c44cd651e9d",
   "original_url": "/lab/qwen3.8-27blocal/river-27b-mac-vs-spark/mac-think-off-s43/",
   "video": "mac-think-off-s43.mp4",
   "capture_page_errors": 0,
   "verdict_by_eye": "Partial. Terrain renders near-black, but channels show and the ridge visibly raises ground with water spreading around it.",
   "repairs": 0
  },
  "mac-think-on-s42": {
   "machine": "Mac",
   "thinking": "on",
   "seed": 42,
   "title_in_file": "River Shaper",
   "completion_tokens": 11070,
   "reasoning_chars": 18681,
   "wall_s": 174.06,
   "ttft_s": 0.077,
   "decode_tok_s": 63.63,
   "finish_reason": "stop",
   "html_bytes": 13862,
   "original_sha256": "1458fce9d95d0556166ad05c0d57b148c47fe016997b759f659ff284fb7158c7",
   "original_url": "/lab/qwen3.8-27blocal/river-27b-mac-vs-spark/mac-think-on-s42/",
   "video": "mac-think-on-s42.mp4",
   "capture_page_errors": 0,
   "verdict_by_eye": "Partial. Coloured terrain; water pools and grows at max flow — floods like a lake rather than a river.",
   "repairs": 0
  },
  "mac-think-on-s43": {
   "machine": "Mac",
   "thinking": "on",
   "seed": 43,
   "title_in_file": "River Shaper",
   "completion_tokens": 16960,
   "reasoning_chars": 34246,
   "wall_s": 284.44,
   "ttft_s": 0.075,
   "decode_tok_s": 59.64,
   "finish_reason": "stop",
   "html_bytes": 13107,
   "original_sha256": "3313bc6e4cd9a81617cf93eed1af37a3b23488dda78013bd4e53650688c9fea2",
   "original_url": "/lab/qwen3.8-27blocal/river-27b-mac-vs-spark/mac-think-on-s43/",
   "video": "mac-think-on-s43.mp4",
   "capture_page_errors": 0,
   "verdict_by_eye": "Weak. The valley sits under a sheet of water even at flow 0.",
   "repairs": 0
  },
  "mac-think-off-s42": {
   "machine": "Mac",
   "thinking": "off",
   "seed": 42,
   "title_in_file": "Confluence",
   "completion_tokens": 9435,
   "reasoning_chars": 0,
   "wall_s": 122.28,
   "ttft_s": 1.376,
   "decode_tok_s": 78.03,
   "finish_reason": "stop",
   "html_bytes": 26448,
   "original_sha256": "f805d70f36460524abe3fe37658fb9e946983ab73f0757b06bad2c6b0a716134",
   "original_url": "/lab/qwen3.8-27blocal/river-27b-mac-vs-spark/mac-think-off-s42/",
   "video": "mac-think-off-s42.mp4",
   "capture_page_errors": 0,
   "verdict_by_eye": "Weak. Polished HUD, but terrain renders near-black and there is one streak of water; the flow slider has no visible effect in the clip.",
   "repairs": 0
  },
  "spark-think-off-s42": {
   "machine": "Spark",
   "thinking": "off",
   "seed": 42,
   "title_in_file": "Shaper",
   "completion_tokens": 11511,
   "reasoning_chars": 0,
   "wall_s": 162.23,
   "ttft_s": 0.311,
   "decode_tok_s": 71.09,
   "finish_reason": "stop",
   "html_bytes": 30087,
   "original_sha256": "9c6c946b4bc7655f328539737ccf37efe2cabb8728b6430a1e8a88fe5821ad3b",
   "original_url": "/lab/qwen3.8-27blocal/river-27b-mac-vs-spark/spark-think-off-s42/",
   "video": "spark-think-off-s42.mp4",
   "capture_page_errors": 0,
   "verdict_by_eye": "Weak. Near-black terrain, HUD prints raw <small> tags, a faint patch of water.",
   "repairs": 0
  },
  "spark-think-off-s43": {
   "machine": "Spark",
   "thinking": "off",
   "seed": 43,
   "title_in_file": "Riverwright",
   "completion_tokens": 11289,
   "reasoning_chars": 0,
   "wall_s": 160.47,
   "ttft_s": 0.108,
   "decode_tok_s": 70.4,
   "finish_reason": "stop",
   "html_bytes": 29981,
   "original_sha256": "7a7dabc635ede435944e12aaab2257cfe237156c761974d86502938213c5b141",
   "original_url": "/lab/qwen3.8-27blocal/river-27b-mac-vs-spark/spark-think-off-s43/",
   "video": "spark-think-off-s43.mp4",
   "capture_page_errors": 2,
   "verdict_by_eye": "Broken as shipped: `water` declared twice (a Float32Array and the water mesh), so the module never runs. Two one-line fixes tried (rename the mesh; a for-loop that never incremented x); a third error then appeared (water volume goes NaN, TypeError every frame) and the repair was stopped per the three-error rule. The playable link is the untouched original.",
   "repairs": "2 tried, abandoned at 3rd error"
  }
 },
 "ranking_by_eye": [
  "spark-think-on-s43",
  "spark-think-on-s42",
  "mac-think-off-s43",
  "mac-think-on-s42",
  "mac-think-on-s43",
  "mac-think-off-s42",
  "spark-think-off-s42",
  "spark-think-off-s43"
 ],
 "recording": {
  "method": "Headless Chromium (ANGLE/Metal) 1280x720, deterministic 24 fps clock shim, 32 s per arm, identical scripted input on every arm: 0-6 s idle; 6 s flow slider to minimum; 12 s to maximum; 18 s to middle + a 2.1 s left-drag ridge across screen centre; 25 s a shift+left diagonal dig. Flow slider found by label; every arm's slider was found. Math.random pinned to a fixed LCG on the capture side only; published files untouched.",
  "caveat": "The fixed clock steps each game at 24 fps; a game that scales its simulation by real frame time will evolve at its own pace, and some rerouting may happen after the 32 s window."
 }
}
