Research preview · paper under review

Don’t update the solver.
Teach the harness to improve.

HarnessTTT trains the outer-loop proposer to write complete executable harnesses—prompt, skills, tools, and middleware—while the inner-loop executor stays frozen. The learned harness then moves to a stronger executor without retraining.

One score per rollout trains only the proposer’s LoRA adapter. No gradient ever reaches the executor.

01 learned outer loop Proposer πφ reads the incumbent and writes a harness
02 Frozen Executor M0 rolls out each harness once and edits the solution
r
group-relative rewardRLOO + max-sharpening
9/14

tasks at or above the reported frontier, with harness transfer

+4

more tasks within 1% of the frontier

9/11

tasks led among open-weight systems up to 10B

11/11

tasks above discovery-finetuned Finch-9B

Results

A frozen 9B executor, pushed by a learned harness.

With a frozen Qwen3.5-9B executor, HarnessTTT leads the compared open-weight systems of up to 10B parameters on nine of eleven tasks and improves on Finch-9B on all eleven.

9 / 11

Best among open-weight ≤10B

Executor-update systems on similar backbones reach at most two of eleven.

0.921

Hadamard

Up from 0.481 for Finch-9B and 0.576 for the next-best open-weight system.

2.635983

Circle packing (n = 26)

Matches the best value reported for systems of this size, starting from 0.960.

OPEN-WEIGHT COMPARISON · NATIVE UNITS

Systems up to 10B parameters

MethodErdős ↓AC1 ↓AC2 ↑CP26 ↑Hadamard ↑AHC039 ↑AHC058 (M) ↑EPLB ↑PRISM ↑LLM-SQL ↑Txn ↑Best
Initial program0.4950561.5186000.8558000.9597640.143275534,8500.000.126521.890.68562824.86–
OpenEvolve, proprietary executors (reference only)
Claude Opus 4.60.381880––2.629300–––0.127026.260.71603774.00–
Gemini 3 Pro–––2.541400–––0.127226.240.72584273.50–
GPT-5–––2.541400–––0.127226.230.71554237.30–
Open-weight executors (≤10B)
Qwen3.5-2B0.3817371.5186000.8646001.2530560.478009546,0780.000.126521.890.68562832.860/11
Finch-2B0.3813461.5184000.8920001.5351340.400476545,256329.360.126922.260.68602949.850/11
Qwen3.5-4B0.4169241.5186000.8802001.6807870.384332542,0770.000.126621.890.68562732.240/11
Finch-4B0.3864601.5173000.8933001.8068080.146199551,844331.470.126722.870.68574761.901/11
Qwen3.5-9B0.3855121.5186000.8801001.1727020.397184553,582134.490.126922.360.68583584.230/11
Finch-9B0.3811001.5141000.9122001.9360000.480585553,759525.290.126523.930.70243636.360/11
TTT-Discover† Qwen3-8B0.3809321.5052500.9472002.635983–––––––2/11
ThetaEvolve† R1-Qwen3-8B–1.5068030.9469002.6359830.576400––––––1/11
Nano-Discover† Qwen3-8B0.3809351.5053950.9457662.635983–––––––1/11
Ours · frozen Qwen3.5-9B executor
HarnessTTT-9B0.3809191.5046800.9339002.6359830.921053559,534713.550.127226.260.74154255.329/11
Δ vs. Finch-9B (%)+0.05+0.62+2.38+36.2+91.7+1.04+35.8+0.55+9.74+5.57+17.0–

Bold: best open-weight value per task; underline: second. Proprietary rows are context only. †Obtained with a different evolution pipeline and shown for reference only. AHC058 is in millions. The last row is the relative change over Finch-9B in each metric’s direction.

The idea

Move test-time learning one level outward.

Test-time RL writes the reward into the executor’s weights. Frozen-executor systems keep a better artifact but leave their proposal policy fixed. HarnessTTT trains that policy.

01

Propose an executable harness

The proposer edits a complete harness: system prompt, skills, generated tool code, middleware, and control parameters. Every generated tool passes static checks and a sandboxed self-test before it runs.

