The Requirements Donkey + PPI — open standard & reference implementation
The public, verifiable home of the PPI (Polysemy Preservation Index) and the Requirements Donkey that computes it. Every number on doloop.io/ppi recomputes byte-identically from these files. No model sits in the verdict path.
What's here
PPI_STANDARD.md— the open standard: the formula, the 6 dimensions, the versioned inputs.reqdonkey/— the reference implementation (deterministic):dim1.pycode-internal consistency (validation taint via the Semgrep witness; error-handling- resource-cleanup + type-hints via
ast; a non-adoption FLOOR so unused readings aren't penalized) ·dim2.pydoc-reader (reqlex@v1lexicon + RFC/CWE refs + undoc-API) ·dim3.pycode↔doc concordance + the provenance tell ·dim4.pyspec-conformance (vendoredMUSTclauses; Heartbleed vs RFC 6520 §4) ·ppi.pythe scalar ·ratchet.pythe per-tenant memory ·record.pythe unified Requirement (3 provenance sources, one shape).
- resource-cleanup + type-hints via
THEORIES.md— the falsifiable ledger: every claim has a test that could have failed.ppi_benchmark.json— the published corpus + PPI rows.global_norms.py/global_norms.json— the global norms derived from the corpus (dim 6).designs/— the design recommendations behind each dimension.
Install + run (local, zero-exfiltration)
pip install -e . # from this directory; PyPI name `reqdonkey` (publish pending)
reqdonkey /path/to/repo # the PPI, the inferred requirements, and the gaps
reqdonkey /path/to/repo --json
Same repo + same versioned inputs (ppi@v0, reqlex@v1, classes@v0, the vendored specs, the
pinned witness) → byte-identical PPI, gaps, and provenance tell.
Badge
Show your construction score. In CI, emit the shields endpoint JSON and serve it (commit it, or publish to a gist / Pages):
reqdonkey . --no-ratchet --badge > ppi-badge.json
Then in your README:

Color tracks the global bar (doloop.io/ppi): brightgreen ≥ 0.85, green ≥ 0.78, yellow ≥ 0.6.
Reproduce the benchmark + the global norms
modal run modal_benchmark.py # the corpus (or run reqdonkey per repo)
python3 global_norms.py # the global norms from the corpus
The method (why it's a moat, not a tool)
Witnesses (Semgrep today; Infer/CodeQL next) do the dataflow — the commodity a competent engineer gets for free. doloop's layer is the part no analyzer does: it infers the requirement from the codebase's own consistency (≥4 sites, ≥70% adherence → the norm; deviations = gaps; otherwise no requirement — no crying wolf), reads the docs and the governing specs, derives the global norms from the corpus, and collapses everything to the reproducible PPI. The inference + the 6-dimension framework + the published standards are ours; the witness is anyone's.
Release files for reqdonkey 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| reqdonkey-0.1.0.tar.gz | 18.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| reqdonkey-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 38.3 kB
Release files / reqdonkey-0.1.0.tar.gz
| Download URL | reqdonkey-0.1.0.tar.gz |
|---|---|
| Size | 18.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
179517252a22faec89c8d763bd218bb3e22d0620f565ea95dfa1da28a274937c
|
|
BLAKE2b-256 checksum How to use checksums |
a8362880e8a6b249c99565aa877e4c64c7c127a1bf78377aa35dd7599b2799ec
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|
Release files / reqdonkey-0.1.0-py3-none-any.whl
| Download URL | reqdonkey-0.1.0-py3-none-any.whl |
|---|---|
| Size | 19.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
81099b77ef4aa647c45df0eb3e5b9aa7b38718276d1641260c83ee228a0310eb
|
|
BLAKE2b-256 checksum How to use checksums |
5bda03c2c29104fe8757c05907146a10c34b3043f84965f133e7ad09b4e0102f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|