Skip to content

chore(ci): bump governance-reusable pin to standards main - #35

Merged
hyperpolymath merged 1 commit into
mainfrom
chore/bump-governance-pin-to-standards-main
Sep 8, 2026
Merged

chore(ci): bump governance-reusable pin to standards main#35
hyperpolymath merged 1 commit into
mainfrom
chore/bump-governance-pin-to-standards-main

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Pinned revision 84355587 of governance-reusable.yml carries two bugs that make Governance red on every consumer:

  1. Workflow security linter runs bash scripts/update-actions-lock.sh --verify-local in the caller's checkout, where the script does not exist — exit 127.
  2. Allowlist Preflight runs check-actions-policy.sh with an empty GH_TOKENgh refuses, exit 3.

Both are cured on standards main (fad242d35291de1898242d6737ba02b74a59a2f2): the verifier is copied into \$RUNNER_TEMP, and the policy step is skipped when no credential is supplied.

Witness: verified green on hyperpolymath/blocky-writer#55 at this exact SHA — governance run completed/success, 15/15 jobs, including the two jobs that were red on that repo's default branch.

Judge this PR by the set difference against your own default branch (which governance jobs are newly red), not by overall check colour — unrelated build failures may pre-date it.

Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com

The pinned revision carries bugs that make Governance red on every
consumer: the Workflow security linter runs update-actions-lock.sh from
the CALLER's checkout where it does not exist (exit 127), and Allowlist
Preflight runs check-actions-policy.sh with an empty GH_TOKEN (exit 3).
Both are fixed on standards main. Witnessed green on hyperpolymath/blocky-writer
at this exact SHA: governance run completed/success, 15/15 jobs.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitaiBot commented Sep 7, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Team

Run ID: 184b49d0-ab2a-494b-8881-40953bd2280b

📥 Commits

Reviewing files that changed from the base of the PR and between 4298a7c and e550be9.

📒 Files selected for processing (1)
  • .github/workflows/governance.yml

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.

📜 Recent review details
⏰ Context from checks skipped due to timeout. (14)
  • GitHub Check: Dogfooding compliance summary
  • GitHub Check: governance / Validate Hypatia Baseline
  • GitHub Check: C FFI Integration Tests
  • GitHub Check: C FFI Integration Tests
  • GitHub Check: Deposit findings for gitbot-fleet
  • GitHub Check: governance / Guix packaging policy (Nix retired)
  • GitHub Check: governance / Exemption ratchet
  • GitHub Check: governance / Debt ratchet
  • GitHub Check: governance / Code quality + docs
  • GitHub Check: governance / Allowlist Preflight
  • GitHub Check: governance / Licence consistency
  • GitHub Check: governance / Workflow security linter
  • GitHub Check: scan / Hypatia Neurosymbolic Analysis
  • GitHub Check: governance / Well-Known (RFC 9116 + RSR)
⚠️ CI failures not shown inline (12)

GitHub Actions: SonarQube / 0_SonarQube.txt: chore(ci): bump governance-reusable pin to standards main

Conclusion: failure

View job details

##[group]Run SonarSource/sonarqube-scan-action@v8.2.1
with:
projectBaseDir: .
scannerVersion: 8.1.0.6389
scannerBinariesUrl: https://binaries.sonarsource.com/Distribution/sonar-scanner-cli
skipSignatureVerification: false
env:
SONAR_***REDACTED_SECRET_ASSIGNMENT***
##[warning]Running this GitHub Action without SONAR_TOKEN is not recommended
Installing Sonar Scanner CLI 8.1.0.6389 for linux-x64...
Downloading from: https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-8.1.0.6389-linux-x64.zip
Downloading signature from: https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-8.1.0.6389-linux-x64.zip.asc
Importing SonarSource public key from hkps://keyserver.ubuntu.com...
[command]/usr/bin/gpg --homedir /home/runner/work/_temp/gpg-714044f6 --batch --keyserver hkps://keyserver.ubuntu.com --recv-keys 679F1EE92B19609DE816FDE81DB198F93525EC1A
gpg: keybox '/home/runner/work/_temp/gpg-714044f6/pubring.kbx' created
gpg: /home/runner/work/_temp/gpg-714044f6/trustdb.gpg: trustdb created
gpg: key 1DB198F93525EC1A: public key "SonarSource S.A. <infra@sonarsource.com>" imported
gpg: Total number processed: 1
gpg: imported: 1
Successfully imported key from hkps://keyserver.ubuntu.com
✓ SonarSource public key imported successfully
Verifying GPG signature...
[command]/usr/bin/gpg --homedir /home/runner/work/_temp/gpg-714044f6 --batch --verify /home/runner/work/_temp/34f4c641-653a-40c6-9b3e-7950dc9268ae /home/runner/work/_temp/ab1f6197-a0bf-4608-95ee-b387c71848b4
gpg: Signature made Tue Apr 21 07:20:26 2026 UTC
gpg: using RSA key D1436C0DBACEA48702AF97C363F1DD7753B8B315
gpg: Good signature from "SonarSource S.A. <infra@sonarsource.com>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 679F 1EE9 2B19 609D E816 FDE8 1DB1 98F9 3525 EC1A...

