Skip to main content

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.py code-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.py doc-reader (reqlex@v1 lexicon + RFC/CWE refs + undoc-API) · dim3.py code↔doc concordance + the provenance tell · dim4.py spec-conformance (vendored MUST clauses; Heartbleed vs RFC 6520 §4) · ppi.py the scalar · ratchet.py the per-tenant memory · record.py the unified Requirement (3 provenance sources, one shape).
  • 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:

![PPI](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/OWNER/REPO/main/ppi-badge.json)

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)

Source distribution for reqdonkey 0.1.0
File Size Uploaded
reqdonkey-0.1.0.tar.gz 18.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for reqdonkey 0.1.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page