← hub

Structure search

The discrete half of every program loop: how a new skeleton, agent, prompt or architecture is proposed, and how the loop keeps from getting stuck.

Rule
Structure moves by proposal and selection, never by gradient. The three moves on this hub are mutation under a score, reflection over a trace, and compression into a library. Each has one documented way of getting stuck.

Three moves

Mutate under a score

The LLM sees a few scored parents and writes a child. Islands or a program database keep diversity. FunSearch shows the LLM two versions of one subroutine and nothing else; Ernest Davis read that as total shallowness. AlphaEvolve gives whole files and problem text and found a 48-multiplication 4×4 matmul. The stuck mode: ADAS, in an independent re-run, "gets trapped in discovering over-complex topologies" and loses on average to simple multi-agent debate.

Reflect over a trace

The proposer reads the full execution log of a failure and writes a diagnosis before writing the fix. GEPA's per-instance Pareto frontier keeps candidates that win anywhere, not only the global best, and reaches +6% over GRPO with up to 35x fewer rollouts. The stuck mode: a diagnosis over 30 examples is a theory of 30 examples. MAGE measured GEPA at 34.0% held-out against 62.4% for the untouched prompt on GSM8K-Hard with that training size.

Compress into a library
DreamCoder · Scallop rules · SINDy library

Solved programs are refactored into reusable routines; the next search runs over a shorter vocabulary. DreamCoder's own figure for unaided enumeration of list-sort is 1072 years, which is why the library exists. The stuck mode: the library bounds the answer. SINDy cannot recover dynamics outside its candidate functions; Al-Khwarizmi shows ODEBench models 4 and 7 failing for that reason. DreamCoder starts from hand-chosen primitives per domain and does not learn them from nothing.

Keeping the loop alive

Every approach that keeps improving keeps an archive. DGM measured what happens without one: no open-ended exploration ends at 23.0% on SWE-bench, three points above its 20.0% start, because one bad self-modification blocks every later one. With the archive it reaches 50.0%. FunSearch's islands, AlphaEvolve's program database and GEPA's frontier are the same device under other names. See pattern 1.

Where structure search meets weights

ASI-Arch proposes architecture as code and judges it by training it. The search is discrete; the judge is a gradient run. Test-time training on ARC does the reverse: the structure, which augmentations and which tasks, is chosen by hand, and only the LoRA weights move. ARC is where the two met.

What follows

The proposer can be weak if the archive is wide and the judge is exact. The proposer cannot save a loop whose archive is one item or whose judge is 30 examples.