Same models, new shell: Opus 4.8 and Fable 5 hit 99% on ARC-AGI-3

A harness called Schema makes the model write each game's rules as a runnable program, verify them, then act. Self-reported 98.98% on the 25 public games — not independently verified by ARC Prize.
By Impossible Research07-17 · 12 min read⚑ Research paper
🎧 Listen to the podcast0:00 / --:--
0:00 / --:--
Research Explainer · XiaoHu Explains
60-second summary
  • ARC-AGI-3 is a class of games that tell you nothing: the AI only gets a 64×64 colored grid and a few buttons it can press — no object list, no stated goal, no reward signal. When it launched in March, the strongest models scored only 0.51.
  • Schema is a harness — it doesn't touch the model's weights, only how the model is used. It makes the model write each game's rules as a runnable program, replay every recorded step against that program to check it, then search within that program for the next move.
  • On the 25 public games, Opus 4.8 paired with Fable 5 scored 98.98, and GPT-5.6 Sol scored 95.35. Both are the team's own self-reported numbers, not independently verified by ARC Prize.
  • With the same Opus 4.8 and Fable 5, swapping in the stock Claude Code harness scores only 42.83. Swapping in Schema alone adds 56.15 points.
  • That 99% measures step efficiency — the AI's step count compared to a human's first-time playthrough (squared ratio). It means nearly every game was cleared at an efficiency matching or beating humans; solving it alone isn't enough.
⚑This is Impossible Research's own harness release. Both scores are self-reported by the team, measured only on the 25 public games, and have not been independently verified by ARC Prize. How it would score on the semi-private set hasn't been measured yet.
Impossible Research × Berkeley × CMU

A game that won't tell you the rules

Impossible Research (working with UC Berkeley and Carnegie Mellon University) released Schema, a harness that lets frontier models play games like physicists. It targets a benchmark built specifically to trip up AI: ARC-AGI-3.

ARC-AGI-3 throws a game at the AI without explaining what it's looking at. Each step, all the AI gets is a 64×64 grid (16 colors) and a list of which buttons it can currently press. No object list, no rules, no stated goal, no signal telling it "that step was right." The only way forward is to act like a physicist: poke at it, guess the rules, and revise when you're wrong.

The image below is exactly what the AI actually sees across the 25 public games. Each tile is one game, and the AI has to work out for itself: which of these colored blocks is the character it controls, which are walls, which bar is a countdown, and what even counts as clearing the level.

Mosaic of the 25 ARC-AGI-3 public game screens
The 25 public ARC-AGI-3 games, one tile per game — this grid is all the AI ever sees, with no text explanation attached. Source: Impossible Research / Schema

This benchmark is brutal on frontier models. Its official metric, RHAE (Relative Human Action Efficiency), compares the AI's step count per level against a human playing for the first time. When it launched in March, the best verified frontier model scored only 0.51; by July, the best model — GPT-5.6 Sol at its highest reasoning setting — reached just 7.78 on the semi-private set and 13.33 on the public set. For reference, human action efficiency is a perfect 100.

Schema moved that number into an entirely different range: on the 25 public games, Opus 4.8 paired with Fable 5 scored 98.98, and GPT-5.6 Sol scored 95.35 — without changing a single byte of the underlying model weights.
🔧

What changed isn't the model — it's how the model gets used. Schema is a harness: it restructures how the visuals get fed in, how the model turns observations into an understanding of the game, how that understanding gets checked against real records, and how the plan built from it gets executed and corrected. Swap out this harness on the exact same Opus 4.8 plus Fable 5 pairing, and the public score jumps from 42.83 to 98.98.

Official Schema demo (47 seconds): the AI plays while writing the rules as a program — on screen it moves a block through a maze, the yellow bar at the bottom is the movement budget; the "99 RHAE" in the bottom right is the public score for Opus 4.8 + Fable 5, next to Sol's 13%. Source: Impossible Research / Haiwen Feng (@HavenFeng)
Understanding the 99%

What that 99 actually means

It's not "how many of the 25 games got solved." RHAE measures step efficiency, with a heavy squared penalty built in.

Here's the formula: for each level, take "human step count ÷ AI step count," square it, capped at 1.15. Later levels within a game carry more weight (increasing from 1 to n), and there's a completion cap tied to that weight — miss even one level, and the whole game can't score full marks. Every action the AI actually takes in the game, including exploratory steps taken just to probe the environment, counts toward its step total. Because it's squared, extra steps tank the score fast.

So "mostly cleared" can mean wildly different scores depending on efficiency. The source gives a paired example:

Agent A · cleared and efficient
97.7%

Cleared all 7 levels in 785 steps total, nearly matching the human baseline of 776. Both cleared and efficient — near-perfect score.

Agent B · cleared but wasteful
<14%

