Skip to main content

The Requirements Donkey: deterministic auditing of whether code honors its implied, documented, and specified requirements. Computes the PPI (Polysemy Preservation Index). Local, zero-exfiltration -- your code never leaves; only the verdict does.

Project description

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.

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

reqdonkey-0.1.0.tar.gz (18.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

reqdonkey-0.1.0-py3-none-any.whl (19.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: reqdonkey-0.1.0.tar.gz
  • Upload date:
  • Size: 18.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for reqdonkey-0.1.0.tar.gz
Algorithm Hash digest
SHA256 179517252a22faec89c8d763bd218bb3e22d0620f565ea95dfa1da28a274937c
MD5 5fcd8b7a2594e8a3a22c2be88b5e1d23
BLAKE2b-256 a8362880e8a6b249c99565aa877e4c64c7c127a1bf78377aa35dd7599b2799ec

See more details on using hashes here.

File details

Details for the file reqdonkey-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: reqdonkey-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 19.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for reqdonkey-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 81099b77ef4aa647c45df0eb3e5b9aa7b38718276d1641260c83ee228a0310eb
MD5 b85053ac75be55ea06dbaad6cc20ef82
BLAKE2b-256 5bda03c2c29104fe8757c05907146a10c34b3043f84965f133e7ad09b4e0102f

See more details on using hashes here.

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