A release-safety pass on the publish pipeline and the JS chokepoints that feed
it. No user-facing behavior changes — every fix tightens supply-chain integrity,
version consistency, or the cold-scan/blackboard guards so a half-formed release
can never ship.
Fixed
- Publish is gated behind a protected
releaseenvironment. Thev*tag
workflow now pauses for a required human reviewer before anynpm publish
runs, asserts the pushed tag matchespackage.json(tag!=version refuses
to publish), and routes prereleases to thenextdist-tag instead of ever
shipping them tolatest. - All nine release surfaces are version-locked and enforced in CI. The
lockstep gate now covers every versioned manifest — installer, mcp-server,
the Claude/Codex plugin + marketplace manifests, the Gemini extension, and the
Hermes/Waylandplugin.yamlmanifests — so a half-bumped release fails the
gate instead of drifting a listing a version behind. - The gitleaks preflight gate runs
--redactso a matched secret's value
never lands in a CI artifact or log. - Cold-scan JS chokepoint is seed-gated and bundle-guarded, closing the last
path by which a scan could author config outside a real project root. - Blackboard reads and writes are symlink/containment-guarded, and a read
cache that served stale task state on an mtime-quantum collision now reads
through correctly. - Codex config no longer clobbers a pre-existing setup on install.
Notes
- Installed copies pick this up on the next
ijfw update(or a fresh
npx @ijfw/install).