ci: publishing is a tag, and the workflow refuses to publish the wrong thing - #50
Merged
Merged
Conversation
…g thing The registry has served 3.10.2 while Main moved to 3.11.0 - four releases of safety fixes that no user can install. The gap is that publishing was a manual step on one laptop with a 2FA prompt. Pushing a v* tag now runs npm run check, refuses a tag that disagrees with package.json, refuses a version already on the registry, publishes with provenance, and then verifies the registry actually serves it. Needs one repo secret: NPM_TOKEN (npm automation token, which is exempt from 2FA).
Contributor
Author
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
npm view fdeops version→ 3.10.2, whileMainis 3.11.0. Four releases of safety fixes (installer ownership, engagement misrouting, hook resolution, the eval-receipt gate) are merged and unreachable, because publishing was a manual step on one laptop behind a 2FA prompt.This makes a release a tag, so the bytes on the registry always map to a commit:
The workflow's value is in what it refuses, not in the
npm publishline:Provenance is on, which is why the job needs
id-token: write.One thing needed before a tag will publish: repository secret
NPM_TOKEN— an npm Automation token (granular, read+write, scoped tofdeops). Automation tokens are exempt from 2FA; a Classic/Publish token with 2FA enforced will fail in CI.workflow_dispatchis wired too, taking the version as an input, for a re-run without cutting a new tag.Release steps documented in
CONTRIBUTING.md, including the four manifests that must agree (npm run checkalready enforces that).No change to the CLI, the skill,
.fde/, or the published package contents. Verifiednpm pack --dry-runcarriesbin/lib/vault.js(13.4kB, 92 files) sofde vaultworks for an installer, andnpm run checkis green: 119/119.Link to Devin session: https://app.devin.ai/sessions/f135381c4682413bae73dff38eb6d1a3
Open in Devin Desktop: https://app.devin.ai/desktop/session/f135381c4682413bae73dff38eb6d1a3?variant=devin
Requested by: @suboss87