GitHub Actions: Workflow Security Linter / 0_lint-workflows.txt: chore(ci): bump governance-reusable pin to standards main

Conclusion: failure

View job details

##[group]Run echo "=== Checking Action Pinning ==="
�[36;1mecho "=== Checking Action Pinning ==="�[0m
�[36;1m# Find any uses: lines that don't have `@SHA` format�[0m
�[36;1m# Pattern: uses: owner/repo@<40-char-hex>�[0m
�[36;1munpinned=$(grep -rnE "^[[:space:]]+uses:" .github/workflows/ | \�[0m
�[36;1m grep -v "@[a-f0-9]\{40\}" | \�[0m
�[36;1m grep -v "uses: \./\|uses: docker://\|uses: actions/github-script" || true)�[0m
�[36;1m�[0m
�[36;1mif [ -n "$unpinned" ]; then�[0m
�[36;1m echo "ERROR: Found unpinned actions:"�[0m
�[36;1m echo "$unpinned"�[0m
�[36;1m echo ""�[0m
�[36;1m echo "Replace version tags with SHA pins, e.g.:"�[0m
�[36;1m echo " uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v6.0.1"�[0m
�[36;1m exit 1�[0m
�[36;1mfi�[0m
�[36;1mecho "All actions are SHA-pinned"�[0m
shell: /usr/bin/bash -e {0}
##[endgroup]
=== Checking Action Pinning ===
ERROR: Found unpinned actions:
.github/workflows/release.yml:115: uses: actions/upload-artifact@v7.0.1
.github/workflows/release.yml:138: uses: softprops/action-gh-release@v3.0.3
.github/workflows/release.yml:159: uses: actions/attest-build-provenance@v4.2.2
.github/workflows/boj-build.yml:29: uses: actions/checkout@v7.0.1
.github/workflows/dependabot-automerge.yml:60: uses: dependabot/fetch-metadata@v3.1.0
.github/workflows/quality.yml:32: uses: trufflesecurity/trufflehog@v3.97.1
.github/workflows/quality.yml:46: uses: editorconfig-checker/action-editorconfig-checker@v2.2.0
.github/workflows/e2e.yml:49: uses: actions/checkout@v7.0.1
.github/workflows/codeql.yml:39: uses: actions/checkout@v7.0.1
.github/workflows/codeql.yml:41: uses: github/codeql-action/init@v4.37.9
.github/workflows/codeql.yml:46: uses: github/codeql-action/analyze@v4.37.9
.github/workflows/sonarqube.yml:29: uses: actions/checkout@v7.0.1
.github/workflows/sonarqube.yml:33: uses: SonarSource/sonarqube-sca...

GitHub Actions: Estate Rules / 0_estate-rules.txt: chore(ci): bump governance-reusable pin to standards main

Conclusion: failure

View job details

##[group]Run bash scripts/check-root-shape.sh .
�[36;1mbash scripts/check-root-shape.sh .�[0m
shell: /usr/bin/bash -e {0}
##[endgroup]
FAIL: 3 root entries are not on the allowlist:
- CHANGELOG.adoc
- CONTRIBUTING.adoc
- SECURITY.adoc
Either move them into the appropriate subdirectory, or add a justified
entry to .machine_readable/root-allow.txt.
##[error]Process completed with exit code 1.

GitHub Actions: SonarQube / SonarQube: chore(ci): bump governance-reusable pin to standards main

Conclusion: failure

View job details

##[group]Run SonarSource/sonarqube-scan-action@v8.2.1
with:
projectBaseDir: .
scannerVersion: 8.1.0.6389
scannerBinariesUrl: https://binaries.sonarsource.com/Distribution/sonar-scanner-cli
skipSignatureVerification: false
env:
SONAR_***REDACTED_SECRET_ASSIGNMENT***
##[warning]Running this GitHub Action without SONAR_TOKEN is not recommended
Installing Sonar Scanner CLI 8.1.0.6389 for linux-x64...
Downloading from: https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-8.1.0.6389-linux-x64.zip
Downloading signature from: https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-8.1.0.6389-linux-x64.zip.asc
Importing SonarSource public key from hkps://keyserver.ubuntu.com...
[command]/usr/bin/gpg --homedir /home/runner/work/_temp/gpg-714044f6 --batch --keyserver hkps://keyserver.ubuntu.com --recv-keys 679F1EE92B19609DE816FDE81DB198F93525EC1A
gpg: keybox '/home/runner/work/_temp/gpg-714044f6/pubring.kbx' created
gpg: /home/runner/work/_temp/gpg-714044f6/trustdb.gpg: trustdb created
gpg: key 1DB198F93525EC1A: public key "SonarSource S.A. <infra@sonarsource.com>" imported
gpg: Total number processed: 1
gpg: imported: 1
Successfully imported key from hkps://keyserver.ubuntu.com
✓ SonarSource public key imported successfully
Verifying GPG signature...
[command]/usr/bin/gpg --homedir /home/runner/work/_temp/gpg-714044f6 --batch --verify /home/runner/work/_temp/34f4c641-653a-40c6-9b3e-7950dc9268ae /home/runner/work/_temp/ab1f6197-a0bf-4608-95ee-b387c71848b4
gpg: Signature made Tue Apr 21 07:20:26 2026 UTC
gpg: using RSA key D1436C0DBACEA48702AF97C363F1DD7753B8B315
gpg: Good signature from "SonarSource S.A. <infra@sonarsource.com>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 679F 1EE9 2B19 609D E816 FDE8 1DB1 98F9 3525 EC1A...

GitHub Actions: Workflow Security Linter / lint-workflows: chore(ci): bump governance-reusable pin to standards main

Conclusion: failure

View job details

##[group]Run echo "=== Checking Action Pinning ==="
�[36;1mecho "=== Checking Action Pinning ==="�[0m
�[36;1m# Find any uses: lines that don't have `@SHA` format�[0m
�[36;1m# Pattern: uses: owner/repo@<40-char-hex>�[0m
�[36;1munpinned=$(grep -rnE "^[[:space:]]+uses:" .github/workflows/ | \�[0m
�[36;1m grep -v "@[a-f0-9]\{40\}" | \�[0m
�[36;1m grep -v "uses: \./\|uses: docker://\|uses: actions/github-script" || true)�[0m
�[36;1m�[0m
�[36;1mif [ -n "$unpinned" ]; then�[0m
�[36;1m echo "ERROR: Found unpinned actions:"�[0m
�[36;1m echo "$unpinned"�[0m
�[36;1m echo ""�[0m
�[36;1m echo "Replace version tags with SHA pins, e.g.:"�[0m
�[36;1m echo " uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v6.0.1"�[0m
�[36;1m exit 1�[0m
�[36;1mfi�[0m
�[36;1mecho "All actions are SHA-pinned"�[0m
shell: /usr/bin/bash -e {0}
##[endgroup]
=== Checking Action Pinning ===
ERROR: Found unpinned actions:
.github/workflows/release.yml:115: uses: actions/upload-artifact@v7.0.1
.github/workflows/release.yml:138: uses: softprops/action-gh-release@v3.0.3
.github/workflows/release.yml:159: uses: actions/attest-build-provenance@v4.2.2
.github/workflows/boj-build.yml:29: uses: actions/checkout@v7.0.1
.github/workflows/dependabot-automerge.yml:60: uses: dependabot/fetch-metadata@v3.1.0
.github/workflows/quality.yml:32: uses: trufflesecurity/trufflehog@v3.97.1
.github/workflows/quality.yml:46: uses: editorconfig-checker/action-editorconfig-checker@v2.2.0
.github/workflows/e2e.yml:49: uses: actions/checkout@v7.0.1
.github/workflows/codeql.yml:39: uses: actions/checkout@v7.0.1
.github/workflows/codeql.yml:41: uses: github/codeql-action/init@v4.37.9
.github/workflows/codeql.yml:46: uses: github/codeql-action/analyze@v4.37.9
.github/workflows/sonarqube.yml:29: uses: actions/checkout@v7.0.1
.github/workflows/sonarqube.yml:33: uses: SonarSource/sonarqube-sca...

GitHub Actions: Estate Rules / estate-rules: chore(ci): bump governance-reusable pin to standards main

Conclusion: failure

View job details

##[group]Run bash scripts/check-root-shape.sh .
�[36;1mbash scripts/check-root-shape.sh .�[0m
shell: /usr/bin/bash -e {0}
##[endgroup]
FAIL: 3 root entries are not on the allowlist:
- CHANGELOG.adoc
- CONTRIBUTING.adoc
- SECURITY.adoc
Either move them into the appropriate subdirectory, or add a justified
entry to .machine_readable/root-allow.txt.
##[error]Process completed with exit code 1.

GitHub Actions: Secret Scanner / 0_scan _ rust-secrets.txt: chore(ci): bump governance-reusable pin to standards main

Conclusion: failure

View job details

##[group]Run TODAY="${RUST_TODAY:-$(date -u +%Y-%m-%d)}"
�[36;1mTODAY="${RUST_TODAY:-$(date -u +%Y-%m-%d)}"�[0m
�[36;1m�[0m
�[36;1m# An unparseable cutoff would pick the warn branch forever, silently�[0m
�[36;1m# disarming the widened scan. Refuse to run instead.�[0m
�[36;1mrequire_date() {�[0m
�[36;1m case "$2" in�[0m
�[36;1m [0-9][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9]) : ;;�[0m
�[36;1m *) echo "::error::rust-secrets: $1='$2' is not YYYY-MM-DD."�[0m

GitHub Actions: Secret Scanner / scan _ rust-secrets: chore(ci): bump governance-reusable pin to standards main

Conclusion: failure

View job details

##[group]Run TODAY="${RUST_TODAY:-$(date -u +%Y-%m-%d)}"
�[36;1mTODAY="${RUST_TODAY:-$(date -u +%Y-%m-%d)}"�[0m
�[36;1m�[0m
�[36;1m# An unparseable cutoff would pick the warn branch forever, silently�[0m
�[36;1m# disarming the widened scan. Refuse to run instead.�[0m
�[36;1mrequire_date() {�[0m
�[36;1m case "$2" in�[0m
�[36;1m [0-9][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9]) : ;;�[0m
�[36;1m *) echo "::error::rust-secrets: $1='$2' is not YYYY-MM-DD."�[0m

GitHub Actions: Secret Scanner / 1_scan _ gitleaks.txt: chore(ci): bump governance-reusable pin to standards main

Conclusion: failure

View job details

##[group]Run set -euo pipefail
�[36;1mset -euo pipefail�[0m
�[36;1m�[0m
�[36;1m# A repo-local baseline wins outright — it is expected to `[extend]`�[0m
�[36;1m# the estate one, so "wins" still means "inherits". This mirrors what�[0m
�[36;1m# the AsciiDoc pass below already did, which was inconsistent with�[0m
�[36;1m# this step until now.�[0m
�[36;1mCONFIG=".gitleaks-estate.toml"�[0m
�[36;1mif [ -f .gitleaks.toml ]; then�[0m
�[36;1m CONFIG=".gitleaks.toml"�[0m
�[36;1m echo "Using repository .gitleaks.toml (extending the estate baseline)."�[0m
�[36;1melse�[0m
�[36;1m echo "Using estate baseline allowlist."�[0m
�[36;1mfi�[0m
�[36;1m�[0m
�[36;1m"$RUNNER_TEMP/gitleaks" detect \�[0m
�[36;1m --source . \�[0m
�[36;1m --no-git \�[0m
�[36;1m --redact \�[0m
�[36;1m --no-banner \�[0m
�[36;1m --verbose \�[0m
�[36;1m --config "$CONFIG" \�[0m
�[36;1m --exit-code 1�[0m
shell: /usr/bin/bash -e {0}
##[endgroup]
Using estate baseline allowlist.
Finding: # januskey -> �[1;3;mREDACTED�[0m
#
***REDACTED_SECRET_ASSIGNMENT***
RuleID: generic-api-key
Entropy: 3.840083
File: .machine_readable/descriptiles/CLADE.a2ml
Line: 21
Fingerprint: .machine_readable/descriptiles/CLADE.a2ml:generic-api-key:21
Finding: const key = "�[1;3;mREDACTED�[0m"
***REDACTED_SECRET_ASSIGNMENT***
RuleID: generic-api-key
Entropy: 4.168296
File: api/src/integration_tests.zig
Line: 185
Fingerprint: api/src/integration_tests.zig:generic-api-key:185
Finding: const key = "�[1;3;mREDACTED�[0m"
***REDACTED_SECRET_ASSIGNMENT***
RuleID: generic-api-key
Entropy: 4.168296
File: api/src/websocket.zig
Line: 306
Fingerprint: api/src/websocket.zig:generic-api-key:306
�[90m6:46PM�[0m �[32mINF�[0m scan completed in 315ms
�[90m6:46PM�[0m �[31mWRN�[0m leaks found: 3
##[error]Process completed with exit code 1.

GitHub Actions: Secret Scanner / scan _ gitleaks: chore(ci): bump governance-reusable pin to standards main

Conclusion: failure

View job details

##[group]Run set -euo pipefail
�[36;1mset -euo pipefail�[0m
�[36;1m�[0m
�[36;1m# A repo-local baseline wins outright — it is expected to `[extend]`�[0m
�[36;1m# the estate one, so "wins" still means "inherits". This mirrors what�[0m
�[36;1m# the AsciiDoc pass below already did, which was inconsistent with�[0m
�[36;1m# this step until now.�[0m
�[36;1mCONFIG=".gitleaks-estate.toml"�[0m
�[36;1mif [ -f .gitleaks.toml ]; then�[0m
�[36;1m CONFIG=".gitleaks.toml"�[0m
�[36;1m echo "Using repository .gitleaks.toml (extending the estate baseline)."�[0m
�[36;1melse�[0m
�[36;1m echo "Using estate baseline allowlist."�[0m
�[36;1mfi�[0m
�[36;1m�[0m
�[36;1m"$RUNNER_TEMP/gitleaks" detect \�[0m
�[36;1m --source . \�[0m
�[36;1m --no-git \�[0m
�[36;1m --redact \�[0m
�[36;1m --no-banner \�[0m
�[36;1m --verbose \�[0m
�[36;1m --config "$CONFIG" \�[0m
�[36;1m --exit-code 1�[0m
shell: /usr/bin/bash -e {0}
##[endgroup]
Using estate baseline allowlist.
Finding: # januskey -> �[1;3;mREDACTED�[0m
#
***REDACTED_SECRET_ASSIGNMENT***
RuleID: generic-api-key
Entropy: 3.840083
File: .machine_readable/descriptiles/CLADE.a2ml
Line: 21
Fingerprint: .machine_readable/descriptiles/CLADE.a2ml:generic-api-key:21
Finding: const key = "�[1;3;mREDACTED�[0m"
***REDACTED_SECRET_ASSIGNMENT***
RuleID: generic-api-key
Entropy: 4.168296
File: api/src/integration_tests.zig
Line: 185
Fingerprint: api/src/integration_tests.zig:generic-api-key:185
Finding: const key = "�[1;3;mREDACTED�[0m"
***REDACTED_SECRET_ASSIGNMENT***
RuleID: generic-api-key
Entropy: 4.168296
File: api/src/websocket.zig
Line: 306
Fingerprint: api/src/websocket.zig:generic-api-key:306
�[90m6:46PM�[0m �[32mINF�[0m scan completed in 315ms
�[90m6:46PM�[0m �[31mWRN�[0m leaks found: 3
##[error]Process completed with exit code 1.

GitHub Actions: Secret Scanner / 2_scan _ shell-secrets.txt: chore(ci): bump governance-reusable pin to standards main

Conclusion: failure

View job details

##[group]Run # Patterns: an `export FOO=` or `FOO=` with a quoted literal of meaningful length.
�[36;1m# Patterns: an `export FOO=` or `FOO=` with a quoted literal of meaningful length.�[0m
�[36;1m# Restricted to *_TOKEN / *_KEY / *_SECRET / PASSWORD to keep false-positives low.�[0m
�[36;1mPATTERNS=(�[0m
�[36;1m '(export[[:space:]]+)?[A-Z_]*TOKEN[A-Z_]*=["'"'"'][A-Za-z0-9_./+=-]{20,}["'"'"']'�[0m
�[36;1m '(export[[:space:]]+)?[A-Z_]*API_KEY[A-Z_]*=["'"'"'][A-Za-z0-9_./+=-]{20,}["'"'"']'�[0m
�[36;1m '(export[[:space:]]+)?[A-Z_]*SECRET[A-Z_]*=["'"'"'][A-Za-z0-9_./+=-]{16,}["'"'"']'�[0m
�[36;1m '(export[[:space:]]+)?***"'"'"'][^"'"'"']{6,}["'"'"']'�[0m
�[36;1m)�[0m
�[36;1m�[0m
�[36;1m# Inline pragma patterns — suppress a hit when found on the same or�[0m
�[36;1m# immediately preceding line.�[0m
�[36;1mPRAGMA_RE='(scanner-allow:[[:space:]]*shell-secrets|hypatia:[[:space:]]*allow[[:space:]]+security_errors/secret_detected)'�[0m
�[36;1m�[0m
�[36;1m# Param-expansion RHS pattern — assignments whose value is a variable�[0m
�[36;1m# reference rather than a literal are never real secrets.�[0m
�[36;1m# Matches: ="$VAR" ="${VAR}" ="${VAR:-…}" ="${VAR:?…}" ='${VAR}' =$VAR�[0m
�[36;1mPARAM_EXPANSION_RE='=['"'"'"'"'"']?\$\{?[A-Za-z_][A-Za-z0-9_]*(:[?-][^}]*)?\}?['"'"'"'"'"']?[[:space:]]*(#.*)?$'�[0m
�[36;1m�[0m
�[36;1m# Load per-repo ignore globs from .shell-secrets-ignore if present.�[0m
�[36;1mIGNORE_GLOBS=()�[0m
�[36;1mif [[ -f .shell-secrets-ignore ]]; then�[0m
�[36;1m while IFS= read -r line || [[ -n "$line" ]]; do�[0m
�[36;1m # Skip blank lines and comments�[0m
�[36;1m [[ -z "$line" || "$line" == \#* ]] && continue�[0m
�[36;1m IGNORE_GLOBS+=("$line")�[0m
�[36;1m done < .shell-secrets-ignore�[0m
�[36;1mfi�[0m
�[36;1m�[0m
�[36;1m# is_ignored <filepath> — returns 0 (true) if path matches any ignore glob.�[0m
�[36;1mis_ignored() {�[0m
�[36;1m local path="$1"�[0m
�[36;1m for glob in "${IGNORE_GLOBS[@]}"; do�[0m
�[36;1m #...

GitHub Actions: Secret Scanner / scan _ shell-secrets: chore(ci): bump governance-reusable pin to standards main

Conclusion: failure

View job details

##[group]Run # Patterns: an `export FOO=` or `FOO=` with a quoted literal of meaningful length.
�[36;1m# Patterns: an `export FOO=` or `FOO=` with a quoted literal of meaningful length.�[0m
�[36;1m# Restricted to *_TOKEN / *_KEY / *_SECRET / PASSWORD to keep false-positives low.�[0m
�[36;1mPATTERNS=(�[0m
�[36;1m '(export[[:space:]]+)?[A-Z_]*TOKEN[A-Z_]*=["'"'"'][A-Za-z0-9_./+=-]{20,}["'"'"']'�[0m
�[36;1m '(export[[:space:]]+)?[A-Z_]*API_KEY[A-Z_]*=["'"'"'][A-Za-z0-9_./+=-]{20,}["'"'"']'�[0m
�[36;1m '(export[[:space:]]+)?[A-Z_]*SECRET[A-Z_]*=["'"'"'][A-Za-z0-9_./+=-]{16,}["'"'"']'�[0m
�[36;1m '(export[[:space:]]+)?***"'"'"'][^"'"'"']{6,}["'"'"']'�[0m
�[36;1m)�[0m
�[36;1m�[0m
�[36;1m# Inline pragma patterns — suppress a hit when found on the same or�[0m
�[36;1m# immediately preceding line.�[0m
�[36;1mPRAGMA_RE='(scanner-allow:[[:space:]]*shell-secrets|hypatia:[[:space:]]*allow[[:space:]]+security_errors/secret_detected)'�[0m
�[36;1m�[0m
�[36;1m# Param-expansion RHS pattern — assignments whose value is a variable�[0m
�[36;1m# reference rather than a literal are never real secrets.�[0m
�[36;1m# Matches: ="$VAR" ="${VAR}" ="${VAR:-…}" ="${VAR:?…}" ='${VAR}' =$VAR�[0m
�[36;1mPARAM_EXPANSION_RE='=['"'"'"'"'"']?\$\{?[A-Za-z_][A-Za-z0-9_]*(:[?-][^}]*)?\}?['"'"'"'"'"']?[[:space:]]*(#.*)?$'�[0m
�[36;1m�[0m
�[36;1m# Load per-repo ignore globs from .shell-secrets-ignore if present.�[0m
�[36;1mIGNORE_GLOBS=()�[0m
�[36;1mif [[ -f .shell-secrets-ignore ]]; then�[0m
�[36;1m while IFS= read -r line || [[ -n "$line" ]]; do�[0m
�[36;1m # Skip blank lines and comments�[0m
�[36;1m [[ -z "$line" || "$line" == \#* ]] && continue�[0m
�[36;1m IGNORE_GLOBS+=("$line")�[0m
�[36;1m done < .shell-secrets-ignore�[0m
�[36;1mfi�[0m
�[36;1m�[0m
�[36;1m# is_ignored <filepath> — returns 0 (true) if path matches any ignore glob.�[0m
�[36;1mis_ignored() {�[0m
�[36;1m local path="$1"�[0m
�[36;1m for glob in "${IGNORE_GLOBS[@]}"; do�[0m
�[36;1m #...
🔇 Additional comments (1)
.github/workflows/governance.yml (1)

23-23: LGTM!


📝 Summary

Summary by CodeRabbit

  • Chores
    • Updated the governance workflow to use a newer version of its reusable workflow.

Walkthrough

The governance job now pins the reusable hyperpolymath/standards workflow to commit fad242d35291de1898242d6737ba02b74a59a2f2.

Changes

Governance workflow

Layer / File(s)Summary
Update governance workflow pin
.github/workflows/governance.yml
The governance job uses the new reusable workflow commit pin.

Estimated code review effort: 1 (Trivial) | ~2 minutes

Merge Risk:⚪ Minimal · up to e550b

The governance workflow now uses the updated pinned reusable-workflow revision. No current merge-readiness risk is identified.

Poem

A rabbit checks the workflow trail
A fresh pin marks the governance rail
The job runs on a newer guide
One small change keeps checks aligned
Ears up, the pipeline hops with pride

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and concisely describes the pin update to the governance reusable workflow.
Description check✅ PassedThe description explains the two governance failures, the corrective changes, and the successful validation run. It omits the template headings and checklist, but the core required information is pres…
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch

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

Comment @coderabbitai help to get the list of available commands.

@hyperpolymath
hyperpolymath merged commit 12c9560 into mainSep 8, 2026
45 of 53 checks passed
@hyperpolymath
hyperpolymath deleted the chore/bump-governance-pin-to-standards-main branch September 8, 2026 06:50
Sign up for freeto 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

@hyperpolymath