Evaluation results

SmallDecide is a 0.6B model that scores a supplied set of answers. On a 500-query routing test, it answered 486 correctly in 161 ms median on an M4 Max. The comparisons below cover 33 hosted models, a confidence gate, and a Factorio integration.

Release report (PDF)Data & reproductionCheckpoint ec832471…

Routing results

Each query has eight candidate intents. SmallDecide scores 97.2%, with a 161 ms median and 222 ms p95. Allocating $0.50/hour to a fully utilized M4 Max gives $0.02307 per 1,000 decisions.

Fable 5, GPT-6 Astra, and DeepSeek V4 Pro score higher, at 99.4–99.8%, with longer API response times. Across the full panel, Llama 3.1 8B is fastest at about 100 ms (96.0% accuracy); Command R7B is cheapest at $0.00482 per 1,000 (97.0%).

Full results: 33 hosted models + SmallDecide
500 cases per model. Run conditions are listed below each name; see test setup.
Model / runCorrect / 500Accuracy · 95% Wilson intervalMedianmsp95msCost / 1,000USD
SmallDecide 0.6BM4 Max · warm, sequential486/50097.2% · 95.36%–98.32%161222$0.02307
Amazon: Nova Lite 1.0Original panel493/50098.6% · 97.14%–99.32%4762,969$0.00860
Amazon: Nova Micro 1.0Original panel491/50098.2% · 96.61%–99.05%409545$0.00502
Anthropic: Claude Haiku 4.5Original panel494/50098.8% · 97.41%–99.45%778981$0.16044
Anthropic: Claude Sonnet 5Original panel493/50098.6% · 97.14%–99.32%1,7192,111$0.38084
Claude Fable 5Leading-model run · low reasoning497/50099.4% · 98.25%–99.80%3,2094,232$1.93940
Cohere: Command R7B (12-2024)Original panel485/50097.0% · 95.11%–98.17%228319$0.00482
DeepSeek V4 Pro (0813)Leading-model run · low reasoning499/50099.8% · 98.88%–99.96%3,29412,529$0.44780
DeepSeek: DeepSeek V4 Flash 0731Original panel491/50098.2% · 96.61%–99.05%5675,948$0.00802
Google: Gemini 2.5 FlashOriginal panel493/50098.6% · 97.14%–99.32%468662$0.04047
Google: Gemini 2.5 Flash LiteOriginal panel494/50098.8% · 97.41%–99.45%424558$0.01301
Google: Gemini 3.1 Flash LiteOriginal panel496/50099.2% · 97.96%–99.69%656922$0.03277
Google: Gemma 3 27BOriginal panel496/50099.2% · 97.96%–99.69%292598$0.01417
GPT-6 AstraLeading-model run · low reasoning498/50099.6% · 98.55%–99.89%1,3492,721$1.58390
Meta: Llama 3.1 8B InstructOriginal panel480/50096.0% · 93.90%–97.40%100158$0.03069
Meta: Llama 3.2 1B InstructOriginal panel49/5009.8% · 7.49%–12.72%2,3429,875$0.00858
Meta: Llama 3.2 3B InstructOriginal panel439/50087.8% · 84.64%–90.38%224391$0.00877
Meta: Llama 3.3 70B InstructOriginal panel494/50098.8% · 97.41%–99.45%4161,669$0.02972
Meta: Llama 4 MaverickOriginal panel494/50098.8% · 97.41%–99.45%575932$0.02669
Mistral: Ministral 3 3B 2512Original panel457/50091.4% · 88.62%–93.55%373695$0.01212
Mistral: Mistral Large 3 2512Original panel497/50099.4% · 98.25%–99.80%6281,161$0.06944
Mistral: Mistral NemoOriginal panel483/50096.6% · 94.62%–97.87%312551$0.00551
Mistral: Mistral Small 3.2 24BOriginal panel477/50095.4% · 93.19%–96.92%7002,943—¹
NVIDIA: Nemotron 3.5 LightningOriginal panel480/50096.0% · 93.90%–97.40%137226$0.01051
OpenAI: GPT-4.1Original panel495/50099.0% · 97.68%–99.57%6561,028$0.28076
OpenAI: GPT-4.1 MiniOriginal panel496/50099.2% · 97.96%–99.69%6671,065$0.05615
OpenAI: GPT-4.1 NanoOriginal panel494/50098.8% · 97.41%–99.45%6051,011$0.01404
OpenAI: GPT-4o-miniOriginal panel492/50098.4% · 96.87%–99.19%502685$0.02048
OpenAI: GPT-5.6 LunaOriginal panel491/50098.2% · 96.61%–99.05%1,1453,423$0.03228
OpenAI: GPT-5.6 SolOriginal panel495/50099.0% · 97.68%–99.57%3,4016,904$0.31276
Qwen: Qwen3 30B A3B Instruct 2507Original panel495/50099.0% · 97.68%–99.57%1,8303,262$0.00849
Qwen: Qwen3 8BOriginal panel496/50099.2% · 97.96%–99.69%645849$0.01668
Qwen: Qwen3.7 FlashOriginal panel483/50096.6% · 94.62%–97.87%6491,178—¹
Qwen: Qwen3.8 FlashOriginal panel495/50099.0% · 97.68%–99.57%7432,022—¹

API costs are billed charges; local cost is an allocation estimate. ¹ Missing billing records are marked with a dash. Wilson intervals describe sampling uncertainty, excluding domain shift and benchmark exposure.

Downloads: 30-model JSON, CSV; three-model extension JSON, CSV. Comparison charts.

Confidence gate

The gate accepts SmallDecide’s answer when its maximum candidate probability is at least the fixed threshold. Otherwise it uses the hosted model. On this test, 490 of 500 queries pass locally; ten need a fallback.

Direct API → local gate + API fallback. Costs are USD per 1,000 decisions.
Fallback modelCorrect / 500Paired changesCost / 1,000Median ms
Claude Fable 5497 → 4911 gained / 7 lost$1.9394 → $0.06173,209 → 162
GPT-6 Astra498 → 4921 gained / 7 lost$1.5839 → $0.05481,349 → 162
DeepSeek V4 Pro (0813)499 → 4921 gained / 8 lost$0.4478 → $0.03953,294 → 162

These are replays of recorded requests. All 500 queries were sent to every API during measurement. Accepted queries use their local duration; escalated queries add local and hosted durations. The table estimates a serial gate’s cost and latency, without measuring live queueing or deployed savings.

Threshold and errors

The threshold, 0.8502035140991211, was selected on 200 validation cases before the original test. It accepted 193 validation cases with one error. The test accepted 490 cases with 8 errors: 1.63% accepted-case error, above the 1% validation target. The threshold was not retuned.

Coverage = accepted / total = 98.0%
Accepted risk = wrong and accepted / accepted = 1.63%

The eight accepted errors never reach the fallback. Even a perfect fallback would cap this replay at 98.4% accuracy. Improving that ceiling requires changing the local model or acceptance policy, then testing again on new data.

“Gained” and “lost” count individual cases the gate corrects or breaks relative to the direct API. The results do not establish equivalent accuracy. That claim would require a predefined error margin and a paired analysis with enough independent cases.

Gate method · 30-model gate results · Extension records and replay code

Cost & latency

The local run used 166.105 warm compute seconds per 1,000 decisions. For an hourly allocation h and inference utilization u:

Clocal,1000 = h × 166.105 / (3600 × u)
Cgate,1000 = Clocal,1000 + Cfallback,1000

Fallback cost uses the actual charges for the ten escalated queries, scaled to 1,000 decisions. Multiplying average API cost by 2% would miss differences in their token bills. At 10% utilization, the allocated local cost is ten times the fully utilized estimate.

Cost calculator

Uses the recorded gate decisions. Changing these assumptions does not change accuracy.

Direct API / 1,000
$1.58390
Gate / 1,000
$0.05475

