Skip to content
← All posts

Blog5 min read

Flow ScienceA New Dimension of Scaling Agents

Models scale with parameters and data, and agents scale with tools; the next dimension is the flow. Why one flow cannot solve every problem, flow-level ablations on four benchmarks with the models held fixed, four findings we did not expect, and whether a flow is engineering or a science.

Flow is the new dimension of scaling agents. Models scale with parameters and data, and agents scale with tools. The next dimension is the flow: which agent goes next, what it is asked, what it remembers, and when it stops. Change only the flow and the same models land somewhere else.

This post is what we have measured so far. It makes the case first: a single session is not enough on long, hard tasks, and no one flow can serve every task. Then it runs flows against each other on four benchmarks with the models held fixed. Last come four things those runs showed that we did not expect, and why we think flows are a science rather than one more kind of engineering.

Every figure is rebuilt from the charts in our October 2026 "Humanize Intro" talk. Hover over a figure, tap it or use the arrow keys to read values, pick a tab where there is one, and click a legend entry to hide that series. These are our own runs, Humanfia-reported, 2026-10-05, unless a figure links to something published.

From session to flow ​

A coding agent's own /goal is one session pursuing one objective until it says it is done. That works for small tasks. On long, hard ones it is not enough. On Anthropic's original performance take-home, /goal with GPT-5.6 Sol spends 2.6 million output tokens to reach about 1,080 clock cycles. A Ralph loop on the same model gets below 1,100 within half a million. A Flame Chase alternating Claude Fable 5 and GPT-5.6 Sol keeps improving and finishes near 1,010.

Fig. 1

A simple /goal is not enough for complex tasks

1000110012001300140015000500k1M1.5M2M2.5M3MOutput tokens spent

The performance take-home, best cycle count against output tokens: /goal reaches about 1,080 cycles after 2.6 million tokens; the Ralph loop is below 1,100 within half a million; Flame Chase ends near 1,010.

The Always-continue arm is in the source but too faint there to trace, so it is left out here. Read off the “Humanize Intro” deck, slide 2; Humanfia-reported, 2026-10-05. Hover, tap or use the arrow keys to read values; click a legend entry to hide it.

Against /goal, that is about 70 cycles better (1,010 against 1,079) for Flame Chase, and about three-quarters fewer tokens for the Ralph loop to get below 1,100 (0.33 million against 1.36 million). Humanfia-reported, 2026-10-05.

No free lunch: one flow cannot solve every problem ​

Our first flow, RLCR Flow (Ralph loop with Codex review), is good at building a project from scratch. Coding of that kind is a constraint satisfaction problem. Every requested feature must be implemented, the tests must pass and the lints must be clean. We do not care about the exact shape of the code. One feasible solution is enough.

A CUDA kernel is a different problem. A kernel that merely runs is not the goal: we want the fastest one that is still correct. That makes it an optimization problem, and real runs already guarantee that a candidate is feasible. For this we built the Flame-Chase loop: two fresh agents take turns on one shared repository. In our runs, Claude Code with Claude Fable 5 tends toward large refactors, which sometimes make things slower. Codex with GPT-5.6 Sol tends to fine-tune, and gets stuck in a local optimum. Alternating the two lets the run jump from one local optimum to a better one.

Coding · constraint satisfaction

feasible
  • features implemented
  • tests pass
  • lints clean
One feasible solution is the whole job. → RLCR: propose, check, repeat until every check passes.

Kernels · optimisation

fine-tuning alone stops herecost ↓ is better · one axis of a huge design space
  • small step · fine-tune (the model that polishes)
  • big jump · refactor (the model that rewrites)
The best one is the job. → Flame-Chase: alternate the two, and the run hops from one local optimum to a better one.
Problem classWhat "done" meansFlow family
Constraint satisfactionany solution that passes every checkRLCR, the Ralph loop
Optimizationthe best solution foundFlame Chase, Parallel Flame Chase
Decisiona yes or no, with a certificateopen
Predictiona calibrated estimateopen
Game-theoretica strategy that holds against othersopen
Countingan exact numberopen

