← back updates →

Programs that learn

A kit of 18 components for a system that improves itself. Each card is the one mechanism an approach contributes, what it gives, what it needs, and where it broke.
Last updated: 2026-11-03

The loop
Every approach here is one component in a five-slot loop: a proposer writes a candidate, a fitter sets its numbers, a judge scores it, a store keeps what survived, a signal goes back to the proposer. Pick one per slot. The judge sets the ceiling. The store decides whether a bad step is fatal. The signal decides how fast you learn.
  PROPOSER ──writes──▶ candidate ──▶ FITTER ──sets numbers──▶ JUDGE ──scores──▶ STORE
     ▲                                                                           │
     └─────────────────────── SIGNAL: number · residual · trace · diagnosis ◀─────┘

  program loop : proposer writes code or prompts; model frozen; store = archive
  weight loop  : proposer writes an update recipe or nothing; fitter moves weights

Cross-sections: judge · structure search · gradient boundary · forgetting · data regime · patterns · comparison · sourced map · method

Proposer 5

Blind mutator

FunSearch

gives Proposals from a cheap model that cannot recall the answer: it never sees the problem, only two scored versions of one function.

needs A human skeleton with one open function and an exact scorer under 20 CPU-minutes.

breaks Shallow by design; a stronger reasoner has nothing to reason about (Davis).

Unbounded code proposer

ADAS

gives A meta agent writes any agent as a Python forward(); every computable building block is in reach.

needs One scalar objective and a sandbox; $300-500 per search.

breaks Drifts to over-complex topologies; an independent re-run found gains subtle and inconsistent.

Self-editing proposer

Darwin Gödel Machine

gives The proposer edits its own source from its own evaluation logs, so the search algorithm improves with the artifact.

needs A sandbox, a benchmark judge, an open archive; about $22k of compute.

breaks Hacked its own safeguards and faked test logs; without the archive it ends at 23.0%.

Self-written update recipe

SEAL

gives The model writes its own training data and hyperparameters as text; the candidate is a weight-update recipe, not code.

needs An RL outer loop, about 6 hours per round on 2x2 H100, LoRA adapters.

breaks Forgets earlier passages across a stream of edits; GRPO and PPO were unstable.

Program compiler over a frozen model

DSPy + TextGrad

gives Typed modules and a compiler that tunes prompts and demonstrations; TextGrad adds a critique that flows backward like a gradient.

needs A metric and a dev set of more than a few dozen examples.

breaks Overfits small dev sets; gains shrink as the base model gets stronger.

Fitter 7

Skeleton with free constants

LLM-SR

gives The LLM writes f(x, params) in Python; BFGS fits params; structure stays discrete, numbers stay continuous.

needs Low-dimensional data, hundreds of points, a physical prior the LLM can write.

breaks 31.5% symbolic accuracy on LLM-SRBench; fast Feynman results were recall.

Sparse library regression

SINDy

gives Least squares plus a hard threshold over a fixed library returns the governing equation in seconds, no LLM.

needs A library that contains the true terms; clean derivative estimates; low noise.

breaks Nothing outside the library can be found; Al-Khwarizmi shows ODEBench 4 and 7 failing for this reason.

Adjoint through the solver

Neural ODE / JAX-MD

gives Gradients through a whole simulation at O(1) memory; the solver is the program and physics parameters are fitted.

needs Non-stiff dynamics and a differentiable right-hand side.

breaks Reversing dz/dt = -10^4 z fails in double precision; a ReLU ODE drifts 1% in 11 steps (ANODE).

Mechanism fixed, rates fitted

FLeCS / CLAMP / P-NET

gives Known pathway or network topology inside the forward pass; only kinetic rates and edge weights move.

needs A topology you already trust; few samples.

breaks Edge fades with data: MechPert loses to plain consensus at N=500; nothing proposes structure.

Differentiable logic rules

Scallop / DeepProbLog

gives Hand-written Datalog gets gradients through provenance semirings; only the neural predicates feeding it train.

needs A human who writes the rules.

breaks Exact inference scales badly; where rules are unknown, end-to-end models win.

Test-time gradient step

Titans / TTT

gives A real gradient on a small weight set per input or per task, triggered by surprise or by the task's own examples.

needs A differentiable model and compute per query; a benchmark that allows it.

breaks ARC 53% public fell to 47.5% semi-private; no audit trail; some tracks ban it.

Closed-form fact overwrite

ROME / MEMIT

gives One linear solve writes a fact into a located MLP matrix; thousands of facts in one pass, no training.

needs Causal tracing to find the layer; fewer than about 1,000 edits on GPT-J.

breaks GLUE collapses to zero between about 100 and 1,500 edits; no readable diff.

Judge 3

Store 2

Signal 1

Combinations that exist

Each published system is a fixed choice per slot. The results are the evidence that the slots compose.

SystemProposer + fitter + judge + store + signalResult
AlphaEvolverich-context proposer + evaluation cascade + program database + score vector48-multiplication 4x4 matmul; 0.7% of Google compute reclaimed
Darwin Gödel Machineself-editing proposer + benchmark judge + open archive + log signalSWE-bench 20.0% → 50.0%
GEPAfrozen-model prompt proposer + benchmark judge + per-instance Pareto store + trace signal+6% over GRPO at 35x fewer rollouts
LLM-SRLLM skeleton proposer + BFGS fitter + MSE judge + islands store + score signalbeats symbolic regression; 31.5% on the hard benchmark
ASI-ArchLLM architecture proposer + gradient fitter + training-run judge + analyst text signal105 architectures at 20,000 GPU-hours
ARC 2025 hybridsprogram-search proposer + per-task LoRA fitter + example-match judgetop ARC-AGI-2 scores of the season

Combinations nobody has built

NameSlotsWhy it is open
The biology loopLLM mechanism proposer (as code) + adjoint fitter for rates + residual-against-data judge + archive + residual-as-text signalFLeCS and CLAMP fit; LLM-SR proposes; nobody has joined them. Comparison page names it as the gap.
Library-growing LLM searchLLM proposer + DreamCoder compression store + exact judgeLILO started it; no result at AlphaEvolve scale.

By lane