Skip to content

fix: recover npm v0.3.3 from verified release assets#27

Merged
regenrek merged 1 commit into
mainfrom
codex/release-v0.3.3-npm-recovery
Jul 24, 2026
Merged

fix: recover npm v0.3.3 from verified release assets#27
regenrek merged 1 commit into
mainfrom
codex/release-v0.3.3-npm-recovery

Conversation

@regenrek

Copy link
Copy Markdown
Contributor

Recovery scope

Repairs the npm publication path for the immutable public v0.3.3 release without moving its tag or overwriting release assets.

Root cause and public state

The release workflow uploaded every target provenance receipt from a basename of provenance.json. GitHub therefore retained one colliding asset instead of four downloadable switchloom-<target>.provenance.json files. The npm job downloaded and verified all four public archives, then failed before npm publish when its required receipts were absent. The GitHub Release assets and Homebrew tap update succeeded; switchloom@0.3.3 remains unpublished.

Recovery controls

  • workflow dispatch is hard-limited to v0.3.3 and requires exact publish-v0.3.3 confirmation
  • refuses an already-published npm version
  • downloads only the existing public archives plus SHA256SUMS and verifies every digest
  • accepts exactly LICENSE, README.md, SHA256SUMS, and model-routing in each archive; rejects extras, duplicates, nested, and traversal paths
  • reconstructs package provenance from the verified extracts, verifies the Linux binary and launcher, then performs npm OIDC provenance publish
  • fixes future release uploads by using unique, downloadable receipt filenames

Review and validation

Independent review: PASS after the archive-member guard correction.

  • sh scripts/test-verify-release-archive.sh
  • shellcheck on both new scripts
  • YAML parsing for both workflows
  • cargo fmt --all -- --check
  • cargo test -p xtask release
  • staged diff check

Do not merge or dispatch the recovery workflow without direct execution approval.

@regenrek
regenrek merged commit 6330113 into main Jul 24, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant