· Claude Fable 5.1 · Same prompt: a million-particle three.js black hole

A TDZ error blanked the page, and one round of feedback fixed it

Fable 5.1's one-shot attempt died in initialisation on a temporal dead zone error and rendered nothing. Handed back the machine-collected stack trace, it repaired itself in 111 seconds and one round. This page runs the repaired version — which boots, but is nearly all white, and lost the byte-for-byte ?t= contract along the way.

A pale blue-white haze fills the frame with almost no visible black hole or disk structure; the HUD reads 10 FPS and 300,000 particles
Run the demo WebGL · uses your GPU
drag to orbit · scroll to zoom · space to pause · 1/2/3 for palettes Open full screen ↗

The on-screen labels are in Chinese: this is the model's verbatim output from an experiment run in Chinese, and editing it would make the artifact something other than what was measured.

How it was made

Model
Claude Fable 5.1
us.anthropic.claude-fable-5-1
How
one shot
Output tokens
26.5k
Wall time
4m 55s
Artifact
584 lines, one file
Error feedback
1 round

The one-shot version rendered nothing, because of a temporal dead zone error:

ReferenceError: Cannot access 'fps' before initialization
    at updateHUD (index.html:535:20)
    at applyPalette (index.html:503:7)

applyPalette() called updateHUD() early in initialisation, and updateHUD() read a variable that a later let fps = … had not declared yet. Worth crediting: the __DEMO_ERROR hook it wrote itself worked correctly and put the stack trace on the page. The error handling was right; the code had a bug.

Then exactly one round of repair, with feedback that was entirely machine-collected — the real stack trace, __DEMO_READY=false, the console error count, and “the frame is black apart from the error box”. Nobody told it what to change. 111 seconds later: __DEMO_READY true, zero page and console errors.

What runs on this page is that repaired version. It introduced two new problems, both left in:

  1. The frame is nearly all white. A pale blue haze, with no black hole or disk structure visible — worse exposure than the Astra run.
  2. The determinism contract broke. Two renders at the same ?t=7.5 no longer produce the same sha256. The one-shot version was reproducible; fixing the bug damaged either the time lock or the random source.

The particle count is 300,000, the lowest of the three — the other two both report a million. Initialisation takes 25.5 seconds.

Controls: drag to orbit, scroll to zoom, space to pause, 1/2/3 for palettes.

Same prompt, other runs

three.js r170 is served from this site, so running a demo makes no third-party request. Published by the author as an individual; testing was self-funded and nothing here represents an employer's position.