Estimated gate cost: 1/28.9 of direct API cost.

At $0.50/hour, break-even utilization is 1.5%.

Excludes setup, operations, training, and error remediation on both paths; also excludes local model loading and API purchase fees and tax.

Timing conditions

Local timings include tokenization and synchronized warm inference. API timings include network travel, provider scheduling, and generation. Provider GPU types are undisclosed, so this is not an M4 Max versus B200 hardware comparison. Brief ERP probes also ran on the workstation during part of the three-model extension.

With 98% of queries accepted locally, the gate’s p95 can fall entirely within the local path and hide fallback delays. A production test should measure fallback latency, p99, queueing, and cold starts under a stated arrival schedule. Request latency alone does not establish throughput.

Candidate count

Separate H100 80GB microbenchmark; ten warm repetitions.
CandidatesMedian latencyCandidate-token evaluations
218.9 ms244
821.1 ms976
3251.2 ms3,948
128192.7 ms15,908
255374.3 ms31,910

Each candidate repeats the state in its prompt. Compute therefore grows with the candidate count even though no output tokens are generated. These H100 timings use different prompts from the M4 Max test and cannot give a hardware speedup ratio.

Latency and token accounting · Costs and client conditions

Model

The backbone is Qwen3-0.6B, with graph modules after layers 9 and 18. Each candidate is encoded with the state and question. Its score is the margin between the Yes and No logits, normalized using a temperature fitted on validation data.

si = logitYes,i − logitNo,i
pi = exp(si / T) / Σj exp(sj / T)

Choice returns the highest-probability candidate. Score returns the expected zero-based rubric index, Σi i · pi. Noul returns the probability of the positive statement.

Confidence

The API’s confidence field measures distribution concentration: 1 − H(p) / log K. It is not a calibrated probability of correctness. The routing gate uses maximum candidate probability, a different quantity.

Graph modules

Each module has 16 learned nodes of width 128, four incoming neighbors per node, and two message-passing rounds. They read prompt representations and add a residual to the final decision token. The nodes are latent slots, not extracted business entities. Graph parameters and rank-16 LoRA adapters were trained together and merged into the release.

Removing graph message passing left greedy success rates unchanged in the reported native-environment tests. That ablation did not demonstrate a benefit from message passing.

Code: candidate scoring, API outputs, graph modules (repository access required). Ablation results.

Test setup

The release report covers 6,217 test and held-out decisions across 23 task families, including identified regression cases reused from earlier evaluations. This is a coverage count, not a pooled accuracy estimate.

Training and splits

Training used 28,234 prepared decisions from public datasets, verifier-labelled tasks, and redacted local-agent execution examples. Validation selected supervised step 1,400 and RL update 10; separate validation groups fitted temperatures. Split sizes and source hashes are in the release report. Private session rows are not redistributed.

The routing study used 200 validation and 500 test queries, excluding source training text, prepared local split groups, and CLINC groups from the release evaluation. Each query contains the correct intent and seven randomized distractors. SmallDecide was trained on CLINC training data; this test measures eight-way in-scope selection, not full 151-class classification or out-of-scope detection. Foundation-model pretraining exposure is unknown.

API conditions

Original panel · 30 models
Reasoning disabled where supported. One attempt per case, four concurrent requests per model and 24 globally. Default provider routing. The protocol records unavailable entries and the preflight amendment.
Extension · three models
Fable 5, GPT-6 Astra, DeepSeek V4 Pro. Low reasoning effort, 4,096-token reasoning/output cap, four concurrent requests globally. Reuses the already-inspected test set; exploratory results.

All APIs were asked for one compact label. Exact intent-name normalization was accepted across models; numeric-key compliance was recorded separately. Failed requests count as incorrect.

Original protocol · Splits and records · Extension protocol · Release report data. CLINC: Larson et al. (2019), CC-BY-3.0.

Factorio

