Skip to content

fix(ci): call the secret scanner from proven-cicd-and-workflows - #663

Merged
hyperpolymath merged 1 commit into
mainfrom
marina/optimistic-cray-js64k7
Nov 10, 2026
Merged

hyperpolymath merged 1 commit into
mainfrom
marina/optimistic-cray-js64k7

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Summary

hyperpolymath/proven-cicd is being retired. Its commits were merged into hyperpolymath/proven-cicd-and-workflows (proven-cicd-and-workflows#95). gitbot-fleet is the last caller. This PR moves the fleet secret scanner so the old repository can be deleted.

  • Before: hyperpolymath/proven-cicd/.github/workflows/secret-scanner-reusable.yml@03e858b
  • After: hyperpolymath/proven-cicd-and-workflows/.github/workflows/secret-scanner-reusable.yml@1fd5e63 (the merge of proven-cicd-and-workflows#94)

03e858b is an ancestor of 1fd5e63. The reusable differs in 1 line: its caller check also admits the new repository name, which this call needs. Its steps are unchanged (actions/checkout@3d3c42e at lines 28 and 55).

What moves with the pin

The pin is bound in several places. Each one moves, following the pattern of #656:

File Change
.github/workflows/secret-scanner.yml the uses: line
scripts/check-scanner-caller.rb, scripts/tests/scanner-caller-contract-test.sh the expected pin
scripts/lib/pinned-reusable-sources.json the active source (blob 3ac563a, content sha256 21ae8d1b…) and its dependency record (repo_id 1326697643, the id of proven-cicd-and-workflows)
scripts/lib/lock-closure-receipts.tsv the reviewed receipt
tools/workflow-lock-audit/tests/contracts.rs the pinned contract
migration preflight.sh, fixtures/restore-historical-source.sh, scripts/tests/pinned-source-entrypoints-test.sh they recognise the live caller before they restore the archived 4404c3c proposal
migration fixtures/SHA256SUMS the new hash of the fixture script

Unchanged: full-history policy (fast-pr: false), permissions, secrets boundary, triggers and required contexts. Dated migration records (for example 2026-11-09-repair-notes.md) are not rewritten.

Local evidence

  • ruby scripts/check-scanner-caller.rb and scripts/tests/scanner-caller-contract-test.sh: pass, including every negative control.
  • scripts/audit-pinned-reusable-sources.sh --fetch-sources: findings=0, not-run=0, verified-roots=5. It fetched 1fd5e63 from proven-cicd-and-workflows and authenticated the blob.
  • scripts/audit-lock-closure.sh: fatal=0, review=0.
  • cargo test --locked in tools/workflow-lock-audit: 42 passed.
  • scripts/tests/pinned-source-entrypoints-test.sh: 7 passed, 2 failed ("untouched candidate remains blocked by missing canary", "untouched diagnostic classification", both exit 3). The same 2 fail with identical output on unchanged main (117e3e8), so this change does not cause them.

The old-pin canary does not attest this new pin, as the caller comment already says.


Generated by Claude Code

hyperpolymath/proven-cicd is being retired; its commits were merged into
hyperpolymath/proven-cicd-and-workflows (proven-cicd-and-workflows#95).
The fleet scanner moves from proven-cicd@03e858b to
proven-cicd-and-workflows@1fd5e63 (the #94 merge). 03e858b is an
ancestor of 1fd5e63. The reusable differs in one line: its caller check
also admits the new repository name, which this call needs. Its steps
(actions/checkout@3d3c42e at lines 28 and 55) are unchanged.

The pin is bound in several places, and each moves with it:
- scripts/check-scanner-caller.rb and its contract test (expected pin);
- scripts/lib/pinned-reusable-sources.json: the active source (blob
  3ac563a, content sha256 21ae8d1b...) and its dependency record
  (repo_id 1326697643, the id of proven-cicd-and-workflows);
- scripts/lib/lock-closure-receipts.tsv: the reviewed receipt;
- tools/workflow-lock-audit/tests/contracts.rs;
- the historical-projection fixture, the preflight and the entrypoint
  test, which recognise the live caller before they restore the archived
  4404c3c proposal; fixtures/SHA256SUMS is updated for the fixture.

The full-history policy, permissions, secrets boundary and required
contexts are unchanged. Dated migration records are not rewritten.

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

coderabbitai Bot commented Nov 10, 2026 •

Copy link
Copy Markdown
Contributor

Explain Change →

Caution

Review failed

The pull request is closed.

  • 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

@sonarqubecloud

Copy link
Copy Markdown

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

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

Copy link
Copy Markdown
Codex Review Summary: ❌ Failed

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

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-10T20:35:18.288977Z f7dc0de Draft marked ready
🔒 Security Review ❌ Failed 2026-11-10T20:31:40.384256Z
We couldn’t complete this review. Comment @codex security review to try again.
f7dc0de 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.

@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.

@hyperpolymath
hyperpolymath merged commit 9d4db80 into main Nov 10, 2026
69 of 70 checks passed
@hyperpolymath
hyperpolymath deleted the marina/optimistic-cray-js64k7 branch November 10, 2026 20:32
hyperpolymath added a commit to hyperpolymath/contractiles that referenced this pull request Nov 10, 2026
## Why

The `main` ruleset requires the `scan / gitleaks` status check.
`secret-scanner.yml` called
`hyperpolymath/standards/.github/workflows/secret-scanner-reusable.yml@571cc73`,
and every run of it failed at startup with 0 jobs (for example run
42703228097 on #74, and run 42499662578 on `main`). So the required
context was never reported, and no PR could merge without a bypass. This
blocks #74.

## What

`.github/workflows/secret-scanner.yml` now calls the published
cicd-suite scanner, as gitbot-fleet does since
hyperpolymath/gitbot-fleet#663:

- `uses:
hyperpolymath/proven-cicd-and-workflows@1fd5e63`,
the same pin as gitbot-fleet.
- `fast-pr: false`, so every run scans full history.
- `contents: read` is the only grant, which is exactly what the callee's
jobs declare.
- No `secrets: inherit`. The callee declares no `workflow_call` secret
and installs its own checksum-pinned Gitleaks.

The callee's `gitleaks` job produces `scan / gitleaks`. Its supplemental
matrix also reports `scan / rust-secrets` and `scan / shell-secrets`.

`actions.lock` is unchanged. Its entry for this workflow is already
`[]`, as gitbot-fleet's is for the same caller.

## Testing

- The `uses:` line parses (yq). `actionlint` is not installed in this
session.
- This PR's own CI run is the test: it must report `scan / gitleaks`.

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

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