Theorem proving, hyperparameter tuning and many other tasks need flows of their own. That is why Humanize is a framework for writing flows, not a single loop.

Four benchmarks, one set of models ​

If the flow matters this much, the best flow should change from one task to the next, and that should show even when the models are held fixed. So we held them fixed and ran flows against each other on four benchmarks. The best flow differs from one benchmark to the next.

Fig. 2

Flow-level ablations on four benchmarks

0%20%40%60%80%100%0h1h2h3h4h5h6hActive time per task

MLE-bench, 75 tasks, six hours: Flame Chase and Claude Opus 5 /goal both end at 52 of 75 (69.3%), Parallel Flame Chase at 50 (66.7%), GPT-5.6 Sol /goal at 48 (64.0%). Flame Chase leads for most of the run.

75 tasks (22 lite, 38 medium, 15 hard), max effort. Each valid submission replaces the task’s previous status, so a later medal loss subtracts a point. This is the deck’s latest-submission metric; HMA’s published best-of-run figure is 78.2% any-medal. Read off the “Humanize Intro” deck, slides 8 and 22; Humanfia-reported, 2026-10-05. Hover, tap or use the arrow keys to read values; click a legend entry to hide it.

  • MLE-bench. Flame Chase leads from about the first hour and ties Claude Opus 5's /goal at 52 of 75 tasks after six hours. The published HMA result uses the same alternation and scores each task's best submission: 78.2% any-medal.
  • HLE. /goal is fastest at first. Flame Chase catches up by about an hour and ends highest. The Ralph loop and RLCR are slow until a late jump.
  • ProgramBench. Flame Chase ends highest (90.2), ahead of Opus 5 /goal (87.8), RLAR (86.4) and GPT-5.6 Sol /goal (79.8).
  • Anthropic's performance take-home. Every single-model flow stops between about 1,045 and 1,080 cycles. Only the two-model Flame Chase keeps going.

What the ablations say ​

No two of those benchmarks have the same shape. On one benchmark /goal is fastest at first, on another it ties at the end, and on the take-home every single-model flow stops while the two-model Flame Chase keeps going. The flow is a choice to make per task.

Running these ablations also surfaced four things we did not expect: about diversity, about collaboration, about how the goal is posed, and about how models change over a long run.

Higher diversity, higher score ​

Two different models taking turns beat either model working alone, whether you measure tokens, dollars or hours. The Flame Chase of Claude Fable 5 and GPT-5.6 Sol goes below either model's own Ralph loop, and keeps going after both have stopped.

Fig. 3

Two models alternating against each model alone

10001100120013001400150001M2M3M4MOutput tokens spent

Take-home, two models alternating against each model alone: the Flame Chase of Claude Fable 5 and GPT-5.6 Sol ends near 1,000 cycles; each model in a Ralph loop on its own stops around 1,035 to 1,065, on any of tokens, cost or time.

Seed mean; the source shades the seed range, which is not redrawn. Same task as the take-home ablation. Read off the “Humanize Intro” deck, slide 23; Humanfia-reported, 2026-10-05. Hover, tap or use the arrow keys to read values; click a legend entry to hide it.

Better collaboration, better performance ​

Parallelism helps only as much as the lanes can work together. Three Flame Chase lanes that share reports beat one chase. The same three lanes with a coordinator merging their work through Git pull requests beat both, on wall-clock time and on the tokens along the critical path.

Fig. 4

Flame Chase, Parallel Flame Chase and its Git/PR variant, 12 hours

950100010501100115012000h2h4h6h8h10h12hActive elapsed time

Take-home over 12 hours, three ways of collaborating: Flame Chase ends near 1,013 cycles, Parallel Flame Chase near 1,004, and Parallel Flame Chase coordinated through Git pull requests near 986 — the best, on time and on critical-path tokens alike.

Three-seed mean. Tokens count from the first valid evaluation. Critical-path tokens are the coordinator’s plus the busiest of the three lanes; for plain Flame Chase it equals the total. Read off the “Humanize Intro” deck, slide 24; Humanfia-reported, 2026-10-05. Hover, tap or use the arrow keys to read values; click a legend entry to hide it.

A progressive goal keeps agents on track ​

