006-distribution

Distribution: npm binary shim + the release pipeline

Lifecycle approvedImplementation completeVerification unknownQualification unknown

How the spec-spine CLI reaches users who do not have a Rust toolchain. Two channels already existed but were unspecced: the tag-gated GitHub release pipeline (release.yml) that builds the five per-triple archives, and install.sh (curl | sh) that consumes them. This spec adopts both as governed territory and adds a third channel: an npm binary-distribution shim under npm/ so a TS/JS repo can `npm i -D spec-spine` and get the CLI with no Rust. The shim is a launcher, not a native addon: the main package's bin resolves a per-triple platform package (optionalDependencies, os/cpu-gated) and exec's the prebuilt binary, forwarding argv and exit code. No postinstall, no network at install, no archive extraction; it works under `npm ci --ignore-scripts` and offline. Version-locked to the binary release tag (npm 0.1.0 ships the v0.1.0 assets).

Read the full pinned specification ↗

Relationships

Claimed units

  • establishes
    {
      "kind": "file",
      "path": "npm/"
    }
  • establishes
    {
      "kind": "file",
      "path": "install.sh"
    }
  • establishes
    {
      "kind": "file",
      "path": ".github/workflows/release.yml"
    }
  • establishes
    {
      "kind": "file",
      "path": "docs/releasing.md"
    }

Source headings

  1. 006: Distribution
  2. 1. Purpose
  3. 2. Territory
  4. 3. Behavior
  5. 3.1 The pattern: optional-dependencies platform packages
  6. 3.2 Platform map (the five triples)
  7. 3.3 The launcher
  8. 3.4 Unsupported hosts fail clearly
  9. 3.5 Version lock
  10. 3.6 Release integration
  11. 4. Out of scope
  12. Release log

Frozen anchors

No frozen anchors declared.