fix(ci-health): detect incomplete allow-lists, not just missing hyperpolymath/* - #625
Merged
Merged
Conversation
…polymath/*
detect.sh emitted B-ALLOWLIST only when `hyperpolymath/*` was absent from
`patterns_allowed`. A `selected`-mode repo with a *partial* allow-list — one
that HAS `hyperpolymath/*` but is missing a needed third-party action (e.g.
rsr-template-repo: 14 patterns, missing `gitleaks/gitleaks-action`) — was
therefore flagged only B-STARTUPFAIL, which sweep.sh never remediates. Such a
repo stays red at `startup_failure` permanently, with no self-heal path.
Broaden the check: fire B-ALLOWLIST when the allow-list does not cover the full
curated superset. The required set is built to mirror remediate.sh's PUT body
exactly (`hyperpolymath/*` + each action-superset.txt line as `owner/repo@*`),
so a remediate converges the repo to zero-missing and detect stops re-firing
(idempotent; extra patterns beyond the superset are tolerated). This subsumes
the old rule — an empty list still fires (76/76 missing) — and `all`-mode repos
stay silent.
Scope (no overclaim): this closes the incomplete-allow-list detection gap. It
does NOT resolve the estate-wide wipe cycle in which allow-lists are reset to
`selected`+empty after each daily sweep (an off-tree admin `allowed_actions=
selected` hardening flip that drops patterns without repopulating) — that source
is owner-side and unreachable from this repo.
Validation (all run, not asserted):
- shellcheck 0.10.0: clean
- fixture unit tests of the sed/grep coverage pipeline: empty→76, only-
hyperpolymath→75, full→0, full+extra→0, partial→N all correct
- live old-vs-new detect.sh:
* rsr-template-repo: OLD → B-STARTUPFAIL only; NEW → B-ALLOWLIST (missing
64/76, e.g. 8398a7/action-slack@*) + B-STARTUPFAIL
* chronicles-of-slavia (empty): NEW → B-ALLOWLIST (76/76) — regression-safe
* TradeUnionist.jl (mode=all): NEW → no B-ALLOWLIST — regression-safe
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
hyperpolymath
marked this pull request as ready for review
July 17, 2026 22:16
hyperpolymath
enabled auto-merge (squash)
July 17, 2026 22:18
hyperpolymath
disabled auto-merge
July 17, 2026 22:27
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
detect.shemitted B-ALLOWLIST only whenhyperpolymath/*was absent frompatterns_allowed. Aselected-mode repo with a partial allow-list — one that hashyperpolymath/*but is missing a needed third-party action — was flagged only B-STARTUPFAIL, whichsweep.shnever remediates. Such a repo stays red atstartup_failurepermanently, with no self-heal path.This broadens the check to fire B-ALLOWLIST when the allow-list does not cover the full curated superset. The required set mirrors
remediate.sh's PUT body exactly (hyperpolymath/*+ eachaction-superset.txtline asowner/repo@*), so a remediate converges the repo to zero-missing and detect stops re-firing (idempotent; extra patterns tolerated). Subsumes the old rule (empty list still fires, 76/76).all-mode repos stay silent.Concrete case this unblocks
rsr-template-repo—selected, 14 patterns, hashyperpolymath/*but missinggitleaks/gitleaks-action. Previously invisible to remediation; now detected. (This is the repo whose CI blocks PR #146.)Scope — no overclaim
This closes the incomplete-allow-list detection gap. It does NOT resolve the estate-wide wipe cycle, in which allow-lists are reset to
selected+empty after each daily sweep (an off-tree adminallowed_actions=selectedhardening flip that drops patterns without repopulating). That source is owner-side and unreachable from this repo — tracked separately.Note: empty allow-lists were already detected+remediated by the existing tooling; today's 06:32Z #493 run showed 0 real B-ALLOWLIST and the PUT auth lands. So this PR is a robustness fix for the incomplete minority, not the outage cure.
Validation (run, not asserted)
shellcheck 0.10.0: cleandetect.sh:rsr-template-repo: OLD → B-STARTUPFAIL only; NEW → B-ALLOWLIST (missing 64/76, e.g.8398a7/action-slack@*) + B-STARTUPFAILchronicles-of-slavia(empty): NEW → B-ALLOWLIST (76/76) — regression-safeTradeUnionist.jl(mode=all): NEW → no B-ALLOWLIST — regression-safe🤖 Generated with Claude Code