Hermes Mixture-of-Agents: what we tested, what we found, when to use it

Branch feature/moa-openai-proxy on the public fork github.com/hughmadden/hermes-agent · started 2026-07-03, updated 2026-07-10 · ~330 benchmark turns on OpenRouter + Cerebras, plus local GPU measurements

Executive summary — what we built, what won, when to use what

Now 49 iterations deep, this campaign has turned the Hermes MoA proxy into a routed, cascading, self-improving serving system and mapped its behavior on AIME, HMMT, aider polyglot, SWE-bench Lite and Terminal-Bench. The one law that survived everything: never predict — observe. Observed signals (answer consensus, test failures, verification verdicts, discord) route work correctly; predicted difficulty never did. And for agentic coding, injected advice and voting are no quality multiplier — the proxy is exactly as smart as its acting model, and stacking helpers on top is dead weight to negative. Anchoring an arbiter with voter outputs, or briefing a capable actor every turn, is neutral at best and can actively corrupt a competent actor's output: an always-on advisor broke a coding model's tool-call format on 40% of tasks (iter 46) and 68% on a stronger actor (iter 47, corruption is actor-specific), and even the smartest possible voter panel — GPT-5.5 acting with Opus 4.8 + Grok 4.5 voting every turn — scored 18/25, below the same GPT-5.5 acting solo (20) and far below Fable solo (24), at triple the cost (iter 47). The advisor's one measured upside is steering an actor flailing on procedure, not one limited by capability — so for coding, advise by exception and swap the model (escalate) when you need capability; do not add voter panels at all. The one multi-model coding shape that does add value is verification, not opinion: a cheap worker whose patch is accepted or escalated on an observed test result lifted deepseek-flash from 15/25 to 19/25, offloading 76% of the work off the frontier (iter 48), and a repo-aware test author took it to 20/25 (iter 49). It still stops below Fable solo (24), and the reason is now surgically clear: the escalation lane is flawless — every one of the 7 escalated instances resolved, so 100% of the residual gap is false-accepts: cheap patches that pass the observable repro yet fail the hidden tests and are locked in, never escalated. Gate precision (72%) is the whole ceiling; the worker is not the bottleneck — a stronger gate is. Iteration 49 also fixed the proxy bug that blocked Anthropic models (Fable/Opus) from acting agentically on the Claude plan (a leaked mcp__ tool-name prefix), so plan-based frontier acting now works end-to-end (7/7 valid patches at scale, previously 0).

Proven configurations (the recipe book — all names resolve in section 0):

When to use frontier solos instead: precise code editing (any multi-model involvement hurt: −13 pp fan-out, −23 pp draft-review) and time-budgeted agentic terminal work (GPT-5.5 9/10 TB; fan-out latency blows agent budgets). The router exists precisely so those lanes stay solo.

0. Configuration reference — every tested config, models & roles

Roles: voter = answers the request directly, its answer is compared for consensus (cascade mode) · reference/advisor = writes advice the aggregator reads (classic MoA fan-out) · aggregator = the acting model that produces the final answer (in cascade: the tier-1 arbiter on disagreement) · classifier = routes moa:auto requests (~300 ms) · judge = one-word consistency check for freeform consensus · verifier = writes a python check script (sandboxed exec) · escalation lane = stronger preset a conversation/cascade moves to on observed failure/discord. Hosts: @cere = Cerebras wafer API (provider-served precision) · @OR = OpenRouter (provider-default precision) · @plan = openai-codex OAuth (ChatGPT plan, $0 marginal) · @5090 = local vLLM on the RTX 5090. Defaults unless stated: reference_max_tokens 8000 (cascade voters) / 1500 (classic fan-out), quorum straggler-dropping on where noted, save_traces off in benches.

0.1 Cascade family (mode: cascade — voting by exact-answer consensus)

ConfigVoters (tier 0)ConsensusTier-1 arbiterTier-2 escalationExtras
cascade-wafergpt-oss-120b@cere, gemma-4-31b@cere2 of 2zai-glm-4.7@cere (sees voter outputs)gpt-5.5@plan on discordquorum 0.5
cascade-wafer42× gpt-oss-120b@cere + 2× gemma-4-31b@cere (k-sampling via duplicate slots, temp 0.6)3 of 4zai-glm-4.7@ceregpt-5.5@planquorum 0.8
cascade-wafer4-mc4same 44 of 4 (unanimity)zai-glm-4.7@ceregpt-5.5@plan
cascade-wafer4vsame 43 of 4zai-glm-4.7@ceregpt-5.5@planverify: python — verifier gemma-4-31b@cere writes check scripts, run sandboxed; verify_when weak (non-unanimous consensus + all tier-1)
cascade-wafer4-judgesame 43 of 4, then judgezai-glm-4.7@ceregpt-5.5@plangate: judge — gemma-4-31b@cere one-word consistency check extends tier-0 to freeform
cascade-wafer4-gptaggsame 43 of 4gpt-oss-120b@ceregpt-5.5@plan
cascade-consfrontiersame 43 of 4gpt-5.5@plan (frontier arbitrates every disagreement, sees voter outputs)none
cascade-consfrontier-cleansame 43 of 4gpt-5.5@plan, clean_arbiter (re-solves from scratch, voter outputs discarded)noneanchoring guard
cascade-diverse2× gpt-oss-120b@cere, gemma-4-31b@cere, Qwen3-8B@5090 (BF16, vLLM)3 of 4gpt-oss-120b@ceregpt-5.5@planquorum 1.0
cascade-diverse322× gpt-oss-120b@cere, gemma-4-31b@cere, Qwen3-32B-AWQ@5090 (4-bit AWQ, vLLM, 16k ctx)3 of 4gpt-oss-120b@ceregpt-5.5@planquorum 1.5
cascade-rlm2× gpt-oss-120b@cere + 2× gemma-4-31b@cere as RLM agents (agent: rlm — reason→python→observe loop, ≤6 rounds, sandboxed exec)3 of 4zai-glm-4.7@ceregpt-5.5@planall-wafer; frontier 1.7%
cascade-live2× gpt-oss-120b@cere + 2× gemma-4-31b@cere PLAIN voters (no RLM loops — session quota bombs), voter window 4000 tok, reference_max_tokens 1500, degraded_consensus3 of 4 (degrades to live count)gpt-5.5@plan (acting/solo lane, 400k ctx)none (acting lane is frontier)the serving default (iter 44)
cascade-rlm-convsame RLM voter pool3 of 4gpt-5.5@plan, clean_arbiternonethe champion: 97% AIME @3.9 s
All cascade presets support: tool_turns: detect (default — sessions revert to cascade after tool phases via a tool-aware voter gate; "solo" pins tool-carrying requests to acting-solo), max_context_tokens (default 100k — oversized requests bypass voters), streaming (tier-0 winner streamed; tier-1 live when no escalation inspection).
cascade-convergence2× gpt-oss-120b@cere, gemma-4-31b@cere, Qwen3-32B-AWQ@50903 of 4gpt-5.5@plan, clean_arbiternonethe 95% result — diversity + anchoring laws composed

0.2 Routed / escalation / omni configs (moa:auto)

ConfigClassifierLanes (route → preset)Failure escalation
moa:auto v1gemma-4-31b-it@ORcoding→open-moa-heavy · math→open-moa-alt · general→open-moa-flash · trivial→SELF (classifier answers)
moa:auto v2 (evidence-informed)gemma-4-31b@cere (paid)coding→open-kimi-solo (solo lane) · hard-reasoning→open-moa-heavy · general→cere-fast · SELF on
escalation-live (serve-v4)gemma-4-31b@cereall coding→kimi-lane (kimi-k2.6@OR solo)tiers [fable-lane = claude-fable-5@OR], min_failures 1 (failure text in latest client/tool message)
plan-escalate / esc2gemma-4-31b@cereall→kimi-lanetiers [gpt55-plan-lane], min_failures 1 (v13) then 3 (v14)
frontier-cascade (refuted)gemma-4-31b@cereroutine-code→zai-glm-4.7@cere · hard→fable-lane@OR (classifier-GUESSED difficulty)
moa:omnigemma-4-31b@cerecode→omni-code (kimi-k2.6@OR solo) · checkable→omni-reason (= cascade-wafer4) · chat→omni-chat (2-voter cere fan-out → zai-glm-4.7) · trivial→SELFtiers [gpt55-plan-lane], min_failures 2
kimi-reviewed (draft_review, refuted)aggregator kimi-k2.6@OR drafts solo → reviewers deepseek-v4-flash@OR + glm-5.1@OR critique → kimi revises

0.3 Classic MoA fan-out combos (references advise → aggregator acts)

ConfigReferences/advisorsAggregatorNotes
open-moa-heavy / mixed-heavydeepseek-v4-pro, qwen3.7-max, z-ai/glm-5.2 (all @OR)kimi-k2.6@ORcap 1500; "+quorum" variant adds grace 0.5
open-moa-altkimi-k2.6, minimax-m3, deepseek-v4-flash @ORdeepseek-v4-pro@OR
open-moa-flashdeepseek-v4-flash, qwen3.6-35b-a3b, glm-5.1 @ORdeepseek-v4-flash@OR
open-moa-nanollama-3.1-8b, ministral-8b-2512, gemma-3-12b @ORgemma-3-27b@ORdeliberately fallible — the learning-loop subject
gpu4-composedqwen3-coder-next, gpt-oss-120b, qwen3-next-80b-a3b-thinking @ORqwen3.5-122b-a10b@ORsimulates 4× single-96GB-GPU models
cere-moagpt-oss-120b, gemma-4-31b @cerezai-glm-4.7@cerethe always-on wafer MoA baseline
cere-agg-openrefs-{gemma,gptoss}heavy refs @ORgemma-4-31b / gpt-oss-120b @cerewafer fast-merge over strong refs
wafer-fable / wafer-gpt55plangpt-oss-120b + gemma-4-31b @cere (cap 2000)claude-fable-5@OR / gpt-5.5@planwafer advisors briefing a frontier judge
council-fablegpt-5.5@plan + claude-opus-4.8@OR (cap 2000)claude-fable-5@ORfrontier council
local-trio-stepagg / -glm52aggdeepseek-v4-flash, qwen3.6-27b, glm-4.7-flash (or step-3.5-flash) @ORstep-3.5-flash / glm-5.2 @ORlocally-runnable-class stacks

0.4 Solos, learning loop & misc

ItemDetail
Solo baselines (X-solo)the named model as sole aggregator through the identical code path (disabled preset, no references): fable/opus/kimi/deepseek-pro/-flash/qwen*/nemotron-550b/qwen3.5-397b/step-3.5-flash @OR; gpt-5.5 @OR and @plan; gemma-4-31b/gpt-oss-120b/zai-glm-4.7 @cere
Learning loop (evolve)subject open-moa-nano; 20 train + 20 held-out tasks; traces graded with correct/expected; distiller deepseek-v4-pro@OR rewrites the ≤4KB aggregation-heuristics skill injected into every aggregator prompt; leakage-scanned; per-preset skills via --per-preset
Router/judge/verifier slotgemma-4-31b@cere throughout (100% routing acc, p50 288 ms on the paid key); free-tier key RPM-collapses (measured)
Verifier sandboxpython -I, empty env, tempdir cwd, 12 s timeout, non-zero exit = inconclusive; verdicts only ever strike/escalate, never block

Full machine-readable configs: the serve YAMLs and bench CONFIG dicts in the fork branch (scripts/moa_*_bench.py, docs/plans/moa-routed-config-example.yaml, docs/plans/moa-cascade-spec.md); every results table's config name matches a row above.

2. Architecture — how each mechanism works

The proxy (hermes moa serve). An OpenAI-compatible /v1/chat/completions server where every configured preset is a model id (moa:<preset>). The CLIENT owns tools and turn termination: the proxy forwards the client's tool definitions to the acting model and streams tool_calls back — so any agent harness (aider, mini-swe-agent, Harbor/terminus-2, OpenClaw, Claude Code via LiteLLM) can use these compositions as "a model" with zero integration work. Reference/voter thinking streams as reasoning deltas; usage.moa itemizes every upstream call. Hard per-slot timeouts (slot_timeout_s, 300 s) after real wedges. Provider slots resolve through the standard Hermes chain, which is how Cerebras (custom provider), local vLLM (custom provider), OpenRouter, and plan-OAuth models (openai-codex; anthropic once logged in) all mix freely in one preset.

Classic fan-out (mode: fanout, the original MoA). Every reference slot receives an advisory view of the conversation (with an advisor system prompt and truncated tool results), writes advice in parallel; the aggregator then acts with that advice appended as a guidance block. Measured: lifts hard reasoning +4–7 pp over its own aggregator solo; HURTS precise code editing (−13 pp) and never helps agentic coding. Latency = slowest reference → mitigations: reference_max_tokens: 600 (−17% latency, free) and quorum straggler-dropping (reference_quorum_grace: once all but one reference finish at elapsed T, the straggler gets T×grace then is dropped with a note — no accuracy cost measured, 60/60).

Cascade (mode: cascade — lazy MoA, the flagship). Voters (the reference slots) answer the request DIRECTLY (no advisory framing) in parallel at tier 0; a candidate answer is extracted from each (ANSWER-line → balanced-\boxed{} → short last line; failure boilerplate can never vote). If ≥ min_consensus normalized candidates agree, the first agreeing voter's full text returns immediately — no aggregation at all (~1.4–6 s, and consensus precision measured 96–100%; PERFECT 39/39 with a competent-diverse pool). On disagreement, tier 1: the aggregator acts, normally seeing the voters' work — or, with clean_arbiter: true, re-solving from scratch (measured: voter context ANCHORS even frontier arbiters — 7/9 vs 98% solo). If the tier-1 answer agrees with no voter and escalate_to names a preset, tier 2 escalates to that preset's aggregator. Optional gates: gate: judge (a 300 ms wafer consistency check extends tier-0 to freeform — 2× speed, but costs blind-graded polish 2/2/23, latency-first lanes only) and verify: python (a verifier slot writes a check script, executed sandboxed — python -I, empty env, tempdir, 12 s, non-zero exit distrusted; WRONG strikes the consensus or forces escalation; only pays when checks are computational). Per-slot max_tokens overrides let thinking-heavy voters finish (an 8 k cap silenced a 32B voter's candidates entirely). Production semantics (v1.4): streaming tool-free requests run the true cascade (voter progress as reasoning deltas; a tier-0 winner arrives as one content delta — 1.3 s measured live; tier-1 streams token-by-token unless an escalation tier must inspect the answer first); tool-carrying requests run the acting slot SOLO with tools forwarded (no voter overhead — advisory context measurably hurts tool work); requests estimated over cascade.max_context_tokens (default 100k) bypass the ~128k wafer voters to the acting slot ("context-solo") instead of erroring — the long-context ladder being cascade <100k → plan-GPT-5.5 to ~400k at $0 → 1M-class open lanes on explicit routes.