Used 1,591 steps just to clear the first 6 levels — 2.7x the human baseline — and still hadn't cleared level 7. The squared penalty plus the incomplete-run cap pushed the score below 14.

So this 98.98 is a composite score of "how much got completed" and "how efficiently" — not a solve rate. It forces the AI not just to play the game, but to play it as economically as a skilled human.

Core idea · one

Think like a physicist

Before a physicist can write down a law, they first have to decide what that law is even about: out of a pile of observations, which things count as "objects," and which properties define a "state." Only once that's settled does "how does the state change" become a meaningful question. Schema splits this into two problems that have to be solved together.

The first is state grounding: turning raw pixels into trackable objects, variables, and relationships. Nothing tells the AI which pixels are itself, which are a wall, and which are a "steps remaining" counter — it has to figure that out on its own. The second is mechanism discovery: finding out how those states change under a given action, and writing that rule as an actual runnable program.

LEVEL 1 · STATE GROUNDING What this world "is": which pixels are the character, walls, a counter raw grid screen character? wall? counter? self-named objects LEVEL 2 · MECHANISM DISCOVERY How this world "moves": state under an action, written as a step() program step(state, action) state' spring walls · fuel rings · color cycling… every game hides rules like these world_model.py one editable program Readable · diffable it's text, not a blob of vectors Replayable, verifiable checked step by step against real records Runs as a free simulator search inside it, no real steps spent Both layers, one file when a rule keeps failing to fit, the counterexample can indict the representation itself
Figure: state grounding "invents" the objects; mechanism discovery writes the rule for how states change. Schema puts both layers into one editable program, so when a rule keeps failing to match experiments, the counterexample can flip back and indict "the objects were misidentified" instead.

Crucially, these two problems can't be solved separately. A state representation that looks sound can still fall apart later: no matter how you try, you can't find a consistent rule that explains what happens next. When that happens, tweaking the rule isn't enough — you have to revisit what "state" even is.

Core idea

The latent world representation is a program, not a blob of vectors. Because it's a program, it gets three properties for free: readable (a text file you can open and diff), verifiable (replay it against the recorded real history, step by step), and searchable (a program is a simulator — planning inside it costs zero real-world steps).

An analogy · special relativity

When Michelson and Morley couldn't detect the medium that light was "supposed" to vibrate in (the ether), Lorentz took the first path: keep the ether, patch the laws, and use a contraction hypothesis to absorb the undetectable result. Einstein took the second path: delete the ether from "state" entirely, making simultaneity relative. When predictions keep failing, physicists often have to change not just the laws, but what "state" itself is. Schema lets the AI do the same thing: revise the representation, or revise the rule, then go back and make the other side consistent again.

Core idea · two

Write the program first, act only once it's verified

Having a program isn't enough on its own — Schema enforces very strict rules about how that program gets used. It runs a four-step outer loop: observe → deliberate → execute → record.

Record is the system's immutable interaction history. The AI can revise its own hypotheses and notes any time it wants, but it cannot change screens it has already received, or actions it has already taken. This append-only timeline is the one and only source of truth.

OUTER LOOP · running against the game observe get the raw grid deliberate reason to a decided action execute act step by step, self-checking record write to the timeline next round · a surprise voids the plan, back to deliberate TIMELINE · append-only · the one source of truth append-only INSIDE DELIBERATE · what happens in one deliberation (none of it touches the real environment) write theory write_code · edit step() certify run_backtest · replay full history plan run_bfs · search inside the model commit commit_actions · the only real move backtest mismatch → take the counterexample back, fix step(), try again
Figure: the outer loop runs against the real game across four steps, with an append-only timeline. Zoom into "deliberate" and inside it is: write theory → backtest and certify → plan by searching inside the model → commit the action. Only the last step, commit_actions, actually sends anything to the game.

Each time it deliberates, the AI updates its theory of the game — that step(state, action) program. It uses run_backtest to run that program against the full interaction history; wherever the prediction diverges from what actually happened, that mismatch pinpoints the error. Then run_bfs searches inside that model for a route, and the conclusion goes into its notes. None of these operations touch the real environment — only commit_actions ever sends a move to the game, which cleanly separates "internal modeling and search" from "actual interaction with the outside world."

Reality overrides the model

While executing a plan, every real transition gets checked against the theory's prediction. The moment even one mismatch shows up, the current plan is dropped immediately, and that counterexample gets carried back into deliberation — the model has to be fixed to explain it before any new plan can be made. The model is never allowed to override the reality it's observing.

