006-distribution
Distribution: npm binary shim + the release pipeline
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
depends on
depended on by
amended by
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
- 006: Distribution
- 1. Purpose
- 2. Territory
- 3. Behavior
- 3.1 The pattern: optional-dependencies platform packages
- 3.2 Platform map (the five triples)
- 3.3 The launcher
- 3.4 Unsupported hosts fail clearly
- 3.5 Version lock
- 3.6 Release integration
- 4. Out of scope
- Release log
Frozen anchors
No frozen anchors declared.