Router (moa:auto). A wafer classifier (gemma-4-31b@cere: 100% accuracy, p50 288 ms) reads the request tail and picks a route-described preset; SELF class answers trivia directly. Decisions are sticky per conversation (session header or first-user-message hash) so tool loops never re-classify. Failure-gated escalation: when a sticky conversation's latest client/tool message carries failure markers, it re-routes one tier up (escalation.tiers), gated by min_failures (debugging prints tracebacks as normal work — first-failure escalation over-fired on 80% of SWE conversations; min_failures=3 cut frontier turns 33%→18% at identical resolution). Disabled presets with a route block are routable solo lanes — how coding traffic bypasses the fan-out penalty.

Learning (hermes moa evolve). With save_traces on, every fan-out turn records the full advisory inputs/outputs plus optional externally-graded outcomes and the routing decision. Evolve replays recent traces through a distiller LLM that REWRITES a bounded (≤4 KB) aggregation-heuristics skill, injected into every subsequent aggregator prompt; --per-preset keeps lane heuristics separate. Measured on a weak fleet: +8.3 pp held-out across 3 cycles, zero answer leakage; cost is +40–70% latency from the verification habits it teaches.

Plan integration. Mounting the live ~/.hermes/auth.json (single shared store — never copy it; OAuth refresh rotation would split-brain) into the serve container lets slots use provider: openai-codex → GPT-5.5 at $0 marginal on the ChatGPT plan. The same path unlocks plan-Fable/Opus once hermes auth login anthropic has been run.

Test surface: 82+ hermetic MoA tests + 9 live integration tests; slim docker release (docker-compose.moa.yml) serves a fresh clone in ~3 commands.

2.x The serving layer (iteration 44) — what real sessions add

Benchmarks send one short problem; real agents send a growing conversation with tool calls and provider-opaque fields. Three mechanisms close the gap: (1) history projection — a pure, per-message transform renders tool_calls/tool results/content blocks as plain text and strips opaque provider fields before any voter sees the history (per-message ⇒ append-only ⇒ upstream prefix caches survive); (2) voter context windows (cascade.voter_context_tokens) — voters see a recency window while acting lanes keep the full verbatim transcript, bounding the fan-out token bill that otherwise multiplies the session length 5–6× per turn (and trips provider TPM quotas that count even cached tokens); (3) a session registry — TTL+LRU, keyed by header or first-user-message hash, providing a stable prompt_cache_key for OpenAI-family acting lanes and session observability (usage.moa.session = turns + last served mode; usage.moa.voter_view = window stats; prompt_tokens_details.cached_tokens on every usage object). Robustness rule learned the same day: degraded_consensus — a quota burst that kills half the voter pool no longer forces acting-solo when the survivors agree (min_consensus degrades to the live count, floor 2).

3. Scorecard — every test we ran

TestWhat it measuresWinnerKey numbers
Exact-answer reasoning, 40 verified taskscomposition vs big solos (4×96 GB sim)open MoA (composed)composed 40/40 · v4-flash 38 · 122B/gpt-oss solos 37 · 397B 35 · 550B 24*
Cerebras slots, same 40 taskswafer-speed classifier/aggregator/MoACerebras (all 3 roles)fast-merge agg 40/40 (fastest fan-out) · all-Cerebras MoA 38/40 @ 6.8 s · gemma31 solo 39/40 @ 1.1 s
Learning loop, 3 evolve cycles, train/held-outdoes MoA improve with use?evolve (works)+1/+3/+1 per cycle · 73.3% vs 65.0% paired (+8.3 pp) · 0 leakage · +40–70% latency
Routing classifier, 48 labelled casesmoa:auto accuracy + overheadCerebras paid100% acc, p50 288 ms (OpenRouter sub: 100%, 338 ms; free Cerebras: quota-collapse, all contained)
Aider polyglot, 30 Python exercisesprecise code editingfrontier soloOpus 90% · Fable 87%@13.6s/100% pass@2 · GPT-5.5 73% · kimi solo 73% · moa-heavy 60% · moa-flash 43%
SWE-bench Lite, 25 instances (mini-swe-agent)agentic debuggingescalationgpt-5.5 20/25 (80%) · kimi-solo 19/25 (76%) · moa-heavy 17/23 · kimi→Fable oracle composite 25/25 (upper bound) · LIVE kimi→plan-GPT-5.5 escalation: 20/25 (80%) = paid-frontier parity at $0 frontier cost; with escalation.min_failures=3 the same 20/25 holds at only 18% frontier turn share (kimi drives 82%)
Routing A/B (aider, moa:auto v1 vs v2)does routing fix the coding penalty?v2 routingv1 (coding→fan-out) 63.3%@527s → v2 (coding→solo lane) 66.7%@235s; 71/73 turns routed correctly — kimi-parity within single-run noise
Frontier cascade (aider, classifier-guessed difficulty)fewer Fable calls via up-front routingfailedcheap lane (Cerebras GLM-4.7) 30% pass@1 — guessing difficulty up-front fails when the cheap lane can't do the format
Verification-gated escalation (kimi → Fable on test failure)Fable quality at fewer Fable callsworkscomposite 30/30 (100%) with test-feedback escalation — and replicated on SWE-bench Lite: kimi 19/25 + Fable 6/6 on the remainder = 25/25 resolved with Fable on 24% of instances
Self-MoA vs mixed refs vs solo (40 tasks, kimi aggregator)do mixed references beat self-ensembles?ceiling — no signalall three 40/40; solo used 4× fewer tokens — composition only adds cost once the model is at ceiling
Terminal-Bench sample, 10 tasks (Harbor/terminus-2)agentic terminal workfrontier soloGPT-5.5 9/10 · moa:auto 6/10 · flash 6/10 · kimi 6/10 · heavy 5/10 (6 agent-timeouts — fan-out latency kills time-budgeted work)
TP=2 over PCIe vs independent GPUs (5090+4090, vLLM)multi-GPU serving strategyindependent per-GPUTP=2: 0% single-stream gain, 1016 vs 2212 tok/s aggregate (2.2× worse)
RLM wafer-agent loop vs single-pass (AIME-60, iter 30)gemma-4-31b: RLM 82% vs solo 68% (+14 pp) @2.5 s · gpt-oss-120b: no benefitagentic wafer lane proven

* 11 of the 550B model's 16 misses were empty/invalid responses from its OpenRouter provider — frontier-open serving is itself still flaky, which is a reliability argument for compositions that degrade gracefully (a failed reference becomes a note; a failed monolith is a failed request).

4. Primary quality axis — AIME 2024+2025 (hard benchmark)

The original 40-task set saturated at kimi-class (three configs 40/40), so AIME 24+25 (60 competition problems, exact integer answers) replaced it as the primary quality axis. Same code path, same configs:

ConfigAIME accAvg latencyTok/task
fable-solo (claude-fable-5)60/60 (100%)24 s2 191
gpt55-solo59/60 (98%)48 s2 696
cere-agg over heavy refs (gpt-oss merge) — best open57/60 (95%)468 s38 285
mixed-heavy (3 refs → kimi)55/60 (92%)488 s42 442
gpu4-composed (4 single-GPU models)54/60 (90%)223 s50 807
cere-moa (all-Cerebras) — efficiency champion54/60 (90%)19 s21 545
kimi-solo53/60 (88%)288 s19 052
kimi-solo + python verifier tool (v2 harness)56/60 (93%)455 s
mixed-heavy + quorum straggler-dropping60/60 (100%)508 s43 240
v4flash-solo47/60 (78%)190 s8 718
cere-gemma31-solo46/60 (77%)1.7 s2 572
open-moa-nano19/60 (32%)243 s34 727

What the hard benchmark changes: (1) composition does lift hard reasoning — +7 pp for a Cerebras-merged heavy fan-out over kimi solo, +4 pp for mixed-heavy, and every composition beats its own parts (the earlier "no gain" was a ceiling artifact of the saturated 40-task set); (2) all-Cerebras MoA delivers 90% AIME at 19 s/task — gpu4-composed accuracy at 12× lower latency, the practical open fast lane; (3) frontier saturates AIME (Fable perfect), so open-tier improvements are where the measurement signal lives; (4) small-model MoA (nano) collapses on hard problems (32%) — composition cannot rescue models far below the task.

4b. POST-CUTOFF REVALIDATION — AIME 2026 + HMMT Feb 2026 (the numbers that count)

Both competitions were administered February 2026 — after the training cutoff of every model in the pool. 50 gradable problems, identical harness. This is the contamination-resistant scoreboard:

ConfigAIME 2026 (30)HMMT Feb 2026 (20)Median latencyFrontier use
cascade-rlm (new default)93–97% (3 runs)90–95% (3 runs)3.9 / 5.7 s3% / 20%
cascade-rlm-conv (old champion)26/30 (87%)18/20 (90%)3.3 / 5.0 s20% / 25%
GPT-5.5 solo ($0 plan)29/30 (97%)17/20 (85%)29 / 38 s100%
Fable solo29/30 (97%)18/20 (90%)22 / 28 s100%
cere-moa (always-aggregate wafer)26/30 (87%)15/20 (75%)10 / 15 s0%

Three findings. (1) Contamination was real: frontier solos dropped 1–10 pp on fresh problems (Fable 100→97/90, GPT-5.5 98/95→97/85) — the old-set ceilings flattered them. (2) The architecture generalizes: cascade-rlm matched its old-set numbers on problems no model had seen — tying both frontier solos on AIME 2026 and BEATING them on HMMT Feb 2026 (+10 pp over GPT-5.5, +5 pp over Fable) at 6–8× lower latency. Consensus among diverse fast agents is measuring problem difficulty, not memorization. (3) Champion swap: the always-frontier clean arbiter (rlm-conv) fell behind — its old-set edge was partly the arbiter's contamination; observation-gated escalation (cascade-rlm: wafer aggregator first, frontier only on discord) is the better architecture on genuinely novel problems, and is now the default on the stable service and the turbo profile. All older sections retain AIME 24+25 / HMMT 2025 numbers — read those as contamination-suspect upper bounds for the frontier solos, and as validated-by-revalidation for the cascade family.

5.1 The cascade program — flagship: lazy MoA with consensus gating

Built 2026-07-04 (ultracode batch): the campaign's one law is that predicted difficulty fails and observed signals win — so mode: cascade gates on the cheapest observation there is: answer agreement between wafer-speed voters. Tier 0: Cerebras gpt-oss-120b + gemma-4-31b answer directly in parallel (~1.5 s); unanimity returns instantly. Tier 1: on disagreement the aggregator synthesizes from the voter outputs already paid for. Tier 2: when the aggregator agrees with no voter (observed discord = genuine hardness), escalate to plan-GPT-5.5 ($0). Implementation farmed to parallel Sonnet builders with adversarial review (3 confirmed findings fixed: nesting-aware boxed extraction, failure-boilerplate votes, trace attribution); 98 tests green.

MetricAIME 24+25 (60)HMMT (20, harder)
cascade-wafer (2 voters) accuracy56/60 (93%)18/20 (90%)
cascade-wafer4 (4 voters, 3-of-4)56/60 (93%) · median 4.4 s · tier-0 rate 80% · frontier 5%
vs always-aggregate cere-moa90%75% — cascade +15 pp
vs plan-GPT-5.5 solo98%95%
median latency9.9 s (tier-0: 1.4 s)19.6 s
frontier fraction (all $0 on plan)13%15%
tier split (t0/t1/t2)20/31/84/13/3
tier-0 consensus precision20/20 (100%)3/4
tier-2 accuracy7/83/3

Why this is the product: it strictly dominates its own always-on MoA (better accuracy on both sets, half the median latency, no aggregator cost on easy traffic), reaches within 2–5 pp of a frontier solo while touching the frontier on ≤15% of requests, and every tier below the top runs on wafer/local-class models — this is the 4×96 GB box's serving architecture, live today: mode: cascade in one preset. Smoke: 17×23 answered end-to-end in 1.16 s. The cascade self-adapts to difficulty: easy sets ride tier 0, hard sets shift to tiers 1–2 — no classifier, no prediction, just observation.

5.2 The frontier dial — measured

Consensus strictness IS the quality/cost dial. HMMT Feb 2025 (hard set), same wafer voters throughout:

Dial positionHMMT accMedian latFrontier calls
2 voters, unanimity (mc2)18/20 (90%)19.6 s3/20
4 voters, 3-of-4 (mc3)17/20 (85%)15.2 s3/20
4 voters, unanimity (mc4)20/20 (100%)15.5 s2/20
GPT-5.5 solo (reference)19/2040 s20/20
Fable solo (reference)20/2033 s20/20

The strict-unanimity cascade matched Fable and edged GPT-5.5 solo on the hard set with TWO frontier calls (both $0 on the plan) — stricter consensus routes marginal cases into tier-1 aggregation, which went 12/12 here. AIME-60 confirmation (v19) sharpened this honestly: mc4 scored 88% on AIME — BELOW mc3's 93% — because strict unanimity demoted 22 problems to tier-1, whose aggregator went 16/22, worse than the 95.8%-precise weak consensus it replaced. The dial is task-relative: where voters are competent (AIME), trust weak consensus; where stretched (HMMT), strictness pays. The two cross-set constants: unanimous tier-0 is essentially perfect everywhere measured (33/33, 20/20), and tier-2 is near-perfect (4/4, 3/3, 7/8) — the tier-1 aggregator (glm-4.7) is the weak link and the next upgrade target.

5.3 Cascade family — complete measured map

Variant (AIME-60 unless noted)AccMedianFrontier
2 voters, unanimity93%9.9 s13%
4 voters, 3-of-4 (glm agg)93%4.4 s5%
4 voters, 3-of-4 + verification92%4.8 s12%
4 voters, unanimity88%7.2 s7%
4 voters, 3-of-4 (gpt-oss agg)90%4.3 s2%
cascade-rlm (RLM wafer voters, iter 31)92%3.6 s1.7%
cascade-rlm-conv (RLM voters + clean $0 arbiter, iter 32)97% — record3.9 s17%
consensus-or-frontier (GPT-5.5 arbitrates all disagreements)93%3.5 s15%
4 voters, unanimity — HMMT (hard set)100% (20/20)15.5 s10%