02

Score it with a frozen executor

Each harness gets one rollout of the frozen executor under a fixed evaluator budget. Its reward is the gain over the incumbent, normalized by the remaining gap to a reference score.

03

Update only the proposer

A leave-one-out baseline with max-sharpening turns the K scores of a group into advantages for a LoRA update of the proposer. The best program and harness carry over to the next round.

HarnessTTT method: a trainable proposer writes K harnesses, a frozen executor rolls out each one, and a group reward updates only the proposer
The HarnessTTT learning loop. The proposer samples K harnesses from a shared starting state. The frozen executor rolls out each harness once, and a group reward updates only the proposer. The best solution, the selected harness, and a fixed-size experience digest are retained for the next round.
Weak-to-strong transfer

A harness learned on a small model lifts a stronger one.

The learned harness is explicit and separate from the executor’s weights. We take the harnesses learned with Qwen3.5-9B and Qwen3.8-27B, switch the executor to GPT-5.5, and continue the search.

0.9636

Autocorrelation II

Reported frontier: 0.9629.

571,450

AHC039

Reported frontier: 567,503.

850.80M

AHC058

Reported frontier: 849.33M.

3.430204

V2 (lower is better)

Reported frontier: 3.430214.

STRONGEST REPORTED SYSTEMS · ANY BACKBONE

Against the reported frontier

Reported systemsHarnessTTT (ours)
TaskOpenEvolvemultipleAlphaEvolveGemini 2.0HyraHy3SimpleTESgpt-oss-120BTTT-Discovergpt-oss-120BShinkaEvolvemultipleCORALOpus 4.6ALE-AgentGemini / GPTGEPAGPT-5 / Gem. 3LEVImixed9BQwen3.5-9B9Btransfer → GPT-5.527BQwen3.8-27B27Btransfer → GPT-5.5
Mathematical discovery
Erdős ↓0.3809100.3809240.3808590.3808680.3808750.381560.38089–––0.3809190.3809230.3809020.380868
AC1 ↓1.5066041.5031701.5028501.5038711.502863–––––1.5046801.5068051.5037781.503871
AC2 ↑0.9449000.9610200.9629010.9626940.959180–––––0.9339000.9342100.9348680.963589
CP26 ↑2.6359832.6359832.6359832.635983–2.6359832.6360–––2.6359832.6359832.6359832.635983
Hadamard ↑–––0.935673––––––0.9210530.9356730.8066040.935673
Algorithm engineering
AHC039 ↑–––567,503567,062558,026–550,647––559,534571,450564,457569,409
AHC058 (M) ↑–––849.33848.41––848.37––713.55849.68841.39850.80
System performance
EPLB ↑0.1272––––0.12900.1490–0.14450.15230.12720.12940.12850.1288
PRISM ↑26.26––––26.2626.26–26.2326.2626.2626.2626.2626.26
LLM-SQL ↑0.7258––––0.72400.7310–0.71340.79850.74150.73750.96760.9672
Txn ↑4,273.50––––4,329.004,566.00–3,984.104,464.294,255.324,651.164,370.004,273.50
Astrodynamics and biology
V2 ↓–––3.430214––––––3.4464153.4325843.4302063.430204
scRNA ↑0.710––0.7400.730–––––0.7090.7400.7140.736

Bold: state of the art per task; underline: second best. For each HarnessTTT size, the first column searches with its own frozen executor and the second moves the learned harness to GPT-5.5 and continues the search. HarnessTTT matches or exceeds the frontier on eight of thirteen tasks, is within 1% on four more (Erdős, AC1, CP26, scRNA), and is behind on EPLB. LLM-SQL and Txn are quarantined in the paper, which leaves six. Because the executor changes and the search continues, these gains do not isolate a pure transfer effect.

Cross-executor replay: custom-tool calls and mean normalized score with the initial and the evolved harness on five frozen executors
Replaying a fixed harness on other executors. The harness selected on Qwen3.5-9B is replayed unchanged on five frozen executors. Left: calls to the harness’s generated tools per 100 turns. Right: mean normalized score of an OpenEvolve replay with the initial and the evolved harness; the evolved harness scores higher on all five.
Ablations

Where the reward goes, how wide to search, how to score.

Routing the rollout reward to the proposer’s weights reaches the highest endpoint, and reaches it sooner, than routing it to the proposer’s context or to the executor’s weights.

Three ablations: reward routing, number of proposals per round, and the reward objective
Three ablations. (a) Reward routing on Erdős and autocorrelation II: normalized score against total rollouts spent; the open marker is a held value, not a measurement. (b) Best score over 15 rounds on circle packing and Hadamard for K = 2 to 32 proposals per round; round cost grows with K. (c) Proposer objective, normalized per panel; the RLOO curve is the K = 32 run in (b).
ADAPTATION STAGES AND MODEL SCALE · NATIVE UNITS

What each stage of proposer learning adds

ConditionErdős ↓AC1 ↓AC2 ↑CP26 ↑Hadamard ↑AHC039 ↑AHC058 (M) ↑EPLB ↑PRISM ↑LLM-SQL ↑Txn ↑V2 ↓scRNA ↑
Initial harness 9B0.4565911.5182000.8961001.4777670.360961557,225134.490.126524.020.09343610.113.8395290.641
Context update 9B0.3958491.5098000.9263002.3704630.517212559,534562.820.127823.040.72673906.253.4580230.701
vs. initial (%)+13.3+0.55+3.37+60.4+43.3+0.41+318.5+1.03−4.08+678.1+8.20+9.94+9.36
Weight update 9B0.3809191.5046800.9339002.6359830.921053559,534713.550.127226.260.74154255.323.4464150.709
vs. context (%)+3.77+0.34+0.82+11.2+78.10.00+26.8−0.47+14.0+2.04+8.94+0.34+1.14
Weight update 27B0.3809021.5037780.9348682.6359830.806604564,457841.390.128526.260.96764370.003.4302060.714
vs. 9B weight (%)+0.004+0.06+0.100.00−12.4+0.88+17.9+1.020.00+30.5+2.69+0.47+0.71

Bold and underline: best and second best of the four conditions. Grey rows give the relative change over the row above, in each metric’s direction. In this table, in-context editing improves on the initial harness on twelve of thirteen tasks, and training the proposer’s weights improves further on eleven. The 27B campaign samples 8 harnesses per round instead of 32 and uses 5 evaluator calls per rollout instead of 20; it also uses revised Hadamard, LLM-SQL, and AHC evaluators, so those columns mix model scale with evaluator changes.

Search from different initial programs: autocorrelation II from two seeds, and search continued from strong programs on autocorrelation II and Erdős
Search from different initial programs. (a) Autocorrelation II from the default seed and from the ThetaEvolve StrongInit program. (b) Search continued from already-strong programs. Curves show the incumbent score after each outer round; round 0 is the initial program. Each curve is a single run.
Discovered harnesses

What the proposer left behind.

Two final harnesses from the 27B campaign. Each tab shows how the harness was assembled round by round, and the prompt policy, tool code, and skill playbooks the proposer wrote.

    FINAL HARNESS

    Executable components

    compiled & validated
    
                    
    ——
    EXECUTABLE AGENT PACKAGE

    Harness Hk

    compiled & valid
    mount authorityagent.yamlbinds every component below
    01prompt.mdstrategy & workflow
    02tools/schemas & generated code
    03skills/task playbooks
    04middlewares/automatic runtime control
    05samplingtemperature, top-p, max tokens
    06control policybudget, stalls & restarts
    validate→runnable agent→frozen executor
    READING THE NUMBERS

    What these results do and do not show.

    The paper reports the selected outcome of each search campaign and states where a comparison is not clean.

    • Single campaigns. Tables report one selected run per task, not a mean over independent searches.
    • Quarantined tasks. LLM-SQL and Txn are excluded from the paper’s frontier claims.
    • Transfer is not isolated. Switching to GPT-5.5 changes the executor and adds search.
    • Controls describe the protocol. The released artifact does not yet include the trusted runtime needed to verify the validation gates independently.
    Back to the results →