synthetic-disagreement
Stress-test an inter-annotator agreement pipeline with deterministic synthetic reviewer labels.
synthetic-disagreement is for annotation leads, evaluation methodologists, and test engineers who want to exercise calibration code before collecting real labels. It provides uniform, biased, ordinal-slip, adversarial, and drift noise models, then feeds generated rating matrices into iaa-kit to show how agreement changes as noise increases.
Inspectable Output
- Python API:
generatereturns a deterministic mapping keyed by(item_id, rater_id). - Installed CLI
generate: a JSON report whoselabelsrows contain item id, rater id, generated label, noise model, seed, andsynthetic: true. - Installed CLI
stress-curve: a JSON report whosecurvepoints contain noise level and Fleiss kappa agreement, with an optional deterministic SVG.
The same inputs, seed, model, and levels produce the same output.
Runtime Boundary
Generation and stress curves run entirely in the local Python process with NumPy and iaa-kit. There are no network requests, model calls, reviewer services, telemetry hooks, or uploaded task data.
Install
Python library and CLI:
python -m pip install synthetic-disagreement==0.1.2
Python API Quickstart
python - <<'PY'
from synthetic_disagreement import UniformNoise, generate
labels = generate(
[{"item_id": "1", "label": 1}],
["r1", "r2"],
UniformNoise(rate=0.2, seed=7),
[0, 1],
)
print(labels)
PY
CLI Quickstart
synthetic-disagreement generate \
--items examples/synthetic_items.json \
--raters r1,r2,r3 \
--noise-model uniform \
--rate 0.2 \
--seed 7 \
--out synthetic-labels.json
synthetic-disagreement stress-curve \
--items examples/synthetic_items.json \
--raters r1,r2,r3 \
--noise-model uniform \
--levels 0,0.25,0.5 \
--seed 7 \
--out agreement-curve.json \
--svg-out agreement-curve.svg
See docs/methodology.md for noise-model and data-policy details.
Release Status
Registry and artifact status verified July 13, 2026: version 0.1.2 is published on PyPI and tagged v0.1.2 in the public repository. The wheel includes the Python API plus the JSON and SVG CLI. The project is alpha software. No reviewer-volume, quality, or adoption claim is made.
Limits
Synthetic noise is a test fixture, not a model of every real reviewer population. The generated curves do not replace pilot annotation, reviewer training, adjudication, or empirical agreement studies.
Next Action
Use the Python API or installed CLI to generate seeded labels or a stress curve, confirm the pipeline responds as expected, then compare the result with a real pilot annotation study.
Metadata
Release files for synthetic-disagreement 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| synthetic_disagreement-0.1.2.tar.gz | 9.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| synthetic_disagreement-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 20.6 kB
Release files / synthetic_disagreement-0.1.2.tar.gz
| Download URL | synthetic_disagreement-0.1.2.tar.gz |
|---|---|
| Size | 9.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4a4aa52dd1235cb4c178ecd7a0ab8a822b4ce4f2ebd037d328a2e29b480c8811
|
|
BLAKE2b-256 checksum How to use checksums |
be2b71080e37f69fd48f6b023c0182f51f0614f6369d63e0bcd3e0791c36c282
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 Jul 13, 2026.
Transparency logRelease files / synthetic_disagreement-0.1.2-py3-none-any.whl
| Download URL | synthetic_disagreement-0.1.2-py3-none-any.whl |
|---|---|
| Size | 10.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7929908b32db361e686e0868a8e37c308a11a3bb17b2430afe77675b3a71800e
|
|
BLAKE2b-256 checksum How to use checksums |
32576cfea2ca7e3dd38595fb2b4cbd66c7a6ac2fd037fdc715a4eb302c6b5f65
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 Jul 13, 2026.
Transparency log