Skip to content

ci: real merge gate (ci + secret-scan) and SHA-pinned actions - #3

Merged
SaulBuilds merged 2 commits into
mainfrom
ci/merge-gate-and-pinning
Sep 25, 2026
Merged

SaulBuilds merged 2 commits into
mainfrom
ci/merge-gate-and-pinning

Conversation

@SaulBuilds

Copy link
Copy Markdown
Contributor

Pre-bounty audit WP R1.3 (PBA-L7-001, PBA-L6-003).

  • Adds .github/workflows/merge-gate.yml with jobs named exactly ci and secret-scan (the required checks, which previously had no producer, so every merge needed the admin bypass).
    • secret-scan: gitleaks 8.30.1 (checksum-verified) over the commits this change introduces, plus the canonical-slug tripwire if present.
    • ci: waits for every other check run on the head commit and fails if any failed.
  • Pins every uses: to a full commit SHA (# vX comment kept); dtolnay/rust-toolchain steps get an explicit toolchain:. Each workflow verified structurally identical apart from refs.

Once this merges everywhere, required checks move to a no-bypass ruleset bound to GitHub Actions.

🤖 Generated with Claude Code

https://claude.ai/code/session_01FYQkdsk54yob6FD24jAT8P

The required status checks `ci` and `secret-scan` had no producing job in any repo, so no PR could pass branch protection and every merge used the admin bypass (PBA-L7-001). merge-gate.yml adds both: secret-scan runs checksum-pinned gitleaks over the commits a change introduces (+ the canonical-slug tripwire); ci waits for every other check on the head commit and fails if any failed. All actions are now pinned to full commit SHAs with the version as a comment (PBA-L6-003); dtolnay/rust-toolchain steps name their toolchain explicitly so pinning does not change which Rust is installed. Each workflow was verified structurally identical apart from the refs.

Audit: citrate-security 2026-09-24-prebounty-adversarial-audit, WP R1.3.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FYQkdsk54yob6FD24jAT8P
@github-actions

Copy link
Copy Markdown

Claim grader (shadow mode)

Each commit / PR-text element scored against the claim-compression rubric. Shadow mode: this comment is informational; merge is not blocked.

Kind Id Score Verdict Reasons
pr_title PR #3 — grader-unavailable no API key in env (set ANTHROPIC_API_KEY or OPENAI_API_KEY); grader returns informational no-op until configured
pr_body PR #3 — grader-unavailable no API key in env (set ANTHROPIC_API_KEY or OPENAI_API_KEY); grader returns informational no-op until configured
commit 4af5eba0 — grader-unavailable no API key in env (set ANTHROPIC_API_KEY or OPENAI_API_KEY); grader returns informational no-op until configured

A run cancelled because a duplicate (push + pull_request in one concurrency group) superseded it was counted as a failure. Now: wait while any run of a check is pending; otherwise judge its most recent non-cancelled result; a check whose every run was cancelled still fails. Reads all check runs (paginated), not just the latest per name. Verified on six fixtures.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FYQkdsk54yob6FD24jAT8P
@github-actions

Copy link
Copy Markdown

Claim grader (shadow mode)

Each commit / PR-text element scored against the claim-compression rubric. Shadow mode: this comment is informational; merge is not blocked.

Kind Id Score Verdict Reasons
pr_title PR #3 — grader-unavailable no API key in env (set ANTHROPIC_API_KEY or OPENAI_API_KEY); grader returns informational no-op until configured
pr_body PR #3 — grader-unavailable no API key in env (set ANTHROPIC_API_KEY or OPENAI_API_KEY); grader returns informational no-op until configured
commit 4af5eba0 — grader-unavailable no API key in env (set ANTHROPIC_API_KEY or OPENAI_API_KEY); grader returns informational no-op until configured
commit 8f09d5b3 — grader-unavailable no API key in env (set ANTHROPIC_API_KEY or OPENAI_API_KEY); grader returns informational no-op until configured

@SaulBuilds
SaulBuilds merged commit 4ea348d into main Sep 25, 2026
19 checks passed
@SaulBuilds
SaulBuilds deleted the ci/merge-gate-and-pinning branch September 25, 2026 03:51
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.

1 participant