Repository navigation
fix(ci): bump governance/readme-derive pins, fix abi-drift and release.yml parse - #345
Merged
Merged
Conversation
- abi-drift.yml: drop the stray duplicate `with:` block (toolchain: v1) on the rust-toolchain step. GitHub rejects a workflow with duplicate keys before any job starts; the governance workflow linter reported "duplicate key(s): 'with' (line 86)". - governance.yml: bump governance-reusable to standards main 5a0891e9. The 08-27 pin ran the live Actions-policy check with an empty GH_TOKEN and exited 3; main splits it into a credentialed advisory job. - readme-derive.yml: bump readme-derive-reusable to standards main 5a0891e9, which fixes `gem install ... -v` with multiple gems (ERROR: Can't use --version with multiple gems). README.md re-derived locally with the pinned toolchain is identical to the committed file. - release.yml: remove `runs-on` from the provenance job. A job that calls a reusable workflow may not carry runs-on, so GitHub could not parse the file and recorded a failed zero-job run on every push (124 runs, never green). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X3hgXxWm6umMgZkjYyHnnm
Contributor
|
Note Currently processing new changes in this PR. This may take a few minutes, please wait... ⚙️ Run configuration
📒 Files selected for processing (4)
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. Comment |
🔍 Hypatia Security ScanFindings: 114 issues detected
View findings[
{
"reason": "Job `sonarqube` in build.yml has no `timeout-minutes:` declaration. Default is 6 hours — a stuck codeload fetch or runner hang can burn budget. Add `timeout-minutes: 10` (or proportional).",
"type": "missing_timeout_minutes",
"file": ".github/workflows/build.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium",
"recipe_id": "recipe-add-workflow-timeout-minutes",
"job": "sonarqube"
},
{
"reason": "Job `triage` in label-triage.yml has no `timeout-minutes:` declaration. Default is 6 hours — a stuck codeload fetch or runner hang can burn budget. Add `timeout-minutes: 10` (or proportional).",
"type": "missing_timeout_minutes",
"file": ".github/workflows/label-triage.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium",
"recipe_id": "recipe-add-workflow-timeout-minutes",
"job": "triage"
},
{
"reason": "Job `sync` in labels.yml has no `timeout-minutes:` declaration. Default is 6 hours — a stuck codeload fetch or runner hang can burn budget. Add `timeout-minutes: 10` (or proportional).",
"type": "missing_timeout_minutes",
"file": ".github/workflows/labels.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium",
"recipe_id": "recipe-add-workflow-timeout-minutes",
"job": "sync"
},
{
"reason": "Job `deploy` in pages-deploy.yml has no `timeout-minutes:` declaration. Default is 6 hours — a stuck codeload fetch or runner hang can burn budget. Add `timeout-minutes: 10` (or proportional).",
"type": "missing_timeout_minutes",
"file": ".github/workflows/pages-deploy.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium",
"recipe_id": "recipe-add-workflow-timeout-minutes",
"job": "deploy"
},
{
"reason": "Step uses `peter-evans/repository-dispatch` with `token: ${{ secrets.FARM_DISPATCH_TOKEN }}` but has no `if: secrets.FARM_DISPATCH_TOKEN != ''` gate. On repos where the secret hasn't been propagated the action fails on every push, red-maining the repo. Add the step-level gate (or env+if pattern) so the missing-secret path is a clean skip instead of a red.",
"type": "secret_action_without_presence_gate",
"file": ".github/workflows/instant-sync.yml",
"action": "peter-evans/repository-dispatch",
"rule_module": "workflow_audit",
"severity": "high",
"fix_recipe": "add_secret_presence_gate"
},
{
"reason": "codeql.yml does not list `language: actions` in its matrix, but the repo has workflow files. CodeQL's `actions` language scans workflow YAML for injection and other CI/CD-specific weaknesses — every repo with workflows benefits. Add an entry to `matrix.include` with `language: actions` + `build-mode: none`.",
"type": "codeql_missing_actions_language",
"file": ".github/workflows/codeql.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium",
"fix_recipe": "add_codeql_actions_language"
},
{
"line": 39,
"reason": "job in .github/workflows/labels.yml references `secrets.*` but does not install `step-security/harden-runner` — review outbound-egress monitoring",
"type": "RE001",
"file": ".github/workflows/labels.yml",
"action": "report",
"rule_module": "research_extensions",
"severity": "medium"
},
{
"line": 46,
"reason": "job in .github/workflows/push-email-notify.yml references `secrets.*` but does not install `step-security/harden-runner` — review outbound-egress monitoring",
"type": "RE001",
"file": ".github/workflows/push-email-notify.yml",
"action": "report",
"rule_module": "research_extensions",
"severity": "medium"
},
{
"line": 32,
"reason": "job in .github/workflows/build.yml references `secrets.*` but does not install `step-security/harden-runner` — review outbound-egress monitoring",
"type": "RE001",
"file": ".github/workflows/build.yml",
"action": "report",
"rule_module": "research_extensions",
"severity": "medium"
},
{
"line": 44,
"reason": "job in .github/workflows/container-publish.yml references `secrets.*` but does not install `step-security/harden-runner` — review outbound-egress monitoring",
"type": "RE001",
"file": ".github/workflows/container-publish.yml",
"action": "report",
"rule_module": "research_extensions",
"severity": "medium"
}
]Powered by Hypatia Neurosymbolic CI/CD Intelligence |
Contributor
|
Add Carrot credits or activate Agent usage billing to use Autopilot |
3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR clears four CI reds on
main(b42ca64) that come from workflow files rather than from the code: the governance Allowlist Preflight, the governance Workflow security linter, readme-derive, and release.yml. release.yml has never been green: it failed at startup on every push.Changes
.github/workflows/abi-drift.yml: deleted a stray secondwith:block (toolchain: v1) on thedtolnay/rust-toolchain@v1step. GitHub rejects a workflow that has duplicate keys before any job starts..github/workflows/governance.yml: bumpedgovernance-reusable.ymlfrom84355587(08-27) to standards main5a0891e9. In the old reusable, Allowlist Preflight ran the live Actions-policy read with an emptyGH_TOKENand exited 3. At5a0891e9that read is a separate credentialed advisory job..github/workflows/readme-derive.yml: bumpedreadme-derive-reusable.ymlto standards main5a0891e9, which fixes thegem install … -vmulti-gem error. Also rewrote the stale pin comment..github/workflows/release.yml: removedruns-on: ubuntu-latestfrom theprovenancejob. That job calls the SLSA reusable workflow, and a job that calls a reusable workflow may not setruns-on. GitHub therefore failed to parse the file and recorded a zero-job failed run on every push, even though the trigger is tags only.Reds addressed (decisive log line on
main)ERROR: could not read live Actions permissions for hyperpolymath/boj-server(exit 3,GH_TOKEN:empty)##[error]duplicate key(s): 'with' (line 86)ERROR: Can't use --version with multiple gems.when a reusable workflow is called with "uses", "runs-on" is not availableCLOUDFLARE_API_TOKEN/CLOUDFLARE_ACCOUNT_IDempty, so wrangler failsSONAR_TOKENType of change
📌 New pins
Head SHA:
2592ba45aa2cee7693034a06b3c4e46701cac56bhyperpolymath/standards/.github/workflows/governance-reusable.yml@5a0891e9e58b785181a92e141505ca96ca987b42(was84355587…)hyperpolymath/standards/.github/workflows/readme-derive-reusable.yml@5a0891e9e58b785181a92e141505ca96ca987b425a0891e9is a commit (gh api repos/hyperpolymath/standards/git/commits/5a0891e9…returned 200) and an ancestor of standardsmain(compare reportsahead,behind_by=0).actions.lock: no change. Reusable-workflow callers keep[]entries. The callee's own lock at5a0891e9covers both reusables.RSR Quality Checklist
Required
just testnot run): these are workflow-only changes, and the affected gates were re-run locally (see Testing). No source code changed.just fmtnot run): no source code changed.actionlint(non-shellcheck rules) is clean on all 27 workflows.27 workflow file(s) clean; SPDX + permissions reportAll workflows have SPDX headers + permissions.unsafeblocks: none touched..envfiles.As Applicable
.machine_readable/STATE.a2ml: N/A, project state did not change..machine_readable/ECOSYSTEM.a2ml: N/A, no integration change..machine_readable/META.a2ml: N/A.README.mdre-derived locally is byte-identical to the committed file.TOPOLOGY.md: N/A.CHANGELOG: N/A, CI-only.Testing
All of these ran locally on this branch, rebased onto
b42ca648:gh actions-lock --verify(v0.1.6) printedScanning 27 workflows, rc=0. Positive control: changing oneuses:ref made it fail with rc=1.check-workflow-duplicate-keys.shprintedduplicate-key check: 27 workflow file(s) clean. Onmainthe same script reportsabi-drift.ymlline 86.5a0891e9reusable) printedAll workflows have SPDX headers + permissions.check-action-pins-resolve.shwithGH_TOKENset printedAll 3 verifiable action pin(s) resolve upstream., rc=0.check-actions-lock-gate.sh(newactions-lock-verifyjob) printedImmutable direct and transitive lockfile coverage verified.--failure-level=WARN, then pandoc gfm, then the stamp): reducer stderr was empty, the freshness diff rc=0 (identical), and the vocab gate passed at 98.4% against a threshold of 98. Positive control: threshold 99 gave rc=1.actionlinton release.yml: before the change it reported theruns-onerror; after, it is clean.Notes for reviewers
uuid-v7-conformance. The5a0891e9reusable adds this job, and./.machine_readable/CLADE.a2mlcontains a non-v7 UUID literal (5f5df93b-789d-5ff6-8a44-9dc6ed90a7b1). It is listed as a finding and not changed here.mirror.yml,scorecard.ymlandsecret-scanner.ymlstay on84355587; they were not red.src/bench.zig:27:60: enum 'Io.Clock' has no member named 'monotonic'(Zig 0.16 API).proofs.ymlis red on the newmain.npx wrangler@latest, which breaks bun-only doctrine and leaves the version floating..machine_readable/6a2/has not been migrated todescriptiles/.🤖 Generated with Claude Code
https://claude.ai/code/session_01X3hgXxWm6umMgZkjYyHnnm