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).

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.1.0.tar.gz (100.7 kB 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.1.0-py3-none-any.whl (65.8 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for limen_eval-0.1.0.tar.gz
Algorithm Hash digest
SHA256 3e3ddbb83d19519ed043d2d4f379f76192310058a7eeb9d894773de3f74bb611
MD5 4f77eb140f3088cb5d3002c3ed3f81dd
BLAKE2b-256 191633e2c62e4b6b64de9e1cf0713cb69a91eb730888a126486e18508fdb7b39

See more details on using hashes here.

Provenance

The following attestation bundles were made for limen_eval-0.1.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.1.0-py3-none-any.whl.

File metadata

  • Download URL: limen_eval-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 65.8 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.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d100609c432a25f693a852ac8c7c03f139256e105da6724197c38c3ddf66f173
MD5 8dcd4bb60ec46e9eb59f82c6a7234dad
BLAKE2b-256 003afc3d0afe22689fe44665f04ca53582b4b73159d9b8276c4b80b7ef48d3a7

See more details on using hashes here.

Provenance

The following attestation bundles were made for limen_eval-0.1.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