Behind every leaderboard number is a mechanism. Here are the 14 techniques the field has thrown at ARC-AGI — from a solo coder's hand-built search to frontier reasoning models — grouped into 6 families, each with a step-by-step diagram of how it works, what it scores, and where it breaks. Every card links straight to the paper in the Atlas.
14
Techniques
6
Families
87.5%
Best (o3, AGI-1)
2
Big ideas: induce vs adapt
The lay of the land
Two questions split the whole field.
Every ARC solver answers two questions. What is the solution? — an explicit program you can read (induction), or the output grid predicted directly (transduction). And when do you learn? — is the model frozen, or does it adapt to the task in front of it at test time?
Those two axes organize the map below and the gallery beneath it. The 2024 breakthroughs — test-time training, product-of-experts, o3 — all sit on the adapt-at-test-time side. The program-synthesis lineage runs down the induction side, from a hand-built DSL to LLMs writing thousands of Python programs. And a few outliers — pure compression, frozen pattern-completion — stake out the corners.
Read a card as a glance (the one-liner), a mechanism (the numbered flow), or a critique (why it works / where it stops). Colour marks the family.
Plate · The Technique Map
Every method, placed.
Each mark is a technique. Left–right: does it predict the grid or search for a program? Bottom–top: is the model frozen, or does it adapt at test time? Colour marks the family. Hover for detail; click to jump to its card. Positions are a reading aid, not a measurement.
SynthesisTest-timeEvolutionCompressSearchLLM
Plate · The Gallery
All 14, with the wiring shown.
Grouped by family, best-known first. The mechanism is the point: follow the numbered flow to see exactly what each system does with a task, then read where it wins and where it stalls.
Program synthesis
Search for an explicit program — a DSL expression or Python — that reproduces every demonstration, then run it on the test input. Induction: the artifact is an inspectable rule.
6
T01
DSL + Brute-Force Search
~20%
Johan S. Wind ("icecuber") · 2020
SynthesisARC-AGI-11st, 2020 Kaggle (private)
A fully symbolic solver: hand-build a library of small grid operations and brute-force compositions of them until one reproduces every training pair.
The mechanism
1Seed a pool of "pieces" with the input grid(s)
2Greedily apply ~142 hand-crafted unary grid functions, growing a DAG of new pieces up to a bounded depth
3Search for a composition of pieces that reproduces every training output
4Keep only programs matching every pair (exact-match gate)
5Run a surviving program on the test input
Why it worksGrids are tiny (≤30×30, 10 colors), so a good hand-crafted library plus depth-limited search covers enough of the transformation space — and exact match on every pair is a clean, high-precision correctness gate.
Where it stopsPrimitives are authored by one human, so coverage caps near 20%; search explodes with depth (~70s at depth 2 → ~9h at depth 3). No learning, no cross-task transfer.
Prompt GPT-4o to write thousands of candidate Python transforms per task, keep only those that replay every training pair, and majority-vote the survivors.
The mechanism
1Pack the task into a ~30k-token prompt with grids in several redundant encodings
2Sample ~8,000 candidate Python transform functions from GPT-4o
3Execute each; keep only programs that reproduce every training output exactly
4Show the ~12 closest failures their wrong output and re-prompt for repairs (~3k samples → +13 pts)
5Run survivors on the test input; submit the top-3 by majority vote
Why it worksThe number of sampled programs is a near-monotone axis (~+3% per doubling): GPT-4o's program distribution places real mass near correct solutions, so execution filtering surfaces working programs where random search never would.
Where it stopsUses ~1000× more test-time compute than prior work (prize-ineligible), steep diminishing returns (~70% would need millions of draws), and false positives that fit train but fail test.
Train two matched neural models — one induces a Python program, one directly predicts the output — and ensemble them, because they solve strongly disjoint sets of tasks.
2An LLM remixes seeds into hundreds of thousands of synthetic tasks (ARC-Heavy, ARC-Potpourri)
3Fine-tune two Llama-3.1-8B models: an induction model and a transduction model
4Induction samples ~20k programs, keeps those satisfying f(train)=train-out; transduction decodes the output directly
5Ensemble: use a training-consistent program if one exists, else fall back to the transduction grid
Why it worksEven with matched data and base model, induction wins precise/compositional tasks while transduction wins fuzzy/perceptual ones — they fail on different tasks, so the union approaches average-human performance.
Where it stopsThe complementarity is empirical with no mechanism; induction has a ~9% false-positive rate that caps precision, and transduction can't verify itself. Best ensemble still trails the best humans (~98%).
Don't ask the LLM for the answer. Ask it for many natural-language rules, implement each as Python, and keep the program that replays every pair.
The mechanism
1Prompt the LLM for ~64 natural-language hypotheses of the rule
2Prune to ~8 (by LLM summarization or human selection)
3Generate K Python programs implementing each surviving hypothesis
4Execute against the training pairs; accept any program that reproduces all outputs
5On failure, run up to 3 rounds of execution-feedback repair
Why it worksSplitting reasoning into two levels — "what is the rule" (language, good at the gist) then "how to code it" (verifiable Python) — beats jumping straight to code; ablations show both levels help independently.
Where it stopsPerception is the ceiling: GPT-4 barely parses a 2-D grid from text. Hypothesis generation is the bottleneck — a correct rule was produced for only 49/100 tasks — and search is uninformed.
Butt, Manczak, Wiggers, Cohen et al. (Qualcomm AI) · 2024
SynthesisARC-AGI-1full ARC eval · SOTA at the time
A self-improving loop that turns a code model's failed attempts into dense supervision by relabeling each program's actual output as the goal it "solved."
The mechanism
1A 220M code model samples up to 24 DSL programs per task
2Execute each to get its actual output grid
3Hindsight-relabel: treat that output as the intended goal, store (goal, program)
4Fine-tune the policy on a prioritized replay buffer of these experiences
5Repeat sample-then-learn for 100 meta-iterations, bootstrapping the policy
Why it worksARC reward is almost always zero — a model never samples the exact target by chance — so ordinary RL has nothing to learn from. Relabeling manufactures a dense signal; ablations show it is the single most important component.
Where it stopsPlateaus at ~15%. Not tabula-rasa: it needs a hand-built DSL, an interpreter, and seed programs; reward is exact-match only, and most relabeled goals are ones nobody asked for.
A wake-sleep loop that grows its own DSL of reusable abstractions and trains a neural network to search it — solving inductive tasks better with experience.
The mechanism
1Start from a small library of typed program primitives (a prior over programs)
2WAKE — search programs, guided by a neural recognition model, until one fits the examples
3SLEEP·abstract — compress solved programs into new named library functions
4SLEEP·dream — retrain the recognition model on replays plus sampled "fantasies"
5Iterate: the library gets richer and the search policy gets sharper (bootstrapping)
Why it worksFramed as Bayesian program learning: the library is a generative prior, solving is posterior inference, and the neural model is an amortized approximation that makes search tractable — so accuracy and search efficiency compound.
Where it stopsSearch cost grows with library richness; abstraction can't invent a concept never once used, risking local optima; fantasies may drift from the real task distribution.
wake-sleeprecognition modelabstraction by compressionBayesian program learning
Don't ship a frozen model. For each task, rewrite the model's own weights (or a latent) on that task's demonstrations, then predict the grid directly. Transduction with adaptation.
3
T07
Test-Time Training (TTT)
53%
Akyürek, Damani, Zweiger, Kim, Andreas (MIT) · 2024
Test-timeARC-AGI-18B model · 61.9% ensembled
Temporarily rewrite a model's own weights at inference on a loss built from each task's own demonstrations, predict, then throw the update away.
The mechanism
1Start from a base LM fine-tuned on ARC-like data
2For each task, build a leave-one-out training set from its demo pairs
3Multiply it with invertible augmentations (D8 symmetries + color permutations)
4Train a fresh LoRA adapter for a few steps, then discard it after the task
5Predict on every augmented view, un-transform, and vote by self-consistency
Why it worksIn-context learning plateaus on out-of-distribution tasks; letting the model briefly rewrite a small slice of its weights explicitly adapts it to the exact task in front of it. A per-instance adapter is a distinct axis of test-time compute.
Where it stopsA fresh adapter per task strains an offline budget; the augmentation trick assumes geometric/color symmetry and degrades on counting or relational rules; ARC-AGI-1 gains collapse to single digits on ARC-AGI-2.
Franzen, Disselhoff, Hartmann ("the ARChitects") · 2024
Test-timeARC-AGI-11st, ARC Prize 2024 · 71.6% public
Fine-tune an open LLM, adapt a per-task LoRA, then score each candidate grid under every symmetry of the task and multiply — only jointly-plausible answers survive.
The mechanism
1Fine-tune Mistral-NeMo-Minitron-8B on augmented ARC data
2Test-time training: fit a rank-32 LoRA per task (~51s on an RTX 4090)
3Generate candidates by depth-first search over output tokens, pruning low-probability branches
4Re-express each candidate under many invertible perspectives (D8, color, reordering) and score under each
5Multiply the per-perspective probabilities; submit the top-2
Why it worksEvery perspective is a semantics-preserving view of the same task, so multiplying probabilities enforces cross-view agreement and demotes answers that are only plausible from one angle — many partial readings combine into a strong solver.
Where it stopsNeeds a rich family of invertible perspectives; DFS assumes the answer sits in the high-probability region; ARC-AGI-1 dominance did not transfer to ARC-AGI-2 (low single digits).
product of expertsinvertible perspectivesDFS token samplerper-task LoRA
Learn a continuous latent space of implicit programs, then search it with gradient ascent at test time for the latent that best explains the task.
The mechanism
1An encoder maps each example pair to a distribution over a latent program space
2Train with a leave-one-out variational objective (reconstruct the held-out output)
3"Grad-k": bake gradient-search steps into training so the latent landscape is navigable
4At test, initialize the latent from the encoder over the training pairs
5Run gradient ascent on the latent, then decode the test input with the refined latent
Why it worksBecause the decoder is differentiable, test-time search over the latent is cheap gradient ascent instead of stochastic sampling — and training with that same search shapes a landscape that is actually searchable. Adaptation is built into the architecture.
Where it stopsAbsolute out-of-distribution performance stays low (~15%); gradient ascent finds only local optima; the latent program is not inspectable or verifiable like explicit code.
latent program spacevariational trainingtest-time gradient searchdifferentiable decoder
Treat candidate programs as a population: score against the demos, keep the fittest, breed and mutate them across generations. Refinement, not one-shot sampling.
1
T10
Evolutionary Program Synthesis
53.6%
Jeremy Berman · 2024
EvolutionARC-AGI-1ARC-AGI-Pub record (pre-o3)
Turn LLM program synthesis into a genetic algorithm: breed a population of Python transforms, score them against the demos, keep the fittest, and refine across generations.
The mechanism
1Generate ~250 Python transforms from chain-of-thought prompts (Claude 3.5 Sonnet)
2Score each with two-tier fitness (exact grid solves, then per-cell correctness)
3Select the fittest as parents; re-prompt to breed improved children
4Run a pooled track that recombines functions solving different example subsets
5Repeat for up to 4 generations (~500 functions/task); run survivors on the test input
Why it worksThe model emits executable programs, so each candidate is auto-scored against the demos. Depth beats breadth — ~42% of wins came from generations 2–4 — showing iterated refinement, not just more samples, does real work.
Where it stopsFixed lineages waste compute, and per-cell fitness is a heuristic that admits false positives. The deeper "verifier problem": no below-AGI checker reliably confirms correctness, capping filtered evolution.
evolutionary test-time computetwo-tier fitnessmulti-parent recombinationverifier problem
Learn or compress the task directly — no search over program text, sometimes no pretraining at all. The solution falls out of minimizing description length.
1
T11
CompressARC
~20%
Isaac Liao, Albert Gu (CMU) · 2025
CompressARC-AGI-1no pretraining · 76K params
Solve each puzzle with no pretraining, no data, and no search — train a tiny fresh network to compress the visible grids, and let the missing answer fall out of the shortest description.
The mechanism
1Initialize a fresh ~76K-parameter equivariant network per puzzle (answer removed)
2Sample a latent code and decode it into a color distribution for every cell
4Compression squeezes redundant bits toward zero, so the shortest regenerating model emerges
5Read the answer off the blank cells; submit two guesses by lowest bit-length
Why it worksThe Minimum Description Length principle operationalizes intelligence-as-compression: by Occam's razor the shortest description consistent with the visible grids tends to fill the unknown cells correctly — and lower-bit solutions empirically correlate with more accurate ones.
Where it stopsStructurally local: can't count, do arithmetic, extend long-range patterns, or reason about topology. ~4% on ARC-AGI-2, ~20 min/puzzle, and often contains but fails to rank the right answer.
Minimum Description Lengthequivariant architecturecompression-as-confidenceinference-time training
Spend test-time compute searching a space of candidate reasoning traces, or a space of environment states — guided by a learned evaluator or a coverage policy.
2
T12
o3 — DL-Guided Program Search
87.5%
OpenAI · analyzed by ARC Prize · 2024
SearchARC-AGI-1high-compute · 75.7% at efficiency
At test time, generate many candidate chains-of-thought — each a natural-language program for the task — and use a learned evaluator to search and select among them.
The mechanism
1Given a novel task, generate many candidate reasoning traces at test time
2Treat each chain-of-thought as a natural-language program for that specific task
3Score and search among candidates with a learned evaluator (AlphaZero-style loop)
4Spend more or less search compute (low-efficiency used ~172× more)
5Execute the selected trace to produce the output grid
Why it worksInstead of the standard "memorize, fetch, apply" loop, the chain-of-thought becomes the artifact of knowledge recombination — a program the model builds and runs for that task — so guided search gives genuine test-time adaptability, not just a bigger forward pass.
Where it stopsExtreme cost (~$20 to thousands per task vs ~$5 for a human); still fails some very easy tasks; projected under ~30% on ARC-AGI-2; proprietary and short of the open, cost-capped prize bar.
DL-guided program searchchain-of-thought as programtest-time computememorize-fetch-apply
A training-free agent for the interactive benchmark: build an explicit directed graph of the states and actions you've seen, and always head toward the nearest unexplored frontier.
The mechanism
1Segment each frame into connected components; mask the status bar
2Rank components into five visual-salience priority tiers
3Hash the frame to a state node; store each action as an edge with outcome + successor
4Pick a random untested action within the active priority threshold
5If none locally, path to the nearest state that has one; else relax the threshold and recurse
Why it worksA cheap deterministic explorer keeps explicit state-tracking, so it can spend the environment's full ~96,000-step budget productively and never re-tread known paths — where LLM agents stall at ~4,000 model-gated steps.
Where it stopsExploration cost grows with the reachable state space (intractable on large games); exact frame-hashing fragments under cosmetic change; it explores but never induces a rule — it records transitions, it doesn't model them.
visual-salience tiersdirected state graphfrontier-driven explorationinteraction-limited
Prompt a frozen general model as a pattern completer, feeding it serialized grids and reading the answer straight off its continuation. No task-specific training.
1
T14
LLMs as Pattern Machines
zero-shot
Mirchandani, Xia, Florence, Zeng et al. (DeepMind) · 2023
LLMARC-AGI-1a non-trivial subset, no training
Treat a frozen off-the-shelf LLM as a general sequence pattern machine: serialize the grids as tokens and let the model complete the pattern — no task-specific training.
The mechanism
1Serialize each ARC grid into rows of number/character tokens (ASCII art)
2Concatenate the demonstration input→output pairs into the prompt
3Ask a frozen pretrained LLM to continue the sequence with the held-out output
4Read the answer off the model's continuation
5(Variant) permute the vocabulary so the model must rely on structure, not token meaning
Why it worksThe competence lives in structural pattern-continuation, not token semantics: with a randomly remapped alphabet the model still completes patterns above chance — a semantics-agnostic pattern engine you prompt rather than train.
Where it stopsToken-invariance is only partial; the solvable subset skews to local/geometric tasks; flattening a grid to 1-D discards 2-D adjacency; everything is bounded by context length and prompt format.
general pattern machinesequence transformationtoken-invariancesequence completion
No single technique owns ARC-AGI — the strongest results all combine. The clearest lesson of 2024 was that adaptation at test time, not raw scale, moves the needle: no frozen, no-adaptation method cleared ~11% on ARC-AGI-1, while per-task fine-tuning and augmentation-ensembling reached the mid-50s.
The second lesson is complementarity. Induction (search for a program) and transduction (predict the grid) fail on different tasks, so the best systems run both and reconcile them. Program search catches precise, compositional rules; neural prediction catches fuzzy, perceptual ones. Ensemble them and you reach average-human level.
The third is the verifier. Almost every method that works keeps only programs that exactly replay the demonstrations — an execution oracle. It is the engine behind sampling, evolution, and hypothesis search alike. ARC-AGI-2's compositional tasks and ARC-AGI-3's interactive worlds are hard precisely because that clean oracle gets harder to build, or vanishes entirely.