Skip to content

Ci/actions allowlist resilience - #540

Merged
hyperpolymath merged 3 commits into
mainfrom
ci/actions-allowlist-resilience
Jul 28, 2026
Merged

Ci/actions allowlist resilience#540
hyperpolymath merged 3 commits into
mainfrom
ci/actions-allowlist-resilience

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Summary

Closes #

Type of change

  • 🐛 Bug fix (non-breaking change that fixes an issue)
  • ✨ New feature (non-breaking change that adds functionality)
  • 💥 Breaking change (would change existing behaviour)
  • 🕳️ Soundness fix (fixes a checker/proof false-negative)
  • 📖 Documentation
  • 🧹 Refactor / tech debt (behaviour-preserving)
  • ⚡ Performance
  • 🔧 Build / CI / tooling

How has this been verified?

Checklist

  • My commits are signed (git commit -S).
  • I ran the project's own checks/tests locally and they pass.
  • New files carry the correct SPDX-License-Identifier (code/config MPL-2.0,
    prose CC-BY-SA-4.0); I did not relicense existing files.
  • Docs are updated, and no public claim now overstates what the code does.
  • I have not introduced a soundness hole (or I have flagged where I might have).

Notes for reviewers

hyperpolymath and others added 3 commits July 11, 2026 11:04
…ly tooling

Fixes the un-squabble-able `startup_failure` class: under `allowed_actions:
selected`, a workflow that `uses:` an un-allowlisted action/reusable dies at
startup with zero jobs and no log. Migrating a repo between orgs resets
`patterns_allowed` to [] and blocks EVERY estate action at once (observed
2026-07-11: gossamer -> metadatastician, 16/25 `uses:` blocked, mass CI outage).

Teaches the three CI/CD tools to deal with it:
- SQUABBLER: scripts/check-allowed-actions.sh — turns the opaque startup_failure
  into a legible, satisfiable gate (lists uncovered `uses:`; exit 1 on gap; no
  API/admin). Runnable in a preflight job, the governance gate, or rhodibot.
- HYPATIA: hypatia-rules/workflow-allowlist-gap.a2ml (HYP-S008) — scans the
  workflow tree and emits compliance.finding.new for each uncovered `uses:`.
- ROBOT-REPO-AUTOMATON: scripts/set-allowed-actions.sh — applies the canonical
  allowlist (admin PAT); the onboarding/migration sweep MUST run it so
  `patterns_allowed` is never empty. Rhodibot detects+reports; the admin PAT sets.

Canonical source of truth: rhodium-standard-repositories/actions-allowlist/
allowed-actions.json (80 patterns = the estate set + the 4 that were missing:
dawidd6/action-send-mail, android-actions/setup-android,
reactivecircus/android-emulator-runner, slsa-framework/slsa-github-generator).
README documents the RSR requirement (repos MUST have a selected allowlist that
supersets their workflows' `uses:`). Verified: check exits 0 on the canonical
list, lists all 16 gaps on an empty one.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…canary

- set-allowed-actions.sh now escalates the allowlist apply repo -> org (owner)
  -> enterprise: a repo-level PUT that 409s "already set at the organization or
  enterprise level" falls back to the governing level. This is the case that
  bit metadatastician/gossamer (enforced at the ORG level; the repo PUT 409s).
- rhodium-standard-repositories/.github/workflows/allowlist-preflight.yml — a
  template workflow (seeded into every RSR repo) that runs check-allowed-actions
  using only actions/checkout, so it can never itself startup-fail. It turns an
  opaque estate-wide startup_failure blackout into one legible red check naming
  the offending `uses:`.
- README: document the escalation + the preflight canary.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@hyperpolymath
hyperpolymath merged commit 3e3784d into main Jul 28, 2026
1 check passed
@hyperpolymath
hyperpolymath deleted the ci/actions-allowlist-resilience branch July 28, 2026 07:00
@sonarqubecloud

Copy link
Copy Markdown

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