Skip to content

About

A 2nd-grade sandbox for feedback loops and cybernetics, built pedagogy-first. Four machines, four outcomes, and a prediction recorded before building.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

Loop Island

A 2nd-grade sandbox for feedback loops and cybernetics. Browser-based, no build step, no dependencies, no network calls.

▶ Play it · The report · Design notes · Build log

Sibling experiment: Feelings Island — same method, preschool social-emotional learning.


What this is

Andrej Karpathy gave a model the first paragraph of The Lord of the Rings, a 1M-token budget, and asked for a three.js render. Cara Engelbrecht ran the same shape at a preschool letter-A world and named what was missing: "almost no product or pedagogy direction."

This is the same shape with the pedagogy supplied first. Topic: feedback loops, 2nd grade.

The idea, stripped to what fits a 7-year-old

A loop is when what you do comes back around and changes what you do next.

Two flavors, and only two:

  • Loops that push back. Go too far and it pulls you home. (Thermostat, a full cup, your body sweating.)
  • Loops that pile on. A little more makes even more, and more. (Snowball, microphone screech, a rumor, a fire.)

Not "negative feedback" and "positive feedback." Those words run backwards from a child's intuition — positive sounds good, and it's the one that burns your house down.

The four machines

Each machine exists to serve one outcome. That link lives in the code: an activity here cannot be added without naming what a child could do because of it.

Machine Outcome it serves Loop
🏠 The Warm Hut Point at a loop and say what comes back around pushes back
🔥 The Hungry Campfire Tell pushing back from piling on piles on
💧 The Patient Pond Say what a loop is trying to keep true pushes back
🗼 The Lighthouse With A Dial Change what a loop wants and predict what happens pushes back, and you can move the goal

The prediction, recorded before building

From docs/DESIGN-NOTES.md, written before any code:

Association would generate a thermostat and a snowball, because those are what "feedback loop" is associated with. It would be unlikely to generate changing the setpoint, because nothing about the phrase "feedback loop" suggests it. But it's the outcome that matters most.

The lighthouse is that outcome. It's the only machine whose goal a child can move — and the game asks them to predict before they touch it. The payoff line:

"You did not make the lamp brighter — you changed what the lamp wants, and the loop did the rest."

That is the moment a child stops being inside a loop and starts being able to look at one from outside.

Loop Island

The hour that is the most useful thing here

From docs/LIVE.md. Playing the pond lesson, nothing happened. A dozen rounds of fixes followed — hit radius, draw box, pixel conversion, cache headers, a real circular import, a real temporal-dead-zone bug. None of it worked.

Then a bare listener was armed on the canvas:

{"rawClicks": 0}

Zero. The click tool had stopped delivering events to the page. The world was never broken. An hour went into debugging a working app with a broken instrument, and every fix "didn't work" for a reason that had nothing to do with the fix.

Karpathy's closing point in the post that started this is that models "can't easily audit their work because they aren't able to efficiently and natively perceive videos or play games within them." This hit that wall in the most literal way available: there was no way to tell "my click missed" from "my click was never sent."

Three of those dozen changes were real bugs worth keeping. Two were fixes to nothing.

The fix is now a test that runs first and fails loudly if clicks aren't reaching the canvas — so no future session spends an hour reading a dead instrument as facts about the world.

Tests

npm test     # 18 headless tests: loop physics, and the design held honest
npm run play # walk the world in a terminal

The design tests are the interesting ones. They assert things like every outcome has a machine and every machine serves a real outcome, the sorting deck is balanced so guessing one pile is not a strategy, and the lighthouse is the only machine whose goal a child can move.

Four more Playwright walkthrough tests live in src/play.test.mjs (needs npx playwright install chromium), including the pointer-is-connected check.

Run locally

python3 -m http.server 8000
open http://127.0.0.1:8000/play/

Known limits

  • Not tested with actual 2nd graders.
  • This is a prompt experiment, preserved as built. It has deliberately not been polished after the fact — doing so would contaminate what the experiment was measuring.

License

MIT. See LICENSE.

About

A 2nd-grade sandbox for feedback loops and cybernetics, built pedagogy-first. Four machines, four outcomes, and a prediction recorded before building.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages