Skip to main content

sys1bench

PyPI Python CI License Tests Status Results

sys1bench benchmarks System One decision models: non-autoregressive models that read a block of state plus typed questions (choice, score, noul) and return a calibrated probability distribution in one forward pass, instead of generating text. The first two such models are TypeSafe's hosted Jev and Convai's open-weight Laya; the harness is model-agnostic so the next ones plug in through an adapter or a YAML file.

It answers the questions a vendor scorecard does not: whether the model beats trivial baselines on the same items, whether its accuracy depends on how the question is worded, whether its probabilities mean anything and in which direction they are wrong, whether confidence can gate actions, how it degrades with option count, state length, noise and out-of-scope inputs, whether batching questions changes answers or only cost, and what all of it costs per 100k decisions.


Why another benchmark

Existing practice sys1bench
Public datasets the models may have trained on Generated items whose label follows a stated policy the model must apply, plus paired control arms (unknowable, label-noise, distractor, none-of-the-above)
One accuracy number per task Accuracy as the median over five paraphrases and three criteria variants, with the range shown
Raw ECE at one binning ECE divided by its resampled noise floor, smooth CE, Brier decomposition, clipped NLL, quantisation report, per-half temperature refit
Hosted and local latency on one axis Separate sections; device recorded on every row; a local model that lands on CPU when CUDA was requested aborts the run
Seeds as the unit of variance Item-level paired bootstrap, McNemar, cluster bootstrap over framing groups
Silent fixes Renormalisation, truncation, abstention and vendor rejections are recorded as rates, never patched over

Install

pip install sys1bench                 # core: numpy, scipy, pandas, pydantic, httpx, typer
pip install "sys1bench[plots]"        # + matplotlib for reliability / risk-coverage / framing plots
pip install "sys1bench[laya]"         # + the laya package (needs torch; GPU recommended)
pip install "sys1bench[local]"        # + torch, transformers, sentence-transformers baselines

From source: git clone https://github.com/rssr25/system-one-bench && cd system-one-bench && uv pip install -e ".[dev]".

Quickstart (offline, two minutes)

sys1bench generate support_tickets tickets.jsonl --n 200 --seed 42
sys1bench run tickets.jsonl preds.jsonl --adapter mock --framings support_tickets --permutations 3 --corruption --short-circuit
sys1bench run tickets.jsonl prior.jsonl --adapter majority_prior
sys1bench score preds.jsonl prior.jsonl --out summary.json
| model             | acc (median) | acc range      | ECE/floor | ECE15 | Brier | AURC  | cov@5% | T     | perm JSD | p50 ms |
|-------------------|--------------|----------------|-----------|-------|-------|-------|--------|-------|----------|--------|
| mock-v1 / queue   | 0.783        | [0.783, 0.795] | 2.736     | 0.124 | 0.387 | 0.214 | 0.000  | 1.070 | 0.182    | 5.9    |
| mock-v1 / priority| 0.750        | [0.750, 0.752] | 3.614     | 0.096 | 0.438 | 0.195 | 0.004  | 1.271 | –        | 5.9    |

Run it on a real model

# Jev (hosted, first-party API)
echo 'TypeSafe_API_KEY=...' > .env
sys1bench canary jev_typesafe --model jev-1.13.0                        # 200 fixed items; drift baseline
sys1bench suite all results/jev --config configs/models/jev_1.13.yaml --n 500 --concurrency 4

# Laya (local; same manifests as Jev so the comparison is item-for-item)
sys1bench suite all results/laya --config configs/models/laya_en.yaml --manifests-from results/jev --budget

# Report, LaTeX tables, HTML dashboard and plots for everything under results/
sys1bench report results --latex results/tables.tex --html results/dashboard.html
sys1bench plots results

suite takes any subset of A C D E F G I (or all) and writes into results/<name>/ and results/<name>_sweeps/; every request is cached, so re-running is free, and a local model that lands on CPU when CUDA was requested aborts and is retried rather than silently measured. The scripts/ directory keeps shell equivalents.

results/REPORT.md contains, per model: the headline table above, ordinal fidelity for score questions, the framing table (paraphrases, label-only, with negatives, vague, swapped descriptions), decomposition, control arms and audits, then the sweep tables (cardinality, length, interference, robustness, prior shift, option budget), and cost. results/plots/ overlays every model on the same reliability, risk-coverage and framing-range axes.

Adding your model

Your model What to do
Hosted, conventional JSON decisions API Copy configs/models/example_future_vendor.yaml, fill in URL, auth env var and field names. No code.
Anything else Subclass BaseAdapter: declare capabilities (primitives, max options, state tokens, native abstain, batching) and implement decide (state + typed questions in, one probability vector per question out). Register with @register("my_model") or the sys1bench.adapters entry-point group from your own package.

Capability limits are declared, then measured: a request outside them is recorded as a capability_issue or rejected_by_vendor row, never a crash.

Suites