The measured laws of the cascade family: (1) it sits at 92±1.5% AIME across every knob — the knobs trade latency (3.5–10 s median) and frontier fraction (0–15%), not accuracy; (2) consensus precision is the engine (unanimous tier-0: 53/53 cross-set; 3-of-4: ~96%); (3) the residue is bounded by ~4% false consensus plus frontier-hard items; and (4) — the deepest finding — voter context anchors even a frontier arbiter: GPT-5.5 judging disagreements scored 7/9 where GPT-5.5 solo runs 98% — the same contamination measured in code editing, now in hard reasoning. Iteration 25 tested clean escalation: the clean frontier arbiter improved the disagreement subset directionally (78% → 86%, small n) — anchoring is real — but the total held at 92% because stochastic false consensus (~4–5%, different problems each run) is the family's true ceiling. Seven AIME-60 variants land at 92.1% mean. The remaining lever is voter DIVERSITY, not architecture: Cerebras offers three model families; adding independent families (e.g. local vLLM voters on the 5090/4090 — exactly the 4×96 GB box thesis) attacks the correlated-error term directly. Iteration 26 tested it live: a LOCAL Qwen3-8B voter (vLLM on the RTX 5090) joined the Cerebras voters in one consensus pool — the hybrid ran flawlessly (60/60 turns, 0 errors, hybrid tier-0 consensus at ~5 s) but scored 88%: the weak voter's dissent was noise, inflating tier-1 volume without cutting false consensus. The closing law: diversity value = independence × competence. An 8B is below the bar; the 4×96 GB box thesis holds precisely because 96 GB cards run 27B–120B-class voters (qwen3.6-27b measured 80% HMMT) that can be right when the wafer models collude wrong.

5.4 CONVERGENCE RESULTS — 95% with local silicon; 97% pure-cloud (the record)

Update (iterations 31–32): composing the RLM discovery into the convergence pattern beat the local-GPU result: cascade-rlm-conv (RLM wafer voters + clean $0 frontier arbitration) scored 58/60 (97%) at 3.9 s median — tier-0 handled 83% of traffic at 98% precision (49/50 @ 3.0 s), the clean arbiter took the tail 9/10, frontier fraction 17% at $0, zero errors, zero local hardware. The local-voter convergence below remains the proof that on-box silicon slots in natively (and the best result when plan quota is scarce — its tier-0 was perfect).

Iteration 27 composed every measured law into one preset: competent-diverse voters (2× Cerebras gpt-oss-120b + gemma-4-31b + Qwen3-32B-AWQ running on the local RTX 5090) + clean plan-frontier arbitration (GPT-5.5 re-solves every disagreement from scratch — anchoring guard):

Metriccascade-convergence (AIME-60)
Accuracy57/60 (95%) — breaks the 92±1.5% family ceiling
Tier-0 consensus precision39/39 — PERFECT (zero false consensus, first ever)
Tier-1 (clean $0 frontier) on the hard tail18/21 (86%)
Frontier fraction / cost35% of requests · $0 (ChatGPT plan)
Median latency / errors14.1 s (tier-0: 6.6 s) · 0 errors
HMMT validation (iteration 29)19/20 (95%) — matches GPT-5.5 solo; tier-0 8/9 @6.0s; clean arbitration 11/11; 0 errors

Why this one matters: for the first time the number moved because of design, not noise — tier-0 became perfect BECAUSE the diversity law (independence × competence) fixed false consensus, and tier-1 lifted BECAUSE the anchoring law demanded clean arbitration. 95% vs GPT-5.5 solo's 98%, built from Hugh's own GPU + wafer inference + plan-covered frontier on a third of requests. This is the 4×96 GB box architecture, measured end-to-end with real local silicon in the pool.

The completed frontier curve (iteration 28 closed it): 93% @ 5% frontier (cascade-wafer4) → 95% @ 35% frontier (cascade-convergence — the optimum) → 98% @ ~100% (unanimity-of-4 degenerated to frontier-solo: the thinking-heavy local voter often exhausted its 8000-token cap before emitting a candidate, making 4-of-4 unreachable — mechanism lesson: unanimity dials require every voter to reliably emit candidates; thinking voters need caps ≥ their reasoning budget). Pick your point on the curve per lane; all frontier usage rides the $0 plan.

6. Frontier / wafer / local mixes — HMMT Feb 2025

