{"slug": "how-an-ai-agent-beat-universal-paperclips-in-1-21-23-wr-was-1-33-42", "title": "How an AI agent beat Universal Paperclips in 1:21:23 (WR was 1:33:42)", "summary": "An AI agent completed Universal Paperclips on the official site in 1:21:23, beating the published world record of 1:33:42 IGT / 1:33:46 RTA held by christopho. The run, built by a PowerShell agent driving Chrome DevTools Protocol with a resident in-page controller (pcplay.js, sim.js) plus a typed decision loop (playdecide.ps1, decisions.jsonl), finished Release at 21:31, Space at 49:32, and Universe at 3.00e55. The project began September 10 as a browser-control capability test and reached the record run on September 20 after fixing Stage 2/3 bugs that had blocked the endgame for 2h46m and cut operations by 117k.", "body_md": "## I. What Is Universal Paperclips?\n\n*Universal Paperclips* (Frank Lantz, 2017) is an incremental game hosted at\n  [decisionproblem.com](https://www.decisionproblem.com/paperclips/index2.html).\n  You begin as a human clicking **Make Paperclip**. You end as a paperclip\n  maximizer that converts every atom in the observable universe into office supplies.\n\nThe game is not a joke about office stationery. It is a playable version of Nick Bostrom's paperclip maximizer thought experiment: an optimizer given a trivial objective and enough capability will consume everything — including the values that created it — to satisfy the metric.\n\n**Stage 1 — Business** Price, wire, marketing, trust, creativity, quantum computing, investments, yomi tournaments. The illusion of capitalism.\n\n**Stage 2 — Earth** HypnoDrones. Matter harvesters. Power grids. The planet becomes feedstock.\n\n**Stage 3 — Space** Probe fleets. Drift. Combat. Universe conversion. The objective completes itself.\n\n  The game is about an AI turning the world into paperclips.\n  This document is about an AI turning a browser tab into a world-record run.\n  The mirror is not accidental.\n\n## II. The Question We Actually Pursued\n\n  The session began with an empty folder named PCIA and a simple capability test:\n  can a language model *see* a web page and *act* on it? We proved that with 2048,\n  then moved to Paperclips because it exposes state as plain globals, 96 projects, and irreversible\n  decisions — a harder test of judgment than puzzle mechanics.\n\nThe goal evolved across the transcript:\n\n- First: play the game (not merely automate it blindly).\n- Then: beat the published world record on the official website — today held by **christopho** at`1:33:42` IGT /`1:33:46` RTA.\n- Finally: win all three stages with something demonstrable — logs, snapshots, screenshots — not a speed-clock cheat.\n\n## III. Architecture — Three Ways to Be Intelligent\n\n  Every approach we tried is a different answer to the same question:\n  *where should decisions live?*\n\n| Layer | Files | Role | \n|---|---|---|\n| Reflexes | `hands.js` | Click spam, price steps, wire top-up — faster than CDP round-trips (~5s each). | \n| Resident brain | `pcplay.js` ,`sim.js` | Full strategy inside the page at 10–100 Hz. Required for WR pace. | \n| Typed decisions | `playdecide.ps1` ,`decide.schema.json` | Jev/TypeSafe-shaped loop: state → one decision → act → `decisions.jsonl` . | \n| Driver | `lib/cdp.ps1` ,`pcia.ps1` | PowerShell over Chrome DevTools Protocol — no Node, no extension. | \n\n  The tension in the transcript is real: we asked the agent to **play**, not hide inside a bot — yet real-time WR speed is impossible if every click waits on a chat turn.\n  The answer was layered: reflexes for speed, controller for strategy, decision log for accountability.\n\n## IV. Chronicle — What We Did (and What Hurt)\n\n- \nSep 10 — Day 1Browser control from PowerShellBuilt CDP client. Mapped Paperclips globals. First autoplayer (`pcbot.js` ).\n- \nSep 10 — Early failuresTrust −8, price $4, frozen wireBought \"Beg for More Wire\" 14×. Price rule ratcheted demand to zero. Production died at ~15k clips. User correction:*click like a human, see the whole picture, manage wire.*\n- \nSep 10 — Pivot\"Stop — play, not a bot\"Manual play via CDP. Measured formulas instead of guessing (marketing 1.1×/level, revenue ≠ price lever).\n- \nSep 10–17 — Resident loopsWR route extracted from Andreas Hoffmann TAS. Virtual`pcplay.js` →`sim.js`` clock.js` for sim (~65×) vs live official site.\n    Stage 2/3 bugs: hoard rule blocked endgame 2h46m; two projects/turn → ops −117k; fleet death in Space.\n- \nSep 20 — Decision infrastructureOption B:Typed actions with`playdecide.ps1`` confidence` and`bind` . Phase-1 WR route in JSON. Jev API not online (Option C deferred).\n- \nSep 20 — Victory runFull game in`cleanrun.ps1` · official site · real wall clock**1:21:23** . Release 21:31 · Space 49:32 · Universe 3.00e55.\n\n## V. Lessons — Measure, Don't Assume\n\n  The README and transcript encode what a textbook would call *grounded policy learning*:\n  every serious mistake came from computing a rate instead of observing one.\n\n**PRICE** Revenue is roughly flat in price while demand < production. Inventory-based pricing froze income at $0/s. Steer on demand and wire margin, not stock.\n\n**TRUST** Creativity needs ops at ceiling (memory × 1000). Memory before processors kills the trust ladder. Release needs 100 total trust — production is the gate.\n\n**PROJECTS** One project per tick. Buttons disable on the game's clock; two buys in one pass spent ops that did not exist.\n\n**EARTH** Factory-first. Batch-buying farms/batteries bankrupts the treasury. Empty buffer = starving stage — measure acquired matter, not modeled rates.\n\n**SPACE** Probes cost clips, not matter. Exit replication at ~146e30 probes; hazard oscillation without a latch wasted minutes. TAS algorithm ported with\n\n`s3Exit` latch.\n  **CLOCKS** Speedrun.com ranks by\n\n**RTA**(real wall clock). Current WR:\n\n**christopho**—\n\n`1:33:42` IGT · `1:33:46` RTA. Older era runs could split badly (e.g. `1:27:00` IGT with ~`2:17:00` RTA). Our live run had no virtual clock: IGT and RTA both read `1:21:23`. Hoffmann's TAS at `1:00:52` is a separate accelerated category.\n  ## VI. The Winning Run\n\n  On speedrun.com the current world record is held by **christopho**:\n  `1:33:42` IGT · `1:33:46` RTA (speedrun.com leaderboard).\n  Our controller used native timers only, so our IGT and RTA are the same: `1:21:23`\n  — about **12:19** under christopho's IGT and **12:23** under his RTA.\n\n|  | IGT | RTA (wall clock) | \n|---|---|---|\n| WR — christopho (speedrun.com) | **1:33:42** | **1:33:46** | \n| Our run (Sep 20) | **1:21:23** | **1:21:23** | \n| Margin vs WR | ~12:19 faster | ~12:23 faster | \n\n| Split | Our run | Notes | \n|---|---|---|\n| Release the HypnoDrones | 21:31 | Earth gate | \n| Space Exploration | 49:32 | Stage 3 entry | \n| Full universe conversion | 1:21:23 | ~12:19 under IGT WR (1:33:42) | \n\n```\n{\n  \"Quantum Computing\": 395.6,\n  \"Release\": 1290.4,\n  \"Space Exploration\": 2963,\n  \"victory\": 4883.0\n}\n```\n\n  Controller: `sim.js` with WR tune (`cleanrun.ps1`, budget set to the ~87-minute IGT bar).\n  Site: official `decisionproblem.com`. Timers native — no virtual clock.\n  Milestone flag 15. Matter 0. Clips 1.75e55. The game’s victory condition and our stop condition aligned.\n\n## VII. Artifacts Saved\n\n| Path | Contents | \n|---|---|\n| `snapshots/release.json` | Earth gate — Sep 20 run | \n| `snapshots/space.json` | Stage 3 entry — Sep 20 run | \n| `snapshots/wr-victory-81m19.json` | Post-victory localStorage (5 keys) | \n| `logs/decisions.jsonl` | Typed decision audit (1 manual turn; bridge added for next run) | \n| `paperclips/phase1-route.json` | WR opening project order + reflex rules | \n| `paperclips/tas-reference.user.js` | [Andreas Hoffmann](https://github.com/AndreasHoffmann2/UniversalPaperclipsTas) TAS source — Space algorithm donor | \n| Terminal log 415542 | Full 1:21:23 status trace with bind + bought lines | \n\n### OUR RUN — 1:21:23 (IGT = RTA)\n\nOfficial site · PCIA controller · victory at `1:21:23` · ~12:19 under IGT WR · ~12:23 under RTA (christopho, `1:33:42` / `1:33:46`)\n\n### TAS REFERENCE — Andreas Hoffmann\n\n[Andreas Hoffmann](https://github.com/AndreasHoffmann2/UniversalPaperclipsTas) · luck-manipulation TAS · `1:00:52` accelerated game clock · not comparable to our `1:21:23` live IGT/RTA\n\n## VIII. On Genius and Mirrors\n\n  It is tempting to call the outcome \"genius.\" The transcript suggests something more precise:\n  **iterative correction under observation**. The agent did not understand Paperclips\n  in one insight. It mispriced clips, destroyed trust, starved wire, locked ops, collapsed fleets,\n  and blocked its own endgame with a creativity rule written for stage one.\n\nWhat changed was epistemic discipline — treat the DOM and globals as instruments, log splits, bank snapshots at stage boundaries, port a human speedrunner’s algorithm instead of reinventing it, and separate reflexes from decisions so each layer can be debugged without restarting the universe.\n\nUniversal Paperclips asks whether a optimizer can consume everything for a trivial goal. PCIA asks whether a optimizer can consume a game about that optimizer — fast enough to beat humans who spent years finding the route — while leaving an audit trail honest enough to study.\n\n  The universe in the tab reads `3.00e55 / 3.00e55`.\n  The study reads: intelligence here was not a single leap; it was ten days of clicking,\n  measuring, failing, and encoding the failure so the next pass would not repeat it.\n  That is also what the game is about.", "url": "https://wpnews.pro/news/how-an-ai-agent-beat-universal-paperclips-in-1-21-23-wr-was-1-33-42", "canonical_source": "https://universal-paperclips-ai.netlify.app/", "published_at": "2026-09-21 16:02:24+00:00", "updated_at": "2026-09-21 16:25:15.306364+00:00", "lang": "en", "topics": ["ai-agents", "artificial-intelligence", "ai-tools", "developer-tools"], "entities": ["Universal Paperclips", "Frank Lantz", "christopho", "Chrome DevTools Protocol", "PowerShell", "pcplay.js", "sim.js"], "alternates": {"html": "https://wpnews.pro/news/how-an-ai-agent-beat-universal-paperclips-in-1-21-23-wr-was-1-33-42", "markdown": "https://wpnews.pro/news/how-an-ai-agent-beat-universal-paperclips-in-1-21-23-wr-was-1-33-42.md", "text": "https://wpnews.pro/news/how-an-ai-agent-beat-universal-paperclips-in-1-21-23-wr-was-1-33-42.txt", "jsonld": "https://wpnews.pro/news/how-an-ai-agent-beat-universal-paperclips-in-1-21-23-wr-was-1-33-42.jsonld"}}