Suite Question it answers Key outputs
A Calibration & selective prediction Do the probabilities mean what they say? Can confidence gate actions? ECE/floor, smooth CE, Brier, NLL, temperature refit, AURC, coverage@risk, abstention, unknowable arm
B Framing sensitivity Is the accuracy a property of the model or of the wording? median [min, max] over paraphrases, criteria variants, corruption drop, decomposition gain
C Scaling How does it behave with 2 to 255 options, 128 to 32k tokens, and (Laya) option budgets? accuracy / ECE / latency curves, rejection kinds
D Robustness Distractors, casing, typos, homoglyphs, out-of-scope inputs, prior shift Δ accuracy, JSD to clean, AUROC of confidence, abstention with vs without the option, P(yes) vs base rate
E Interference Does co-asking other questions change an answer? What does batching cost? JSD vs alone, flip rate, latency and cost per question vs Q
F Ordinal probes Does score behave like an ordinal scale? monotonicity along severity ladders, 3/5/10-level scale invariance
G Noul consistency Is P(yes) a probability? complement consistency under negation, choice-vs-noul agreement, threshold portability across tasks
I Decision value What does calibration buy downstream? cost per 10k decisions under argmax / Bayes / escalate policies from the manifests' cost matrices
Audits Is the benchmark itself sound? state-only / options-only short circuits, leakage, positional bias, label-noise control

First results

Jev 1.13.0 and Laya 0.3.4 (english and typed-decisions) on identical Tier G manifests, n=500, 22 September 2026. Findings F1 to F9 with caveats: docs/RESULTS_2026-09-22_narrative.md; generated tables: docs/RESULTS_2026-09-22.md.

accuracy across framings, ticket priority reliability diagram, ticket priority

Headline: both models saturate the easy choice and noul questions; the policy-following score questions are where they separate. Jev is more accurate on every choice and noul question, reads lookup tables and numbered policies at 1.00, is language-independent, and keeps answers independent of co-asked questions, but it is strongly over-confident on scores (refit temperature 3.8 to 4.1), its ticket-priority accuracy moves from 0.39 to 0.53 with wording alone, and under a 20:1 cost matrix acting on its probabilities is worse than argmax. Laya is under-confident on scores, beats Jev on 4-level urgency (typed-decisions 0.79 vs 0.48), has a cleaner out-of-scope signal, but collapses with option count, on JSON records, on Devanagari, and under negation, and its latency grows linearly with batched questions. A fine-tuned DistilBERT trained on a disjoint seed scores 1.00 on every question, so every current label is learnable from surface features; the System One models' failures are failures to apply stated policies zero-shot. Sixteen findings with numbers are in the narrative.

Documentation

Layout

src/sys1bench/
  schemas.py      manifest v2, DecisionRequest/Response contract, ModelCapabilities
  adapters/       mock, jev_typesafe, jev_openrouter, laya_local, generic_http, hybrid_router, encoder_finetuned, baselines
  metrics/        calibration, selective, ordinal, consistency, robustness, efficiency, decision_value
  generators/     support_tickets, phishing_email, rag_relevance, log_triage, policy_compliance, guardrail_intent,
                  multilingual_tickets (paired control arms, regex rules, cost matrices)
  framing/        paraphrase / criteria expansion, corruption, permutation, short-circuit, decomposition, perturbations, prior shift
  runners/        cached runner (reparse-from-raw), canary, sweeps, robustness
  analysis/       paired bootstrap, McNemar, Holm; audits; decomposition; control arms
  report/         scorecards, results document, plots
  data/           packaged framing sets and the 200-item drift canary
  cli.py          suite | generate | run | score | canary | sweep-* | interference | robustness | noul-consistency |
                  ordinal-probes | decision-value | hybrid-sweep | report (--latex, --html) | plots

Citing

If you use sys1bench, please cite the repository and the results document with the model versions and date; the vendor models move, so the version string returned by the provider is part of every row.

License

Apache 2.0. Generated data, framing sets and results are released under the same license.

Release files for sys1bench 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sys1bench 0.3.0
File Size Uploaded
sys1bench-0.3.0.tar.gz 147.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sys1bench 0.3.0
File Interpreter ABI Platform
sys1bench-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 314.7 kB

Release files / sys1bench-0.3.0.tar.gz

Download URL sys1bench-0.3.0.tar.gz
Size 147.0 kB
Tags Source
SHA-256 checksum
How to use checksums
9aac62048cede4b57c7d7a3f6fce80872e9293142ba1abfcd260b5bbbb74a734
BLAKE2b-256 checksum
How to use checksums
7d69e9c7dffe85db6c16ce910bb3fe38ea5bc272714e865d698007b4cfbe485f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 22, 2026.

Transparency log

Release files / sys1bench-0.3.0-py3-none-any.whl

Download URL sys1bench-0.3.0-py3-none-any.whl
Size 167.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f44aa45108fd6b4ecad13abfb697ef703c83683bf4ceb8761bc6cc8d011d9236
BLAKE2b-256 checksum
How to use checksums
40d4bb87bc99cf268924c90640ff80c703538eb0e2d67b1fe699f5af155a93f9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 22, 2026.

Transparency log

Release history Release notifications | RSS feed

0.3.2

2 release files

0.3.1

2 release files

This release

0.3.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page