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 optionalscore, collected_at, model_version, raw_sha256), - lm-evaluation-harness
--log_samplesoutput 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3e3ddbb83d19519ed043d2d4f379f76192310058a7eeb9d894773de3f74bb611
|
|
| MD5 |
4f77eb140f3088cb5d3002c3ed3f81dd
|
|
| BLAKE2b-256 |
191633e2c62e4b6b64de9e1cf0713cb69a91eb730888a126486e18508fdb7b39
|
Provenance
The following attestation bundles were made for limen_eval-0.1.0.tar.gz:
Publisher:
release.yml on KurathSec/limen
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
limen_eval-0.1.0.tar.gz -
Subject digest:
3e3ddbb83d19519ed043d2d4f379f76192310058a7eeb9d894773de3f74bb611 - Sigstore transparency entry: 2284545193
- Sigstore integration time:
-
Permalink:
KurathSec/limen@4eb4a72811e03d8a644c1bf112dd002fda9842b7 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/KurathSec
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4eb4a72811e03d8a644c1bf112dd002fda9842b7 -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d100609c432a25f693a852ac8c7c03f139256e105da6724197c38c3ddf66f173
|
|
| MD5 |
8dcd4bb60ec46e9eb59f82c6a7234dad
|
|
| BLAKE2b-256 |
003afc3d0afe22689fe44665f04ca53582b4b73159d9b8276c4b80b7ef48d3a7
|
Provenance
The following attestation bundles were made for limen_eval-0.1.0-py3-none-any.whl:
Publisher:
release.yml on KurathSec/limen
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
limen_eval-0.1.0-py3-none-any.whl -
Subject digest:
d100609c432a25f693a852ac8c7c03f139256e105da6724197c38c3ddf66f173 - Sigstore transparency entry: 2284545418
- Sigstore integration time:
-
Permalink:
KurathSec/limen@4eb4a72811e03d8a644c1bf112dd002fda9842b7 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/KurathSec
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4eb4a72811e03d8a644c1bf112dd002fda9842b7 -
Trigger Event:
push
-
Statement type: