ci: publish npm copies from main through the npm environment #5
Loading…
Reference in a new issue
No description provided.
Delete branch "ci/npm-environment"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Re-aligns the repository with
@j4k/align7.0.1. The rendered npm mirror workflow (.github/workflows/release-npm.yml) now publishes frommainthrough the GitHub environmentnpm. The Forgerelease.ymlandrelease.config.mjschange with it.This is a
ci:change, so it releases nothing. Do not merge before thenpmenvironment exists onJercik/fta-checkand the Forge protects tags matching/^[^v]/.Review items 174499 to 174503 on #2 were comment wording in align's templates. Align 6.7.3 and 6.7.4 already fixed them, so nothing is hand-edited here.
🤖 Generated with Claude Code
Review
01M5FZ9TSSVKHWKEB9TK5WRQ2K— headc04aa6d0f355a73948d8516d727d21b995e8dbe1Review — j4k-oss/fta-check @
a67f855405Scope: diff against base tree
20f9fee31b1eStatus: dispatched — coverage complete (5/5 slots terminal)
Facts: current review-wide projection
Computed under:
Findings (3)
high — Step name lists four checks, but the step now also verifies the GitHub environment policy and Forge tag names
01M5FZC88KMJZPYR9K9VPYC7TV.forgejo/workflows/release.yml(snippet)01M5FZE4GF7DKJ1S9YR9MVMAHR· valid: Grounded (exact) step name lists four categories as what the step checks, which the restated-sets guideline treats as a copy of the set the step's inline script defines. The body names the source (the same step's node script in .forgejo/workflows/release.yml) and lists its checks: npm collaborators/maintainers, _npmUser and trusted-publisher id, provenance fields plus SLSA attestation, dist-tag, GITHUB_VISIBILITY, the GitHub environment 'npm' deployment branch policy/rules, and the Forge non-v tag check. Name-only members: none. Script-only members: visibility, environment deployment-branch policy, Forge foreign-tag check. One could argue the environment policy belongs under 'publisher', but the Forge tag-name check falls under none of the four labels, so at least one member is missing and the copy already disagrees with its source (high). No exception applies: a step label is not a table of contents, a pointer, or a dated record, and a reader of the run UI does not need the inventory to use the job. The proposed fix (a purpose-only name such as 'Verify the npm copy against its publisher and the Forge release') removes the copy without losing a constraint.medium — Install-step comment says semantic-release publishes the package, but this change moves the publish to a later step
01M5FZCFDDJTMNJ977S1MXM3ER.forgejo/workflows/release.yml(snippet)01M5FZE4GF7DKJ1S9YR9MVMAHR· valid: The grounded comment says the package's prepack 'still runs when semantic-release publishes it'. The reviewer's trace says release.config.mjs now sets @semantic-release/npm to npmPublish: false with tarballDir, and a later step runs 'npm publish "$tarball" --ignore-scripts'. The other grounded release.config.mjs comment in this batch backs that up: 'The release job publishes the tarball this plugin packs'. So semantic-release no longer publishes to npm, and prepack runs at pack time. The clause now gives a wrong account of where scripts run, in a comment whose job is to justify skipping install scripts while a token is present. A maintainer could reason wrongly about publish-time script exposure. The diff made this stale even though the line itself is unchanged, and a stale description is a documentation defect. Medium is reasonable. The proposed rewrite is longer than it needs to be. The smallest correct fix is to change 'publishes' to 'packs', e.g. 'still runs when semantic-release packs it', which keeps the security rationale.low —
release.config.mjscomment's "before the tag is pushed" can be read as the publish happening before the tag01M5FZCKM4TZHGR2PXTKFDFP4Mrelease.config.mjs(snippet)01M5FZE4GF7DKJ1S9YR9MVMAHR· valid: The grounded comment reads 'The release job publishes the tarball this plugin packs before the tag is pushed'. The phrase 'before the tag is pushed' can attach to 'publishes' as well as 'packs'. The workflow order the reviewer cites (semantic-release packs, then tags, then a later step publishes) makes only the 'packs' reading true. The publish-before-tag reading is the wrong order, and it bears on the tag/artifact ordering the workflow cares about. The second line uses 'it' for both the job and the plugin, and 'the integrity it records' never names who records it. These are real clarity defects under the writing skill's precision guidance, not just a style preference. Low severity fits: the facts are right and the Release step comment states the order. One remedy caveat: the suggested '(before it pushes the tag)' makes the plugin the actor, but semantic-release pushes the tag. Better: 'This plugin only packs the tarball; semantic-release then pushes the tag, and the release job publishes that file and records its integrity, so the integrity covers bytes the job built, not what the registry serves.'Other claims
Coverage
Coverage pass: 01M5FZAAV98TRJEBGE7JRD9ZQA
Accounting: complete
Slot health: healthy
@ -314,4 +362,4 @@sleep 30done- name: Check the npm account, publisher, provenance and dist-taghigh — Step name lists four checks, but the step now also verifies the GitHub environment policy and Forge tag names
lens
restated-sets· armdefault· tally 1 valid / 0 invalid / 0 uncertainclaim
01M5FZC88KMJZPYR9K9VPYC7TVof review01M5FZ9TSSVKHWKEB9TK5WRQ2K@ -5,3 +5,4 @@["@semantic-release/commit-analyzer", { preset: "conventionalcommits" }],["@semantic-release/release-notes-generator", { preset: "conventionalcommits" }],"@semantic-release/npm",// The release job publishes the tarball this plugin packs before the tag is pushed,// so the integrity it records is of bytes it built, not of what the registry serves.low —
release.config.mjscomment's "before the tag is pushed" can be read as the publish happening before the taglens
writing-quality· armdefault· tally 1 valid / 0 invalid / 0 uncertainclaim
01M5FZCKM4TZHGR2PXTKFDFP4Mof review01M5FZ9TSSVKHWKEB9TK5WRQ2KReview
01M5FZ9TSSVKHWKEB9TK5WRQ2Kon headc04aa6d: three prose findings, all confirmed against the current files, none introduced by hand here. Each sits in a file@j4k/alignrenders (.forgejo/workflows/release.yml,release.config.mjs), so the fix belongs in the align templates and a hand edit would be overwritten on the next align run. None makes this PR harmful to merge: the comments and step name are wrong or ambiguous, the behavior is right.Check the npm account, publisher, provenance and dist-tag(release.yml:365): confirmed, it omits the environment policy and Forge tag checks. Align template change: name the purpose, not the list of checks.release.config.mjssetsnpmPublish: false, so semantic-release packs and the laternpm publish "$tarball"step publishes. Align template change: say "packs" and that publishing the tarball runs no scripts.release.config.mjs:7"before the tag is pushed": confirmed, ambiguous between packing and publishing. Align template change: reword so only packing precedes the tag.Other claims: none. No follow-up PR opens in this repository; the align changes are reported to the maintainer.
Fixed in align and released as
@j4k/align7.0.3: j4k/align#754release.config.mjscomment): it now says the plugin only packs the tarball, and that the release job publishes that file and records its integrity.prepackruns when semantic-release or the publish step packs the tarball, and thatnpm publishof the packed file runs no scripts. Other renders keep the old wording, because they have no separate publish step.The next align run in this repository picks these up.