In a Ralph loop, every round starts from a fresh session with the same goal. Agents lose their way: a round redoes work, or polishes the wrong thing. If the goal advances as milestones are met, the same model on the same task gets below 1,000 cycles. With a fixed goal it levels off near 1,060.

Fig. 5

Ralph loop, one fixed goal against a progressive goal

10001100120013001400150001M2M3MOutput tokens spent

Take-home, GPT-5.6 Sol in a Ralph loop: given a progressive goal it gets below 1,000 cycles; given the one fixed goal it levels off near 1,060, on any axis.

Seed mean; the source shades the seed range, which is not redrawn. Read off the “Humanize Intro” deck, slide 25; Humanfia-reported, 2026-10-05. Hover, tap or use the arrow keys to read values; click a legend entry to hide it.

Claude degrades across turns, GPT does not, and Flame Chase helps ​

Measured by output tokens per response over a 24-hour run, GPT-5.6 Sol works at the same length from the first hour to the last, in every flow. Claude Fable 5 starts with very long responses. In the flows that keep one session going (Always continue, Always prompt, ARAR), it falls to under a hundred tokens per response within five to ten hours. At that point it is barely working. In the Flame Chase, where a fresh Fable session alternates with GPT, it stays near a thousand. On the take-home, that is also where the cycles keep falling.

Fig. 6

Output tokens per response over a 24-hour run

101001k10k100k0h4h8h12h16h20h24hActive elapsed time in a single run

GPT-5.6 Sol: every flow holds between roughly 300 and 1,000 output tokens per response for the whole 24 hours.

Smoothed per-flow trend lines, max effort; the source’s per-response scatter is not redrawn. Read off the “Humanize Intro” deck, slides 26 and 27; Humanfia-reported, 2026-10-05. Hover, tap or use the arrow keys to read values; click a legend entry to hide it.

The talk also showed this measurement for a Ralph loop at every effort level on ten models, five from each vendor. The GPT models stay flat. Some of the Claude models decay over the run, most clearly Fable 5 at both effort levels and Opus 4.8 at xhigh.

Engineering, or a science? ​

Is a flow just one more kind of prompt, context, skill or loop engineering? We think it can be more than that.

  1. XXX engineeringone prompt, context, skill or loop · one task

    Prompt, context, skill and loop engineering: each fix is tuned to the task in front of it, and the dirty work does not carry over to the next one.

  2. Flow engineeringone flow · one task

    A whole method written as a flow and pointed at one kind of work: HOA at Lean, KDA at kernels, HMA at MLE-bench. It works, and it is still one flow per job.

  3. Flow scienceone flow family · every task that reduces to one problem

    A family — the Ralph loop, the Flame Chase, the progressive goal — generalises to every task that reduces to the same problem class, and can be ablated and analysed like any other object of study.

A flow family can be studied the way a model architecture is: hold everything else fixed, vary one thing and measure the result. These are the axes along which we are ablating the Flame Chase:

Varies: Claude Fable 5 ↔ GPT-5.6 Sol · Opus 5 ↔ GPT-5.6 Sol · one model alone

Already on this site: Fig. 3 compares two models alternating with each model alone.

The work needs a runtime that can express any of these variations as a short piece of Python, run it for a day on real hardware and record every turn on one clock. That is what Humanize is. The engine underneath it is described in Deep Tech.

Read next

BlogKDA²: Kernel Design Agents (KDA) Optimize Kimi Delta Attention (KDA)Our agents wrote Kimi Delta Attention kernels that run up to 2.96× faster than FlashKDA on B300 with a tenth of its state error. Here is how, and how the agents tried to cheat along the way.Read it BlogRLAR: The Review Is the Next PromptTwo small decisions inside RLAR changed how long-horizon runs behave: the reviewer's words go to the actor verbatim, and "done" is read off a field rather than a sentence.Read it BlogHumanfia: From a Review Loop to Four Layers and a RefereeHow Humanfia went from a July launch, an agent workflow for serious L3–L4 development, to a four-layer system of agents, a runtime, flows and applications, plus FlowBench, whose best flow becomes the default.Read it