New batch (2026-07-04): can frontier+wafer+plan mixtures be "fast and smart", and how far do locally-runnable-class stacks go? HMMT Feb 2025 (gradable 20-problem subset — integers/simple fractions), quorum on. GPT-5.5 rides the ChatGPT plan through the proxy (live hermes auth mounted, zero marginal cost); Opus/Fable still via OpenRouter (anthropic OAuth isn't provisioned in hermes yet — one `hermes auth login anthropic` would unlock plan-Fable).

ConfigHMMT accAvg latencyReading
fable-solo20/2033 sFable saturates HMMT too — competition math can't discriminate the frontier any more
council-fable (plan-GPT-5.5 + Opus refs → Fable)20/2051 sno lift possible at ceiling; no harm either
wafer-fable (Cerebras refs → Fable)20/2037 swafer advice costs only +4 s and nothing in accuracy
gpt55-plan-solo19/2040 sthe value king: 95% HMMT at $0 marginal (plan)
wafer-gpt55plan18/2047 swafer advice didn't lift GPT-5.5 (−1, noise range)
local-trio-glm52agg (v4flash + qwen27 + step refs → GLM-5.2)17/20 (85%)659 sbest local-class score — composition lifts again (+5 pp over best part), but 11 min/problem
qwen27-solo (qwen3.6-27b)16/20 (80%)976 sthe local sleeper: 80% HMMT from a 27B — at 16 min of thinking
cere-moa15/20 (75%)25 sthe speed-quality frontier below GPT-5.5: 75% at 25 s
step35-solo / local-trio-stepagg8/20 · 9/20 *~500–590 s* retry at 900 s reproduced the failures: the OpenRouter provider returns empty/invalid responses on long generations (18/40 runs) — provider-broken, not model-refuted; completed-run accuracy ~70–80%

Batch findings so far: (1) plan-integrated GPT-5.5 through the proxy is the single best value config for hard reasoning; (2) frontier councils can't be evaluated on competition math any more — Fable saturates AIME and HMMT; their test needs long-horizon agentic work; (3) the local tier repeats the composition story (+5 pp) but pays minutes of latency — the practical local sweet spot remains cere-moa-style wafer serving unless quality is paramount; (4) qwen3.6-27b is the strongest small local model we've measured.

7. moa:omni — the product, live

Every measured optimization assembled behind ONE model id (moa:auto): the 288 ms Cerebras classifier routes each request to its measured-best lane — checkable problems → consensus cascade (93% AIME @ 4.4 s median, 5% frontier), code → kimi solo with plan-frontier escalation on observed failure, chat → wafer MoA, trivia → wafer self-answer. Mixed-traffic showcase (10 prompts across all four classes): 10/10 routed correctly, 2.6 s median latency — math answered by tier-0 consensus in 0.9–2.4 s, trivia in 0.7 s. Config shipped as the example in the branch.

Verified cascade (iteration 19) — honest verdict: adding wafer-generated python verification was NEUTRAL on AIME (92% vs 93%): the two WRONG verdicts correctly forced tier-2 escalations, but false consensus survived because a 31B verifier cannot independently check what 120B voters got wrong — verification pays exactly when the check is pure computation (the earlier +5 pp), not when it needs the missing insight. The honest frame: the wafer cascade ceilings at ~93% AIME, and above that you turn the frontier dial (escalation rate) — 5% frontier → 93%, 100% frontier → 98% — rather than expecting free accuracy from tricks.

8. MoA pros & cons — updated for the cascade era

Measured pros

  • Consensus is a near-perfect, near-free correctness signal: unanimous tier-0 53/53 cross-set; perfect 39/39 with a competent-diverse pool — the engine of the cascade.
  • Fan-out lifts hard reasoning +4–7 pp over its own aggregator solo; composition beat every same-class solo (gpu4-composed 90% AIME).
  • Escalation gives frontier parity at a fraction of frontier usage: SWE 20/25 at 18% $0-frontier turns; cascade-convergence 95%/95% (AIME/HMMT) at ~35%.
  • Wafer slots collapse latency: classify 288 ms, tier-0 answers 1.4–6 s, fast-merge aggregation at zero accuracy cost.
  • It learns (+8.3 pp for weak fleets, zero leakage) and degrades gracefully (failed/dropped voters become notes, never failures).
  • It serves real agent sessions (iter 44): growing tool-thread sessions run end-to-end — tool round-trips, post-thread cascade reverts, sub-second cached tier-0 turns — with caching finally observable per turn.
  • Local silicon slots in natively — a 5090-hosted voter made consensus perfect; the 4×96 GB box architecture, proven end-to-end.

Measured cons

  • Advisory context contaminates precise work: −13 pp code editing, −23 pp draft-review, and it anchors even frontier arbiters (7/9 vs 98% solo) — hence solo lanes and clean_arbiter.
  • Wafer-cascade accuracy ceilings at ~92–95% on AIME-class reasoning; the residue needs the frontier dial (verification is neutral when the check needs the missing insight).
  • Fan-out latency kills time-budgeted agentic work (TB heavy: every failure an agent-timeout).
  • Weak voters are noise; thinking voters break unanimity — diversity value = independence × competence, and candidates must actually be emitted (per-slot caps shipped, but 4-of-4 with a thinking 32B still never fired).
  • Provider quota ceilings bound fan-out, and caching doesn't save you: TPM quotas count cached tokens, and Cerebras reserves each request's completion cap at admission — full-context fan-out died on turn one of a 10k session until voters were windowed + capped (iter 44, fixed).
  • Token multiplier ~4–6× vs cheap solos: MoA wins the cost argument only against frontier prices or when consensus short-circuits traffic.

9. Detailed results (aider / SWE-bench / Terminal-Bench / learning / multi-GPU)

Reasoning quality (40 verified exact-answer tasks)

ConfigAccLatencyTok/task
gpu4-composed (coder-next + gpt-oss + 80b-think → qwen3.5-122b)40/4066 s14 598
cere-agg over heavy refs (gpt-oss merge)40/4061 s6 904
cere-agg over heavy refs (gemma31 merge)40/4076 s9 399
cere-gemma31 solo (wafer)39/401.1 s1 801
all-Cerebras MoA38/406.8 s9 509
tp2-class solo: deepseek-v4-flash38/4023 s2 336
gpu1 solos: qwen3.5-122b / gpt-oss-120b37/40124 / 19 s8 189 / 1 199
tp4-class solos: qwen3.5-397b / nemotron-550b35 / 24*383 / 32 s9 798 / 1 246

Code editing (aider polyglot, 30 Python, whole format)

Configpass@1pass@2s/caseRun cost
frontier-opus-solo90.0%100%9.9$0.95
frontier-gpt55-solo73.3%100%22.7$1.71
open-kimi-solo73.3%96.7%173$1.02
open-moa-heavy (3 refs → kimi)60.0%96.7%347≈$2.10
open-moa-flash43.3%93.3%341≈$0.60
fable-solo (claude-fable-5)86.7%100%13.6≈$1.90
moa:auto v1 (coding→fan-out)63.3%96.7%527≈$2.10
moa:auto v2 (coding→kimi solo lane)66.7%96.7%235≈$1.10
cascade (classifier→GLM-4.7/Fable)30.0%70.0%19.6≈$0.70
moa:auto + escalation lane (LIVE, kimi→Fable on failure)83.3%100%36.63/30 exercises reached Fable
kimi→Fable escalation (verification-gated)100% composite (pass@2-style)~180≈$1.50, −73% Fable calls

Costs from measured tokens × live OpenRouter prices. The MoA pass@1 penalty (−13 pp vs its own aggregator) replicated on both combos → routing now supports solo lanes so coding traffic can bypass the fan-out.

Agentic benchmarks

BenchmarkConfigResult
SWE-bench Lite (25 instances, mini-swe-agent, local docker eval)open-kimi-solo19/25 resolved (76%)
open-moa-heavy17/23 resolved (2 instances wedged on fan-out latency) — confirms: no MoA gain on agentic coding
frontier-gpt55-solo20/25 resolved (80%)
Terminal-Bench sample 2.0 (10 tasks, terminus-2, 2× timeout)frontier-gpt55-solo (paid / $0 plan)9/10 · 8/10 @ $0 in 13 min
open-moa-flash / open-kimi-solo / moa:auto6/10 each (auto: fewest timeouts of the MoA configs)
open-moa-heavy5/10 — all failures were agent-timeouts (fan-out latency)

Context: the official bash-only SWE-bench Verified leaderboard tops out around 76.8% (Claude 4.5 Opus) — different subset, so not directly comparable, but 76% from an open solo through our proxy is squarely competitive. (See section 17 for the iteration-46 clean head-to-head that supersedes these early runs.)

Learning loop (evolve), paired held-out evals

CycleWith skillWithout (paired)Lift
1 / 2 / 313 · 16 · 15 /2012 · 13 · 14 /20+1 · +3 · +1
Aggregate44/60 (73.3%)39/60 (65.0%)+8.3 pp, flips 6:1

Zero leakage in all distilled skills (heuristics + per-model trust notes only). Residual misses are tool-shaped (exact big-number arithmetic) — see roadmap.

Multi-GPU throughput (RTX 5090 + 4090, vLLM, Qwen3-8B)

ConfigSingle-streamAggregate @16
5090 alone / 4090 alone98.2 / 58.4 tok/s1380 / 832 tok/s
TP=2 over PCIe97.1 tok/s (no gain)1016 tok/s (2.2× worse than independent)

Full 4×96 GB plan (hardware dossier, model fits, buy verdict): docs/plans/multi-gpu-moa-plan.md in the branch.

10. Quality-improvement loop — every iteration & verdict

Hypothesize → test → report, one iteration at a time:

#HypothesisResultVerdict
1Routing coding to a solo lane removes the MoA editing penaltymoa:auto v2: 66.7%@235s vs v1 63.3%@527s; 97% of turns routed correctly; kimi-parity within noiseconfirmed — v2 config shipped as the example
2Self-MoA (best model ×3) beats mixed referencesAll configs 40/40 — kimi is at ceiling on the task set; solo costs 4× lessno signal at ceiling; retest on harder/agentic tasks
3aClassifier-guessed difficulty can cascade cheap→Fable30% pass@1: "routine" work still exceeded the cheap lane's editing abilityrefuted — don't guess difficulty up-front
3bVerification-gated escalation: cheap model first, Fable only on test failurekimi (22/30) + Fable on the 8 failures = 30/30 composite with test feedback (8/8 fixed; 4/8 first-try) — full Fable pass@2 quality with Fable invoked on 27% of tasksconfirmed — the right cascade for verifiable work; 4 exercises beat both models first-try
5Productize it: failure-gated escalation lane in the router (router.escalation)Shipped + 6 unit tests: a sticky conversation whose latest tool/user feedback shows a failure marker re-routes once to the escalation preset; assistant text never triggers; stale failures don't re-triggershipped (commit 1883a1263)
6Live end-to-end: aider drives moa:auto with the escalation lane (kimi first, Fable on failure)83.3% pass@1 / 100% pass@2 @ 36.6 s/case — only 3 of 30 exercises ever reached Fable (90% never touched the frontier); routing trace: 26 classified→kimi, 3 escalated, escalated conversations stayed on Fableconfirmed in production shape
10A python verifier tool lifts the acting model on hard reasoningHarness v1 (4-round cap) collapsed accuracy — a termination artifact (31/36 misses were empty answers, models still verifying). Harness v2 (8 rounds + forced final answer): kimi-solo 56/60 (93%) vs 88% baseline — +5 pp; cere-moa 52/60 (87%) vs 90% — no gain for wafer MoAconfirmed for strong thinking solos; artifact documented; tool costs +58% latency on kimi
11Quorum straggler-dropping costs accuracymixed-heavy WITH quorum (grace 0.5): 60/60 (100%) vs 55/60 (92%) baseline, similar latency (aggregator think-time dominates on AIME) — dropping the straggler (often the malformed-JSON reference) certainly costs nothing and may helpno accuracy cost — quorum stays on by recommendation for latency-sensitive lanes
9Inverted MoA (draft→review→revise) rescues composition for code editingaider 30: kimi drafts + 2 cheap reviewers + revise = 50% pass@1 @279s vs kimi solo 73.3% @173srefuted — even review-only context degrades editing precision; the code lane stays solo + escalation
7Capping reference advice cuts fan-out latency for freeheavy fan-out on 40 tasks: cap 1500→600 tokens = −17% latency, −15% tokens, same accuracy; cap 300 gains nothing more (provider think-time dominates)adopt 600 as default guidance; timeouts still need routing/escalation, not caps
8Can a wafer-speed model be the cheap coding lane?Cerebras gemma-4-31b on aider: 2.2 s/case but 10% pass@1 (50% pass@2) — brilliant at reasoning (39/40), can't do precise editing; GLM-4.7 similar (30%)refuted — kimi-class is the cheapest viable coding lane; wafer models own classify/self/reasoning lanes
12The benchmark champion serves real agent sessions as-isSession sim (iter 44): baseline 0/9 turns (8k ctx cap + TPM quota); after projection + voter windows + output caps + degraded consensus + plan acting lane: 11/11 turns, 2/2 tool threads, tier-0 @0.44–1.4 s, cascade revert after every tool threadrefuted as-is — serving is its own engineering problem (now largely solved; see section 16)
4Does escalation replicate on a hard agentic benchmark?SWE-bench Lite 25: kimi-solo resolved 19/25 (76%); Fable resolved 6/6 of the remainder → composite 25/25 (100%) with Fable driving only 24% of instancesconfirmed at scale — pattern holds on both benchmarks

How failure was detected — read before citing the escalation numbers. The offline composites are oracle-detected upper bounds: the aider 30/30 used the benchmark's gold tests to pick what to escalate, and the SWE-bench 25/25 used SWE-bench's hidden evaluation tests — signals a runtime agent cannot see. The live escalation run is the real-world-shaped result: the router never detects failure itself; it pattern-matches failure evidence (FAILED / AssertionError / Traceback) in the conversation, and that evidence exists only because the client agent ran tests itself and fed the output back — which coding agents (aider auto-test, mini-swe-agent, CI loops) do as part of their normal loop. Boundary conditions: tasks with no verifiable signal never escalate; agent-visible tests can be weaker than gold tests (aider polyglot happens to ship its gold tests to the agent, which flatters the live number); a true live SWE composite would land between kimi's 76% and the oracle 100%.

Loop takeaway: routing + verification-gated escalation is how you get frontier-class results at a fraction of the frontier calls — guess-free (escalate on measured failure, not predicted difficulty). This slots directly into agentic harnesses that already run tests (aider, SWE-bench, CI).

11. Roadmap — open experiments

The vision: a dockerized router/MoA of cheap open-weight models that matches frontier quality where it matters, improves from its own traffic, and runs anywhere (API slots today, a 4×96 GB box tomorrow). The gaps and the experiments that close them:

#Gap (measured)Experiment / improvementSuccess metric
1 ✓ DONE (iter 1)MoA hurts precise code editing (−13 pp pass@1)Routed v2 config: coding→kimi solo lane, general→all-Cerebras fast lane, hard reasoning→heavy fan-out, Cerebras classifier. Shipped as the example config.moa:auto 66.7% pass@1 (v1 63.3%), just under kimi solo's 73% — the code lane routes solo, so the router matches solo, as intended. Iter 46 confirmed the win is cost (auto = frontier parity at ~1/5 cost via escalation).
2 ✗ REFUTED (iter 9)Advisors distract editing; but review is where MoA caught errorsInverted MoA for code: aggregator writes solo first, references only review/veto the diff.Refuted — even review-only context degrades editing precision (draft-review 50% vs 73% solo). Code lane stays solo + escalation. Consistent with iter 46: advice doesn't lift a capable actor, and injected context can hurt it.
3Residual reasoning misses are tool-shaped (bigmul, digit sums)Verifier tool in the aggregator slot: let the proxy expose a sandboxed python-exec tool the aggregator may call before answering (the distilled skill already asks for verification).40-task set → 40/40 for nano/flash-class combos
4 ✓ DONE (iter 2)Self-MoA literature says best-model self-ensemble ≥ mixed refsSelf-MoA bench: kimi self-ensemble vs mixed heavy refs at equal budget.No signal at the ceiling — mixed vs self-refs made no measurable difference on the 40-task set; route by cost, not ensemble composition.
5Learning proven only on exact-answer tasksAgentic learning cycles: aider exercises as train set (pass/fail = graded outcome, already wired into traces), evolve, eval on held-out exercises. Then per-route skills (traces already record routing).+pass@1 on held-out exercises after N cycles
6Router classifies topic, not difficultyConfidence cascade: classifier also emits easy/hard; easy→self or fast lane, hard→heavy; escalate on low-confidence answers.−50% cost/latency at equal accuracy on mixed traffic
7All slots are remote APIs todayLocal pilot of the box architecture: two vLLM models on 5090+4090 (e.g. a coder + gemma-class general) as custom providers behind moa serve + Cerebras classifier — the 4×96 GB stack in miniature.routed local endpoint ≥ open-solo API quality on the bench suite, $0 marginal
9 ✓ DONE (iter 46)OMP-style advisor: a second model reviewing every acting turn (oh-my-pi's advisor role)Built all three shapes — our concern-gated async lane (spec v1.6), OMP-faithful inline, and a Cerebras-RLM advisor — and A/B'd a GPT-5.5 advisor over a weak coding actor on SWE-bench Lite (section 17).Prediction refuted. Advisor was NOT > no-advisor on a competent actor (8/25 = 8/25, neutral — advice adds procedure, not capability); OMP's inline-always variant actively harmed it (5/25, broke tool-call format on 40% of tasks). Our async-gated design was the only safe shape (0 format errors). Verdict: gate-and-defer by default; the value is a safety net, not a quality lift. Iter 47 reinforced this at the frontier (section 18): a GPT-5.5 advisor over cheap actors never beat the no-advisor panel and corrupted the strongest actor (deepseek-v4-pro, 68% format-aborts), and the smartest voter panel (GPT-5.5 + Opus 4.8 + Grok 4.5) scored 18/25 — below solo GPT-5.5 (20). For coding, add neither advisors nor voter panels.
10Serving proven at 10k; real sessions reach 60k–200k+Context ladder: session sim at 60k/120k/200k; OR deepseek/glm (200k+, 92–99% cache) as long-context cascade voters replacing the context-solo pin; local 262k lanes when the GPU boxes return.cascade (not solo-pinned) turns at 120k+ with measured cache hits
11Acting lane shows 0 cached tokens on the codex plan routeprompt_cache_key efficacy study: session-stable key now sent — measure whether OpenAI-side caching engages across turns (vs the measured 0/turn today) and whether Anthropic-lane decoration pays on OR Claude slots.>50% cached tokens on warm acting turns, or a documented negative
8Sample sizes are small (10-task TB sample, 25 SWE instances)Scale the anchors: full Terminal-Bench 2.x (89 tasks) + SWE-bench Verified 50-instance slice on the winning configs only.leaderboard-comparable public numbers

12. How to replicate

# Code (public fork, branch feature/moa-openai-proxy)
git clone -b feature/moa-openai-proxy https://github.com/hughmadden/hermes-agent.git
cd hermes-agent

# Serve MoA as an OpenAI endpoint
mkdir moa-home   # write moa-home/config.yaml — presets + router (docs/moa-openai-endpoint.md)
export OPENROUTER_API_KEY=... CEREBRAS_API_KEY=...
docker compose -f docker-compose.moa.yml up -d
curl -s localhost:8646/v1/models | jq -r '.data[].id'

# Tests + benches (all dockerized; raw JSONs for every table in docs/plans/)
tests/integration/docker/run-moa-proxy-tests.sh
docker build -f tests/integration/docker/Dockerfile.moa-proxy -t hermes-moa-proxy-test .
D="docker run --rm -v $PWD/scripts:/app/scripts:ro -e OPENROUTER_API_KEY -e CEREBRAS_API_KEY hermes-moa-proxy-test"
$D python scripts/moa_router_bench.py --classifiers "custom:cerebras=gemma-4-31b"
$D python scripts/moa_learning_cycle.py --cycles 3 --config open-moa-nano --reset-learning
$D python scripts/moa_gpusim_bench.py
$D python scripts/moa_cerebras_bench.py

# Public harnesses against the endpoint (details: docs/plans/moa-public-bench-results-20260703.md)
# aider:    OPENAI_API_BASE=http://localhost:8646/v1  --model openai/moa:<preset>
# harbor:   harbor run -d [email protected] -a terminus-2 -m openai/moa:<preset> \
#             --ak api_base=http://localhost:8646/v1 --timeout-multiplier 2
# swebench: mini-extra swebench --model openai/moa:<preset> --subset lite --split test \
#             --slice 0:25 -c <default swebench.yaml> -c environment.timeout=300

15. 2× RTX 6000 Blackwell topology study — one big deployment vs two instances

Instrument: Qwen3-Next-80B-A3B-FP8 (262k native context, hybrid attention ≈2.3 GiB KV per 100k tokens), vLLM, prefix caching on, fp8 KV, workstation Blackwells with NO NVLink (PCIe only; TP=2 requires --disable-custom-all-reduce). No public benchmark of this comparison existed.

TopologySingle-stream decodeAggregate @16 streamsWarm/cold TTFT (60k prefix)180k session turn (warm)
One instance, one GPU176 tok/s (TTFT 87 ms)729 tok/s2.95% (6.25 s → 0.18 s)0.38 s
Two independent instances175.7 + 177.3 tok/s simultaneously1,434 tok/s (16+16)0.66% per instanceunchanged
TP=2 across both (PCIe)136 tok/s — 23% slower than ONE gpu708 tok/s (half of dual)1.88%0.40 s (cold 37.3 s)

Verdict: for any model that fits a single 96 GB card, two independent instances dominate every axis — throughput, latency, and caching. TP=2 over PCIe on these cards is purely a FIT mechanism for weights >96 GB (tonight: GLM-4.7-IQ3 at ~165 GB), never a performance choice. Agentic caching verdict: GPU-resident prefix caching is near-total — a 180k-token session turn answers in 0.38 s warm (vs 35.3 s cold); long agent sessions are essentially free after the first turn, with zero system-RAM requirement. The 262k-context 80B endpoint now runs permanently on bench GPU 1 as a proxy provider.

14. Serving-cache economics — measured (agentic sessions)

An agent session re-sends a large stable prefix (system + history) with a small delta each turn. Whether that prefix is CACHED at the provider decides both latency and cost. Measured 2026-07-06 with a 30k-token synthetic agent prefix, 4 sequential calls per model (scripts/moa_cache_bench.py + moa_prefix_cache_probe.py):

Provider / modelWarm cached fractionPrompt-cost savingNotes
deepseek-v4-pro @OR99.5%~40%automatic, consistent; caches persist ~5 min across sessions
glm-5.2 @OR92%~40%fastest cold call (3.8 s)
gpt-5.5 @OR99% reported0% billedcache-read happens upstream; OR cost fields never drop
kimi-k2.6 @OR33% (1 in 3)78% when it hitsmulti-backend routing defeats per-instance caches
qwen3.6-27b @OR0%noneper-call provider switching; latency erratic
Cerebras gemma-4-31bwarm TTFT 33% of coldn/a (flat pricing)real prefix cache
Cerebras gpt-oss-120bwarm TTFT 79% of coldn/amild; but cold prefill of 30k tokens is only ~1.5 s — wafer prefill speed IS the cache

Design consequences for the proxy: (1) cache-critical agent lanes (long sessions, escalation tiers) should pin deepseek/glm-class providers — 40% real input-cost cuts at 92-99% hit rates; (2) OR usage carries prompt_tokens_details.cached_tokens — never the cache_discount field; (3) prompt layout matters: static content first, volatile fields (timestamps, ids) LAST or hit rates collapse; (4) the wafer voter tier needs no caching design at all — its prefill is faster cache-cold than most providers are cache-warm.

16. Real-world serving proof — iteration 44

Measured today: 2026-07-08. Session-serving tests used scripts/moa_session_sim.py against the proxy.

Every prior number in this report came from one-shot short problems. Real agent sessions carry a growing 10k–200k-token history, resend their tool schemas every request, run multi-round tool threads, and live or die on provider caching and quotas. scripts/moa_session_sim.py drives exactly that shape against the proxy and records per-turn mode, latency, cached tokens, and errors.

Finding A — production bug: context cap

Model / lane Measured cap / served range Impact Fix
zai-glm-4.7 on Cerebras key tier 8192 context Production aggregator/acting lane died on any session over 8k. Short-problem benchmarks did not catch it. Aggregator swapped to gpt-oss-120b.
gemma-4-31b / gpt-oss-120b 23k-31k+ served No 8k-class failure in the simulator range. Serving acting lane moved to plan GPT-5.5 with 400k ctx.

Finding B — quota wall

Measured item Number Verdict
Full-context fan-out, one 10k-token turn 4 voters + gate + acting = 5-6x session length Impossible at Cerebras TPM. Tripped quota on turn one.
Prefix cache hit 30,848 / 30,907 cached tokens = 99.8% Cache does not help quota. Full prompt still counts against TPM.
Cerebras admission accounting Uncapped voters reserve ~32k each Reservation bomb. Two concurrent uncapped voters per model = instant 429, even with tiny prompts.

Fixes shipped

Committed. 220 tests green.

Fix Serving effect
Per-message history projection tool_calls, tool results, and opaque provider fields projected to plain text. Append-only, so upstream prefix caches survive.
Voter context WINDOW cascade.voter_context_tokens: default 8000, serving preset 4000. Voters see recent window; acting lanes keep full transcript.
reference_max_tokens 1500 Applied on serving presets. Defuses Cerebras completion-cap reservation.
degraded_consensus Dead voters no longer counted in denominator. Measured: 2 of 4 voters 429d while both survivors agreed correctly.
cached_tokens surfaced Now present in usage.prompt_tokens_details everywhere.
Session registry Stable prompt_cache_key for OpenAI-family lanes.
Upstream Hermes MoA caching commits Merged. Their measured motivation matched ours: Claude advisors had 0 / 1227 cache reads and 11.5M re-billed tokens.

Result run — cascade-live

Run parameter / result Measured value
Session 10k-token session
Tool traffic 2 tool threads, 40s pacing
Preset cascade-live = 4 windowed wafer voters + plan GPT-5.5 acting
Turns 11 / 11 OK
Tool round-trips 2 / 2 completed
Provider errors on post-tool-thread history replay 0
Cached tokens visible per gate turn 14k-16k
Remaining gap at run time Initially all turns served acting-solo (quota killed 2 voters per gate; strict 3-of-4 could not form). With degraded_consensus: plain turns tier-0 cascade @0.44–1.43 s, and both post-tool-thread turns REVERTED to cascade tier-0 (consensus formed on 2-of-2 live voters, correct answers, voter windows visible in usage.moa.voter_view).
60k-context scale run (same preset): 10/10 turns OK, 2/2 tool threads, 2/2 post-thread cascade reverts @0.69–0.92 s, plain tier-0 @0.58–0.88 s — voters never see more than their 4k window, the plan acting lane carries the full 60k transcript; the quota-impossible session is now routine.
Architecture verdict.
Wafer = windowed gate tier only.
Acting lanes need high-limit cached providers: plan GPT-5.5 / OR deepseek-glm.
Structural endgame = local GPUs for both: 262k ctx, no quotas, 0.38s warm turns measured in the topology study.

Iteration 45 — local long-context lane + advisor

With the bench 262k Qwen3-Next-80B endpoint as the acting/aggregator lane (cascade-live-local: windowed wafer gate + local acting), a 120k-token tool-thread session ran 9/9 turns, 2/2 tool threads, 2/2 post-thread cascade reverts, tier-0 @0.57–0.82 s — no provider quota exists on local silicon, and prefix caching makes the giant transcript cheap after turn one. This is the structural endgame the topology study pointed at for latency and quota — but measured on a session simulator, not a live agent. Iteration 46 found the caveat: a single 80B on one GPU is too slow for real agentic loops (long-context acting calls time out and hang; cascade-live-local resolved only 7/17 on SWE-bench, stuck in file-edit loops). The endgame needs faster or more local silicon; today the reliable agentic acting lanes are cloud (kimi / plan-GPT-5.5).

The advisor lane (spec v1.6 §B) replicates oh-my-pi's advisor role with two measured-law deviations: it runs async, after the turn returns (zero added latency, unlike OMP's inline review) and is concern-gated (OK verdicts are dropped — the anchoring law forbids always-on advisory injection). Live-verified: a session steering toward a destructive rm -rf / drew a BLOCKER note that surfaced on the very next turn; in escalate mode a BLOCKER also forces that turn past tier-0 to the full aggregator's scrutiny.

A cascade that wins benchmarks is not yet a cascade that serves sessions - the serving layer is its own engineering problem, now measured and largely solved.

Dogfood provenance: this section's first draft was written by the proxy itself (stable service, cascade tier-2, 60.8 s wall, styling-level edits only + the degraded-consensus validation result added after its run). The results-evolution table for these runs was computed and written by a hermes agent session running ON the serving preset (4-file tool task, 61.8 s, output verified correct).

17. Real-world agentic head-to-head — is the proxy worth using over a solo API? (iteration 46)

Iterations 1–44 asked can a cascade win benchmarks. This one asks the only question that decides adoption: on a real coding agent doing a long tool-using loop, is the proxy smart enough, fast enough, and cheap enough to use instead of calling GPT-5.5 or Claude directly? Harness: mini-swe-agent 2.4.4 on SWE-bench Lite (25 instances, docker-socket eval), each arm a genuine multi-turn agentic session (median 12–14 tool calls/instance), driven through the serving worker.

ArmActing laneResolvedCost signalRead
Fable 5 soloclaude-fable-524/25 (96%)frontier (plan)strongest solo — the bar
GPT-5.5 sologpt-5.520/25 (80%)frontier (plan)frontier baseline
cascade-livegpt-5.5 (solo on tool turns)20/25 (80%)frontier + wafer voter tokensidentical to GPT-5.5 solo — it is GPT-5.5 on every acting turn; the cascade adds cost, not accuracy, for coding
moa:autokimi-k2.6 → gpt-5.5 on 2 failures20/25 (80%)~$2.5 OR + plan escalationsthe cost win — frontier-equal resolve, ~80% of work on a cheap model
kimi-k2.6 solokimi-k2.617/24 (~71%)~$0.83/instance measuredcheap floor, no escalation
cascade-live-localq80 (local, 262k)7/17 completedlocal silicon ($0 API)weak actor — stuck in file-edit loops; advisor baseline

Finding 17a — the proxy is exactly as smart as its acting model, no more. cascade-live scored bit-identically to GPT-5.5 solo (20/25) because on a tool turn the cascade routes straight to its acting lane, which is GPT-5.5. For agentic coding the wafer-consensus short-circuit never fires (there is no fresh single-shot question to vote on), so the cascade only adds voter-token cost and two median steps of gate latency. Do not serve cascade-live for pure coding — you pay more for the model you already have. The MoA machinery earns its keep on single-shot reasoning (sections 4–6), not tool loops.

Finding 17b — moa:auto answers the cost question YES. The router sends coding to cheap kimi-k2.6 and escalates to GPT-5.5 only after two consecutive failures. Across the 25-instance run: 627 requests served by kimi, 172 by the GPT-5.5 escalation tier (21 escalation events) — ~79% of all work on the cheap lane. Result: 80% resolved, identical to all-frontier GPT-5.5 solo, for ~$2.5 of OpenRouter spend plus escalations that ride the $0 ChatGPT plan. Even if every frontier escalation were billed at GPT-5.5 API rates, only ~21% of requests touch frontier — a 4–5× cost reduction at equal resolve rate. This is the config a cost-conscious agent should point at: the accuracy of frontier, most of the bill of a wafer.

Finding 17c — two serving bugs that only real agentic load exposes. (1) Reasoning-model replay. kimi-k2.6 emits reasoning_content + provider_specific_fields on its own output; a real harness echoes those back in history and a strict endpoint rejects the acting call with wrong_api_format. Fixed with a per-message acting-lane sanitizer that strips response-only annotations while preserving real tool_calls/ids and Anthropic signatures — a hard prerequisite for using any reasoning open model as an acting lane. (2) Router degradation. moa:auto with no routable presets (or a wafer-acting default) silently sends every agentic turn onto a rate-limited Cerebras lane and 429-storms under concurrency; the fix is to route coding to a non-wafer lane and keep the classifier off the wafer. Neither bug is visible to a single-request benchmark; both are fatal to a real tool loop.

Finding 17d — the advisor: our gated design is safe; OMP's inline-always actively harms a competent actor. The advisor role Hugh asked us to replicate from oh-my-pi reads every turn and can flag the agent. We built three shapes (our async + concern-gated; OMP-faithful synchronous inline; and a Cerebras-RLM advisor that executes a check before judging) and ran the clean head-to-head with a weak-but-competent coding actor — qwen3-coder-30b — against a GPT-5.5 advisor. (The first attempt used a local q80 actor, but an 80B on one GPU is too slow on long agentic contexts: acting calls time out and the run hangs. A fast coding-tuned cloud actor completed all 75 instances with zero hangs, for ~$3.50.) The mechanism is validated — the frontier advisor writes genuinely sharp diagnoses (verbatim: “agent is stuck in a loop of failing bash commands due to improper quoting”). But the clean numbers say something sharper than “the advisor helps”:

qwen3-coder-30b actor +Resolved /25Tool-format failuresAdvisor shape
no advisor8/25 (32%)1/25— (baseline)
async advisor (ours)8/25 (32%)0/25async, next-turn, concern-gated
inline advisor (OMP)5/25 (20%)10/25synchronous, same-turn, always-on

The inline advisor broke the actor's tool-call formatting on 40% of instances. OMP's shape appends the advisor's note as a trailing system message before every acting turn; qwen3-coder responded with 10/25 RepeatedFormatError aborts (vs 1/25 baseline) — the constant mid-conversation injection corrupts structured output, dragging resolve from 32% to 20%. Our async-gated design injects the same GPT-5.5 advice, deferred and only when a concern fires, and produced zero format failures (25/25 submitted) at baseline resolve. So on a procedurally-competent actor the advisor is neutral-at-best on quality (it adds procedure, not capability — this actor's ceiling is capability, and advice can't raise it), and the injection mechanism is where the real risk lives: inline-always is a gamble that backfired, gated-async is safe. Combined with the earlier signal that a mechanically-flailing actor (looping on file edits) does benefit from steering, the law: an advisor rescues actors that fail on procedure, is dead weight for actors that fail on capability, and inline-always injection can corrupt a capable actor outright — so gate and defer by default, and reserve always-on only for an actor you have measured to be flailing. This vindicates the async + concern-gated design over OMP-faithful inline as the safe default.

Bottom line for adoption. Over a solo frontier API for long agentic coding: the proxy is not smarter (it is its acting model), and for a single frontier lane it is a thin cost. But moa:auto is the reason to run it — frontier-equal task success at a quarter to a fifth of the cost, by doing the routine turns on a cheap model and spending frontier tokens only where the cheap model provably stalls. The honest scorecard: use solo Fable/Claude when you want the top resolve rate and cost is no object; use moa:auto when you want ~frontier accuracy at open-model cost; skip cascade-live for coding entirely.

18. Frontier advisor & the smartest possible panel — do they beat a solo actor? (iteration 47)

Iteration 46 tested the advisor with a cheap actor and a wafer panel. Iteration 47 pushes both questions to the ceiling with frontier models on every role, and answers them cleanly — in the negative. Two experiments, same harness (mini-swe-agent 2.4.4, SWE-bench Lite, 25 instances, docker-socket eval, median 13 tool calls/instance), driven through an Opus-enabled serving worker (Opus 4.8 runs on the Claude plan via its OAuth; GPT-5.5 on the ChatGPT plan; Grok 4.5 via OpenRouter).

Set A — a frontier ADVISOR (GPT-5.5) over cheap-but-good actors vs the same models with no advisor. Three cheap actors, each briefed every turn by a GPT-5.5 advisor, against a no-advisor panel of the same three as cascade voters with a GPT-5.5 arbiter:

ArmActor + advisorResolvedTool-format failuresRead
sa-best (no advisor)deepseek-v4-flash + -pro + glm-5.2 as voters → GPT-5.5 arbiter19/250/25best of Set A — and it carries NO advisor
sa-adv-flashdeepseek-v4-flash actor + GPT-5.5 inline advisor18/250/25advisor tolerated, no lift
sa-adv-glmglm-5.2 actor + GPT-5.5 inline advisor18/250/25advisor tolerated, no lift
sa-adv-prodeepseek-v4-pro actor + GPT-5.5 inline advisor7/2517/25advisor corrupted the strongest actor

Finding 18a — inline-advisor corruption is actor-specific, and it hit the strongest actor hardest. The identical GPT-5.5 inline note was harmless to flash and glm (0 format failures each) but broke deepseek-v4-pro on 17 of 25 instances (RepeatedFormatError, 68%), collapsing it to 7/25. This extends the iteration-46 law: you cannot predict corruption from actor strength — the most capable actor here was the most fragile to trailing-system-message injection, so per-actor measurement is mandatory. And even where the advisor did no harm (flash, glm at 18), it produced no lift: the winning Set A config (sa-best, 19) carries no advisor at all. Advising a coding actor is, at the frontier, zero upside plus model-dependent catastrophic downside.

Set B — the smartest MoA we can build: three frontier models in one config. GPT-5.5 acts (produces the tool call every turn); Opus 4.8 and Grok 4.5 run as windowed voters informing it (cascade, min_consensus 2). This is the strongest possible voter panel — not wafer models, but two of the best frontier models advising the third.

ArmCompositionResolvedCost signalRead
Fable 5 solosingle frontier actor24/25 (96%)1 frontier call/turn (plan)the bar (iteration 46)
GPT-5.5 solosingle frontier actor20/25 (80%)1 frontier call/turn (plan)the acting model, alone
sb-smartestGPT-5.5 acts + Opus 4.8 + Grok 4.5 vote18/25 (72%)3 frontier calls/turn (~349 turns): Opus+GPT-5.5 on plan, Grok billed @ORthe smartest panel — and it lost to its own actor solo

Finding 18b — adding the two best frontier voters to a frontier actor made it worse, not better. sb-smartest scored 18/25 with zero format failures and zero errors — below solo GPT-5.5 (20) and well below solo Fable (24), for triple the per-turn frontier cost (Opus 4.8 and Grok 4.5 each called ~349 times as voters). The panel design is safe where the inline advisor was not (votes inform the aggregator; nothing is injected into the acting model's message stream, so GPT-5.5's tool format stays intact), but safety is not value: the voter opinions either anchor the acting model toward wrong consensus or simply add nothing a strong actor didn't already have, and net cost it two resolves. This is the sharpest possible confirmation of the iteration-46 law (17a): for agentic coding the proxy is exactly as smart as its acting model — and stacking even frontier voters on top is dead weight to negative. Diversity and voting earn their keep on single-shot reasoning (sections 4–6), never on tool loops.

Bottom line (iteration 47). Nothing built from advising or voting beat a solo actor for agentic coding. The whole-campaign verdict for coding stands and hardens: use Fable 5 solo for top resolve; use moa:auto when you want ~frontier resolve at a quarter to a fifth of the cost (cheap actor + escalate on observed failure); do not add advisors or voter panels to a coding actor — at best they cost you nothing, at worst they corrupt or anchor the actor below its solo score.

19. Verification-gated delegation — can an observable test gate let a cheap worker offload the frontier? (iteration 48)

Every prior coding result said the same thing: opinion-based MoA (voting, advising) never beats a solo actor. This iteration tests the one shape with headroom — verification-based delegation, where the accept decision rides on observed test results, not a model's opinion. The design (Hugh's): a strong model writes a reproduction test from the issue text; a cheap worker attempts the fix; the worker's patch is run against that test; pass → keep the cheap patch, fail → escalate to the frontier. It is moa:auto's “observe, don't predict” law with a sharper signal: a real test instead of the agent's own stuck-detection. Stage 1a, SWE-bench Lite (25), test-author = GPT-5.5@plan, cheap worker = deepseek-v4-flash@OR, escalation coder = Fable 5.

The validity wall. The test author sees ONLY the issue text — never the hidden FAIL_TO_PASS grading tests (that would be leakage; it is what the iteration-46 “oracle 25/25” bound used, and it is not deployable). The gold patch is used solely to calibrate whether a gate is a valid instrument (does the repro fail on the bug and pass on the fix?), offline, never in the runtime accept path.

Finding 19a — the linchpin holds: a strong model CAN author a valid observable gate from an issue, 22/25 (88%). GPT-5.5 wrote a reproduction test that correctly failed-on-bug and passed-on-fix for 22 of 25 instances (20 first-shot; up to 2 self-repair rounds on collection errors). A framework gotcha decided it: Django's SWE-bench image ships no pytest (only its own runtests.py) — a naive pytest gate mis-scored every Django instance; stdlib unittest scripts run everywhere and fixed it. This is the first measurement that the gate’s author step — the linchpin nobody had tested — is feasible.

Finding 19b — high offload, but the gate is a lossy filter (68% precision), and that precision is the ceiling.

ArmResolved /25Frontier coder callsRead
Fable 5 solo24 (96%)25 / 25the bar
moa:auto20 (80%)~21% of requestsobserved-failure escalation (iter 46)
verify-escalate (this)19 (76%)6 / 25 (76% offloaded)cheap worker + observable-test gate
deepseek-v4-flash solo15 (60%)0 (cheap only)the worker alone

The gate accepted 19/25 flash patches (76% offload) and escalated only 6 to Fable — who resolved all 6. That lifts the cheap worker from 15 to 19/25. But of the 19 accepted, only 13 truly resolve: gate precision is 13/19 = 68%. The other 6 are false accepts — flash patches that pass GPT-5.5’s repro test yet fail the hidden FAIL_TO_PASS — and they are locked in as the cheap patch, never escalated. Those 6 are the entire gap to Fable: with a perfect gate they would escalate and Fable resolves 5 of them (it misses 1 itself) → 24. So the observable gate’s precision literally is the quality ceiling. A one-shot repro test written from issue text is narrower than the real acceptance criteria about a third of the time.

Finding 19c — a real cost-shifting lever, not a free lunch; the economics depend on the frontier’s price. Verify-escalate does 76% of the coding on a $0.14/$0.28 model and touches the frontier coder on just 6/25 instances — a genuine offload. But it does not reach frontier quality (19 vs 24), and it adds real overhead (a cheap session on ALL 25 + gate authoring on 22 + a container test-run per candidate). On a paid frontier that trade — give up ~5 instances to cut frontier-coder calls ~76% — may be worth it; on the $0 plan (Fable free) it is not, you lose 5 resolves for no dollar saving. The mechanism works; whether it pays is a function of frontier price and of gate quality.

Caching (measured, per standing directive). The flash lane (deepseek@OR) cached 0% on turns 1–3 then 96% (8,192 tok) once the prefix stabilised — OpenRouter’s multi-backend routing makes caching intermittent, so a cheap worker’s long-session cost is not reliably cut. The Anthropic plan lane returns no token/cache figures through the proxy (usage.moa shows 0) — an instrumentation gap (Anthropic reports cache_read_input_tokens, not prompt_tokens_details.cached_tokens), the same reason the codex plan lane has always shown “0 cached.” A gap to close, not proof of no caching.

Two infrastructure findings. (1) A gate must match the repo’s own test runner — unittest scripts are the portable choice (Django has no pytest). (2) Fable on the plan works for single-shot but NOT as an agentic acting lane through the proxy: the native-Anthropic path throws RepeatedFormatError (hits the output limit before emitting a parseable action) even with a 32k cap, while GPT-5.5 on the codex plan and Fable via OpenRouter both act fine. So the escalation here used Fable@OR (~$1–2 for 6 instances); plan-based agentic acting for Anthropic models needed a proxy fix — found and fixed the next iteration (section 20, finding 20a).

Bottom line (iteration 48). Verification-gated delegation is the first multi-model coding shape that adds value — it lifts a cheap worker from 60% to 76% by escalating only where an observable test says to — vindicating “observe, don’t predict.” But it does not reach the frontier, and the reason is precise and measured: the gate is only as good as the test the strong model can write from the issue, and a one-shot repro is a lossy proxy (68% precision) for the real acceptance criteria. The gate quality is now the whole game. Next (Stage 1b, section 20): a repo-aware (agentic) test author to lift precision, plus the proxy fix that lets Anthropic models act on the plan — and, still open, a regression-suite gate and the full context-isolation orchestrator measured on harder/longer tasks where a solo session balloons, the regime where this architecture should actually pay.

20. Verification-gated delegation, Stage 1b — a repo-aware gate and a proxy fix for plan-based frontier acting (iteration 49)

Section 19 left two threads: the gate is a lossy filter (its precision is the ceiling), and Fable/Opus could not act agentically through the proxy on the Claude plan (so escalation had to rent Fable via OpenRouter). Stage 1b addresses both, on the same SWE-bench Lite (25) set.

Finding 20a — the proxy bug that blocked plan-based frontier acting, found and fixed (P1). On the Claude plan the proxy sends over Anthropic’s OAuth wire, where build_anthropic_kwargs renames every tool to mcp__<name> for Anthropic’s billing classifier, and the transport reverses that only for Hermes’s own registry tools. When the proxy serves an external OpenAI client that advertises its own tools (mini-swe-agent’s bash), the bare name is not in the registry, so it leaked back as mcp__bash — the client cannot match its own tool call and aborts every turn (RepeatedFormatError, empty patch). The fix reverses mcp__<name>→<name> for any tool the caller actually sent (commit 133abbfeb). Result at scale: all 7 escalated instances produced non-empty patches and all 7 resolved — up from 0 before the fix. Anthropic models now act agentically on the plan at $0 marginal, closing the gap flagged in iteration 48.

Finding 20b — the escalation lane is flawless; 100% of the residual is false-accepts. A repo-aware author (the strong model issues a few READ-ONLY exploration commands in the base container — grep/cat/ls/sed — before writing the repro, so the test targets the real API) lifted the assembled result to 20/25. The decomposition is the story:

LaneInstancesResolvedRead
Gate ACCEPT → keep flash patch1813gate precision 13/18 = 72% — the 5 misses are false-accepts
Gate ESCALATE → Fable 5 on plan77100% — every escalation resolved
Verify-escalate total2520 (80%)vs 19 (iter 48), vs Fable solo 24

Because escalation resolves everything it touches, every one of the 5 remaining failures is a false-accept — a flash patch that passed the observable repro yet failed the hidden FAIL_TO_PASS (astropy-14182, astropy-14365, django-11742/-11815/-11848). They are locked in as the cheap patch and never escalated. So the earlier finding sharpens to its exact form: the worker is not the bottleneck and the escalation model is not the bottleneck — gate precision is the entire ceiling. Every false-accept is a patch that satisfies one reproduction case but misses an edge case the hidden multi-case suite checks — the structural limit of a single-test gate. The lever for Stage 1c is a multi-case / regression gate, not a stronger worker.

Directional, not headline: the precision delta is confounded. Iteration 49 changed three things at once versus iteration 48 — the test author (GPT-5.5→Fable, forced when the GPT-5.5 codex-plan token expired mid-run), the author becoming repo-aware, and the escalation transport (OpenRouter→plan). So the +4 pp precision (68→72%) and +1 resolve cannot be attributed to repo-awareness alone; a Fable-one-shot-author control would isolate it. What is robust regardless of the confound: the proxy fix (7/7 from 0), that escalation resolves 7/7, and that 100% of the residual is false-accepts.

Caching (measured, per standing directive). Both the test-author and the escalation lane ran Fable on the native-Anthropic plan path. Its usage.moa comes back all-zero (prompt_tokens_details.cached_tokens = 0, aggregator tokens 0) across all 94 agent steps — the proxy does not surface Anthropic’s cache_read_input_tokens, so caching on the plan lane is unobservable through the proxy. This instrumentation gap is unchanged by P1 (P1 fixed tool naming, not usage accounting); the concrete fix is to pipe Anthropic’s cache fields into usage.moa.aggregator. Server-side prompt caching is almost certainly active on the plan — we just can’t measure it yet.

Cost note. Because both lanes rode the Claude plan, this iteration added $0 marginal OpenRouter spend (iteration 48’s escalation rented Fable@OR for ~$1–2; the P1 fix removes even that).

Bottom line (iteration 49). The verification-gated architecture now runs entirely on plan credits and resolves 20/25 — and its failure mode is fully characterised: not the worker, not the escalation model, purely the gate’s false-accepts. “Observe, don’t predict” holds; the open question it leaves is narrow and mechanical — make the observable signal richer (a regression suite, not one repro) so fewer wrong patches slip the gate.

13. Tooling & execution tally — what ran each experiment

Experiment familyHarness / infraModels doing the work
Exact-answer benches (40-task, AIME, HMMT, dial/cascade runs)scripts/moa_*_bench.py in the hermes-moa-proxy-test container, driving the serve HTTP endpoint; datasets fetched live from the HuggingFace datasets-serverper config (section 1); frontier tiers on the ChatGPT plan; Cerebras paid key; local voters via vLLM on the RTX 5090
Public benchmarksaider-benchmark image (own build), mini-swe-agent 2.4.4 + swebench-4.1.0 eval (docker-socket pattern), Harbor 0.16.1 + terminus-2 — fully containerized, zero host installsthe proxy's presets; official harnesses for evaluation
RLM wafer-agent bench (iter 30)scripts/moa_rlm_bench.py — harness-side agent loop, sandboxed python exec (-I/empty-env/tempdir/12 s), direct Cerebras API; built by one Sonnet builder + one Sonnet reviewer (no defects found)gemma-4-31b + gpt-oss-120b @cere; grading via the cascade's normalize_candidate
Learning loopscripts/moa_learning_cycle.py (traces → evolve → paired evals → leakage scan)subject open-moa-nano; distiller deepseek-v4-pro@OR
Feature builds (cascade, judge gate, verified cascade)Workflow orchestration: parallel Sonnet builder agents + adversarial Sonnet reviewers off Fable-written specs (~1.4M Sonnet tokens, Claude plan); 6 confirmed review findings fixed by Fable before benchingSonnet 5 (build/review), Fable 5 (spec, integration, analysis)
Real-world serving proof (iter 44)scripts/moa_session_sim.py (growing sessions + tool threads + pacing) against the worker endpoint; direct Cerebras quota probes; upstream ~600-commit merge attempted+tested by a Sonnet agent in an isolated worktreesession module + sim harness built by Sonnet builders off Fable specs; section 16 first-drafted by our own cascade (tier-2, 60.8 s); results-evolution table computed by a hermes agent session ON the proxy (cascade-live, 61.8 s); integration/wiring/diagnosis by Fable 5
Real-world agentic head-to-head (iter 46)mini-swe-agent 2.4.4 on SWE-bench Lite (25 instances/arm, docker-socket eval), each arm a real multi-turn agent session through the serving worker; 6 acting lanes (Fable/GPT-5.5/kimi solo, cascade-live, moa:auto, q80-local) + 2 advisor variants; OpenRouter spend measured via the credits API; q80 acting on the bench vLLM serverthe proxy's presets under test; GPT-5.5 escalation + advisor on the ChatGPT plan; kimi-k2.6 @OR; q80 local silicon
Frontier advisor & smartest-panel head-to-head (iter 47)same mini-swe-agent + SWE-bench Lite harness; 5 new arms across 125 agent sessions (Set A: 3 cheap actors + GPT-5.5 inline advisor + a no-advisor cascade panel; Set B: GPT-5.5 acting with Opus 4.8 + Grok 4.5 windowed voters); Opus 4.8 served in-proxy on the Claude plan via its OAuth (plan creds mounted, anthropic credential pool syncs the token); Grok 4.5 @OR; format-error/turn counts parsed from trajectoriesthe proxy's presets under test; GPT-5.5 & Opus 4.8 on plan credits ($0 marginal); deepseek-v4-flash/-pro, glm-5.2, Grok 4.5 @OR
Verification-gated delegation (iter 48)custom harness (iter48_pilot/gate/assemble.py) driving mini-swe-agent + a NEW observable-test gate: GPT-5.5 authors a stdlib-unittest repro from issue text, run in the instance container (conda testbed env); gate calibrated vs gold patches offline (validity wall — FAIL_TO_PASS never in the accept path); flash candidates + Fable escalation via the VGD worker; per-lane cache probetest-author GPT-5.5@plan; worker deepseek-v4-flash@OR; escalation Fable 5@OR (plan agentic-acting blocked); grading = official swebench harness
Verification-gated delegation, Stage 1b (iter 49)iter49_gate.py (repo-aware author: up to 4 READ-ONLY exploration commands in the base container before writing the repro) + iter49_assemble.py; escalation re-run through the FIXED proxy (mcp__ prefix reversal, commit 133abbfeb) so Fable acts on the plan natively; both author and escalation lanes on Claude plan credits; grading = official swebench harnesstest-author + escalation Fable 5@plan (native Anthropic, $0 marginal — GPT-5.5 codex-plan token expired mid-run); worker deepseek-v4-flash@OR (reused iter-48 candidate patches)
Orchestration & analysisthis Claude Code session (Fable 5): hypothesis selection, specs, defect fixes, result analysis, report upkeepFable 5

Are we running on our own discoveries yet? Partially — honestly tallied: the worker MoA endpoint (cere-moa + plan-GPT-5.5 lanes) served as an offload target for builder agents and as the blind grader in the judge eval, and every benchmark exercises the proxy itself. But the heavy thinking is still Fable + Sonnet on the Claude plans — the discoveries are the PRODUCT being built, not yet the build system. Queued: route bench analysis and doc drafting through moa:omni lanes and measure whether quality holds.

