Reflex · modelless is built for latency and selective accuracy (right when it answers, abstains when it can't) — not raw accuracy against a neural model. Judge it on those axes. See it play →
The full primer — the Jev wire, prefill, macro-F1, the Jev Decision Index — is on Resources.
Filter lanes — applies to every chart and table (remembered).
Chance-corrected so suites with different option counts share a radius — 0 = random guessing on that suite's options, 1 = every question right. Two views: one spoke per area (the decision index), one per benchmark.
Where Cloudflare's Clef-flash (9B) lands against our lanes on the same splits — every measured row digest-pinned to one population; the JDI board's own rows quoted as reference only.
Decision quality per millisecond — the cc index against the p50 latency geometric mean, one dot per lane. The view no leaderboard in this space publishes; it is where a modelless engine's story is visible. Timing methods differ per lane — the table below says which clock each number comes from.
How each lane's request time was recorded — two clocks never pool silently. The p50 geometric mean is taken over exactly the suites behind the lane's index, and only over cells the run's own box check judged quotable (unfit timing stays visible in the suite tables, marked †, but is never plotted).
The System One Mosaic Benchmark (S1MB) asks a model to judge — pick an answer, rate a reply, or say true/false — across thousands of everyday tasks. We bench our three serving lanes on it with our own scoring: every lane reads the same halves of the same questions and is scored on the share it gets right. That share is not comparable to S1MB's own leaderboard number, which uses a different scoring scale we don't publish. A missing cell is a disclosed gap, never a zero.
Charts first; open a suite's table for every metric, the G1 calibration verdict and the gate fit.
loading data/bench.json …
Instinct (gist-rs/riir-instinct) is Reflex's trained sibling: per-domain specialist models — distilled, pinned by a BLAKE3 digest checked at every load, hot-swapped as whole artifacts — composed on top of the free engine, never instead of it. That is the family's rung model: each rung answers only what the rung below is not confident about — you pay for thinking, never for re-answering what the free floor already knows — so a fallback to Reflex or Instinct is the design, not a miss. Rethink is the same family's hosted rung (rethink.riir.ai) one level deeper; its open race is against the other published lanes, and wins, ties and losses all stay visible below. The arena TL;DR stays Reflex's until the rung stack is the best published lane on every suite it covers.
Naming: the lane names carry no qualifier — Instinct is the hybrid (serving) lane, Rethink the encoder arm — Rethink is the separate hosted product (rethink.riir.ai; its source is private). Rethink is measured on a subset of suites so far (record-only: the encoder class is refused at serve), so its radar draws a dot only where its own arm measured and a triangle (▲) where the served tier answers — the coverage count beside its row names its own measured suites, and the row never reads below the product it belongs to. Where its own arm measured below the seated one, the served answer shows (↩, the answering arm + the encoder's own read on hover); where it reads ahead, the violet record cell stands — results land as the encoder serving deploy exists.
1 · The same typed question
Your app sends the same typed question it would send the free engine: a state plus questions — choice, score or yes-no. This spot question is one the game heads know.
IN · POST /decide
{
"state": "The piece leaves no holes under it on the left edge, sits flat on the surface, and the stack stays low.",
"questions": [
{
"id": "clean",
"kind": "noul",
"prompt": "Does the stack look clean?"
}
]
}captured from the reflex 0.2.4 release binary, 2026-10-03 · POST /decide (answered request)
2 · The free floor answers first
Reflex runs before anything paid: embed, route to the corpus, score every option, and the fused gate checks confidence. On this harder triage question the gate abstains — every outcome comes back null — and that abstain is what pays the rung above.
IN · POST /decide · a harder question
{
"state": "The staging deploy of release candidate 4.2 finished but the error budget is down to 12 percent and two health endpoints are flapping after the rollout. Rollback is one command. Decide what happens next.",
"questions": [
{
"id": "route",
"kind": "choice",
"prompt": "Route this ticket to the team that owns it.",
"options": [
"deploy-ops",
"billing-support"
]
},
{
"id": "promote",
"kind": "noul",
"prompt": "Should the rollout be promoted to production right now?"
},
{
"id": "severity",
"kind": "score",
"prompt": "How severe is this situation?",
"options": [
"routine",
"needs-attention",
"critical"
]
}
]
}captured from the reflex 0.2.4 release binary, 2026-10-03 · POST /decide (abstained request)
OUT · not sure: the abstain that pays the rung
{
"answers": [
{
"question_id": "route",
"outcome": null,
"probabilities": [0.52583224, 0.47416782],
"confidence": 0.0019263625
},
{
"question_id": "promote",
"outcome": null,
"probabilities": [0.49452087],
"confidence": 0.00008660555
},
{
"question_id": "severity",
"outcome": null,
"probabilities": [0.3601853, 0.2878931, 0.35192165],
"confidence": 0.004379213
}
],
"routing": {
"lane": "modelless",
"reason": "modelless corpus routing: ops=3 support=0; fused abstain (score+distance) armed; drafter-only=1"
},
"calibration": {
"method": "none",
"temperature": 1.0
}
}captured from the reflex 0.2.4 release binary, 2026-10-03 · POST /decide (abstained response)
3a · Sure — the specialist is never paid
When the floor is sure, the answer goes straight back with calibrated confidence and a receipt, and no specialist is consulted. That is the rung model: you pay for thinking, never for re-answering what the free floor already knows.
IN · POST /decide
{
"state": "The piece leaves no holes under it on the left edge, sits flat on the surface, and the stack stays low.",
"questions": [
{
"id": "clean",
"kind": "noul",
"prompt": "Does the stack look clean?"
}
]
}captured from the reflex 0.2.4 release binary, 2026-10-03 · POST /decide (answered request)
OUT · sure: outcome yes
{
"answers": [
{
"question_id": "clean",
"outcome": {
"noul": {
"yes": true
}
},
"probabilities": [0.51943666],
"confidence": 0.51943666
}
],
"routing": {
"lane": "modelless",
"reason": "game-head/tetris (corpus-fitted, decoded arm)"
},
"calibration": {
"method": "none",
"temperature": 1.0
}
}captured from the reflex 0.2.4 release binary, 2026-10-03 · POST /decide (answered response)
3b.1 · Prune to the candidates
Only the abstained question goes on. The survivors are pruned to the top candidates so the rung above scores a handful of options, not the whole list.
3b.2 · The specialist scores
A per-domain specialist — a locked artifact whose digest is checked at every load — scores the candidates. Selection is a monotonic hot-swap of whole artifacts from the manifest: never a weighted blend, because blends do not preserve rankings.
3b.3 · Fuse into one calibrated answer
The composition fuses the floor's read with the specialist's: a cascade pick, or prior fusion lifting the calibrated favourite. A confident pick returns as the answer, receipt attached.
4 · Still unsure — one rung deeper ○ illustrative · planned
Where the bag view reads too coarse, a trained encoder head thinks — GPU-hosted, weights on our hosts only. It is measured on the benchmark board today, record-only: the hosted lane opens later, and this is the public request it would carry.
IN · the abstained question, sent up
{
"state": "The staging deploy of release candidate 4.2 finished but the error budget is down to 12 percent and two health endpoints are flapping after the rollout. Rollback is one command. Decide what happens next.",
"questions": [
{
"id": "route",
"kind": "choice",
"prompt": "Route this ticket to the team that owns it.",
"options": [
"deploy-ops",
"billing-support"
]
},
{
"id": "promote",
"kind": "noul",
"prompt": "Should the rollout be promoted to production right now?"
},
{
"id": "severity",
"kind": "score",
"prompt": "How severe is this situation?",
"options": [
"routine",
"needs-attention",
"critical"
]
}
]
}captured from the reflex 0.2.4 release binary, 2026-10-03 · POST /decide (abstained request)
5 · The manifest hot-swaps arms
arsenal.toml is the one selection surface: a specialist joins only where it beat free Reflex on one frozen test read, and it is swapped whole — a decision always observes one whole server.
loading the Instinct verdicts from data/bench.json…
Reflex · modelless — no neural weights: decisions come from a per-label corpus plus a
fitted sigmoid gate, so it answers in micro-seconds and is bit-deterministic on a given build.
laya (rust) — our Rust port running the open-weights laya checkpoints on the local GPU
(device noted per run: Metal, or the Apple Neural Engine where the lane serves it).
laya (python) — the original torch reference, driven as a subprocess oracle on the same cases.
clm — the external Contrastive-LM reference (Apache-2.0, not affiliated): Qwen3-8B pooling + trained heads, served on its own stack and measured on ours — a comparison lane
(full detail in the clm entry below).
gliner — the external GLiNER2.5-Decide zero-shot classifier (Apache-2.0, not affiliated, 340M DeBERTa-v3 encoder):
their gliner2 package answers the same candidate-label questions — a comparison lane, never a product lane.
agentjev — the external AgentJev-0.6B typed-decision specialist (Apache-2.0, not affiliated, Qwen3-0.6B backbone):
their service answers over HTTP, measured gold-label on our split — a comparison lane, never a product lane.
Instinct — the trained-specialist hybrid (open source: riir-instinct): a distilled specialist (pinned by a BLAKE3 digest checked at load) composed with
Reflex — the modelless lane's fused gate decides when to consult it; the cell is the registered arm's single frozen test read
over the same seat and protocol as every other lane (per suite, only where a hybrid arm won pre-registration).
Rethink — the same family's encoder arm, served by the hosted Rethink product (record-only: the encoder class is refused at serve, so it is
measured on a subset of suites so far and its row discloses the partial coverage). Where the encoder's own read sits
below the seated arm's, the row shows the served answer with the ↩ fallback mark and the encoder's read in the note
(best-of-family); where it reads ahead, the violet record cell stands on its own measurement.
openthai — the external OpenThai-SystemOne decision specialist (Apache-2.0, not affiliated, Qwen3.5-0.8B backbone):
their FastAPI service answers the same decision questions, measured gold-label on our splits — a comparison lane, and the board's Thai-capability row.
paw — the external ProgramAsWeights compile-a-classifier lane (MIT SDK, not affiliated): one neural program compiled
per question shape from our committed spec, answered over their hosted REST — or through their local llama.cpp runtime as the
paw (local) posture — a comparison lane, never a product lane (free-text answers under the exact-match law, so it
carries no confidence columns).
clef-flash (9B) · local — Cloudflare ships two Clef decision models (not affiliated): Clef (27B) and Clef-flash (9B).
This lane is Clef-flash (9B), measured as their open weights rather than their hosted API: the community 4-bit quant
(mlx-community/clef-flash-4bit) served on our box behind a loopback shim — a comparison lane, never a product lane.
Clef (27B) is not on the board: its hosted posture is a future owner-gated cell.
CLM (Contrastive Language Models) is an external, unaffiliated research project — an Apache-2.0
"System One" decision model (Kwok, Kang, Suresh, Saad-Falcon, Pavone, Ré, Mirhoseini —
github.com/Contrastive-LM/CLM ·
project blog). Architecture: a frozen Qwen3-8B
encoder with last-token pooling plus ~20M-parameter state/action heads trained with a contrastive
(InfoNCE) objective, so a softmax over state–action scores is the answer distribution.
These rows use their reference head CLM-v0.1-8B (75 MB,
on Hugging Face).
How we measure it: their stack serves, ours measures. The lane runs on the 4090 box — one vLLM
Qwen3-8B pooling server plus clm-serve (the heads) behind their TypeSafe-compatible
/v1/systemone endpoint — and our harness drives it with the same byte-identical
questions as every other lane. Their prompt/prose rendering is byte-pinned against the reference
implementation (goldens generated from their own Python at the pinned commit cca045ff),
so the comparison is their rendering law, not our paraphrase of it. Latency figures include the
HTTP round-trip, and their published "9× vs Jev" speedup — measured against Jev's remote endpoint,
network included — deliberately does not carry into these tables. CLM is a comparison lane only:
it is not part of Reflex and ships in no release; accuracy columns compare it exactly as they
compare everyone else.
Some laya (rust) runs serve from the Apple Neural Engine — the encoder executes as one compiled whole-graph Core ML model per length bucket (BC1S, FP16), while the gather and the decision head stay host-side. FP16 math fails a bit-level drift bar by nature, so the ANE rows are gated the way every device row should be: decision-level — top-1 agreement against the frozen reference captures (gate ≥ 99.9%), and every argmax flip must sit inside the near-tie band (the reference's own top-2 margin < 0.04). Every flip, near-tie or not, is listed — never hidden. Probability drift is published as observation, never as a gate. Sequences longer than the largest bucket are served by the other devices and named as skips on the ANE row.
It is corpus-bound by design: out-of-domain text lands near chance, and those rows are published rather than trimmed. Its axes are latency and selective accuracy — how right it is on the questions it chooses to answer (acc@50cov, abstain / sel-acc) — not raw accuracy against a neural model.
Where the gap was the scorer rather than the domain, it closes. Per-label count tables (naive-Bayes log-odds over the train rows, plus a sentence-pair view for premise/hypothesis tasks) are cal-selected per suite, and the test split is read once. When count tables landed this took several suites to or past the laya lanes at the same sub-millisecond latency. 2026-10-01 correction: the modelless cells published 2026-09-28..30 were measured on a silently truncated 4,000-row-per-suite corpus pull while every posture they serve was selected on the full pools — the board read up to 42 points low on five suites through no engine change. Both hosts were re-run on the rebuilt full pools (every cell now carries a corpus digest; the board change log keeps the record), and the earlier numbers are restored — banking77 now reads above its count-table-era cell, a real engine gain. The test split never enters a corpus. A separate transductive line under each table shows what happens if the engine may also read the test text (self-labelled, gold never read): it adds nothing, because the train rows already carry the vocabulary.
They should be: the rust lane is a port of the same checkpoints and is checked against the python oracle's own outputs per suite. What differs is latency — and the python figure includes the subprocess round-trip (IPC).
@m3-max-metal than on @4090-win?The openthai model reads every option as prompt text — the input template
inlines each option (<|ts_opt_i|> option: description) and one forward scores all 256 slots at the
answer position, so per-question cost scales with option count. massive carries 59 options
(~203 tokens/question) vs xnli's 3, and on MPS fp32 that prices at — per option
(—/question, p50). The 4090 prices the identical prompts at — — same design, same accuracy
(— on both hosts), — cheaper tokens. Every figure here is read from the
massive_intent_en openthai cells in the table above. Verified as real, not box contamination:
a preflight-passed exclusive-GPU re-read reproduced the number within 5% and made every
@m3-max-metal openthai cell quotable from its own run.
The lanes are orders of magnitude apart. On a linear axis every modelless bar would be invisible; on the log axis each gridline is 10×, so bar length compares ratios, not differences. When a lane lands far past the readable range the axis breaks — the same slanted break sign the sizes chart uses: the log axis runs to 500 ms over most of the track, and a bar past the sign continues on a compressed scale, its exact value on the cell and in the tooltip.
acc@50cov is accuracy on the half of the questions the lane is most confident about. abstain / sel-acc is the fraction the calibrated gate declined to answer, and the accuracy on the rest.
G1 gates calibration honesty only: does the fitted confidence beat both the raw readout and the conformal-naive floor? It is not an accuracy gate. FAIL means the calibrator had nothing to improve; NO CLAIM means it never fitted (the calibration window was too thin) — neither means the answers got worse.
That lane did not run on that suite (for example, a suite that only the LLM lane can answer). A missing bar reads "not run", never zero.
No. Charts and tables are both drawn in your browser from data/bench.json, which is generated from the harness output. Re-publishing that file re-draws everything.
Retired (owner call, 2026-10-02): on the honest wide-eval populations (96–100 cases, template-disjoint) the modelless engine read at chance on them, so the suites were deleted from the reflex harness and the board rows went with them — the old small-suite rows were template-shared and read high (the verdict record: HISTORY.md). The quarantined caveat page that used to carry the lanes' record was removed in the same call; its data never entered this board's areas/cc/index math.
@host tag (chip + device):
@m3-max-metal is this page's baseline machine serving the laya lane from
Metal, @4090-win is a different box, and @m3-max-ane is the same M3 serving
the laya lane from the Apple Neural Engine — a device row (laya lanes only; the modelless
lane uses no neural device and always reads from the @m3-max-metal row). Hardware for
every box: Machines below.cc = (acc − chance)/(1 − chance)): 0 = random guessing on that suite's options.
A negative cc is real and stays negative — the ▾ / hollow-dot mark says the lane scored
below random guessing on that suite, and it pulls the lane's area means and index down by design
(the published scale string in data/bench.json says the same). Each edition of the table pins its
chance basis by digest; the label rides meta.edition.loading data/changes.json …
cca045ff) · head
CLM-v0.1-8B ·
project bloggliner2 package · GLiNER2 paper
arXiv:2507.18546@host@m3-max-metal / @m3-max-ane — MacBook Pro (Mac15,8): Apple M3 Max —
16-core CPU (12 performance + 4 efficiency), 40-core integrated GPU (Metal 4), 64 GB unified
memory, macOS 26.6.2. One machine, two device rows: @m3-max-metal serves the laya lane from
Metal; @m3-max-ane is the same box with the encoder compiled as a whole-graph Core ML
model on the Apple Neural Engine (FP16, decision-level gated — see the ANE entry above).@4090-win — desktop, Windows 11 Pro: Intel Core i7-13700K (16 cores /
24 threads), 32 GB RAM, NVIDIA GeForce RTX 4090 (24 GB GDDR6X, driver 610.62). Serves the
@4090-win laya rows (CUDA) and the clm reference lane (vLLM Qwen3-8B pooling +
clm-serve heads), so those lanes share this box's silicon and thermals.Not affiliated with, or endorsed by, TypeSafe AI; Jev is their product, named only to compare against. The laya lane loads Apache-2.0 checkpoints from the brainfunctioncollapse laya Hugging Face repositories at runtime — unmodified, SHA-256-verified, never redistributed.