Skip to main content

The same-configuration noise floor of an evaluation: per-item verdict flakiness, model-pair sign-stability rulings, and a CI gate, from the repeated runs you already have.

Project description

limen

The same-configuration noise floor of an evaluation, and whether a published ranking clears it.

limen turns a directory of repeated identical evaluation runs into the three numbers that decide whether a comparison is real: the fraction of items whose pass/fail verdict is not constant across identical repeats, the noise floor a claimed improvement has to clear at the k you actually ran, and how often a leaderboard computed from a single run disagrees in sign with the leaderboard computed from all of them. These are emitted as per-pair SIGN-STABLE / SIGN-UNSTABLE rulings with every denominator shown, plus a CI gate that fails a benchmark report claiming a gain smaller than that report's own measured draw noise.

What it does not do, and this is the whole boundary of the instrument: it makes no statement about which model is better. A sign flip means "this comparison is not supported by its own measurement", never "the other one wins".

The quantities are not new, and the docs say so up front: the constant-verdict fraction upper-bounds TARa@N (Atil et al.), the rank-flip rate is IR's swap rate, psychometrics calls the per-item question decision consistency, quality engineering has had it for seventy years as attribute agreement analysis, and genomics' IDR is the exclude-then-re-rank step. The literature exists. An installable instrument did not. That is the whole claim.

Install

pip install limen-eval

Zero runtime dependencies, Python >= 3.12. The distribution is named limen-eval (the bare name was taken); the import and the CLI are limen.

90 seconds

# a synthetic archive whose right answers are chosen (the instrument's oracle)
limen synth --out demo --models 3 --items 500 --draws 8 --flaky-fraction 0.05 --gap 0.02

# repeated-run logs -> a versioned ruling document
limen report demo/archive.verdicts.csv.gz --out demo-report

# fail CI when a claim does not clear its own noise
limen gate demo-report/report.json --require-sign-stable --min-effect-vs-noise 1.0

limen report reads:

  • a generic long-format CSV (model, task, item_id, draw_id, verdict, plus optional score, collected_at, model_version, raw_sha256),
  • lm-evaluation-harness --log_samples output trees (run the harness at least twice, or with repeats: limen needs k >= 2 draws per item),
  • inspect_ai .eval logs at the per-epoch layer (each epoch is one draw; no inspect_ai dependency needed).

The ruling document

One deterministic JSON document per archive: per-(model, task) flakiness with always-pass / always-fail / mixed counts, the spread of the k single-draw scores with a minimum detectable difference at the observed k (after Kalibera & Jones), per-pair sign-stability rulings with drawn ties counted separately, a stable-items-only re-ranking that ships only together with its selection-bias mitigations, a drift guard whose missing-field state is UNAVAILABLE and never PASS, and a grader-defect count (verdict flips on byte-identical output are the grader's flakiness, not the model's). Regeneration from the same input is byte-identical. Rulings are versioned and immutable.

GitHub Action

- uses: KurathSec/limen@main
  with:
    report: limen-report/report.json
    require-sign-stable: "true"
    min-effect-vs-noise: "1.0"

Status

Alpha. The measurement definitions are frozen behind a versioned rulings spec (limen spec list); changing any recorded meaning is a spec version bump, not a patch. See docs/honesty.md for the full list of things this instrument deliberately does not claim.

License

MIT.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

limen_eval-0.2.0.tar.gz (1.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

limen_eval-0.2.0-py3-none-any.whl (95.9 kB view details)

Uploaded Python 3

File details

Details for the file limen_eval-0.2.0.tar.gz.

File metadata

  • Download URL: limen_eval-0.2.0.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for limen_eval-0.2.0.tar.gz
Algorithm Hash digest
SHA256 ce9880ad3e294e214b0505674d803477b13bae431447fded15c207dd9cac9212
MD5 ffc5e3fb289ec7ca54399ee6ec8107aa
BLAKE2b-256 0b55d0d6369ae57016eac316342c8c99e59f16a58cccf069a7a69fb1650a61cc

See more details on using hashes here.

Provenance

The following attestation bundles were made for limen_eval-0.2.0.tar.gz:

Publisher: release.yml on KurathSec/limen

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file limen_eval-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: limen_eval-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 95.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for limen_eval-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3f41b4afe95b35a22d4afd43992bed1ee575b5bd45300ce3fbaab9b62379db6e
MD5 3d2aa9a53f4ad6fe5203a3ef99d28b75
BLAKE2b-256 38b7252a3e317fa746166b7a53507f581202b4936fbcb6ff2d475f16ba7fb218

See more details on using hashes here.

Provenance

The following attestation bundles were made for limen_eval-0.2.0-py3-none-any.whl:

Publisher: release.yml on KurathSec/limen

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page