Two identical circuit factories receive twelve scripted proposals at the same ticks. One executes all of them; the other executes only SmallDecide’s allow decisions. The game’s furnaces, assemblers, belts, and inserters produce the circuits. The runner inserts no finished circuits and does not write production values.

Two Factorio factories after a pole-removal proposal: the unreviewed line loses power while the reviewed line continues producing.Watch the production shift 1 min 41 sec

SmallDecide blocks pole removal before a backup connection exists and allows it after installation. Final dispatch: 583 circuits with review, 482 without. The reviewed factory keeps its 200-plate maintenance reserve and first marks the shipment complete with 558 circuits loaded.

What the model receives

The adapter traverses power and belt connections and supplies textual preconditions. SmallDecide answers action-specific questions over those facts. It does not discover connectivity, plan the factory, or read video frames. The baseline is an execute-all script, not another model.

The film replays recorded decisions at 4× game time. Every intervention’s before/after state and tick matches the original run. The scenario was developed with the model; it is not a held-out reliability test. The first run’s mistakes and subsequent input probes are included in the downloads.

Original trace · Replay states · First run · Source · Reproduction

Audit tasks

In the release’s session execution forecast task, the default threshold detects 6 of 142 failures (4.2% recall). Always predicting success would score 89.0% accuracy. For this task, fault recall and false alerts are more useful than aggregate accuracy.

Synthetic ERP development tasks. No holdout or hosted-model comparison was run.
TaskInitial correct / 48Best prompt / 12 cases
Completion evidence41/4891.7%
Authorization scope28/4875.0%
Expense policy28/4866.7%
Workflow continuation36/4875.0%

Each task’s 48 cases are twelve wordings with four identifier variants, from six paired scenario families. A four-prompt search produced no task meeting the frozen 95% selection target. The separate holdout was left unevaluated.

Proposed follow-up

The next protocol would hold out scenario and template families, include deterministic rules and cheap-model gates, and freeze thresholds before test. It would measure fault recall, false alerts, unresolved cases, paired errors, total cost, and p95 workflow delay. Its targets of 99% fault recall and ≤5% false alerts have not been achieved.

Even those targets can create a large review queue. At an assumed 1% fault rate, 10,000 events would yield 99 caught faults and 495 false alerts: 16.7% alert precision. This is a hypothetical calculation, not a measured SmallDecide result.

Exact thresholds, booleans, and inventory rules also need a deterministic-code baseline. The Factorio adapter already computes connectivity; a useful follow-up must isolate what the learned reviewer adds.

Failure confusion matrix · ERP inputs and results · Proposed protocol

Reproduce

The extension bundle includes inputs, local and hosted records, manifests, the parser, and replay code. The command below verifies hashes, recomputes the validation threshold, and checks direct and gated metrics. It needs Python 3.10+ and httpx; no weights, credentials, or paid API calls.

curl -fLo routing-evidence.zip \
  https://smalldecide.com/evidence/routing-frontier-20260917/evidence.zip
unzip -q routing-evidence.zip -d routing-evidence
cd routing-evidence
python3 -m venv .venv
.venv/bin/python -m pip install httpx
.venv/bin/python tools/reproduce_routing_frontier.py --source .

Rerunning inference requires the checkpoint and a compatible runtime; hosted calls also need credentials and a spending limit. Factorio requires a licensed 2.0.73 installation. Its archive contains no game assets or weights. Shorter examples are also available.

Checkpoint & sources

Routing and Factorio results use the v0.3.0 checkpoint with SHA-256:

ec83247177a6919c17944093fdd02d3258906dc809c16b326e0dfd879275efeb

The public-data checkpoint (f64a7763…) has a separate report. Its results are not included here. Tables are generated from source JSON; the build verifies source and media hashes.

Evidence downloads are public. Repository and checkpoint downloads require GitHub access. Data attribution and code licensing are recorded in the bundles. Factorio is made by Wube Software; this is an independent demonstration.

Related: training and evaluation guide.

SmallDecide was previously named OpenAuditor. Original recordings and reports use the earlier name.