209-every-registry-package-carries-provenance

Every npm package carries provenance, and npm and crates.io publish through trusted publishing first

Lifecycle approvedImplementation completeVerification unknownQualification unknown

Spec 201 put the registry channels out of scope on the claim that "npm publishes with provenance". It does not: `publish-npm` publishes with a long-lived `NPM_TOKEN`, without `--provenance` and without an OIDC token, and `spec-spine@0.32.0` carries registry signatures but no attestation. This spec makes npm provenance required on every package the release publishes, moves npm and crates.io to trusted publishing (OIDC) with the stored token kept only as a fallback, and makes a version that is already public without provenance fail the run instead of being skipped.

Read the full pinned specification ↗

Relationships

Claimed units

  • extends
    {
      "nature": "additive",
      "spec": "006-distribution",
      "unit": {
        "kind": "file",
        "path": ".github/workflows/release.yml"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "006-distribution",
      "unit": {
        "kind": "file",
        "path": "docs/releasing.md"
      }
    }

Source headings

  1. 209: Every npm package carries provenance, and npm and crates.io publish through trusted publishing first
  2. 1. Purpose
  3. 2. Territory
  4. 3. Behavior
  5. 3.1 npm: trusted publishing first, provenance always
  6. 3.2 npm: present means attested
  7. 3.3 crates.io: trusted publishing first
  8. 3.4 Pinned like the rest
  9. 4. Out of scope
  10. 5. Resolved decisions
  11. Verification

Frozen anchors

No frozen anchors declared.