There's also a counterintuitive part: the AI doesn't only act to clear the game — it also acts specifically to figure out hidden mechanisms. When several candidate rules all still fit the history, it looks for an experiment that would tell them apart: an action where the competing hypotheses predict different outcomes. It presses it, compares the result, and updates step(). Because RHAE squarely punishes wasted steps, the best experiment is exactly the one that "eliminates the most uncertainty using the fewest real interactions." Once step() can reproduce every transition in the recorded history, solving the rest of the level moves entirely into the model's internal search — no more real steps spent.

A real trajectory: LS20, 642 steps vs. 780 human steps

The AI sees a 64×64, 16-color grid, actions 0–4: a plus-shaped sprite, a cyan-and-red block, a maroon symbol in a frame, and a bar rendered in color index 11. In its notes, it infers: it controls the 5×5 cyan-red block (the plus-shaped sprite is static), and the bar is a "movement budget" that only ticks down on a successful move.

It writes step(), backtests it against 36 recorded transitions in the history, and every one checks out. It then commits a sequence of actions, and something unexpected happens: 77 cells were mispredicted — the block had recolored the indicator to maroon — and the plan is voided. It folds this "recoloring" rule into the model, the backtest turns green, and run_bfs finds the shortest route to clear the level. This repeats across 7 levels: 642 steps against a human baseline of 780, earning this game an RHAE of 100.

Credit goes to the harness

Same model, different use — 43 to 99

To prove that the 99 comes from the harness and not from a stronger model, you need a controlled comparison: hold the model fixed, swap only the harness. The source did exactly this using the same Opus 4.8 plus Fable 5 pairing.

Taking the final draft snapshot from the stock Claude Code harness as a baseline output scores 42.83. The exact same model pairing, wrapped in Schema, scores 98.98 — a net gain of 56.15 points.

Same Opus 4.8 + Fable 5 pairing · harness swapped only
Stock Claude Code
harness
42.83
Schema
harness
98.98

Claude Code itself is a strong general-purpose harness, good at file operations and long-context management, and in principle it could mimic Schema's process — but it doesn't force the model to. Under a general-purpose harness, the model can act on the game directly, keeping its own reasoning entirely in context without ever committing it to code. Schema hard-codes three additional constraints:

Rule Schema enforcesWhat it blocks
Encode the current world model as a runnable step() programNo leaving understanding vague and only in context
Verify it against every recorded transition before it can be used to planNo searching using unverified guesswork
Actions only go out through commit_actions, and one bad prediction drops the rest of the plan immediatelyNo carrying on with a model already known to be wrong

Under this controlled setup, Schema delivers a 56.15-point gain over the Claude Code baseline. Switching to GPT-5.6, Schema's Sol xhigh and Sol max pairing scores 95.35 — but note that its closest official reference point (Sol max: 13.33 public, 7.78 semi-private) isn't a controlled comparison on the same harness, so the 82-point gap shown is a "reference," not a measured gain.

Breaking down the 25 games individually: in the set kept for Claude — 14 games on Opus, 11 on Fable — 19 hit a perfect 100. In the Sol set, 20 hit a perfect 100. The remaining games that fell short of 100 clustered between 89 and 99 — small gaps, tightly bunched.

Case study · the moment performance turns

Get the object right, and you win

Where does the efficiency actually come from? The source offers two observations — and along the way, they reveal a real difference between Opus 4.8 and Fable 5 under this harness.

Observation one: get the program right, and action gets cheap

Across the 14 games where the AI derived a program world model that could exactly reproduce the entire history, it used between 1/1.6 and 1/5 of the human reference step count. The reason is where the cost lands: real steps are spent once, to discover a mechanism, and after that, planning happens for free inside the model instead of repeatedly re-discovering the same mechanism through trial and error. The harder a spot is for humans, the bigger this edge gets: on M0R0 level 4, humans needed 500 steps; the AI needed 42.

42 vs 500
M0R0 level 4: AI step count vs. human (the level humans found hardest)
393/393
RE86: the model's replay exactly reproduced the entire real history, then cleared the level in one 61-step pass

RE86 shows the full pipeline in action: run_backtest replayed the model against 393 recorded transitions, matching every single one exactly, and the verified model then produced one plan that cleared the whole level with zero extra trial and error: a 61-step plan, zero prediction errors during execution, a clean win. This ability — checking hundreds of exact frames in a single pass — has no real counterpart in unassisted human play.

Cumulative step count vs. levels cleared across all 25 games, Schema vs. humans
Cumulative step count (x-axis) vs. levels cleared (y-axis) across all 25 games: magenta is Schema, gray is a human playing for the first time. In most games the magenta line sits above the gray line — reaching the same level count with fewer steps. Officially, Schema is faster than humans on 96% of levels, for an overall 99.0 RHAE. Source: Impossible Research

Observation two: Fable is quicker to suspect it "misidentified the object"

