Skip to content

fix: make npm recovery validation tag-independent#28

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

fix: make npm recovery validation tag-independent#28
regenrek merged 1 commit into
mainfrom
codex/release-v0.3.3-npm-recovery-inline

Conversation

@regenrek

Copy link
Copy Markdown
Contributor

Pre-dispatch recovery fix

This is a follow-up to the v0.3.3 npm recovery workflow. It must merge before any recovery dispatch.

Avoided failure

GitHub loads the workflow from main, but the recovery job checks out immutable v0.3.3. The prior workflow invoked scripts/verify-release-archive.sh, which was introduced after that tag and would not exist after checkout. Dispatching would have failed before archive validation. No recovery workflow was dispatched.

Fix and controls

  • moves the exact archive-member validator into the recovery workflow step, so it is available after tag checkout
  • requires exactly LICENSE, README.md, SHA256SUMS, and model-routing; rejects extras, duplicates, nested paths, and traversal paths before extraction
  • runs positive and negative tar fixtures in the workflow step before processing release assets
  • removes the unreachable helper scripts to keep one canonical implementation

The recovery’s existing v0.3.3-only confirmation, public-asset SHA256 verification, existing-version refusal, provenance reconstruction, and native/launcher checks remain unchanged.

Review and validation

Independent reviewer: PASS.

  • actionlint .github/workflows/release-npm-recovery.yml
  • YAML parsing
  • cargo fmt --all -- --check
  • cargo test -p xtask release
  • cached diff check

Do not merge or dispatch without direct execution approval.

@regenrek
regenrek merged commit 641bf30 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