Skip to content

Release status

What PyPI and npm each publish, what was defective on npm, and what is and is not attested on each registry. Everything here was measured against the live registries rather than against this repository, and it is the page to re-read before trusting a version number.

The short version, kept in the README as well: 2.6.3 is the current release on both PyPI and npm. The npm trusted publisher is now registered, so automatic publishes take the OIDC path with --provenance; the quick start in the README describes the published packages rather than only a checkout.

If this page and a registry ever disagree, the registry is right and this page is stale.

What is published

The PyPI and npm measurements below were taken against 2.4.3 and are retained because the hashes and endpoints reproduce exactly; they do not describe the current release. Substitute the current version in the commands under Checking these claims yourself to re-measure it.

Surface Version Published Notes
npm (latest) 2.4.3 2026-10-04 Byte-identical to npm pack of the main tip (45fd5ee): shasum f220d14e987008d7177c7ac2a19da4da63ee082c and integrity sha512-XYRobvGvmzBlv/VfLDD96W08XP0OPzeVXs2qMVDFnRzb8kgbWuu3IW1Q3MbEiF2Q67JKyW0ikFgn8zXYSVvBLg== both reproduce from a clean checkout. 63 files, 617 609 bytes unpacked.
PyPI 2.4.3 2026-10-04 Carries a PEP 740 provenance attestation on both files. Wheel SHA-256 c4fdfddd9c12001d1fb76c3d48962a0cc3de07427bbcc6422a8bf04ad1b77c47, sdist SHA-256 29ae465bfc008687cd6ae5ad01fe49f154276441fedcbc120ed803fc446ce2fb.

2.4.0 and 2.4.1 were defective; 2.4.2 fixed them; 2.6.3 is the current release

Version Defect
2.4.0 A JavaScript syntax error in the bin launcher: the published entry point could not run at all.
2.4.1 The launcher passed cwd: __dirname, so a relative workspace path resolved against the installed package directory. npx plan-auditor audit . audited the wrong tree while looking authoritative. An absolute workspace path still worked, which made the failure silent.
2.4.2 Fixes both, and adds the pre-publish gate that would have caught them.
2.6.0 Audit hardening: authenticated evidence gate and CI guards, see the changelog.

npm versions are immutable, so 2.4.0 and 2.4.1 cannot be withdrawn. Pin plan-auditor>=2.4.2 if you consume the npm package.

Supply chain: three mechanisms, not one

These are routinely blurred together. They are different, and only the third is build provenance.

Mechanism What it proves What it does not prove
dist.integrity (sha512) / shasum (sha1) on npm, digests.sha256 on PyPI The bytes you received are the bytes that were published. How they were built, or by whom.
npm dist.signatures The registry signed the packument entry; the metadata was not altered in transit. A transport signature. Anything about the build. npm's own key signs every package, attested or not.
Build attestation (Sigstore / in-toto) A named CI workflow, repository and commit produced this artifact, and a transparency log holds the statement. That the build was correct.

Per channel: what is true today

Both rows were measured against 2.4.3.

Channel Build attestation? Endpoint Observed
PyPI yes https://pypi.org/integrity/plan-auditor/2.4.3/plan_auditor-2.4.3-py3-none-any.whl/provenance 200. in-toto v1 statement, predicate type https://docs.pypi.org/attestations/publish/v1, publisher kind=GitHub, repository=Furox-Art/plan-auditor, workflow=release.yml, environment=pypi. Subject sha256 equals the digest PyPI serves.
npm no https://registry.npmjs.org/-/npm/v1/attestations/plan-auditor@2.4.3 404. No provenance field and no dist.attestations in the packument. dist.signatures is present, and is the transport signature described above.

For the current release, 2.6.3, both channels return 200: PyPI serves the PEP 740 statement and npm serves a Sigstore statement whose predicate type is https://slsa.dev/provenance/v1.

The URL shape matters when you re-check this

PyPI serves attestations per file. The path ends in /<filename>/provenance.

# 200 -- a real attestation
curl -s -o /dev/null -w '%{http_code}\n' \
  https://pypi.org/integrity/plan-auditor/2.4.3/plan_auditor-2.4.3-py3-none-any.whl/provenance

# 404 -- NOT an endpoint. This means "no such URL", not "no attestation".
curl -s -o /dev/null -w '%{http_code}\n' \
  https://pypi.org/integrity/plan-auditor/2.4.3/

Reading the second 404 as "PyPI has no attestation" is exactly the mistake this section exists to prevent. It is the absence of a collection endpoint, and PyPI does not publish one.

Verifying each channel by hand

# PyPI: attestation, then the digest it must match
curl -s https://pypi.org/integrity/plan-auditor/2.4.3/plan_auditor-2.4.3-py3-none-any.whl/provenance
python -c "import json,urllib.request;d=json.load(urllib.request.urlopen('https://pypi.org/pypi/plan-auditor/2.4.3/json'));print(d['urls'][0]['digests']['sha256'])"

# npm: no attestation; verify by digest, and treat that as integrity only
curl -s -o /dev/null -w '%{http_code}\n' https://registry.npmjs.org/-/npm/v1/attestations/plan-auditor@2.4.3
npm view plan-auditor@2.4.3 dist.integrity
npm view plan-auditor@2.4.3 dist.signatures

npm provenance is enabled

The trusted publisher record now exists on npmjs.com, so automatic releases take the OIDC path with --provenance and npm serves a Sigstore build attestation: the attestations endpoint returns 200 for 2.6.3 with predicate type https://slsa.dev/provenance/v1. Versions published before the record was created, including 2.4.3 measured above, have no attestation; their 404 is history, not a current limitation.

A manual dispatch may still explicitly set use_token_fallback=true to publish with NPM_TOKEN instead, which cannot produce provenance.

What the artifacts contain

docs/ and examples/ are in the repository and the sdist, but not in the wheel. The wheel ships the Python packages supervisor and scripts, plus the Agent Skill assets namespaced under plan_auditor_skill/, which is where a pip install finds SKILL.md, hooks/, references/ and the Node launcher. See Integrations for the exact path.

Checking these claims yourself

Every version, hash and endpoint on this page is re-checkable:

npm view plan-auditor version dist.integrity
python -c "import json,urllib.request;print(json.load(urllib.request.urlopen('https://pypi.org/pypi/plan-auditor/json'))['info']['version'])"
curl -s -o /dev/null -w '%{http_code}\n' https://registry.npmjs.org/-/npm/v1/attestations/plan-auditor@2.4.3
curl -s -o /dev/null -w '%{http_code}\n' https://pypi.org/integrity/plan-auditor/2.4.3/plan_auditor-2.4.3-py3-none-any.whl/provenance