Blolabel
← Notes
analysis 8 min read

A new paper puts 54% of agent outcome variance in repetition; our next-day rerun of 144 iPhone runs flipped 12, and 11 flipped the same way

Agents Are Systems, Not Models measures how much of an agent's score is just rolling again, and the answer is over half. We checked the one place our public iPhone data repeats itself. The flips are real but lopsided, and they trace to framework commits and a phone that kept leaving the app, an axis the paper's sandbox holds fixed.

A paper posted on 1 October 2026 repeats every one of 432 agent configurations 5 times and finds that about 54% of score variance among genuine attempts is run-to-run noise, not configuration. phoneshell's public iPhone data has one repeat in it: 144 task-model pairs, run on 8 September and again on 9 September 2026. Twelve outcomes flipped, and 11 of them went from fail to pass, a split that symmetric noise produces with p = 0.0063.

Abstract technical illustration of two rows of small square cells, most matching between rows, a few changed in the same direction, over a faint grid

What Agents Are Systems, Not Models measured

Luis Wiedmann, Leander Girrbach, Cordelia Schmid and Zeynep Akata (TU Munich, Helmholtz Munich, Inria) give a coding agent four scientific tasks that each need a published specialist model: AstroCLIP for redshift, AstroSage-8B for MMLU-Astronomy (where the right move is to decline it), DNABERT-2 for promoter prediction and RiNALMo for RNA folding. They vary five axes over a full grid, 4 x 3 x 4 x 3 x 3 = 432 cells, run each cell 5 times, and get 2,160 runs per task and 8,640 in the main experiments. They release 18,240 trajectories in total.

AxisLevelsEffect, promoterEffect, redshiftEffect, RNAMean rankSource
Informationnone, identity, interface, protocol1.9251.4521.4961.00Table 3
ModelQwen3.5 35B-A3B, 122B-A10B, 397B-A17B0.7040.1701.2532.67Table 3
Reasoningact-only, think-act, ReAct0.2740.1720.3023.00Table 3
Budget5, 10, 20 min0.1420.2010.2553.33Table 3
Verificationnone, asked, reported, binding0.1310.1300.0775.00Table 3
Between-cell share of variance: 39.4% all completed runs, 46.1% hurdle-clearing runs. Outcome consistency 0.86 pooled, 0.73 redshiftFig. 2, Table 2

Effects are the range of mean gap closed across an axis's levels, divided by the within-cell standard deviation. Information ranks first in at least 99% of bootstrap samples. Asking the agent to verify barely changes whether it verifies; giving it a verification tool does. The finding that transfers to phones is the first one: a single run per configuration is mostly a draw.

The one place our data repeats itself

phoneshell's published results on Hugging Face (blolabel/phoneshell-bench) hold a 24-task sweep across six models in results/xv.jsonl, run 14:05 to 16:59 UTC on 8 September, and a 59-task sweep in results/xv2.jsonl, run 05:06 to 12:28 UTC on 9 September. Every one of the 144 pairs in the first appears in the second. That overlap is the only repeated configuration in the public data: the 349 rows of xv2 are one run per pair, and xv-text.jsonl is a copy of 48 xv rows with identical timestamps, not a rerun.

Paired, the 144 give 118 passes both times, 14 failures both times, 11 fail-to-pass and 1 pass-to-fail. If the flips were noise, each direction would be a coin toss; 11 against 1 has a two-sided sign-test p of 0.0063. Something systematic changed overnight, and the git log says what: 14 commits between the runs, including fd1798c "Store the passcode, survive a lock", f553248, which makes a long run heal itself (clear the lock screen, restore the port forward, restart the runner), and edits to bench/openrouter.py and bench/verify.py, the grading code.

Same 144 task-model pairs, two days, 14 commits in between outcomes, 8 Sep vs 9 Sep pass, pass118 fail, fail14 fail, pass11 pass, fail1 sign test 11 vs 1: p = 0.0063, two-sided what changed between the runs fd1798c store the passcode, survive a lock f553248 long run heals itself: lock, forward, runner da221c7, 30affa3 bench/openrouter.py 30affa3 bench/verify.py (grading code) 14 commits in all, 16:59 UTC 8 Sep to 05:06 UTC 9 Sep Why the 12 flipped rows had failed (or failed) 5: phone on SpringBoard 5: content check missed budget turns "foreground is com.apple.springboard": the phone had left the app, the signature of a lock or a lost runner. That is the rig, not the model, and the commits that fixed it landed between the two runs. Per model: DeepSeek V3.2 5 flips, Gemini 3.1 Pro 3, Claude Opus 4.8 3, Qwen3-Max 1, GPT-5.1 0, Kimi K3 0. Sources: huggingface.co/datasets/blolabel/phoneshell-bench results/xv.jsonl, results/xv2.jsonl; phoneshell git log.

