mirror of
https://github.com/Comfy-Org/github-workflows.git
synced 2026-11-05 00:17:37 +00:00
[PR #19] [MERGED] fix(cursor-review): harden blocking gate + pin all action SHAs (BE-1981) #30
Labels
No labels
cursor-review-catalog-drift
groom
groom
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Comfy-Org/github-workflows#30
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
📋 Pull Request Information
Original PR: https://github.com/Comfy-Org/github-workflows/pull/19
Author: @mattmillerai
Created: 6/30/2026
Status: ✅ Merged
Merged: 7/3/2026
Merged by: @mattmillerai
Base:
main← Head:matt/be-1981-blocking-gate-hardening📝 Commits (1)
a15dbd5fix(cursor-review): harden blocking gate + pin all action SHAs (BE-1981)📊 Changes
1 file changed (+24 additions, -12 deletions)
View changed files
📝
.github/workflows/cursor-review.yml(+24 -12)📄 Description
ELI-5
The opt-in "Blocking gate" check is the one a repo can require before merging. Two problems from PR #16 (BE-1891):
consolidate) didn't finish.actions/*were pinned to mutable tags (@v6), which supply-chain scanners (zizmor/pinact) flag. They're now pinned to immutable commit SHAs.What changed
.github/workflows/cursor-review.ymlonly.Finding 1 — Blocking gate can pass on a failed fresh review
blocking-gatejob:needsnow includesdiff-size→needs: [gate, diff-size, consolidate].consolidate:Path analysis (all verified):
consolidate.result == 'success'→ guard skipped → falls through to the live unresolved-thread query.already_reviewed != 'true'is false (anddiff-sizeis skipped, sowithin_cap == '') → guard skipped → falls through (unchanged behavior).within_cap != 'true'→ guard skipped → falls through (unchanged behavior).Pattern mirrors the existing
notify-completejob, which already readsneeds.consolidate.result.Finding 2 — Pin actions to full SHAs
All
actions/checkout@v6(8 occurrences) pinned todf4cb1c…(# v6.0.3). For full file consistency and to satisfy zizmor's hash-pin policy (the repo README documents SHA-pinning as the convention), also pinned the other three actions in this file:actions/upload-artifact@v7→043fb46…(# v7.0.1)actions/download-artifact@v8→3e5f45b…(# v8.0.1)actions/create-github-app-token@v3→bcd2ba4…(# v3.2.0)Verification
hash-pinpolicy this file now reports 0unpinned-useserrors vs 11 onmain. The pre-existingexcessive-permissionspedantic findings are identical before/after (out of scope — not part of the two CodeRabbit Major threads).Acceptance criteria
consolidatedidn't succeed; passes correctly on already-reviewed / over-cap skip paths.actions/checkoutreferences incursor-review.ymlpinned to full SHAs (plus the other three actions in the file).Judgment calls / notes
checkout. Finding 2 enumerated onlycheckout, but AC3 ("zizmor clean") plus the README's documented SHA-pin convention meant the other three unpinned actions in this file would still fail the hash-pin policy. Pinning them is the same supply-chain fix class and makes the whole file clean. (Under hash-pin: 11 errors → 0.)test-cursor-review-scripts.ymlhas its own unpinnedactions/checkout@v6andactions/setup-python@v6. Not touched (ticket scopes tocursor-review.yml); worth a follow-up if the repo wants every workflow hash-pin-clean.diff-sizejob itself fails (not skips) on a fresh run,within_capis empty so the guard skips and the gate falls through to the thread query. The ticket specified the exact guard above (keyed on the consolidate path), which I implemented verbatim; this rarer diff-size-infra-failure case is the same kind of gap the existingnotify-completejob has and is left as-is.🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.