ci: copy releases to npmjs from the GitHub mirror #2
Loading…
Reference in a new issue
No description provided.
Delete branch "ci/npm-mirror"
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?
Marks fta-check as an npm mirror (
.npm-mirror) and adds whatj4k-align6.7.1 renders for it:.github/workflows/release-npm.ymland annpm-mirrorjob in the Forgerelease.yml. Forgejo ignores the GitHub file because.forgejo/workflowsexists.The tag of v1.5.10 has no
release-npm.yml, and its Forge release records no tarball integrity, which the mirror requires. The first release the mirror can copy is the next one.Review
01M5F5KKKKM3J79C1WXWYX48ET— head3dab0c80cc9e51c4dcc7be09636d47bd2f2e0eedReview — j4k-oss/fta-check @
fd15727ce9Scope: diff against base tree
b1360802d35aStatus: dispatched — coverage complete (6/6 slots terminal)
Facts: current review-wide projection
Computed under:
Findings (5)
high — npm-mirror job comment lists what it checks and omits the SLSA provenance check the job performs
01M5F5NJKHBQ8WKEYQ79YW6S1W.forgejo/workflows/release.yml(snippet)01M5F5R7D9DXSBQD3W0N0N7WK9· valid: The exact-grounded job comment presents account, publisher, artifact and dist-tags as the checks performed. The reviewer identifies the source workflow and describes the corresponding checks, plus the separate provenance and repository-visibility checks absent from that inventory. This supplies the required source/copy comparison and supports high severity for an already incomplete maintenance copy. The step name need not mention the artifact comparison performed by another step; that scope mismatch in the argument does not refute the job-comment defect. Retain the job's purpose and failure consequence, and point to its checks without an inventory.01M5F5P8GCNHEY6QDM4S0EPE9V(writing-quality)medium — Comment counts "three package.json fields" the mirror rewrites; the repack step is the source and every change to it must update the count
01M5F5NJ482HH0A3VBHW68VZTD.github/workflows/release-npm.yml(snippet)01M5F5R7D9DXSBQD3W0N0N7WK9· valid: The exact-grounded comment independently maintains the count 'three'. The reviewer names .github/workflows/release-npm.yml and quotes the repack commands defining name, repository.url and publishConfig; that reported comparison establishes a matching count today. The number adds no necessary information to the maintainer's task of understanding the tarball-comparison exception. Drop the count and retain the exception with a pointer to the repack step. This is the stipulated medium maintenance-copy defect.01M5F5PP4KZ871BN30KF0RJXW6(writing-quality)low — Comment names an "OCI publisher" that does not exist in this repository
01M5F5PCCATGQM5SD00DCXMSFZ.forgejo/workflows/release.yml(snippet)01M5F5R7D9DXSBQD3W0N0N7WK9· valid: The exact-grounded sentence refers to 'The OCI publisher', while the reviewer supplies the npm release configuration, the actual consumers of the version output and a targeted search finding no OCI publisher. That concrete account supports the low clarity defect: the explanation sends maintainers to an unidentified publisher instead of explaining the version output this workflow needs. Its possible origin in another repository is unnecessary to the finding. Replace that referent with the current version-output purpose, retaining the private-registry constraint and any tag/rerun guarantees; avoid introducing a new exhaustive consumer inventory.low — Comment contrasts with "the other publishers" the reader cannot see, and repeats a rationale kept in the npm-mirror comment
01M5F5PT4HF92VGJ2WFZ6CPWPR.forgejo/workflows/release.yml(snippet)01M5F5R7D9DXSBQD3W0N0N7WK9· valid: The grounded phrase introduces an unidentified comparison with 'the other publishers', while the reviewer reports that this repository contains no such publisher jobs. The current placement and its public-endpoint rationale are already stated, so the external comparison adds a referent the maintainer cannot locate without helping apply the rule. Removing that phrase is a supported low clarity improvement, not a reason to remove the security explanation. Preserve the job-only credential boundary and the reported Forgejo version caveat. The batch does not ground the full second parenthetical or establish its complete reader task, so it does not justify endorsing that broader deletion.low — Comment says the first step refuses non-tag refs, but the ref check is in the second step
01M5F5QJW0HY2S6W0DMK5TT4YT.github/workflows/release-npm.yml(snippet)01M5F5R7D9DXSBQD3W0N0N7WK9· valid: The exact-grounded comment says the first step rejects other refs, while the reviewer specifically identifies Setup Node.js as the first step and quotes the ref guard in the second, Resolve the version. That coherent ordering account establishes the low documentation inaccuracy without a reproduction. The guard preceding publication prevents a publish-impact claim, which this report correctly disclaims. Name the Resolve the version step in the comment; changing execution order is unnecessary to correct the documented location.Other claims
01M5F5P8GCNHEY6QDM4S0EPE9Vhigh — npm-mirror job comment and step name list the checks differently, and both omit checks the job runs →01M5F5NJKHBQ8WKEYQ79YW6S1W01M5F5PP4KZ871BN30KF0RJXW6medium — Comment counts the rewritten package.json fields; the fields are defined in the steps and scripts, and the same list is repeated in messages →01M5F5NJ482HH0A3VBHW68VZTD01M5F5PHFT57E0JYN6E66GYZP8medium — Comment points to an "account gate" run that sets PRE_MIGRATION_BASELINE, but nothing in the repository defines or sets it01M5F5QJADMW339APRNPXKQ1X7low — PRE_MIGRATION_BASELINE bypass is read from env but nothing in the repo sets it; its comment cites a baseline run that does not existCoverage
Coverage pass: 01M5F5M3PKYEHQYHVJ4ZCYKSB1
Accounting: complete
Slot health: healthy
@ -78,6 +70,11 @@ jobs:needs: quality-checksruns-on: ubuntu-latesttimeout-minutes: 15# Job-level, unlike the other publishers: the npm-mirror job below reads public endpoints only and must not hold a credential that can mint a registry write token, and a workflow-level key would hand it one. Forgejo 16.0.x resolves the job key over the workflow one.low — Comment contrasts with "the other publishers" the reader cannot see, and repeats a rationale kept in the npm-mirror comment
lens
writing-quality· armdefault· tally 1 valid / 0 invalid / 0 uncertainclaim
01M5F5PT4HF92VGJ2WFZ6CPWPRof review01M5F5KKKKM3J79C1WXWYX48ET@ -201,0 +199,4 @@run: |set -euo pipefailpnpm exec semantic-release# The OCI publisher gets the version from @j4k/semantic-release-github-output, which lives in the private registry that a public package cannot install from. semantic-release tags the released commit before it publishes, so the tag on HEAD names the version, and a rerun of an already released commit finds the same tag.low — Comment names an "OCI publisher" that does not exist in this repository
lens
writing-quality· armdefault· tally 1 valid / 0 invalid / 0 uncertainclaim
01M5F5PCCATGQM5SD00DCXMSFZof review01M5F5KKKKM3J79C1WXWYX48ET@ -207,2 +276,4 @@path: ${{ steps.pnpm-store.outputs.path }}key: ${{ steps.pnpm-cache.outputs.cache-primary-key }}# The GitHub mirror copies this release to npmjs from the tag the push mirror delivers, and nothing on the Forge sees that run. This job waits for the version on npmjs, then checks the account, the publisher, the artifact and the dist-tags, so a mirror that never ran, or published something else, turns this run red. It is a job here and not a tag-triggered workflow because Forgejo drops events whose actor is the Actions user, and semantic-release pushes its tag as that user. It reads public endpoints only, so it holds no OIDC request credential (enable-openid-connect is set on the release job alone).high — npm-mirror job comment lists what it checks and omits the SLSA provenance check the job performs
lens
restated-sets· armdefault· tally 1 valid / 0 invalid / 0 uncertainclaim
01M5F5NJKHBQ8WKEYQ79YW6S1Wof review01M5F5KKKKM3J79C1WXWYX48ET@ -0,0 +13,4 @@tags:- "v*"# Re-runs a release whose tag run failed: dispatch the workflow on the tag# itself ("Use workflow from" a tag). The first step refuses any other ref.low — Comment says the first step refuses non-tag refs, but the ref check is in the second step
lens
general-bug· armdefault· tally 1 valid / 0 invalid / 0 uncertainclaim
01M5F5QJW0HY2S6W0DMK5TT4YTof review01M5F5KKKKM3J79C1WXWYX48ET@ -0,0 +126,4 @@npm pkg delete publishConfig- name: Compare the copy with the Forge release# What is compared is what gets published: the version already on npmjs, or the packed repack. Either must equal the Forge tarball in every member except the three package.json fields the mirror rewrites.medium — Comment counts "three package.json fields" the mirror rewrites; the repack step is the source and every change to it must update the count
lens
restated-sets· armdefault· tally 1 valid / 0 invalid / 0 uncertainclaim
01M5F5NJ482HH0A3VBHW68VZTDof review01M5F5KKKKM3J79C1WXWYX48ETReview
01M5F5KKKKM3J79C1WXWYX48ETon head3dab0c80: five findings and two unadjudicated claims, all about comment wording in the filesj4k-align6.7.1 rendered. I'm merging as is.Nothing here changes what the workflows do. The comments come from align's templates, and editing the rendered copies would make the next
j4k-align --fixrevert them and the audit flag drift. The five findings are accurate and belong in the templates inj4k/align: thenpm-mirrorjob comment's check inventory, the "three fields" count, the "OCI publisher" reference, "unlike the other publishers", and "the first step" (the ref check is the second step). That follow-up isn't filed yet, so the tracked items stay open on this PR.The two unadjudicated claims (
01M5F5PHFT57E0JYN6E66GYZP8,01M5F5QJADMW339APRNPXKQ1X7) are the same question: nothing in the repo setsPRE_MIGRATION_BASELINE. That is intended. The release job never sets it, so the provenance check stays strict, and only an operator's baseline run sets it. That run exists:account-gate.sh post-npm --baseline fta-check 1.5.9passed today with the variable set and accepted npm 1.5.9'srefs/heads/mainprovenance. The comment's pointer to that run, which lives outside the repo, can be reworded in the same template follow-up.Review items 174499 to 174503 are all confirmed and fixed. Each is a comment in a file that
@j4k/aligngenerates, so the fixes landed in align, not here: j4k/align#735 (released as 6.7.3) and j4k/align#736 (6.7.4). The re-align PR #3 brings both into this repository.npm-mirrorcomment listed what the job checks and left out the provenance checkpackage.jsonfields the mirror rewritesReleasestep comment named an "OCI publisher" this repository does not have@j4k/semantic-release-github-outputwould do and why the tag onHEADis used insteadworkflow_dispatchcomment said the first step refuses other refs, but the check is in the "Resolve the version" stepgh-feedbackcannot target a merged PR, so these five items stay pending in its tracker. This comment is their record.Re 174499: Confirmed. The
npm-mirrorcomment omitted the provenance check. Now it says the job verifies the npmjs copy against the Forge release in the steps below.The comment is in a rendered file, so the fix landed in the align template, not by hand here. Fixed in j4k/align#735 (6.7.3) and #736 (6.7.4); adopted here via #3 and re-aligned with align 7.0.1 in #5.
Re 174500: Confirmed. The comment hard-coded "three"
package.jsonfields. Now it refers to the fields the repack step rewrites.The comment is in a rendered file, so the fix landed in the align template, not by hand here. Fixed in j4k/align#735 (6.7.3) and #736 (6.7.4); adopted here via #3 and re-aligned with align 7.0.1 in #5.
Re 174501: Confirmed. The
Releasestep comment named an OCI publisher this repository does not have. Now it describes what@j4k/semantic-release-github-outputwould do and why the tag onHEADis used instead.The comment is in a rendered file, so the fix landed in the align template, not by hand here. Fixed in j4k/align#735 (6.7.3) and #736 (6.7.4); adopted here via #3 and re-aligned with align 7.0.1 in #5.
Re 174502: Confirmed. "Job-level, unlike the other publishers" pointed at workflows not in this repository. Now it reads "Set on this job only".
The comment is in a rendered file, so the fix landed in the align template, not by hand here. Fixed in j4k/align#735 (6.7.3) and #736 (6.7.4); adopted here via #3 and re-aligned with align 7.0.1 in #5.
Re 174503: Confirmed. The
workflow_dispatchcomment said the first step refuses other refs, but the check is in the "Resolve the version" step. The comment now names that step.The comment is in a rendered file, so the fix landed in the align template, not by hand here. Fixed in j4k/align#735 (6.7.3) and #736 (6.7.4); adopted here via #3 and re-aligned with align 7.0.1 in #5.