fix(ci): cure startup_failure cluster + true-up README claims - #61
Merged
Conversation
Two mechanisms were killing five workflows at startup (0 jobs):
1. Empty Actions allowlist: the repo policy is "selected" with
patterns_allowed=[], so every workflow referencing a non-GitHub-owned,
non-verified action (dawidd6/action-send-mail, haskell-actions/setup,
peter-evans/repository-dispatch, and the third-party actions inside
the standards governance reusable) was rejected at plan time.
Fixed in repo settings (patterns added); backup of the prior state
kept in the session job dir.
2. Caller permission grants narrower than the called reusable workflow
requests: scorecard-reusable needs security-events:write +
id-token:write; a called workflow cannot escalate past the caller,
so the run died at startup. scorecard.yml now grants them.
Also in this change:
- Bump all five standards reusable pins d135b05 -> a44c93a. This picks
up the report-only Hypatia gate ("warn, fix forward") and the
baseline-validation job that skips cleanly when no
.hypatia-baseline.json exists - both are required status checks on
main, so PRs were otherwise deadlocked.
- Remove invalid timeout-minutes from reusable-call jobs in
secret-scanner.yml and mirror.yml (same class as cartridges#70).
- Pin trufflesecurity/trufflehog@main to the v3.95.6 SHA
(sha_pinning_required is on; @main was rejected).
- Gate instant-sync dormant on INSTANT_SYNC_ENABLED: its
FARM_DISPATCH_TOKEN was retired in the 2026-06-30 credential rebuild.
- README: correct stale counts to disk truth (114 registry adapters,
824 tests + 68 properties), disclose the ~10 planned-registry
adapters that resolve via git fallback, point the OPSM UI section at
the in-repo opsm-ui/ directory (the separate GitHub repo does not
exist), and reword "formal verification" to the honest "formally
modelled" per PROOF-NEEDS.md.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
hyperpolymath
enabled auto-merge (squash)
July 1, 2026 21:27
…ter) The newly-adopted governance suite's workflow security linter anchors on head -1; nine files had the copyright line first. Swap so the SPDX line leads, matching the passing convention. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
hyperpolymath
disabled auto-merge
July 1, 2026 22:03
hyperpolymath
added a commit
that referenced
this pull request
Jul 2, 2026
…uests (#63) Secret Scanner was the last `startup_failure` on main: the gitleaks job in `secret-scanner-reusable` requests `pull-requests: write` + `actions: read`, and a called reusable workflow cannot escalate past the caller's grant. Same mechanism as the scorecard fix in #61 — this caller was missed because it wasn't among the sampled failing runs. One-line permissions grant. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
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.
What
Fixes the five-workflow
startup_failurecluster on main and trues the README up to what is actually on disk.The two startup-failure mechanisms
selectedwithpatterns_allowed: [], so any workflow referencing a non-GitHub-owned, non-verified action (dawidd6/action-send-mail,haskell-actions/setup,peter-evans/repository-dispatch, plus the third-party actions inside the standards governance reusable) was rejected at plan time with 0 jobs. Fixed in repo settings (13 patterns added, all SHA-pin-enforced anyway viasha_pinning_required); the prior state is backed up.scorecard-reusablerequestssecurity-events: write+id-token: write; a called reusable workflow cannot escalate past the caller's grant, so the run died at startup.scorecard.ymlnow grants them. (This is whyhypatia-scan.yml, whose reusable only askssecurity-events: readthat the caller already granted, kept running while Scorecard/Governance died.)Also in this PR
d135b05→a44c93a— picks up the report-only Hypatia gate ("warn, fix forward") and the baseline-validation job that skips cleanly when no.hypatia-baseline.jsonexists. Both are required status checks on main, so without this every future PR deadlocks (this morning's Hypatia scan failure was the pre-#449-stopgap gate failing on any finding).timeout-minutesfrom reusable-call jobs insecret-scanner.yml/mirror.yml— same class as cartridges#70; unsupported keys on auses:job invalidate the whole workflow file.trufflesecurity/trufflehog@main→ v3.95.6 SHA (repo requires SHA pinning;@mainwas rejected).instant-syncdormant behindvars.INSTANT_SYNC_ENABLED— itsFARM_DISPATCH_TOKENwas retired in the 2026-06-30 credential rebuild; re-arm by setting the variable once the replacement fine-grained PAT exists.opsm-ui/directory (thehyperpolymath/opsm-uiGitHub repo does not exist), and reword "Formal Verification" to "Formal Methods … proofs tracked in PROOF-NEEDS.md" (the Idris2 ABI is a totality-checked model; correctness theorems are still open). Historical release notes are left as-released.Verification
a44c93afor permission requests and required inputs (governance/hypatia/secret-scanner/mirror need onlycontents: read; callers alreadysecrets: inheritwhere the reusable wants it).ls opsm_ex/lib/opsm/registries/*.ex | wc -l= 114;grep -c 'test "'= 824,property "= 68.🤖 Generated with Claude Code