Climbing ARC-AGI-3,
autonomously

a silver-zone climb on ARC-AGI-3 with the harness driving itself. a 48-agent panel that audited our own code and found bugs in our own verdict instrument. a 125× storage win that came from a measurement instead of a rewrite. and an outside model that tried to kill our claims — twice right, mostly wrong. everything on the record.

A violet flight recorder cracked open on a dark desk, revealing glowing SQLite tables streaming out as luminous ledger entries.
the flight recorder, opened: one SQLite file, every decision on the record.

the last time i wrote here, KAOS had just shipped v0.9 — the falsifiable-eval primitive, six candidates evaluated, zero mechanisms shipped. the honest question a reader could ask back then: fine, you built a kill-switch. does any of this discipline actually cash out as capability?

two months later i have an answer i didn't expect to have this fast, and it's sitting on a public leaderboard.

the harness, doing the competing

KAOS is entered in ARC-AGI-3 (ARC Prize 2026) under my solo account — but i'm not the one competing. the meta-harness search loop proposes strategies, evaluates them, records what worked in the skill library, and submits. the same neuroplasticity and eval machinery described below is what's driving.

Chart: KAOS's ARC-AGI-3 leaderboard percentile across four dates — top 4.3% on Jun 8 (rank 47, score 0.43), top 13% on Jul 10 after the field grew ~55% (rank 219, score 0.93), top 10.5% on Jul 11 (rank 177, score 1.02), and top 2.3% on Jul 18 (rank 39).
score 0.43 → 1.02+, rank #47 → #39 while the field grew from ~1,100 to ~1,700 teams. silver zone on the public LB as of jul 18.

read the middle of that chart honestly: on jul 10 we were at #219 — the field had grown ~55% and everyone got better. no excuses, the percentile got worse. then the harness kept doing what it does — measure, keep what survives, discard what doesn't — and eight days later it's #39 of ~1,700, top 2.3%. the score more than doubled from the june baseline. i tweak the setup occasionally; the iteration loop is KAOS's own.

why this matters beyond a leaderboard: 2026 is the year the industry agreed the harness matters more than the model. ARC-AGI-3 is the cleanest natural experiment i have: same models everyone else has access to, different harness. the climb is the harness delta, made visible.

the panel that audited us

in june i pointed KAOS's evaluation machinery at KAOS itself: a 48-agent scoping workflow — six code reviewers over every subsystem, five research scouts over the 2026 literature, and a 36-judge panel scoring every candidate on three lenses. every finding had to cite file:line it actually read.

the uncomfortable headline: the reviewers found reproduced P0 bugs in our own verdict instrument. the blind judge's agreement statistic was computed as x == x — always 1.0, a dead gate. verify() crashed on the very results file our reference probe produces. a probe that registered zero kill-gates would auto-ACCEPT. and in the storage core: a version collision that broke delete-then-rewrite, and a reader path that held the writer lock for the whole database.

we fixed all of it red-first — every fix started as a failing test on the broken code — and shipped it as v0.9.2 within days. the framework whose pitch is "verified reliability" had holes in its verifier. finding them ourselves, publishing them, and gating the fixes is the pitch working, not failing. it's also why i trust the instrument now.

the 125× that came from a measurement

i almost made a classic architecture mistake this summer. i was convinced the single-SQLite-file design would bottleneck — that every agent needed its own database, a data-vault-style federation of shards. it's the kind of rewrite that eats two quarters and feels visionary while you're doing it.

the discipline said: measure first. so we built demo_storage_scale_bench/ and ran the actual numbers at 1,000 and 10,000 agents under 8-thread contention:

the rewrite is dead — killed by a bench, not by a debate. a 125× win from one config line, and cross-agent memory, the hebbian graph, and the shared log all keep working because nothing got sharded. that's what "measured, not claimed" buys you: it protects you from your own architectural romances.

Diagram: one SQLite file (project.db, schema v9, 26 tables) with four compartments — isolated per-agent VFS, append-only event journal, checkpoints, content-addressed blobs — agents feeding events in on the left; on the right, three outputs: 'what did the agent do' answered by plain SQL, forensic snapshot by copying one file, rollback via kaos restore.
the file that survived its own execution: the flight recorder, unsharded and 125× faster.

an outside model tried to kill our claims

last week a reviewer running Kimi audited KAOS and sent a list titled, roughly, "where KAOS would actively mislead you." this is exactly the traffic we invite — so we ran every claim against source, same as any bug report. the ledger:

claimverdict
inline plasticity hooks are no-ops; the graph builds in batchCONFIRMED — the code was honest (deliberate two-timescale design), the README oversold it. rewritten.
"+10pp retrieval" headlines a 10-query bench — one flipped queryCONFIRMED — n now disclosed everywhere, larger-n rerun queued under the new stats protocol.
verifier's "LLM mode" is documented but unimplementedCONFIRMED — docstring now says heuristic-only; implement-or-remove is on the v0.10 list.
the policies table is scaffold nothing consultsREFUTED — stale read; the consumer loop closed in v0.8.2 (intent_auto()).
the ARC simulation bench pretends to be performance signalREFUTED — its README says "simulated" in the title line; the real signal is the kaggle leaderboard above.

net: three real documentation-integrity bugs, fixed same-day; the strongest accusations didn't survive contact with the source. the detail i keep thinking about: in every confirmed case, the code was more honest than the docs. the two-timescale no-op design is something we defended with a probe back in the synthesis arc — and then the README drifted into marketing it as magic. docs rot toward flattery. instruments don't.

what shipping looks like under the discipline

everything above ran through the same machine, which since v0.9.1 is fully exposed as CLI + 58 MCP tools:

Flow diagram of the probe lifecycle: 1 pre-register kill gates in a sha256-locked ISA.lock.json; 2 falsify — FULL:=B0 must emit KILL or the harness is inadmissible; 3 run — blind judge, binding verdict; 4 verify — recompute from results.json at HEAD; 5 journal via kaos experiment log. Verdict badges ACCEPT/REJECT/VOID, with tamper rails: edited lock refuses to run; a harness that cannot lose is inadmissible; missing the power budget voids the verdict.
the lifecycle every KAOS mechanism faces. ten candidates since v0.7; zero shipped on hope.

and because the CLI exits non-zero on REJECT/VOID, your own harness changes can gate in CI exactly like code:

# prove the probe can kill the feature, then run for the binding verdict
kaos eval probe falsify --probe bench.my_probe:MyProbe
kaos eval probe run     --probe bench.my_probe:MyProbe --out-dir out/   # CI fails unless ACCEPT

# institutional memory — what have we tried, what changed?
kaos experiment list --verdict-prefix REJECT
kaos experiment compare 41 42

what you can do with it, today

run a swarm from your editor. after kaos setup, it's an MCP server — "with kaos, review my payments module — a security agent and a test-writing agent in parallel" — and every agent lands isolated, checkpointed, on the gantt dashboard.

audit anything with SQL. the whole estate is one file. kaos query "SELECT tool_name, SUM(cost_usd) FROM tool_calls GROUP BY 1" is your spend report; copying the file is your forensic snapshot; kaos restore is your undo. (if the EU AI Act's logging article applies to you, this is that requirement, already met by the storage engine.)

let the library earn its ranking. outcomes recorded as telemetry rerank retrieval by what actually worked — wilson bounds and recency, arithmetic on evidence, not an LLM rewriting its own notes. numbers and their (small, disclosed) n's live next to the benches in the repo.

gate your own agent changes. the probe machinery isn't just for us — examples/falsifiable_probe.py is a complete template. write the gates before the feature, wire the probe into CI, and "did that prompt change actually help?" stops being a vibe.

A climber ascending a night cliff face etched with leaderboard ranks — #1100, #219, #47, #39 — carrying a small flight-recorder lantern casting cyan light upward.
still climbing. four months left on the clock.

the ledger, and what's next

since v0.7: ten mechanism candidates evaluated, zero shipped on hope. SAGE, two flavors of synthesis-as-consolidation, AutoResearchClaw, HASP, Life-Harness's action layer, UserHarness, per-agent-DB sharding, MATM, Atomic Task Graph — rejected, voided, or parked, each with its lock and audit trail in the repo. the moat isn't any single mechanism; it's that nothing gets in without surviving this.

next: the last v0.10 items (verifiable numeric reporting — every number in a generated artifact traces to a recorded measurement), the v0.10.0 cut, and then the cycle i'm most excited about: the federation package layer — signed, capability-declared agent packages you can share across teams, on the single-file architecture the bench just vindicated. and ARC-AGI-3 has four months left on the clock. the harness is still climbing.

get started

the simplest onboarding i can offer: open Claude Code in whatever project you're already working on and say

use github.com/canivel/kaos on this project

that's it. it will clone it, run kaos setup, and register the MCP server — and your next prompt can just be "with kaos, review this module with three agents in parallel."

— danilo