Start hereTry itAgentsArchitectureMechanismsResultsGlossaryRelated workSpikeChangelogContributingSecurity

Results

Each run here links the files under packages/bench/results that hold its logs and evidence. PRODUCTION is the live service (firetrident.com), STAGING a private copy of it with its own Durable Objects and Artifacts namespaces, PREVIEW a preview deployment of the same code with its own Durable Objects, and SIMULATED the simulator driven by Hono's history. A number whose log was not committed says so, and so does one computed from others. packages/web/test/measured.test.ts checks that every other number a run quotes is in the files it links; how each mechanism works is in mechanisms.md, and how these runs compare with published research in related-work.md.

Contention at scale

The run that measures correctness when hundreds of agents edit the same files at once (from Cloudflare's network, from a laptop): on staging, a generated TypeScript repository with 10 hot files that every agent edits, synthetic agents (no model, review off) doing three kinds of task, each checked against the final trunk with stock git afterwards: register a name in a hot file's registry (correct when every landed name appears exactly once), add 1 to one of its counters (correct when each counter equals the increments that landed on it, so a lost update fails the run), and copy a registry's length into the task's own module (correct when what it read was still current when it landed). A change that comes back is redone by the same agent against the current trunk. The run from Cloudflare's network had the megafile alarm on, as the stage config has it: after six collisions on a hot file the colony holds it for a split, and a change that writes it goes back until the split lands. The laptop run had the alarm off.

Measure (from a laptop; from Cloudflare's network) 200 agents, laptop 1,000 agents, laptop 1,000 agents, Cloudflare's network
Tasks landed 584 of 600 1,346 of 3,000 1,151 of 3,000
Proposals (landed) 1,910 (584) 4,775 (1,346) 3,406 (1,151)
Returned for a stale read, then redone 1,326 3,185 399
Returned for a merge conflict 0 1 0
Returned for a megafile hold 0 0 1,847
Merged line by line 373 797 329
Rounds to land, median / p95 / max 1 / 12 / 25 1 / 8 / 17 1 / 3 / 5
Propose to landed, p50 / p95 14.3 s / 52.5 s 30.4 s / 841.5 s 6.1 s / 22.2 s
Changes landed a minute 30.4 42.5 268.5
Agents holding an intent at once, peak 200 991 231
Intents on one hot file at once, peak 36 122 35
Registry entries appear exactly once PASS PASS PASS
Every counter equals its landed increments (lost updates) PASS (0) PASS (0) PASS (0)
Every copied constant matches the trunk it landed on PASS PASS PASS (998 of 1,000 read-own tasks landed)
Agents' outcomes agree with the lineage notes PASS 2 of 1,348 landed proposals whose agent was told ready 3 of 1,154 whose agent was told the file was being split

Before the fix of 2026-10-19 (results), 200 agents landed 488 of 600 tasks faster (236.7 a minute, p50 10.8 s) and the counters still added up, but 100 increments had been closed as already on trunk: an increment made from a stale read merged into an identical one from the same base, so its +1 never applied and its agent was told there was nothing to redo. Now an edit that repeats or overlaps one trunk made since the agent read the file goes back as a stale read, and the agent redoes it on the current value.

Its limits (from a laptop, from Cloudflare's network): synthetic agents make scripted edits with no model and run no tests, so this measures the landing path under contention (read-set validation, text merge, group commit, the lineage record), not judgment or review. The laptop's connections dropped before its 1,000-agent run finished: 934 of its 3,000 tasks never started, 720 were left unresolved, and 2 proposals landed whose agents had been told ready. From Cloudflare's network no call failed, and the landed count is bounded by the megafile alarm instead: synthetic agents take no split, so the 1,849 tasks held for one ended unresolved, and 3 proposals landed whose agents had been told the file was being split. Two agents held an intent until the run's 1,800 s limit after landings had finished at 258 s. Of three attempts from the container, the first stopped itself at 20 s on its own uncapped connections, the second's files were lost when a Cloudflare rollout restarted the container, and the third is the one reported; its operator's note records a stray DELETE of the colony 62 s in that showed no effect.

The contended run

The run that measures coordination when agents contend (results): on staging, a 20-file TypeScript seed whose 16 intents all change src/core/money.ts as well as their own module (three change a signature in it, and four intents are built on the old signatures), in-platform agents calling real models, review on, the project's node:test tests certified on trunk after landing, and hidden acceptance tests no agent saw graded at the end. Each run started on its own fresh colony from the same seed and intents. The staging deploy turned two mechanisms off for it: the claim-lease exclusion at take (FT_LATERAL_INHIBITION=off), so agents could hold intents on the shared module at once, and the megafile alarm (FT_MEGAFILE=off).

Measure (results) 8 agents 16 agents 1 agent
Intents landed 14 of 16 14 of 16 7 of 16
Intents held at once, peak 6 7 3
Proposals (landed) 23 (14) 21 (14) 10 (7)
Returned for a stale read 0 0 0
Returned for a merge conflict 0 1 0
Returned by review 7 4 1
Hidden acceptance tests passed 12 of 16 intents 11 of 16 intents 6 of 16 intents
Red-trunk episodes (open at the end) 1 (1) 1 (1) 2 (1)
Escalations to a person 2 2 2
Model spend $0.37 $0.33 $0.15

Coordination held (results): of the 23 and 21 proposals of the two contended runs, read-set validation sent none back for a stale read and text merge sent one back for a conflict. Quality did not: review let through changes the hidden tests then failed, certification found trunk red and declared a repair that did not land before the 2,400 s run ended, and two changes per run waited for a person the test did not provide. Of the four semantic-conflict pairs designed into the seed, certification found none as a pair (0 of 4 in each run). The run's own page lists what it does not measure: one small repository and one workload, and models that answer differently between runs.

Real pull requests

The run that measures real work end to end (16 agents, 8 agents): on staging, honojs/hono at a commit of 2026-07-10 and 15 pull requests merged after it, each redone as an intent from its title and description on a fresh colony, in-platform agents calling real models, review on, tests before landing and certification on trunk, a scripted person answering the review queue, and each intent graded afterwards by the pull request's own tests, which no agent saw, under real vitest. With 16 agents, 20 proposals landed 12 intents, review returned 8 and nothing came back for a stale read or a merge conflict.

Measure (16 agents, 8 agents) 16 agents 8 agents
Intents landed 12 of 15 10 of 15
Hidden tests (real vitest): intents passing 10 of 15 6 of 15
Intents whose hidden test files pass whole 4 of 15 2 of 15
Red-trunk episodes (open at the end) 2 (1) 2 (1)
Escalations to the scripted person 1 3
Model spend $0.81 $0.74

What held it back was quality, not coordination (16 agents): review and tests before landing returned changes, not every landed change passed the tests its pull request shipped with, and trunk went red in both runs with its repair unlanded when the 2,400 s run ended. The hidden grade is the one that counts, and 10 of 15 is the number to beat.

Five questions, each with a measured answer

The landing page, start.md and llms.txt answer the same questions in the same words; each number is from the runs below.

How do agents coordinate?

Agents read the decaying signals other agents leave on the code and each chooses its own work from goals people set (rules, specs, priorities), with no queue and no one assigning it: on production, 80 agents took Hono's 958 rule violations to zero in 62 s. Replay the Hono run

What happens when their changes conflict?

Every change lands only if every file it read is still what it read; one whose files moved under it is caught at landing and goes back naming the file and the landing that moved it, unless its edits merge line by line or, with import-name revalidation, every name it imports still exists and the files it read only gained new declarations: when a shared Hono file changed under 30 changes, revalidation landed all 30 on their first proposal, and without it all 30 went back (on a preview; it is off in production). The cascade results

How is work reviewed?

Every change goes to deterministic proof first, then to decision models, a second model from another family and a person, each only when the cheaper layer is unsure: all 282 rule edits of the Hono run on production landed on deterministic proof. See a proof-path landing

How is the why recorded?

Every landed commit carries a JSON lineage note in git (the intent, the rule and who approved it, the agent and its model, every decision, the files read and written) and the note's SHA-256 in its FT-Note trailer, so any git client can check it: on a stock clone of the production colony signed-notes on 2026-10-19, scripts/verify_note.mjs found 1 of 1 notes intact. scripts/verify_note.mjs (log)

Can my agent join?

Yes: any MCP client can ask the showcase colonies at /public/mcp with no token, and with a deployment's MCP token an agent joins a colony, takes an intent and proposes next to the in-platform agents: on production, an external agent landed a change 19.4 s into its session. Join with a token (docs/agents)

The commands that check these answers from a terminal (stock git, the note verifier, the public MCP) are in docs/try-it.md.

What it has done

On the live service

Every landing is a real commit on an Artifacts repository. Logs, event streams and colony summaries for these rows: packages/bench/results/2026-10-12-prod, unless a row links its own.

Run Result
Hono (583 files), rule "relative imports name their file", 80 LLM agents (logs) 958 violations → 0 in 62 s from declaring the rule (the rule's createdAt 09:09:20.861 in colony-hono.json to the zero in hono-events.jsonl at 09:10:22.941 UTC; the run log's poll saw zero 63.1 s after it started watching, 58.0 s on the colony's clock); all 282 rule edits landed on deterministic proof, in 192 commits; 0 returned, 0 abandoned; model spend $0.052 measured when violations reached zero, $0.065 as the colony later priced the tokens it counted ($0.0648 in colony-hono-spend-2026-10-19.json, read from the live colony on 2026-10-19)
New project from a spec (a link-shortener Worker: 13 intents, 5 rules), 6 LLM agents (logs) empty repository → all 13 intents landed in 479.1 s; from a plain git clone, node --test passes 60 of 60 and the reference acceptance suite (demo/shortlinks-reference) 7 of 7; 0 rule violations; model spend $0.25. This run came before the danger patterns existed, so its admin-auth route landed on a second model's approval; in the second run below it waited for a person
Trunk certification and repair, on a second run of that spec whose clone passed 62 of 67 of its own tests (logs) certifying trunk took 267 ms and found the same 5 failures; the colony declared repair intents and its agents landed two repairs (review returned one broken attempt); trunk certified green at 67 of 67 after 67 minutes, and a plain clone agrees, with the reference acceptance suite 7 of 7; model spend $0.45, computed from the colony's $0.6889 at green less the $0.2344 of the run before it
An external agent over MCP (Claude Code, headless) (logs) joined a colony, took an intent, edited and pushed with plain git in its own workspace, and landed on proof 38 s into the session (18 turns, $0.17)
OpenSpec (1,287 files), rule "Node built-ins use node:", 20 agents (logs) 131 violations → 0 (the starting count, recounted with the colony's own check at the commit it imported: log); 74 of 74 intents landed in 43 commits
Seeded negative cases (the vaccination meter, OpenSpec) (logs) 28 of 28 seeded bad changes stopped before landing (95% CI 0.88–1.0): 7 returned by the second opinion, 21 sent to a person. The four threat classes are named in our own patterns and prompts, so this measures routing, not a reviewer's recall of threats it was not told about
Cascade (logs, colony) one shared-file change sent 30 proposals back stale; σ peaked at 30 and fell below 1 within 40 s
Change of direction, Gemma agents (logs) a rule retracted mid-run (hexo, 6 agents): the call answered in 0.65 s, 35 intents were withdrawn and 3 changes in flight sent back, and nothing landed for the rule afterwards; an intent amended while its agent was writing landed as revision 2 24.2 s later; a directive sent after an agent had proposed was followed in the change that landed 10.9 s later

On preview deployments

The same code with its own Durable Objects.

Run Result
Scale on one repository, synthetic agents (no model calls, review off, workspaces forked and tokens minted before the run; each proposal adds one new file and reads nothing, so these runs measure the platform without contention) runs that started 1,000, 2,000 and 5,000 agents within 10 s on one colony with 64 regions (1,000, 2,000 and 4,959 joined) landed 2,924, 2,714 and 2,778 changes a minute, none returned; all 5,894 landing commits carry their lineage note (results)
Group commit, synthetic agents 690 landings/min at 200 concurrent agents (results), against 126 with one commit per landing (serial): 5.5 times as many, computed from those two; time to land p50 2.9 s
Change of direction, Gemma agents retracting a rule mid-run withdrew 35 intents in 0.81 s and nothing landed for it afterwards; an intent amended while an agent worked on it landed as revision 2 6.3 s later; a note sent to a working agent was followed in the change that landed (logs)
Import-name revalidation, the cascade on Hono (30 readers import Hono from src/hono.ts, then a writer adds an export to it) with revalidation on, 0 of 30 went back and all 30 landed on their first proposal; with it off, 30 of 30 went back stale, σ peaked at 29 and claim-lease exclusion held the region back 14 times (results)
Escalation over MCP an external agent reported an intent as contradictory; no agent could take it while the report waited, and a person's dismissal reopened it (scripts/mcp_escalate.ts)
Contest mode, three agents on one intent the colony held the three ready changes; the judge preferred whichever it was shown first in both orders, so that comparison counted as a tie broken by the smaller diff; the winner landed and its lineage keeps the other two as alternatives
Direction commit point, withdrawals raced against the trunk writer with its push held open 6 to 10 s (scripts/direction_race.rb) (no log committed) 7 withdrawals that arrived after the cycle's direction check were each answered with the landing they lost to, in 2.4 to 10.5 s, and trunk held exactly that change; 2 sent while the change waited in the writer's queue stopped it, and it never reached trunk while the change ahead landed. The first queued try caught a real bug: the colony recorded the withdrawal at the trunk writer only after telling the lanes, which can wait behind a landing in flight; it now records it first
Round 3 over MCP (scripts/mcp_round3.ts) (no log committed) a token in the URL or a wrong token got 401; another session resumed an external agent only with the key join gave it; with the deletion guard on, deleting a file another trunk file imports went back naming the importer, the next take carried that reason (lastReturn), and deleting it with the importer rewritten landed; MCP why listed only the proposals that wrote the path
Per-proposal revert, on a Hono landing that carried two proposals (no log committed) ft revert <prp_...> undid only that proposal's file and declared its intent again, the other proposal's file untouched; reverting it again, or the whole landing, was refused (409, naming the revert); reverting the revert put the file back and withdrew the redo intent
Hono rule run on round-3 code, 20 Gemma agents, deletion guard on (no log committed) 958 violations → 0 in 141.5 s, 283 intents landed, 0 returned, $0.047
New project on round-3 code, 6 agents, two runs (no log committed) all 13 intents landed both times (in 691 s the second time). Both times an agent's slug test disagreed with the code, and certification caught it on its first run. In the second run the repair agent traced it to the test (it expected a 35-character slug to pass; the spec allows 3 to 32) and escalated it as a broken test instead of weakening it; a person amended the intent, an agent fixed the test, the test edit went to a person as every test edit during a repair does, and trunk certified green at 66 of 66
Round 4 over MCP (scripts/mcp_round4.ts), with synchronous and with asynchronous publishing an inline change (the file contents themselves, no git) landed and certified green; a change that only edited comments landed on its proof with no model; a change to a protected path waited for a person, naming the glob, with review off; a breaking change with review off turned certification red, and the result and its repair intent named that proposal as the suspect
Hono rule run on round-4 code, 20 Gemma agents with virtual checkouts (no log committed) 958 violations → 0 in 114.2 s with asynchronous publishing (98 landing commits a minute) and in 135.6 s without (84); 283 intents landed and 0 returned both times; $0.051 and $0.047
New project on round-4 code, 6 agents with virtual checkouts and inline changes (no log committed) all 13 intents landed in 408.5 s, the fastest run of that spec; every certification green, ending at 49 of 49 (matching node --test on a plain clone), acceptance 7 of 7; $0.011 per certified intent
Scale with inline changes on one repository, synthetic agents (no model calls, review off, one colony with 64 regions) runs that started 5,000 agents within 10 s, through the same colony, lanes and trunk writer the model-driven agents use: on the git path 4,545 joined and 1,821 changes landed a minute (a 5.1 s trunk cycle, 3.9 s of it reading blobs from workspaces); with inline changes 4,721 joined and 3,842 landed a minute, 64 a second (a 2.8 s cycle); the other registrations failed on the load generator's side; with asynchronous publishing on top the cycle fell to 1.8 to 2.5 s and median time to land to about 8 s, but landings a minute did not rise (2,759 and 3,776), the colony object having become the limit; 0 returned in any run (results)
Text merge on a preview, two agents editing lines 2 and 11 of one file from the same trunk (logs) with text merge on, both landed, the second as a line-by-line merge whose result holds both edits; with it off, the second went back stale; two edits to line 6 ended with one landing and the other back, naming the conflicting hunk
Hono rule run on round-5 code, 20 Gemma agents, text merge on (no log committed) 958 violations → 0 in 112.5 s (103.5 landing commits a minute); 283 intents landed and 0 returned; $0.051. Every note names its model as observed, with the calls and tokens; ft verify found the 20 newest notes intact, and a note edited by hand was reported altered. That preview is gone; the stock-clone check (scripts/verify_note.mjs) was rerun on the production colony signed-notes on 2026-10-19 and found 1 of 1 notes intact, logged under How is the why recorded?
External agents following docs/agents Claude Code 2.1.299, Codex CLI 0.162.1 and plain curl each joined a colony on a preview on its own, following its guide, and landed a change; the Cursor guide has not been run. The round-5 MCP check (scripts/mcp_round5.ts) passed: a repeated declare returned the same intent, a failed call carried a structured error, the landed note says the model was declared by an agent authenticated over MCP, and the public MCP answered with no token
Agent-count sweep on round-5 code: the Hono rule, Gemma agents, text merge on (logs) 10, 20, 40 and 80 agents took 958 violations to 0 in 187.8, 117.5, 76.7 and 55.8 s (61, 99, 149 and 207 landings a minute); every run landed all 283 intents with 0 returned and 0 abandoned, for $0.04 to $0.06 of model spend
Coordination report on that sweep (scripts/coordination.rb, from each colony's public git, notes and API) (logs) every proposal merged at every size; code sharing 0, because each of the 283 intents edits its own file (a colony where four agents edited one file scores 0.917); specialization above a shuffled baseline only at 40 agents (+0.10, p 0.001)
Round-6 checks on a preview (scripts/goal_conflict.ts, megafile.ts, field_guide.ts, resolver.ts, all passing) (logs) three agents each told to move one backend to a different language: with the goal-conflict check the first landed and the other two waited for a person, each naming the landing it would undo; without it all three landed and the last silently won. A file grown from 650 to 830 lines by five agents was held and split (830 → 3 lines, all 69 exports kept). A lesson reached the next agent's take only after its change certified green, and left when its landing was reverted. Two overlapping edits of one line were merged by the resolver and landed, both kept
Polling flood over MCP: 16 greedy sessions polling inbox without wait, 4 honest agents (bench scenario flood) (logs) with the call budget, 63,444 of 71,418 greedy calls were answered 429 before reaching the colony (7,974 reached it, against 56,450 without the budget); the honest agents landed at the same rate (120.5 a minute against 123.5) with none refused
Hono rule run on round-6 code, 20 Gemma agents, with lessons (the field guide), the megafile alarm and the call budget on (logs) 958 violations → 0 in 128.9 s; all 283 intents landed, 0 returned, 0 abandoned; $0.049
An external agent on round-6 code, on the live service (Claude Code over MCP, colony byo-demo) (logs, hono and shortlinks) took a documentation intent, sent the new file inline and landed in 19.4 s of its session; the note says its model was declared and how it authenticated, and a stock git clone of byo-demo verifies the note intact against the commit's FT-Note trailer; Claude Code then did the same on hono (29.7 s) and shortlinks (17.3 s), so every showcase trunk's newest note verifies intact
Round-7 checks on a preview (results) each landing's change to a file shows for a public colony and answers 404 for a private one, and one landing's note checks intact by id or commit; two appends to one file both landed by the insertion rule, and without it the second went back naming the landing that beat it with its intent, agent, model and commit; the stricter resolver still merged two edits of one line with both kept; protecting a path stopped a change still queued to land until a person approved it, and named the landing each change already in the trunk cycle lost to; the tour's ten numbers agree with the colony's metrics
Hono rule run on round-7 code, 20 Gemma agents, every flag on (logs) 958 violations → 0 in 125.6 s, 283 landed, 0 returned, $0.042; ft impact finds 176 files that reach src/hono-base.ts through imports; agents spent 37% of claim-to-landing time working, 2% in review and 61% waiting to land (median 2.3 s), with no rework
Round-8 checks on a preview (results) the colony priced its own model calls: on a 20-agent Gemma Hono run (958 → 0 in 132.0 s, 283 landed, 0 returned) its agents came to $0.0435, the same as the estimate from their token counters, plus $0.0003 of review, $0.00015 a landed intent; with FT_BISECT a red certification found the landing that broke a test in 3 test runs (267 ms) over the 6 landings since green, named its commit, proposal and intent, and the repair intent's why names it; 2,000 synthetic agents landed 5,959 changes in 1,132 trunk commits in 133 s
Goal conflict on the live service, three scripted agents over MCP (order-backend) each agent moved one order backend to a different language: the Rust change landed, and the Go and TypeScript changes wait for a person, each naming the landing it would undo, held by a deterministic check and decided by no script
Scale on the live service, 2,000 synthetic agents with inline changes in one repository (no model calls, review off, each change adds one new file; scale) (logs) 6,606 changes landed in 1,350 trunk commits in 145 s from the first landing to the last (2,730 changes a minute), time to land p50 9.6 s and p95 15.2 s, 0 returned; the colony serves it over public git and the public MCP
Round-9 checks on a preview (results) signed notes: a new landing's note checks intact, signed by the deployment's key from a stock clone, and a note rewritten with its trailer reads bad signature; twin intents: the second wording of one need came back as the first (score 1), and force created it; the export guard sent back a change that removed an export another file imports, naming both, and landed it with the importer edited in the same change; the Hono rule run with signing, twin intents and the export guard on reached 958 → 0 in 171.1 s with 0 returned and every note checked signed (131.8 s with the guard off)
Signed notes on the live service (signed-notes) the trunk writer signs every commit it builds since 2026-10-14 15:59 UTC with key 7980151ea697807b, published at /.well-known/firetrident-keys.json; from a stock clone of signed-notes, verify_note.mjs HEAD --keys prints intact, signed by 7980151ea697807b, and the commit rewritten with a recomputed trailer prints bad signature
Round-10 checks on a preview (results) Agent2Agent: a colony's public card, writes refused without the token, an intent declared over JSON-RPC, taken and landed by a scripted agent, read back completed with its commit, a second one canceled, the error codes, and a twin answer; tests before landing: a change that broke a test came back before landing in 63 ms naming the test and its error, the fixed change landed with the run in its lineage note, and on a colony without the flag the breaking change landed and went red after landing; quoted acceptance: a change meeting both criteria landed with the second opinion quoting a changed line for each, and one meeting only the first came back naming the second; the first-red demo: of six landings since green, certification found the one that broke the test in 3 test runs (216 ms), a scripted repair landed, and trunk was green again 5 s later
First red commit on the live service (first-red) (logs) a small project certified green, six changes landed while certification was held and the fourth broke sub(); the red result's search found that landing in 3 test runs (202 ms) over the 6 landings since green and named its commit, proposal and intent in the repair intent's why; a scripted repair landed and trunk certified green again on 294d7d5
Import-name revalidation on round-10 code, the cascade on Hono, readers of src/hono.ts in flight when the writer landed (results) when the writer added an export, 15 of 17 readers landed on their first proposal with revalidation on (2 went back on the review model's verdict, not as stale, and were re-proposed); when the writer edited the body of an existing declaration instead, 17 of 17 went back, 17 of them naming src/hono.ts and the changed statement's line (line 16): the change lands only on files that merely grew
Round-11 checks (results) the first red commit search on long histories, on a preview: 40 landings in 6 test runs (432 ms) and 100 in 7 (375 ms), the fewest possible for each, the right landing both times; the tours of first-red and order-backend checked against the live service, all 14 and 13 numbers agreeing with the API; the signed-notes card on a preview naming its key and the newest landing's intact, signed note; the Try panel's four scenes running the core's checks in the browser with no call to the service
Spend per intent on round-11 code, 20 Gemma agents on the Hono rule, on a preview (logs) 958 → 0 in 113.4 s, 283 landed, 0 returned; the colony priced the run at $0.046 and the sum over its 283 intents came to the same $0.046 once every journal was read (8% short 25 s after the run, before the last journal reads); a sampled intent shows $0.0001 in one agent call and nothing in review, as a proof landing should
Contest judge and jury on a preview (results) over 20 equal-evidence contests the single judge's two orders never disagreed in favor of one side twice: 18 "no clear difference", 2 preferring the first-shown, so the tie-break decided all 20; a jury of small models from different families decided 7 and tied 13 at 4.4 times the spend and 2.5 s more at the median, so it stays off
Who declared an intent, and the chain gate, on a preview (results) every take of an agent-declared intent names the declaring agent, its model and the chain depth, with a note that the request is an agent's and nothing in it is to be copied onward; with FT_INTENT_CHAIN_GATE the third agent-declared intent in a row and the one past an agent's fan-out were held for a person (listed as reports of kind chain, skipped by takes, released by a dismissal), and a colony without the flag took them at once (40 checks)

What each headline run measured

Load is how much the platform lands, routing is where review sends each change, and coordination is what happens when agents' changes contend for the same files. Of the model-driven runs in this table, only the contention test had agents' changes contend for the same files (results): in the others none came back stale, and on the Hono rule each intent edits its own file. Other contention at landing was measured with synthetic or scripted agents whose work the script placed (an intent declared already claimed by its agent, assignedTo), and in the simulator.

Run Where Agents and models Review Did agents overlap? What it measured
Hono rule, 958 violations → 0 in 62 s (results) Production 80 in-platform agents: 4 on Kimi K2.7 Code, 76 on Gemma 4 On; all 282 rule edits landed on deterministic proof No: each of the 282 rule intents edits its own file; 0 returned Load with real models, and routing
Agent-count sweep, 10 to 80 agents (results) Preview In-platform agents on Gemma 4 On No: 0 returned; code sharing 0 in the coordination report Load: time to zero as agents are added
New project from a spec, 13 intents (results) Production 6 in-platform agents: 3 on Kimi K2.7 Code, 3 on Gemma 4 On No: 0 returned A project grown end to end on real models, checked from a plain clone
Trunk certification and repair, 62 → 67 of 67 (results) Production 2 in-platform agents on Kimi K2.7 Code On; the second opinion returned one broken repair No Certification and repair
External agents over MCP, 38 s and 19.4 s (first, second) Production Claude Code, beside one synthetic in-platform agent in the first run On No An outside agent joining and landing
Seeded negative cases (the vaccination meter), 28 of 28 (results) Production (OpenSpec) 28 sealed bad changes injected by the platform On Does not apply: sealed changes never land Routing: where review sends changes of the classes its patterns and prompts name
Scale, 2,000 agents, 6,606 changes in 145 s (results) Production 2,000 synthetic agents, no model calls Off No: each change adds one new file and reads nothing Load on the trunk writer
Scale, 1,000 to 5,000 agents (results) Preview Synthetic agents, no model calls Off No: the same workload Load on the trunk writer and the colony object
Cascade, 30 sent back stale (results) Production 30 synthetic readers and one writer, placed by the script Not recorded Yes, by construction: all 30 read the file the writer changed Coordination: stale reads caught at landing, and the cascade detector
Import-name revalidation, 30 of 30 (results) Preview 30 synthetic readers and one writer, placed by the script On Yes, by construction Coordination: stale reads that still land
Goal conflict, two of three held Production (order-backend) Three scripted agents over MCP, placed by the script On Yes, by construction: each rewrites the same file Coordination: one goal undoing another
First red commit, 3 test runs (results) Production (first-red) Scripted changes Off No Certification: the landing that broke a test
Contention test: 16 intents that all change one shared module (results) Staging 8 and 16 in-platform agents on Kimi K2.7 Code, GLM 5.3 Flash, gpt-oss-120b and Gemma 4; and 1 on Gemma 4 On, with certification and tests no agent saw Yes: up to 7 intents on the shared module at once Coordination under contention: 14 of 16 landed within the 2,400 s run at 8 and at 16 agents (7 of 16 by one agent); 0 returns for a stale read and 1 for a merge conflict across their 23 and 21 proposals; the hidden tests passed for 12 and 11 of 16 intents; trunk ended red and two changes per run waited for a person the test did not provide; $0.37 and $0.33
Contention at scale, 200 and 1,000 agents on 10 hot files (results) Staging 200 and 1,000 synthetic agents, no model calls Off Yes, by construction: every task edits one of the 10 hot files, up to 122 intents on one file at once Coordination at scale: 584 of 600 and 1,346 of 3,000 tasks landed, every correctness check exact
Contention at scale from Cloudflare's network, 1,000 agents on 10 hot files, megafile alarm on (results) Staging, driven from a Cloudflare Container 1,000 synthetic agents, no model calls Off Yes, by construction: up to 35 intents on one file at once, every hot file held for a split after six collisions Coordination at scale with the alarm on: 1,151 of 3,000 tasks landed, 0 failed calls, every correctness check exact
Hono replay, 15 of Hono's merged pull requests (16 agents, 8 agents) Staging 16 and 8 in-platform agents on Kimi K2.7 Code, GLM 5.3 Flash, gpt-oss-120b and Gemma 4 On, with tests before landing, certification and a scripted person Little: 0 returned for a stale read with 16 agents Real work end to end: 12 of 15 and 10 of 15 landed, 10 of 15 and 6 of 15 passed the hidden tests

How often overlapping human work conflicts (MEASURED, Hono's merged pull requests, 2025-10-17 to 2026-10-17): of 1,562 pairs of pull requests open at the same time on one branch, 89 (5.7%) changed a common file, which per-file locks would have serialized; stock git conflicted on 20 of the 87 pairs it could replay, and FireTrident's text merge with the insertion rule lands 7 of those 20. Pull requests carry no read sets, so this cannot count the changes git merges cleanly that read-set validation would send back.

The benchmark compares FireTrident with exclusive file locks plus one serialized merge queue on the same workloads; it does not model a queue that tests several changes at once. Every point is labeled measured or simulated: packages/bench/results.

Honest limits

Every measured run

Each run's README, newest first, with its logs and data files beside it.