Budgets: OpenRouter ceiling $500 (raised 2026-07-05); spent ≈$415 to date (iteration 46's SWE-bench agentic runs added ~$180 — kimi-solo ≈$20/24 instances, moa:auto ≈$2.5/25 since escalations ride the plan; iteration 47 added ≈$15 — Set A cheap-actor OR spend across 100 instances + Set B's Grok-4.5 voter tokens via OR; Opus 4.8 and GPT-5.5 rode plan credits at $0 marginal; iteration 49 added ≈$0 — both the repo-aware test author and the Fable escalation ran on the Claude plan, so the P1 proxy fix removed even iteration 48's ~$1–2 Fable@OR escalation rental). Frontier tiers ride the ChatGPT plan at $0 and builds ride the Claude plan, so marginal experiment cost is mostly wafer pennies + open-model OpenRouter tokens.

Appendix — Changelog (version history)

Newest first. The executive summary and sections above always reflect the latest state; this is a condensed highlights log keyed to version bumps — not every iteration (currently 49) gets its own row, and some early/minor ones are folded together or omitted.

VerWhen (UTC)What was done / what changed in this document
v4107-10 ~05:00VERIFICATION-GATED DELEGATION, STAGE 1b — repo-aware gate + a proxy fix for plan-based frontier acting (iter 49). Two results on SWE-bench Lite (25). P1 (proxy fix): found and fixed the bug that blocked Anthropic models from acting agentically through the proxy on the Claude plan — build_anthropic_kwargs renames tools to mcp__<name> for Anthropic's billing classifier and the transport un-renamed only Hermes registry tools, so an external client's own bash leaked back as mcp__bash and the client aborted every turn (RepeatedFormatError, empty patch). Fix reverses the prefix for any tool the caller sent (commit 133abbfeb): all 7 escalated instances now produce valid patches and all 7 resolve — up from 0; Fable/Opus act on the plan at $0 marginal. P2 (repo-aware gate): a repo-aware author (READ-ONLY exploration in the base container before writing the repro) took the assembled result to 20/25 (from 19). The decomposition is the finding: escalation resolves 7/7, so 100% of the 5 residual failures are false-accepts (flash patches that pass the repro but fail hidden tests) — gate precision (13/18 = 72%) is the ENTIRE ceiling; neither the worker nor the escalation model is the bottleneck. The precision delta (68→72%) is directional, not headline — iter 49 changed author model + repo-awareness + escalation transport at once (confounded; a Fable-one-shot control would isolate it). Caching: the native-Anthropic plan lane returns all-zero usage.moa across 94 steps — caching unobservable through the proxy (instrumentation gap unchanged by P1; fix = pipe Anthropic's cache_read_input_tokens through). $0 marginal OR spend (both lanes on plan). New section 20. Next (Stage 1c): a multi-case/regression gate to kill false-accepts.
v4007-10 ~02:30VERIFICATION-GATED DELEGATION — the first multi-model coding shape that adds value (iter 48). Hugh's design: a strong model writes a reproduction test from the ISSUE TEXT ONLY; a cheap worker (deepseek-v4-flash) attempts the fix; its patch is run against that test; pass→keep cheap patch, fail→escalate to Fable. “Observe, don't predict” with a real test instead of the agent's stuck-detection. Results (SWE-bench Lite 25): the gate is authorable — GPT-5.5 wrote a VALID observable gate (fails-on-bug, passes-on-fix) for 22/25 (a framework gotcha decided it: Django images ship no pytest, only runtests.py — stdlib unittest scripts fixed a naive-pytest mis-score). The gate offloaded 76% (19/25 accepted), escalating only 6 to Fable (who cleared all 6), lifting flash from 15→19/25. But gate precision is 68% (13/19): 6 flash patches pass the repro test yet fail the hidden FAIL_TO_PASS, are locked in, and are the entire gap to Fable solo (24) — the observable gate's precision IS the quality ceiling. Verdict: verification (not opinion) is the multi-model coding shape that adds value, but a one-shot repro from issue text is a lossy proxy; gate quality is now the whole game (Stage 1b: repo-aware test author + regression gate; context-isolation orchestrator on harder tasks). Caching measured: flash@OR caches intermittently (0% then 96% once warm); Anthropic plan lane token/cache usage not surfaced by the proxy (instrumentation gap). Infra: Fable on the plan works single-shot but NOT as an agentic acting lane (native-Anthropic RepeatedFormatError) — escalation used Fable@OR. New section 19. VALIDITY WALL enforced (gate authored from issue text only; FAIL_TO_PASS used only for offline gate-precision analysis).
v3907-09 ~10:40FRONTIER ADVISOR & THE SMARTEST POSSIBLE PANEL — do they beat a solo actor? (iter 47). Two SWE-bench Lite head-to-heads with frontier models on every role, both answering NO. Set A (GPT-5.5 advisor over cheap actors vs the same models with no advisor): the no-advisor panel (sa-best, 3 cheap voters + GPT-5.5 arbiter) won at 19/25; every advised arm was ≤18, and the inline advisor corrupted the strongest actor — deepseek-v4-pro hit 17/25 RepeatedFormatError (68%) → 7/25, while the identical note left flash/glm untouched (0 errors). Corruption is actor-specific and hit the most-capable actor hardest — measure per actor, never predict. Set B (the smartest MoA we can build: GPT-5.5 acts + Opus 4.8 + Grok 4.5 vote every turn): sb-smartest scored 18/25 — below solo GPT-5.5 (20) and far below Fable solo (24), for triple the per-turn frontier cost (Opus+Grok each ~349 voter calls). Zero format failures (the panel informs the aggregator, not the message stream — safe where inline was not), but zero-to-negative value. Sharpest confirmation of the 17a law: agentic coding is purely an acting-model game; stacking even frontier voters/advisors on top is dead weight to negative. Infra: Opus 4.8 now runs on the Claude plan in-proxy via its OAuth (mount the plan creds; the anthropic credential pool syncs the token). New section 18; exec summary + advisor law updated everywhere.
v3807-08 ~13:00REAL-WORLD AGENTIC HEAD-TO-HEAD — is the proxy worth using over a solo API? (iter 46). SWE-bench Lite (25 real mini-swe-agent sessions/arm). Verdict: the proxy is not smarter than solo for coding — it is exactly its acting model (cascade-live = GPT-5.5 solo = 20/25, bit-identical, since a tool turn routes straight to the acting lane). Solo Fable 5 tops the board at 24/25 (96%). The cost win is moa:auto: 20/25 (80%), matching all-frontier GPT-5.5, with ~79% of requests served by cheap kimi-k2.6 and only 21 escalations to the GPT-5.5 tier — a 4–5× cost cut at equal resolve rate. Two serving bugs that only real agent load exposes, both fixed: reasoning-model opaque-field replay (kimi's reasoning_content 400'd the acting lane) and moa:auto silently routing agentic turns onto a rate-limited Cerebras lane (429-storm). Advisor arc: shipped OMP-faithful inline mode + our async-gated + a Cerebras-RLM advisor (executes a check before judging). Clean head-to-head with a GPT-5.5 advisor over a weak-but-competent coding actor (qwen3-coder-30b): our async-gated advisor is safe (8/25, 0 tool-format errors, = baseline), while OMP's inline-always advisor harmed it (5/25 — its per-turn system-message injection broke tool-call formatting on 10/25 instances). An advisor rescues actors that fail on procedure, is dead weight for actors that fail on capability, and inline-always can corrupt a capable actor outright — gate and defer by default. 133 proxy tests green. New section 17.
v3707-08 ~04:00Local long-context acting lane + advisor lane (iter 45). Wired the bench 262k Qwen3-Next-80B endpoint (local, no quotas, prefix-cached) as the cascade acting/aggregator lane (cascade-live-local): a 120k-token tool-thread session ran 9/9 turns, 2/2 tool threads, 2/2 post-thread cascade reverts, tier-0 @0.57–0.82 s — the session that was architecturally impossible before iteration 44's fixes, now routine on local silicon (needed --enable-auto-tool-choice --tool-call-parser hermes on vLLM for tool round-trips). Also SHIPPED the advisor lane (spec v1.6 §B): a concern-gated async wafer reviewer that reads each turn after it returns and, only when warranted, leaves a one-line CONCERN/BLOCKER note injected into the NEXT acting turn (anchoring-law-safe: OK verdicts vanish, zero turn latency). Live-verified: a session steering toward rm -rf / drew a BLOCKER that surfaced on the following turn; advisor_mode: escalate additionally forces a flagged turn past tier-0 to the full aggregator. 213 tests.
v3607-08 ~02:30REAL-WORLD SERVING PROOF (iter 44) — campaign pivot per Hugh: prove the champion serves real agent sessions (growing 10k–200k histories, tool threads, provider caching), not just benchmarks. A new session simulator found two production-grade defects benchmarks can't see: (A) Cerebras caps zai-glm-4.7 at 8,192 ctx on our key tier — the production aggregator/acting lane died on ANY session >8k; (B) full-context voter fan-out trips the Cerebras TPM quota on turn one (5–6× session length per turn), prefix caching does NOT relieve quotas (99.8% cached, full amount counted), and uncapped voters reserve ~32k completion each at admission (two concurrent = instant 429). Shipped: per-message history projection (tool/opaque content → plain text, append-only = cache-preserving), voter context windows (voter_context_tokens), degraded_consensus (dead voters out of the denominator), cached_tokens surfaced in usage everywhere, session registry + stable prompt_cache_key, upstream hermes MoA caching sync (~600-commit merge). Validated: 11/11 turns, 2/2 tool threads, tier-0 @0.44–1.4 s with ~15k cached tokens/turn, and post-tool-thread REVERT to cascade confirmed live; 60k-context scale run: 10/10 turns, 2/2 reverts @0.7–0.9 s (voters see 4k windows, acting lane carries the full transcript). New serving preset cascade-live (windowed wafer gate + plan-GPT-5.5 acting) is the stable-service + turbo default; cascade-rlm stays the hard-reasoning preset. New section 16; oh-my-pi-style advisor lane designed (spec v1.6). Dogfood: section 16's first draft written by the proxy itself (tier-2, 60.8 s), and a hermes agent session on the proxy produced the results-evolution analysis (61.8 s, correct).
v3507-06 ~01:45Voter-upgrade attempt REFUTED (iter 43): qwen3.6-27b as RLM voter measured from BOTH routes — local FP8 partial 16/25 (64%) @384 s median; OpenRouter 20/30 (67%) @382 s — slower AND less accurate than gemma31-RLM (82% @2.5 s). The thinking-model law reconfirmed a third time: heavy reasoners fight the RLM loop's short-turn structure (qwen27's earlier 80% HMMT came from native long-form single passes). gemma31-RLM keeps the voter crown; qwen27's local role = general mid-tier lane. Side-finding documented: qwen3.6-27b OR solo collapsed to 10% (provider pathology consistent with its 0%-caching/erratic-routing profile from the cache study) — OR routing quality varies wildly per model. GPU work paused for Hugh's meeting mid-iteration (partials preserved); GLM-4.7-IQ3 download continues for the smartest-open head-to-head hand-off.
v3407-06 ~18:302×RTX-6000-Blackwell topology study (iter 42) — the one-big-vs-several-small question, measured (no public benchmark existed): for anything that fits one 96 GB card, TWO INDEPENDENT INSTANCES dominate every axis — full speed simultaneously (176+177 tok/s; 1,434 tok/s aggregate @16+16) vs TP=2's 136 tok/s single-stream (23% SLOWER than one GPU — the PCIe/no-NVLink tax) and half the aggregate. TP=2 over PCIe is purely a FIT mechanism for >96 GB weights. Context answer: 262k native on ONE card (Qwen3-Next-80B-FP8 instrument); caching answer: a 180k-token agent-session turn costs 0.38 s TTFT warm vs 35.3 s cold (99% cut) — local prefix caching makes long sessions essentially free after turn one. Permanent 262k endpoint now serving on bench GPU 1. Dogfood tally: our cascade drafted this section's first version (tier-2, 21.5 s, $0, styling-only edits). New section 15.
v3307-06 ~13:30Serving-cache economics measured (iter 41) — agentic sessions re-send a growing prefix every turn, so provider prompt-caching is a first-order cost lever. OpenRouter study (30k-token prefix, 4-call sessions): deepseek-v4-pro 99.5% cached / ~40% prompt-cost cut; glm-5.2 92% / 40% + fastest cold (3.8 s); GPT-5.5 caches upstream but NO billed saving through OR; kimi hits 1-in-3 (multi-backend routing defeats caching); qwen3.6-27b zero. Cerebras probe: gemma-4-31b real prefix cache (warm TTFT 3× lower); wafer prefill so fast (~1.5 s cold @30k) that voter-tier session economics are fine even cache-cold. New section 14; guidance: pin cache-critical lanes to deepseek/glm, volatile prompt fields LAST. 2×Blackwell topology study in progress (results as v34).
v3207-06 ~03:00Session-aware tool turns SHIPPED (iter 40) + a double bug hunt. (1) cascade.tool_turns: detect (default): mid-tool-loop turns stay acting-solo; fresh user turns run a tool-aware voter gate — real-answer consensus REVERTS the session to tier-0 cascade; TOOL_TURN vote / no consensus → acting-solo with tools. Live 4-turn state-machine walk verified: [email protected] → tool call → [email protected] → tier-0 [email protected]. (2) Found via live candidate inspection: RLM voters emitting "FINAL: ANSWER: x" split every mixed pool 2-vs-2 (silently costing tier-0 hits since the RLM voters shipped) — extraction now peels stacked prefixes; the fix then exposed the SAME bug in the bench grader (RLM winners' text was mis-graded) — also fixed. (3) Grader-corrected rebench: results now published as run-to-run BANDS — cascade-rlm AIME 2026 93–97%, HMMT Feb 2026 90–95% (3 runs each; still ties GPT-5.5 on AIME, beats it on HMMT in every run). Stable service on v28.5; 179 tests.
v3107-05 ~17:30All-open ladder (iter 39, honest negative with a law): RLM-capable clean arbiters shipped (open models re-solve disagreements with the voter loop; 171 tests) and the zero-proprietary-API ladder benched twice on 2026 sets: wafer tier-0 stayed superb (23/24, 13/13 @3–5 s) but the deepseek-v4-pro-RLM arbiter went 0/10 in-proxy despite 90% standalone — the hard-residue budget law: an arbiter tier inherits only the hardest problems, so it needs MORE rounds/time than standalone averages suggest (capping to 3 rounds guaranteed failure; tail solves need 500–900 s via OpenRouter). Verdict: all-open interactive today = wafer consensus alone (77% AIME26 @ ~4 s); all-open arbitration is a batch tier until the big open arbiter is locally hosted (the 96 GB box thesis, full circle). Plan-frontier cascade-rlm (97/95%) remains the production recommendation.
v3007-05 ~15:30PRODUCTION CASCADE SHIPPED (iter 37) — the three real-world gaps closed: (1) streaming cascade — voter progress as reasoning deltas, tier-0 winner streamed (verified live: 1.3 s), tier-1 live-streams when no escalation inspection needed; (2) tool-carrying requests = acting-model solo (cheaper AND better than the old fanout fallback — advisory context hurts tool work); (3) context-solo guard (cascade.max_context_tokens, default 100k) — oversized requests bypass the ~128k wafer voter pool to the acting slot instead of erroring (long-context ladder: cascade <100k → plan-GPT-5.5 to ~400k at $0 → 1M open lanes when truly needed). Built by Sonnet builders + adversarial review (2 event-loop-blocking defects fixed pre-merge); 170 tests; stable service on v28.3; hermes turbo profile now gets real cascade economics on live agent traffic.
v29.107-05 ~13:30Modern-open RLM (iter 38, AIME 2026): the loop lifts EVERY modern open model massively — deepseek-v4-pro 53→90% (+37 pp), glm-5.2 53→80% (+27), minimax-m3 40→60% (+20). The earlier "thinking models don't benefit" law was a gpt-oss format artifact — REVISED: the reason→python→observe loop is a general quality multiplier for open models on novel problems (at OR latency ~80 s median: a quality tier, not a speed tier). Open solos scored 40–53% fresh — far below reputation (contamination, again). deepseek-v4-pro-RLM = strongest fully-open single-model result (90%); queued: all-open escalation ladder (wafer cascade → deepseek-RLM tier, zero proprietary APIs).
v2907-05 ~12:00POST-CUTOFF REVALIDATION (AIME 2026 + HMMT Feb 2026, per Hugh's contamination concern) — the architecture's biggest win yet: frontier solos DROPPED on fresh problems (Fable 100→97/90%, GPT-5.5 98/95→97/85% — old ceilings were partly contamination) while cascade-rlm HELD: 97% AIME26 (ties both frontiers) and 95% HMMT26 (beats GPT-5.5 +10pp, Fable +5pp) at 3.9–5.7 s vs their 22–38 s, frontier touched 3–20%. Champion swap: always-frontier arbitration (rlm-conv 87/90%) falls behind escalation-on-discord on fresh sets — cascade-rlm is the new default (stable service + turbo switched). Also this release: STABLE SERVICE live (pinned image, restart-always, :8655) wired as hermes turbo's default model; streaming bug found via turbo and fixed (openai-codex ignores stream=True — adapter shipped, 162 tests); GPQA: RLM law generalizes to science (gemma31 +16pp); dedicated showcase page with charts at /share/moa-cascade/. Fresh-set section added below; every result table now flags old-set numbers as contamination-suspect.
v2807-05 ~08:00Consensus space closed (iters 33–34): champion validated cross-set — cascade-rlm-conv HMMT 18/20 (90%) @5.5 s (clean arbiter 7/7). Unanimity retest on the RLM pool: same 90% at 37 s — and BOTH residual misses were 4-of-4 agreed-wrong: the last errors are systematic model-class errors that no consensus rule can filter — only a stronger arbiter or a genuinely different family. mc3 dominates mc4 everywhere; final champion profile: 97% AIME / 90% HMMT @4–6 s pure cloud, vs local-hybrid convergence 95%/95%. Recipe book updated with the choose-by-set guidance.
v2707-05 ~06:00ITERATIONS 31–32 — CAMPAIGN RECORD: 97% AIME, pure cloud. RLM voter slots shipped (agent: rlm on any reference slot; 88 tests). cascade-rlm (all-wafer): 92% @3.6s at just 1.7% frontier. Then the composition of every law — cascade-rlm-conv (RLM voters + clean $0-GPT-5.5 arbitration): 58/60 (97%) @3.9s median, tier-0 covers 83% of traffic at 98% precision, 17% $0-frontier, zero errors, zero local hardware — essentially frontier-solo accuracy (98% @40s) at 10× lower latency. New champion; recipe book, config reference, family map updated.
v2607-05 ~04:00ITERATION 30 — RLM agent on wafer (adventurous lane, per Hugh): a reason→python→observe loop (≤12 rounds, sandboxed exec) on Cerebras models vs same-model single-pass, AIME-60. Discovery: gemma-4-31b RLM 49/60 (82%) vs 41/60 solo (+14 pp) at 2.5 s mean — best small-model result of the campaign; gpt-oss-120b RLM showed no benefit (48% vs 55%, with FINAL-extraction artifacts noted). New law: externalized reasoning lifts models without internal reasoning; thinking models don't need it. Recipe book + scorecard + tally updated. Queued: RLM lane as a cascade voter (needs proxy agent-loop support).
v2507-05 ~02:00Full document overhaul (per Hugh): new executive summary with the proven-recipes list; architecture section expanded to explain every mechanism; sections renumbered into a coherent flow; new tooling & execution tally (section 13, incl. the honest "are we dogfooding?" answer); pros/cons rewritten for the cascade era. ITERATION 29 folded: cascade-convergence VALIDATES on HMMT — 19/20 (95%), tier-1 clean $0-frontier arbitration 11/11; fair mc4 retest (per-slot 15k voter cap, feature shipped) stays degenerate (87%, tier-0 never fires) — unanimity dials with thinking voters are settled as impractical; mc3 convergence is the standing optimum on BOTH sets (95%/95%). OpenRouter budget raised to $500.
v2407-05 ~00:15Frontier curve completed (iteration 28): unanimity over the diverse pool degenerated to frontier-solo (tier-0 never fired — the local 32B's thinking exhausted its voter cap before the ANSWER line; 55/56 at tier-1 = GPT-5.5-class). Curve: 93%@5% · 95%@35% (optimum) · 98%@~100% frontier. Mechanism lesson added to section 1d000.
v23.107-04 ~23:15Configuration reference added (section 0, per Hugh): every tested config now defined — models, hosts, quantization, roles (voter/reference/aggregator/classifier/judge/verifier/escalation), consensus settings, routing lanes, learning-loop setup. All results-table config names resolve there. No result values changed.
v2307-04 ~22:30CONVERGENCE (iteration 27, section 1d000): 95% AIME, ceiling broken by design — Qwen3-32B-AWQ on the local 5090 joined the voter pool (tier-0 39/39 PERFECT, first zero-false-consensus run) + clean $0-frontier arbitration (18/21 on the hard tail). Every measured law contributed causally.
v2207-04 ~21:00Full circle (iteration 26): first hybrid local+wafer consensus pool live (Qwen3-8B on the 5090 voting beside Cerebras models; 0 errors) — 88% AIME because a weak voter's dissent is noise. Closing law: diversity value = independence × competence; the box needs 27B+ local voters. Batch closed at 26 measured iterations.
v2107-04 ~19:30Arc closed with iteration 25 (clean_arbiter shipped + measured): clean frontier arbitration confirms anchoring directionally (disagreement subset 78%→86%) but the family ceiling stands at 92.1% mean across SEVEN AIME-60 variants — stochastic false consensus is the binding term, and voter DIVERSITY (local vLLM families) is the identified next lever. Section 1d00 updated.
v2007-04 ~18:15Cascade family synthesis (section 1d00): six AIME variants measured — 92±1.5% invariant; knobs trade latency/frontier-fraction only; unanimous consensus perfect cross-set (53/53). New deepest finding: voter context ANCHORS even a frontier arbiter (GPT-5.5 7/9 on disagreements vs 98% solo) — clean-escalation queued as iteration 25.
v1907-04 ~17:00Dial confirmation at n=60 — honest non-monotonicity: mc4 on AIME 88% < mc3 93% (strictness demoted reliable weak consensus to a weaker tier-1 aggregator). Robust cross-set findings: unanimous tier-0 ≈ perfect (53/53 across sets), tier-2 near-perfect; tier-1 aggregator is the weak link → queued upgrade. Dial guidance rewritten task-relative.
v1807-04 ~16:00Frontier dial measured (section 1d0) — strict-unanimity cascade: 20/20 HMMT (= Fable, > GPT-5.5 solo) at 2 frontier calls; dial direction confirmed: consensus strictness buys accuracy with wafer aggregation, not frontier spend. mc3 = latency default, mc4 = quality default.
v1707-04 ~15:00moa:omni assembled and showcased (section 1e): one model id, four lanes, 10/10 mixed-traffic prompts routed correctly at 2.6 s median. Verified cascade (iter 19) measured honestly: neutral on AIME (92% vs 93%) — verifier independence is the binding constraint; WRONG verdicts did force correct escalations (tier-2 6/7). The quality/cost dial (escalation rate) replaces the free-lunch framing. Review-found returncode defect fixed pre-bench.
v1607-04 ~13:00Judge gate measured — honest split verdict: extending tier-0 to freeform via a 300 ms wafer consistency judge gives 2× speed (2.6 s vs 5.3 s median, tier-0 on 30/30 prompts) but LOSES blind Fable-graded quality 2/2/23 vs always-on MoA — consensus transfers correctness, not polish; a raw voter answer can't match an aggregated synthesis on subjective prose. Verdict: cascade exact-gate stays the default for verifiable work; `gate: judge` is a latency-first option; freeform quality lanes keep full aggregation. Feature + 5 tests shipped (121 green); next-iteration idea logged: judge-picks-best-voter variant.
v15.107-04 ~11:30k-sampled consensus tuning: 4 voters (duplicated wafer slots, 3-of-4 consensus, zero code change) = same 93% AIME with median latency 9.9→4.4 s, tier-0 rate 33%→80%, frontier fraction 13%→5%. cascade-wafer4 is the recommended default; table row added.
v1507-04 ~10:30FLAGSHIP SHIPPED: cascade mode (section 1d added) — lazy MoA with consensus gating: AIME 93% @ 9.9 s median / HMMT 90% (+15 pp over always-on MoA) at ≤15% frontier fraction, tier-0 answers in ~1.4 s with 100% consensus precision on AIME. Built ultracode-style: Fable spec + 3 parallel Sonnet builders + 2 adversarial Sonnet reviewers (3 confirmed defects fixed pre-bench); worker MoA endpoint used for agent offload. Also folded: stopped iter-15 lane 1 — plan-GPT-5.5 on TB sample 8/10 at $0 in 13 min.
v1407-04 ~08:00escalation.min_failures shipped + A/B'd on SWE-bench: requiring 3 failure observations before escalating kept resolution at 20/25 (frontier parity) while cutting frontier turn share 33%→18% and escalated conversations 20→16 of 25 — kimi now drives 82% of turns with GPT-5.5 still at $0 on the plan. The over-firing lesson from v13 is fixed and measured.
v1307-04 ~05:40Live plan-escalation SWE-bench result: 20/25 (80%) — parity with paid GPT-5.5 solo, kimi absorbed 2/3 of turns, frontier rode the ChatGPT plan at $0 marginal. Design lesson recorded: failure-pattern escalation over-fires on debugging workloads (tracebacks are everywhere — 20/25 conversations escalated); next refinement is escalating only on the agent's own verify-step failure or an explicit client outcome header. Scorecard SWE row updated.
v12.107-04 ~04:00Step-3.5-Flash verdict corrected after 900 s retry: OpenRouter provider returns empty responses on long generations (18/40) — provider-unreliable, excluded from lanes. Next iteration launched: live SWE-bench escalation with a plan-covered frontier lane (kimi → plan-GPT-5.5 via escalation.tiers, moa:auto, 25 instances) — frontier-quality debugging at $0 frontier cost if it holds.
v1207-04 ~03:15New batch: frontier/wafer/local mixes on HMMT (section 1c added) — GPT-5.5 now rides the ChatGPT plan through the proxy ($0 marginal; codex OAuth from the live hermes store); Fable saturates HMMT (councils show no-harm, no-lift-possible); local-trio-glm52agg 85% best local; qwen3.6-27b 80% sleeper; Step-3.5-Flash timeout-bound (retry running). Anthropic OAuth not provisioned in hermes — plan-Fable blocked on one login (reminder added).
v11.107-03 ~22:00Methodology caveat added to the escalation results (per Hugh's question): offline composites (aider 30/30, SWE 25/25) are oracle-detected upper bounds — the SWE one used hidden eval tests no runtime agent can see; only the live run (router pattern-matching client-produced test output) is real-world-shaped. Boundary conditions spelled out under the quality-loop section.
v1107-03 ~21:15Final iteration measurements in: verifier tool +5 pp on kimi (93%) after fixing a v1 termination artifact (documented in loop rows 10); quorum straggler-dropping = 60/60, zero accuracy cost (row 11); AIME table gains both rows. All experiment containers stopped; phase complete at ~$193 OpenRouter spend of $300.
v1007-03 ~16:20AIME retest complete — new primary quality table added (section 1b): composition lifts hard reasoning (+4 to +7 pp over component solos; the old "no gain" was ceiling artifact); all-Cerebras MoA = 90% AIME @ 19 s/task; frontier saturates (Fable 60/60); nano collapses (32%). Verifier-tool bench now running; quorum A/B queued.
v9.207-03 ~13:30Draft-review A/B measured and refuted (50% pass@1 vs 73.3% solo — even review-only context hurts editing; loop table row 9 added). AIME retest ~45%: frontier saturates (Fable 60/60), open tier spreads (kimi 88%, v4flash 79%). Ops note: one serve crash mid-A/B destroyed by cleanup before diagnosis — rerun was clean.
v9.107-03 ~11:00Four features shipped to the fork while the AIME retest runs (all unit-tested, 103 MoA tests green): quorum straggler-dropping in the fan-out (reference_quorum_grace), multi-tier escalation (router.escalation.tiers), inverted-MoA draft_review preset mode for code, per-preset evolve skills (--per-preset). Measurement pipeline queued behind the retest: verifier-tool bench → quorum A/B on AIME → draft-review aider A/B. No result tables changed yet.
v907-03 ~09:30Harder benchmark adopted: AIME 2024+2025 (60 problems) — the 40-task set saturated at kimi-class (three configs 40/40), masking quality differences. Full 10-config retest running (frontier anchors, open solos, all compositions, Cerebras lanes); an AIME results section will replace the 40-task table as the primary quality axis when it lands. Changelog section added (this table).
v807-03 08:58All benchmark chains complete. Final SWE-bench numbers: gpt-5.5 20/25; kimi→Fable escalation 25/25 beats every solo. Final spend $125.
v707-03 07:50Loop iters 7–8: ref-cap 600 = −17% latency free; wafer models can't edit (gemma31 10% pass@1 @2.2s) — lane map complete, measured vision config shipped to the fork.
v607-03 07:00Terminal-Bench chain complete (gpt5.5 9/10; auto/flash/kimi 6/10; heavy 5/10 timeout-bound); ref-cap trade added.
v507-03 06:30Escalation lane shipped as a router feature (router.escalation) + live-validated via aider: 100% pass@2 with 3/30 exercises reaching Fable.
v407-03 06:00SWE-bench escalation replication: kimi 19/25 + Fable 6/6 remainder = 25/25 composite at 24% Fable calls.
v307-03 05:30Quality-loop section added (routing A/B confirmed; Self-MoA no-signal at ceiling; classifier-guessed cascade refuted; verification-gated escalation discovered). Fable baseline added.
v207-03 04:00Decision-focused rewrite: scorecard, measured pros/cons, "when MoA over frontier" verdict, 8-item roadmap. (Requested: clearer summary of tests/findings.)
v107-03 02:30First full report on the public share: what was built, all experiment results to date, replication guide, fork link.

Generated autonomously by the Claude agent within Turq · fork branch · report v41 · iteration 49 · 2026-07-10