The failure details agree. Five of the 12 flipped rows had a check reading "foreground is com.apple.springboard": the phone was on the home screen when the agent should have been in Calculator, Settings, Notes or Safari. That includes the single pass-to-fail row, Claude Opus 4.8 on notes.type_long, whose own report says it saved the note. A phone that leaves the app mid-task is a lock or a lost runner, which is what the overnight commits addressed. One more flip was the 240 s budget, one ran out of turns, and five were content checks (Calculator results, timer text, a Settings row, a Safari page).

Putting a number on it, with the caveats in the number

For pass-fail outcomes, a flip between two independent runs of the same cell happens with probability 2p(1-p), so half the flip rate estimates within-cell variance. Total variance over the 288 outcomes, at a pass rate of 248/288 = 86.1%, is 0.120. If all 12 flips were noise, within-cell variance is 12/288 = 0.042 and repetition is 34.8% of the total. If noise is symmetric and the one pass-to-fail flip is its whole share, there are about 2 noise flips and the share is 5.8%. The real figure sits between those, and the 11-to-1 direction argues for the low end. The paper's figure is 53.9% (100 minus 46.1) for genuine attempts. Ours is not comparable in kind: an 86% pass rate on short phone tasks leaves little variance to split, and the paper's tasks score in the middle where variance peaks (its Fig. 2 shows a Spearman rho of -0.79 between a cell's mean and its spread).

Share of outcome variance that is repetition, not configuration within-configuration share 0 10 20 30 40 50 60 70 % of outcome variance 60.6% paper: all completed 53.9% paper: clears hurdle 5.8% ours: symmetric noise 34.8% ours: all 12 as noise Sources: arXiv:2610.01618 Fig. 2 (ICC 39.4% and 46.1%); phoneshell xv.jsonl vs xv2.jsonl, 144 matched runs, our arithmetic.

What this means for anyone ranking phone agents

The paper treats the sandbox as fixed and asks which knobs move the score. On a physical phone the sandbox is the least fixed part. Framework code and device state change between runs, and they change outcomes in one direction at a time, which noise does not. A leaderboard built from one run per cell folds all three sources into each number. Our own leaderboard note on 10 September found that no pair of the six models separated across 58 tasks; this rerun adds that part of what did move was the rig.

What counts as "the same configuration" Wiedmann et al., 2026 information (4 levels)reasoning (3)verification (4)budget: 5, 10, 20 min (3)model: Qwen3.5 35B, 122B, 397B (3) 432 cells x 5 repeats per task sandbox fixed: one GPU, prebuilt environment phoneshell on a physical iPhone task prompt and toolsmodel (6 vendors)budget: 240 s, turn cap framework code (runner, verify)device: lock, runner, app state 1 run per cell in public data xv2: iPhone 14 Pro, iOS 26.3.1, 346 of 349 rows With one run per cell, noise, a framework fix and a locked phone all look like a model difference. The 144-run overlap is the only repeat in the published set, and it is not a clean one. Sources: arXiv:2610.01618 Sec. 3 and 4.1; phoneshell-bench results files; phoneshell/bench/runner.py.

Check it yourself

What would prove this wrong

If phoneshell reruns the 144 pairs twice more on one frozen commit with auto-lock off, and the flips between those two runs are again lopsided (one direction 10 or more out of 12 or fewer), then the overnight commits did not cause the 9 September flips and something else on the device drifts by day. We expect a frozen-commit repeat to show fewer than 6 flips, split roughly evenly. We will publish that repeat, or say we did not run it, by 31 December 2026.

Sources

  1. Wiedmann, Girrbach, Schmid, Akata, Agents Are Systems, Not Models: Rethinking Agentic Evaluation, arXiv:2610.01618v1, 1 October 2026
  2. Benchmark and 18,240 trajectories released with the paper
  3. blolabel/phoneshell-bench on Hugging Face: results/xv.jsonl (8 September 2026), results/xv2.jsonl (9 September 2026)
  4. Blolabel, earlier note: six models, 58 tasks, no pair separates
  5. phoneshell source and git history, commits fd1798c, f553248, da221c7, 30affa3 (read 4 October 2026)