fix: align with j4k-align 17.15.4 #18
Loading…
Reference in a new issue
No description provided.
Delete branch "chore/align-17-15-4"
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?
Moves
.node-versionfrom Node 26.12.1 to 26.13.0, the version baked into the CI image (node-ci:26-bookworm), so CI stops downloading Node on every run.The package and README now require Node
>=26.0.0,@types/nodemoves to 26, and CI drops its Node 24.15.0 matrix leg. The next release no longer supports Node 24.The managed workflows also gain a
same-repo-prjob that fails fork and AGit pull requests, and the release job now waits forcheck-tip. The oxlint config adds thenodeTestpreset.Review
01M6GVZM4KJ6XBKQ9SD1REMQ2H— headf527abd88fe85b2d824261df21f0b501941466efReview — j4k-oss/worktree-add @
7740819067Scope: diff against base tree
d368d37d4beeReview finished: 7 succeeded, 0 failed, 3 skipped by dispatch
Triage: settled
Facts: current review-wide projection
Computed under:
Findings (3)
medium — Fork and AGit refusal tells contributors to push to a repository they cannot push to
01M6GWD3HZSAB3WFJ0SAJ343J3.forgejo/workflows/commit-msg.yml(snippet)01M6GWDWQFQVZE9FD0908VQZAS· valid: Grounded: the refusal's only recovery step is 'Close this pull request, push the branch to this repository, and open a new pull request from it.' That step requires write access. The same file's commitlint comment, as quoted by the reviewer, says 'AGit reuses repo identity without push access'. README invites outside pull requests. So the readers this message targets, fork and AGit authors, usually cannot follow it, and a reader who follows the first instruction closes the PR before finding out the second is impossible. That is a concrete mistake under the current text, not a style preference, and it fits the human-facing standard of describing effects as the reader experiences them. The claim does not dispute the refusal policy itself. The smallest fix is one added clause for authors without write access, for example 'or ask a maintainer to push it', keeping the current instruction. The claim's 'medium' is arguable, and low-medium fits an unactionable CI diagnostic that does not alter code behavior. The finding depends on the reviewer's account that the else branch gives no other next step; the anchor excerpt is consistent with that account.low — same-repo-pr detects skipped CI by restating why guards skip, so a guard edit silently disables it
01M6GWD2PX12RZDBW0MKMNH5ZB.forgejo/workflows/commit-msg.yml(snippet)01M6GWDWQFQVZE9FD0908VQZAS· valid: Grounded: the same-repo-pr 'if' is the hand-written negation of the guard (head.repo.full_name != github.repository || toJSON(flow) != '0'). The reviewer's trace, corroborated by claim 01M6GWD4BGTGS0RJ1NYVJDY22A's quotes from checks.yml and dedupe-check.yml ('commit-msg.yml's same-repo-pr job fails them instead') and claim 01M6GWD3HZSAB3WFJ0SAJ343J3's commitlint guard comment, shows that the one decision 'which PRs get no CI' is encoded in commitlint, quality-checks, dedupe-check and this complement. Only a comment ties them together. This is the Information Leakage red flag with a concrete consequence: narrowing a guard skips the job, the skip reads green, and same-repo-pr stays silent. The reviewer concedes that nothing is misclassified today. A latent maintenance hazard is what this red flag describes, so low severity fits. The proposed always()/needs verdict pattern already exists in qc-result. Because needs cannot cross workflows, each guarded workflow would need its own verdict job, and the reviewer states that cost. The shell's FLOW != "1" test only chooses the message, so it is weaker evidence of re-derivation, but that does not affect the main finding.low — Repo-wide CI gate lives in the commit-message workflow, tying quality-checks' safety to an unrelated policy
01M6GWD4BGTGS0RJ1NYVJDY22A.forgejo/workflows/commit-msg.yml(snippet)01M6GWDWQFQVZE9FD0908VQZAS· valid: Grounded: commit-msg.yml's comment says every guarded job skips fork and AGit PRs and Forgejo counts the skip as passing, so this file now holds the only gate for quality-checks and dedupe-check. The reviewer quotes the file header as 'Enforce commit-message policy before merge; see the validation step below.' and quotes checks.yml and dedupe-check.yml pointing to 'commit-msg.yml's same-repo-pr job'. So the dependency is visible only from the dependent files. A maintainer who removes or rewrites commit-msg.yml for commit-policy reasons gets no warning from the file's stated purpose. That is a concrete nonobvious hidden dependency, and the misleading header is a supported, independent defect. Moving the job is a preferred alternative that this batch cannot establish: the reviewer concedes the edited trigger, checks.yml's workflow_call use, or j4k-align templates may constrain placement. The supported correction is the smaller one the claim also offers: state in the header that the file hosts the repo-wide fork/AGit and flow-drift gate, and why. The Special-General Mixture label and the job-name point are weaker. Low severity is appropriate.Other claims
Coverage
Coverage pass: 01M6GVZM4PVMRRQX3P66PB97H3
Accounting: complete (all slots terminal; see slot results for failures)
Slot health: healthy
@ -128,2 +127,4 @@done < "$pr_fields/commits"exit "$failed"# Every guarded job skips fork and AGit PRs, and Forgejo counts a skipped joblow — Repo-wide CI gate lives in the commit-message workflow, tying quality-checks' safety to an unrelated policy
lens
aposd-plain· armdefault· tally 1 valid / 0 invalid / 0 uncertainclaim
01M6GWD4BGTGS0RJ1NYVJDY22Aof review01M6GVZM4KJ6XBKQ9SD1REMQ2HConfirmed: the fork and AGit gate for every guarded workflow now lives in
commit-msg.yml, whose header still describes only commit-message policy. Placement and header both come from j4k-align 17.15.4'stemplates/workflows/commit-msg.yml.hbs(align #1011 moved the gate there fromchecks.yml'spr-flow-canary), so a hand edit here would be overwritten by the nextj4k-align --fix. Whether to move the job or extend the header is an align template decision. This fleet rollout may not change align, so I've reported it to the user as an align follow-up rather than opening one.@ -130,0 +132,4 @@# the guard's exact complement: it fails those PRs and runs none of their code.# It also fails every PR if Forgejo stops sending a usable `flow`.same-repo-pr:if: github.event.pull_request.head.repo.full_name != github.repository || toJSON(github.event.pull_request.flow) != '0'low — same-repo-pr detects skipped CI by restating why guards skip, so a guard edit silently disables it
lens
aposd-plain· armdefault· tally 1 valid / 0 invalid / 0 uncertainclaim
01M6GWD2PX12RZDBW0MKMNH5ZBof review01M6GVZM4KJ6XBKQ9SD1REMQ2HConfirmed as a maintenance risk: the
same-repo-prcondition is the hand-written complement of the guards incommitlint,quality-checksanddedupe-check, and nothing fails if they drift. Today the complement is exact, so no PR is misclassified. All four guards are rendered by j4k-align 17.15.4 (templates/workflows/commit-msg.yml.hbsand the checks and dedupe templates), so a hand edit here would be overwritten by the nextj4k-align --fix; replacing the copy with aneeds-result verdict likeqc-resultis an align template decision. This fleet rollout may not change align, so I've reported it to the user as an align follow-up rather than opening one.@ -130,0 +145,4 @@if [ "${HEAD_REPO}" = "${GITHUB_REPOSITORY}" ] && [ "${FLOW}" != "1" ]; thenecho "::error::head repository ${HEAD_REPO}, flow ${FLOW}: this pull request comes from this repository, so Forgejo sent no usable flow and every guarded check was skipped. A maintainer must investigate the Forgejo upgrade or roll it back."elseecho "::error::head repository ${HEAD_REPO}, flow ${FLOW}: fork and AGit pull requests skip every guarded check here. Close this pull request, push the branch to this repository, and open a new pull request from it."medium — Fork and AGit refusal tells contributors to push to a repository they cannot push to
lens
aposd-plain· armdefault· tally 1 valid / 0 invalid / 0 uncertainclaim
01M6GWD3HZSAB3WFJ0SAJ343J3of review01M6GVZM4KJ6XBKQ9SD1REMQ2HConfirmed: the
same-repo-prrefusal's only recovery step needs write access, and this repository invites outside pull requests. Not a merge blocker: before this change the same fork or AGit PR skipped every guarded check and read green, so the job still turns a silent pass into a visible failure. The message comes from j4k-align 17.15.4'stemplates/workflows/commit-msg.yml.hbs, so a hand edit here would be overwritten by the nextj4k-align --fix; the fix (add a step for authors without write access, such as asking a maintainer to carry the branch) belongs in that template. This fleet rollout may not change align, so I've reported it to the user as an align follow-up rather than opening one.