Comparing Opus 4.8 Max and Fable 5 on games both models attempted, Fable achieved higher RHAE through two mechanisms: in some games it discovered models that cleared levels Opus couldn't; in others both cleared, but Fable reached the same endpoint using fewer real steps.

Paired trajectories point to the same explanation: after a failed prediction, Fable more often questions the representation itself, identifies the specific uncertainty that actually matters, then picks an action where competing hypotheses predict different results, tests it, and turns the observation into a reusable rule. Opus usually arrives at the same mechanism eventually, but first spends more steps testing various goals, conditions, and configurations within its existing representation.

FT09 · Fable 5 · questions the representation first
~11 steps

Skips debating goal logic and instead tests directly whether the object treated as decoration can actually move.

FT09 · Opus 4.8 Max · patches the goal within the old representation
~240 extra steps

Notices the same contradiction, but keeps revising the goal within its existing representation, taking a long detour before arriving at the same mechanism.

In FT09, the board satisfies the current goal logic but doesn't advance — Fable instead tests a more basic question: can the object treated as decoration, a "checker," actually be clicked? Clicking it reveals a plus-shaped button that flips itself and its four neighbors. Fable codes this observation, clears the level in 11 steps, and clears the next in 13. Opus notices the same contradiction but spends roughly 240 steps testing other goal-state interpretations before finally clicking the checker at step 287 and recording the same hidden mechanism. Both models can express and use the rule once found; the difference is purely which model picks the experiment that surfaces the missing clue faster.

WA30 · after fixing the representation

The moment the AI admits "I had this block's model completely wrong" and switches to "the block changes based on what the character is carrying," misprediction counts collapse from dozens per level to 4. From then on, in levels 5, 8, and 9, it uses just 1/4 to 1/6 of the human step count, reusing the same model instead of rediscovering it.

WA30 · before fixing it

Across levels 2 through 4, it treats the block as an object it can directly manipulate — using even more steps than a human. New observations keep clashing with this model, and every clash forces more real-world experimentation.

All three cases land on the same point: a general mechanism doesn't mean "never changes." It means the kind of mechanism where every revision preserves the previous explanatory framework while cutting the cost of future levels. Search is only complete relative to the world model it's built on: once the missing object, state variable, or transition gets represented, the existing verifier and planner are usually enough. But when the observations can't distinguish the right representation from a wrong one, that same machinery will just as happily verify and exhaustively search a wrong one.

Limits and direction

A new starting point

ARC-AGI-3 is an important benchmark in a fast-moving field. When it launched in March, the leading frontier agent scored just 0.51. By July, the best official Sol Max reached 13.33 on the public set and 7.78 on the semi-private set, while self-reported results had briefly climbed to an average RHAE of 58.12 per game.

Schema's self-reported 98.98 continues that trajectory — it isn't a break from it. The source is upfront about this: every number here was only measured on the 25 public games. Sol max offers the only official calibration point across both evaluation sets (13.33 public vs. 7.78 semi-private), but that isn't enough to numerically extrapolate a near-perfect public score onto the semi-private set — what the public 98.98 would become on the semi-private set is unknown until it's actually measured. The available run materials only cover the public set, so this release makes no claim about "fixed harness" or "held-out set" performance. It's also worth noting both scores are self-reported and haven't been independently verified by ARC Prize, and the Sol curve in the figure was pulled from a raw chart as a provisional value before the complete evaluation materials were released.

The researchers read a saturated ARC-3 as a new starting point: making "mechanism discovery" a general capability — grounding a world's causal structure through an agent's loop of action and perception, in a world far richer than a 64×64 grid. That's the direction they say they're headed.

The key ingredients were already emerging: frontier models that adapt to unfamiliar environments, coding-agent harnesses, and programmatic world models. Schema is the system that pulls them together. Impossible Research, Schema release blog post
Source: Impossible Research, "Frontier Models with Our Harness Achieve ~99% on ARC-AGI-3 Public" (schema-harness.github.io). Authors Guanning Zeng, Jiani Wang, Wenjie Ma, Shaofeng Yin, and others, Impossible Research, in collaboration with UC Berkeley and Carnegie Mellon University. The 98.98% and 95.35% figures cited are the team's own self-reported scores on the 25 public games, not independently verified by ARC Prize. The game-screen mosaic, data, and case studies are all from that release post. The RE86, LS20, and M0R0 trajectories cited here have all been published by the team on the Hugging Face dataset schema-harness/arc-agi-3-schema-traces, available for independent review. This piece is a third-party explainer.
Source
Impossible ResearchImpossible Research·Read the source
↑ End of article
✓ This article is free to read in full

Members can copy or download the full Markdown, and let their AI subscribe and ask.

Read the original ↗
📮 New explainers, straight to your inbox

Found this useful? Leave your email — every new explainer, the moment it's out. Unsubscribe anytime.