Skip to content

fix(ci): repin Security Scan to the panic-attack workflow that builds the scanner - #491

Merged
hyperpolymath merged 2 commits into
mainfrom
marina/optimistic-cray-js64k7
Nov 10, 2026
Merged

hyperpolymath merged 2 commits into
mainfrom
marina/optimistic-cray-js64k7

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Summary

security-scan.yml calls hyperpolymath/panic-attack/.github/workflows/scan-and-report.yml at be6ac46. That commit builds the caller repository, not the scanner. An external caller therefore has no panic-attack binary and fails at Run scan with exit 127 (hyperpolymath/panic-attack#276).

This PR moves the pin to 55ffcc9a240e937edd968487af15ab45c6f0522f, which is panic-attack main. That commit fetches the scanner source at the commit of the called workflow, builds it outside the workspace and scans the caller with that binary.

The first run of Security Scan on main after the merge is the external-caller proof for hyperpolymath/panic-attack#276.

Changes

  • .github/workflows/security-scan.yml: the uses: pin moves from be6ac46 to 55ffcc9. The trailing comment names the reason.
  • .github/workflows/actions.lock: not changed by hand. The file is tool-owned. The official refresh candidate comes from the Prepare official actions.lock refresh candidate step of the Workflow Security Linter, and a second commit applies that candidate without edits.

RSR Quality Checklist

Required

  • Tests pass (just test or equivalent): not applicable, no code changes. The hosted workflow policy check is the test.
  • Code is formatted: 1 line changed, same format.
  • Linter is clean: no new warnings.
  • No banned language patterns
  • No unsafe blocks without // SAFETY: comments
  • No banned functions
  • SPDX license headers present on all new/modified source files
  • No secrets, credentials, or .env files included

As Applicable

  • None applies. The change is 1 workflow pin and its lock record.

Testing

  • git ls-remote shows that 55ffcc9a240e937edd968487af15ab45c6f0522f is refs/heads/main of panic-attack.
  • A hosted run of that workflow in its own repository (panic-attack run 42863864116) passed the fetch, build and scan steps.
  • scripts/ci/test-issue-regressions.sh did not run locally: it needs mikefarah yq v4, which is not in this session. The hosted Workflow Security Linter runs it.
  • Security Scan does not run on pull_request. Its triggers are push to main, the weekly schedule and workflow_dispatch. This PR therefore cannot show a hosted Security Scan run before the merge.

Known limit: in panic-attack, the Send to verisimdb-data step fails with HTTP 401 because the VERISIMDB_PAT secret there is not valid. If the echidna secret has the same state, the scan steps pass and that last step fails. That is a secret to replace, not a defect of this pin.

Screenshots

Not applicable.


Generated by Claude Code

… the scanner

The pinned scan-and-report.yml at be6ac46 builds the caller repository,
not the scanner. An external caller therefore has no panic-attack binary
and fails at "Run scan" with exit 127 (hyperpolymath/panic-attack#276).

55ffcc9 is panic-attack main. It fetches the scanner source at the
commit of the called workflow, builds it outside the workspace and
scans the caller with that binary.

actions.lock is not changed here. It is tool-owned, and the official
refresh candidate comes from the Workflow Security Linter.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0136P7ZmAsYpFA9gxfQLF3F6
Signed-off-by: Claude <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Nov 10, 2026 •

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 36 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: d1b1e824-114d-452d-8ff4-4f12a8e55409
Commits

Reviewing files that changed from the base of the PR and between 57c6850 and bf00d05.

Files selected for processing: 1

  • .github/workflows/security-scan.yml
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@hyperpolymath
hyperpolymath marked this pull request as ready for review November 10, 2026 17:58
@chatgpt-codex-connector

Copy link
Copy Markdown

This security review couldn’t start because the paying account has exhausted its Codex allowance and has insufficient available credits. The payer can check their balance and add credits in the Codex usage dashboard, then try again. If you do not manage the paying account, contact this repository's admins.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 10, 2026 •

Copy link
Copy Markdown
Codex Review Summary: ✅ Completed

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-10T18:00:29.208766Z bf00d05 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@sonarqubecloud

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: bf00d05348

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

jobs:
scan:
uses: hyperpolymath/panic-attack/.github/workflows/scan-and-report.yml@be6ac46716eaf049570ec4966f4ae4699b319689 # main 2026-10-20: dtolnay/rust-toolchain v1 at 683b588 (the b689a74 pin was a commit no tag names any more)
uses: hyperpolymath/panic-attack/.github/workflows/scan-and-report.yml@55ffcc9a240e937edd968487af15ab45c6f0522f # main 2026-11-10: builds the scanner at the workflow commit, not the caller (panic-attack#276)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Refresh actions.lock with the workflow pin

The target tree still maps .github/workflows/security-scan.yml to hyperpolymath/panic-attack@be6ac467... in .github/workflows/actions.lock (lines 86–87), while this line now uses 55ffcc9.... The repository's canonical governance lockfile verification checks managed reusable workflows against that index, so this commit makes the Actions lockfile check fail until the generated lock update is committed alongside the pin.

Useful? React with 👍 / 👎.

@hyperpolymath
hyperpolymath merged commit d98b0e2 into main Nov 10, 2026
70 of 72 checks passed
@hyperpolymath
hyperpolymath deleted the marina/optimistic-cray-js64k7 branch November 10, 2026 18:03
hyperpolymath pushed a commit that referenced this pull request Nov 10, 2026
Applied without edits from the "Prepare official actions.lock refresh
candidate" step of run 42897428598 on 18828c3 (close-lock: 0 dangling
refs; check-lock-sync: in sync). It restores the reusable-workflow
records that #495 removed, for the 8 job-level reusable calls, with
their transitive actions.

#495 removed them as stale, but the governance gate accepts them: its
verifier (standards a797d30, scripts/update-actions-lock.sh) accepts a
stale finding when the workflow calls that exact owner/repo/...@ref.
The failure #495 fixed was one record (security-scan.yml at panic-attack
be6ac46, after #491 moved the call to 55ffcc9). With this commit the
committed lock matches what the standards refresh tool writes, so a
refresh no longer shows a diff.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0136P7ZmAsYpFA9gxfQLF3F6
hyperpolymath added a commit that referenced this pull request Nov 10, 2026
## Summary

The Workflow Security Linter refresh and the committed `actions.lock`
produced different locks. This PR makes them agree, using the form the
owner chose: the form that the standards refresh tool writes.

The candidate is applied without edits, from the "Prepare official
actions.lock refresh candidate" step of run 42897428598 on `18828c3`.
That run reports `close-lock: 0 dangling refs`, `prune-stale: oracle
vetoes 0` and `actions.lock is in sync`. It restores the
reusable-workflow records that #495 removed: 8 job-level reusable calls,
with their transitive actions.

## Why this is safe for governance

#495 removed these records as stale. The governance gate accepts them,
however. Its verifier (standards `a797d30`,
`scripts/update-actions-lock.sh`, `verify_lock_coverage`) accepts a
`stale` finding when the workflow calls that exact
`owner/repo/.github/workflows/…@ref`. The governance log on `d98b0e2`
shows that 7 of the 8 records were accepted. It rejected only 1:
`security-scan.yml → panic-attack@be6ac46`, which was stale because #491
had moved the call to `55ffcc9`. This form passed governance on
`453fe3b` (#496).

The refresh run above printed the same "Accepted reusable-workflow lock
coverage" line for each of the 8 current calls.

## Correction

#500 said that applying this candidate would turn governance red. That
was wrong, for the reason above.

## Test plan

- [ ] governance / Actions lockfile verify passes on this head.

---
_Generated by [Claude
Code](https://claude.ai/code/session_0136P7ZmAsYpFA9gxfQLF3F6)_

Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants