Skip to content

fix(ci): call the estate reusables by their real ref — root and nested copies - #864

Merged
hyperpolymath merged 2 commits into
mainfrom
fix/reusable-workflow-refs
Sep 19, 2026
Merged

hyperpolymath merged 2 commits into
mainfrom
fix/reusable-workflow-refs

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

uses: ../….github/workflows/<x>-reusable.yml is not a ref form GitHub Actions supports — a
reusable-workflow uses: may be ./.github/… (same repo) or <owner>/<repo>/….yml@<ref> (cross
repo). A ../ path is rejected at parse time, so every workflow carrying one is dead:
conclusion=failure, 0 jobs, and a run name equal to its path rather than its declared name:.

Two changes per calling file:

  1. the ref becomes the pinned cross-repo form,
    hyperpolymath/standards/.github/workflows/<x>-reusable.yml@4e6ffe55…;
  2. each calling job is granted the permissions its callee's job declares. A cross-repo callee cannot
    hold more than its caller grants, so repairing only the ref would move the failure from parse time
    to run time. Permissions are keyed off the callee named in the ref, not the caller's filename:
    several callers point at the same reusable (scorecard-enforcer.yml also calls
    scorecard-reusable.yml).

This repairs the whole tree, not only the root .github/workflows/. The root is where the refs
are live; the nested copies are where they propagate — format templates, dispatch templates and
action scaffolds are what new repos are minted from, and each copy carried an unparseable ref, so
every repo created from one inherited a broken workflow.

Found by a whole-tree sweep of all 390 names in the account (blobless clones + git grep, git
protocol rather than the REST API). Across the estate, 6 repos carried such refs: standards (76
files), k9-ecosystem (46), deed-core (42), repo-guardian (14), lol (7),
deed-validate-action (7) — 192 files in total, all repaired in this campaign.

Refs #808.

…d copies

`uses: ../….github/workflows/<x>-reusable.yml` is not a ref form GitHub Actions supports, so every
workflow carrying it fails at parse time: conclusion=failure, 0 jobs, and a run name equal to its
path rather than its declared `name:`.

This repairs them throughout the tree, not only in the root `.github/workflows/`, because the root
is where they are *live* but the nested copies are where they *propagate* — standards' format
templates, k9-ecosystem's dispatch templates and deed-core's action scaffolds are what new repos are
minted from, and each one carried an unparseable ref.

Each ref becomes the pinned cross-repo form
`hyperpolymath/standards/.github/workflows/<x>-reusable.yml@4e6ffe5…`, and each calling job is
granted the permissions its callee declares — keyed off the callee named in the ref, since several
callers point at the same reusable. Without that step the repair only moves the failure from parse
time to run time.

Refs #808.
@coderabbitai

coderabbitai Bot commented Sep 19, 2026 •

Copy link
Copy Markdown
Contributor

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 20ac082c-78b0-4914-904f-f68bf3d9924a

📥 Commits

Reviewing files that changed from the base of the PR and between 4885cff and 09b924c.

📒 Files selected for processing (76)
  • 1-formats/a2ml/meta/.github/workflows/codeql.yml
  • 1-formats/a2ml/meta/.github/workflows/governance.yml
  • 1-formats/a2ml/meta/.github/workflows/hypatia-scan.yml
  • 1-formats/a2ml/meta/.github/workflows/mirror.yml
  • 1-formats/a2ml/meta/.github/workflows/scorecard-enforcer.yml
  • 1-formats/a2ml/meta/.github/workflows/scorecard.yml
  • 1-formats/a2ml/meta/.github/workflows/secret-scanner.yml
  • 2-protocols/0-ai-gatekeeper/.github/workflows/codeql.yml
  • 2-protocols/0-ai-gatekeeper/.github/workflows/governance.yml
  • 2-protocols/0-ai-gatekeeper/.github/workflows/hypatia-scan.yml
  • 2-protocols/0-ai-gatekeeper/.github/workflows/mirror.yml
  • 2-protocols/0-ai-gatekeeper/.github/workflows/scorecard-enforcer.yml
  • 2-protocols/0-ai-gatekeeper/.github/workflows/scorecard.yml
  • 2-protocols/0-ai-gatekeeper/.github/workflows/secret-scanner.yml
  • 2-protocols/axel/.github/workflows/codeql.yml
  • 2-protocols/axel/.github/workflows/governance.yml
  • 2-protocols/axel/.github/workflows/scorecard.yml
  • rhodium-standard-repositories/.github/workflows/codeql.yml
  • rhodium-standard-repositories/.github/workflows/governance.yml
  • rhodium-standard-repositories/.github/workflows/hypatia-scan.yml
  • rhodium-standard-repositories/.github/workflows/mirror.yml
  • rhodium-standard-repositories/.github/workflows/scorecard-enforcer.yml
  • rhodium-standard-repositories/.github/workflows/scorecard.yml
  • rhodium-standard-repositories/.github/workflows/secret-scanner.yml
  • rhodium-standard-repositories/satellites/ECOSYSTEM.scm/.github/workflows/codeql.yml
  • rhodium-standard-repositories/satellites/ECOSYSTEM.scm/.github/workflows/governance.yml
  • rhodium-standard-repositories/satellites/META.scm/.github/workflows/codeql.yml
  • rhodium-standard-repositories/satellites/META.scm/.github/workflows/governance.yml
  • rhodium-standard-repositories/satellites/cccp/.github/workflows/codeql.yml
  • rhodium-standard-repositories/satellites/cccp/.github/workflows/governance.yml
  • rhodium-standard-repositories/satellites/cccp/.github/workflows/mirror.yml
  • rhodium-standard-repositories/satellites/cccp/.github/workflows/scorecard-enforcer.yml
  • rhodium-standard-repositories/satellites/cccp/.github/workflows/scorecard.yml
  • rhodium-standard-repositories/satellites/cccp/.github/workflows/secret-scanner.yml
  • rhodium-standard-repositories/satellites/cccp/satellites/nextgen-languages/.github/workflows/governance.yml
  • rhodium-standard-repositories/satellites/cccp/satellites/nextgen-languages/.github/workflows/mirror.yml
  • rhodium-standard-repositories/satellites/cccp/satellites/nextgen-languages/7-tentacles/.github/workflows/codeql.yml
  • rhodium-standard-repositories/satellites/cccp/satellites/nextgen-languages/7-tentacles/.github/workflows/governance.yml
  • rhodium-standard-repositories/satellites/cccp/satellites/nextgen-languages/7-tentacles/.github/workflows/mirror.yml
  • rhodium-standard-repositories/satellites/cccp/satellites/nextgen-languages/7-tentacles/.github/workflows/scorecard.yml
  • rhodium-standard-repositories/satellites/cccp/satellites/php-aegis/.github/workflows/codeql.yml
  • rhodium-standard-repositories/satellites/cccp/satellites/php-aegis/.github/workflows/governance.yml
  • rhodium-standard-repositories/satellites/cccp/satellites/php-aegis/.github/workflows/mirror.yml
  • rhodium-standard-repositories/satellites/cccp/satellites/php-aegis/.github/workflows/scorecard.yml
  • rhodium-standard-repositories/satellites/cccp/satellites/sanctify-php/.github/workflows/codeql.yml
  • rhodium-standard-repositories/satellites/cccp/satellites/sanctify-php/.github/workflows/governance.yml
  • rhodium-standard-repositories/satellites/cccp/satellites/sanctify-php/.github/workflows/mirror.yml
  • rhodium-standard-repositories/satellites/cccp/satellites/sanctify-php/.github/workflows/scorecard.yml
  • rhodium-standard-repositories/satellites/mustfile/.github/workflows/codeql.yml
  • rhodium-standard-repositories/satellites/mustfile/.github/workflows/governance.yml
  • rhodium-standard-repositories/satellites/mustfile/.github/workflows/mirror.yml
  • rhodium-standard-repositories/satellites/mustfile/.github/workflows/scorecard.yml
  • rhodium-standard-repositories/satellites/palimpsest-license/.github/workflows/codeql.yml
  • rhodium-standard-repositories/satellites/palimpsest-license/.github/workflows/governance.yml
  • rhodium-standard-repositories/satellites/palimpsest-license/.github/workflows/mirror.yml
  • rhodium-standard-repositories/satellites/palimpsest-license/.github/workflows/scorecard.yml
  • rhodium-standard-repositories/satellites/robot-repo-automaton/.github/workflows/codeql.yml
  • rhodium-standard-repositories/satellites/robot-repo-automaton/.github/workflows/governance.yml
  • rhodium-standard-repositories/satellites/robot-repo-automaton/.github/workflows/mirror.yml
  • rhodium-standard-repositories/satellites/robot-repo-automaton/.github/workflows/scorecard.yml
  • rhodium-standard-repositories/satellites/rsr-certifier/.github/workflows/codeql.yml
  • rhodium-standard-repositories/satellites/rsr-certifier/.github/workflows/governance.yml
  • rhodium-standard-repositories/satellites/rsr-certifier/.github/workflows/mirror.yml
  • rhodium-standard-repositories/satellites/rsr-certifier/.github/workflows/scorecard.yml
  • rhodium-standard-repositories/satellites/rsr-deployer/.github/workflows/codeql.yml
  • rhodium-standard-repositories/satellites/rsr-deployer/.github/workflows/governance.yml
  • rhodium-standard-repositories/satellites/rsr-deployer/.github/workflows/mirror.yml
  • rhodium-standard-repositories/satellites/rsr-deployer/.github/workflows/scorecard.yml
  • rhodium-standard-repositories/satellites/state.scm/.github/workflows/codeql.yml
  • rhodium-standard-repositories/satellites/state.scm/.github/workflows/governance.yml
  • rhodium-standard-repositories/satellites/state.scm/.github/workflows/mirror.yml
  • rhodium-standard-repositories/satellites/state.scm/.github/workflows/scorecard.yml
  • rhodium-standard-repositories/satellites/well-known-ecosystem/.github/workflows/codeql.yml
  • rhodium-standard-repositories/satellites/well-known-ecosystem/.github/workflows/governance.yml
  • rhodium-standard-repositories/satellites/well-known-ecosystem/.github/workflows/mirror.yml
  • rhodium-standard-repositories/satellites/well-known-ecosystem/.github/workflows/scorecard.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. (19)
  • GitHub Check: scorecard / Run Scorecard PR
  • GitHub Check: ci / Detect mix.exs
  • GitHub Check: scan / gitleaks
  • GitHub Check: scan / Hypatia Neurosymbolic Analysis
  • GitHub Check: scan / rust-secrets
  • GitHub Check: scan / shell-secrets
  • GitHub Check: analyze-actions / analyze
  • GitHub Check: Check Documentation Format
  • GitHub Check: analyze-js / analyze
  • GitHub Check: SPARK Theatre Gate
  • GitHub Check: Detect proof changes
  • GitHub Check: Scan for hand-authored JavaScript/TypeScript
  • GitHub Check: Verify CLAIMS.a2ml + conformance
  • GitHub Check: Repo self-tests
  • GitHub Check: K9-SVC contractile validation
  • GitHub Check: Registry + topology in sync
  • GitHub Check: AffineScript Verify
  • GitHub Check: uses ⊆ actions.lock
  • GitHub Check: Lockfile self-consistency
🔇 Additional comments (76)
1-formats/a2ml/meta/.github/workflows/codeql.yml (1)

21-25: LGTM!

2-protocols/0-ai-gatekeeper/.github/workflows/codeql.yml (1)

21-25: LGTM!

2-protocols/axel/.github/workflows/codeql.yml (1)

21-25: LGTM!

rhodium-standard-repositories/.github/workflows/codeql.yml (1)

21-25: LGTM!

rhodium-standard-repositories/satellites/ECOSYSTEM.scm/.github/workflows/codeql.yml (1)

21-25: LGTM!

rhodium-standard-repositories/satellites/META.scm/.github/workflows/codeql.yml (1)

21-25: LGTM!

rhodium-standard-repositories/satellites/cccp/.github/workflows/codeql.yml (1)

21-25: LGTM!

rhodium-standard-repositories/satellites/cccp/satellites/nextgen-languages/7-tentacles/.github/workflows/codeql.yml (1)

21-25: LGTM!

rhodium-standard-repositories/satellites/cccp/satellites/php-aegis/.github/workflows/codeql.yml (1)

21-25: LGTM!

rhodium-standard-repositories/satellites/cccp/satellites/sanctify-php/.github/workflows/codeql.yml (1)

21-25: LGTM!

rhodium-standard-repositories/satellites/mustfile/.github/workflows/codeql.yml (1)

21-25: LGTM!

rhodium-standard-repositories/satellites/palimpsest-license/.github/workflows/codeql.yml (1)

21-25: LGTM!

rhodium-standard-repositories/satellites/robot-repo-automaton/.github/workflows/codeql.yml (1)

21-25: LGTM!

rhodium-standard-repositories/satellites/rsr-certifier/.github/workflows/codeql.yml (1)

21-25: LGTM!

rhodium-standard-repositories/satellites/rsr-deployer/.github/workflows/codeql.yml (1)

21-25: LGTM!

rhodium-standard-repositories/satellites/state.scm/.github/workflows/codeql.yml (1)

21-25: LGTM!

rhodium-standard-repositories/satellites/well-known-ecosystem/.github/workflows/codeql.yml (1)

21-25: LGTM!

2-protocols/axel/.github/workflows/scorecard.yml (1)

15-18: LGTM!

1-formats/a2ml/meta/.github/workflows/governance.yml (1)

27-30: LGTM!

2-protocols/0-ai-gatekeeper/.github/workflows/governance.yml (1)

27-30: LGTM!

2-protocols/axel/.github/workflows/governance.yml (1)

27-30: LGTM!

rhodium-standard-repositories/.github/workflows/governance.yml (1)

27-30: LGTM!

rhodium-standard-repositories/satellites/ECOSYSTEM.scm/.github/workflows/governance.yml (1)

27-30: LGTM!

rhodium-standard-repositories/satellites/META.scm/.github/workflows/governance.yml (1)

27-30: LGTM!

rhodium-standard-repositories/satellites/cccp/.github/workflows/governance.yml (1)

27-30: LGTM!

rhodium-standard-repositories/satellites/cccp/satellites/nextgen-languages/.github/workflows/governance.yml (1)

27-30: LGTM!

rhodium-standard-repositories/satellites/cccp/satellites/nextgen-languages/7-tentacles/.github/workflows/governance.yml (1)

27-30: LGTM!

rhodium-standard-repositories/satellites/cccp/satellites/php-aegis/.github/workflows/governance.yml (1)

27-30: LGTM!

rhodium-standard-repositories/satellites/cccp/satellites/sanctify-php/.github/workflows/governance.yml (1)

27-30: LGTM!

rhodium-standard-repositories/satellites/mustfile/.github/workflows/governance.yml (1)

27-30: LGTM!

rhodium-standard-repositories/satellites/palimpsest-license/.github/workflows/governance.yml (1)

27-30: LGTM!

rhodium-standard-repositories/satellites/robot-repo-automaton/.github/workflows/governance.yml (1)

27-30: LGTM!

rhodium-standard-repositories/satellites/rsr-certifier/.github/workflows/governance.yml (1)

27-30: LGTM!

rhodium-standard-repositories/satellites/rsr-deployer/.github/workflows/governance.yml (1)

27-30: LGTM!

rhodium-standard-repositories/satellites/state.scm/.github/workflows/governance.yml (1)

27-30: LGTM!

rhodium-standard-repositories/satellites/well-known-ecosystem/.github/workflows/governance.yml (1)

27-30: LGTM!

1-formats/a2ml/meta/.github/workflows/mirror.yml (1)

14-17: LGTM!

2-protocols/0-ai-gatekeeper/.github/workflows/mirror.yml (1)

14-17: LGTM!

rhodium-standard-repositories/.github/workflows/mirror.yml (1)

14-17: LGTM!

rhodium-standard-repositories/satellites/cccp/.github/workflows/mirror.yml (1)

14-17: LGTM!

rhodium-standard-repositories/satellites/cccp/satellites/nextgen-languages/.github/workflows/mirror.yml (1)

14-17: LGTM!

rhodium-standard-repositories/satellites/cccp/satellites/nextgen-languages/7-tentacles/.github/workflows/mirror.yml (1)

14-17: LGTM!

rhodium-standard-repositories/satellites/cccp/satellites/php-aegis/.github/workflows/mirror.yml (1)

14-17: LGTM!

rhodium-standard-repositories/satellites/cccp/satellites/sanctify-php/.github/workflows/mirror.yml (1)

14-17: LGTM!

rhodium-standard-repositories/satellites/mustfile/.github/workflows/mirror.yml (1)

14-17: LGTM!

rhodium-standard-repositories/satellites/palimpsest-license/.github/workflows/mirror.yml (1)

14-17: LGTM!

rhodium-standard-repositories/satellites/robot-repo-automaton/.github/workflows/mirror.yml (1)

14-17: LGTM!

rhodium-standard-repositories/satellites/rsr-certifier/.github/workflows/mirror.yml (1)

14-17: LGTM!

rhodium-standard-repositories/satellites/rsr-deployer/.github/workflows/mirror.yml (1)

14-17: LGTM!

rhodium-standard-repositories/satellites/state.scm/.github/workflows/mirror.yml (1)

14-17: LGTM!

rhodium-standard-repositories/satellites/well-known-ecosystem/.github/workflows/mirror.yml (1)

14-17: LGTM!

1-formats/a2ml/meta/.github/workflows/hypatia-scan.yml (1)

20-24: LGTM!

1-formats/a2ml/meta/.github/workflows/scorecard-enforcer.yml (1)

17-20: LGTM!

1-formats/a2ml/meta/.github/workflows/scorecard.yml (1)

15-18: LGTM!

1-formats/a2ml/meta/.github/workflows/secret-scanner.yml (1)

20-20: LGTM!

2-protocols/0-ai-gatekeeper/.github/workflows/hypatia-scan.yml (1)

20-24: LGTM!

2-protocols/0-ai-gatekeeper/.github/workflows/scorecard-enforcer.yml (1)

17-20: LGTM!

2-protocols/0-ai-gatekeeper/.github/workflows/scorecard.yml (1)

23-26: LGTM!

2-protocols/0-ai-gatekeeper/.github/workflows/secret-scanner.yml (1)

20-20: LGTM!

rhodium-standard-repositories/.github/workflows/hypatia-scan.yml (1)

20-24: LGTM!

rhodium-standard-repositories/.github/workflows/scorecard-enforcer.yml (1)

17-20: LGTM!

rhodium-standard-repositories/.github/workflows/scorecard.yml (1)

23-26: LGTM!

rhodium-standard-repositories/.github/workflows/secret-scanner.yml (1)

20-20: LGTM!

rhodium-standard-repositories/satellites/cccp/.github/workflows/scorecard-enforcer.yml (1)

17-20: LGTM!

rhodium-standard-repositories/satellites/cccp/.github/workflows/scorecard.yml (1)

15-18: LGTM!

rhodium-standard-repositories/satellites/cccp/.github/workflows/secret-scanner.yml (1)

20-20: LGTM!

rhodium-standard-repositories/satellites/cccp/satellites/nextgen-languages/7-tentacles/.github/workflows/scorecard.yml (1)

15-18: LGTM!

rhodium-standard-repositories/satellites/cccp/satellites/php-aegis/.github/workflows/scorecard.yml (1)

15-18: LGTM!

rhodium-standard-repositories/satellites/cccp/satellites/sanctify-php/.github/workflows/scorecard.yml (1)

15-18: LGTM!

rhodium-standard-repositories/satellites/mustfile/.github/workflows/scorecard.yml (1)

15-18: LGTM!

rhodium-standard-repositories/satellites/palimpsest-license/.github/workflows/scorecard.yml (1)

15-18: LGTM!

rhodium-standard-repositories/satellites/robot-repo-automaton/.github/workflows/scorecard.yml (1)

15-18: LGTM!

rhodium-standard-repositories/satellites/rsr-certifier/.github/workflows/scorecard.yml (1)

15-18: LGTM!

rhodium-standard-repositories/satellites/rsr-deployer/.github/workflows/scorecard.yml (1)

15-18: LGTM!

rhodium-standard-repositories/satellites/state.scm/.github/workflows/scorecard.yml (1)

15-18: LGTM!

rhodium-standard-repositories/satellites/well-known-ecosystem/.github/workflows/scorecard.yml (1)

15-18: LGTM!


📝 Summary

Summary by CodeRabbit

  • Security & Compliance
    • Standardised CodeQL, Scorecard, secret scanning, governance, Hypatia scanning and mirroring workflows across repositories.
    • Pinned shared workflow references to a specific revision for more predictable checks.
    • Added explicit, least-privilege permissions for repository access and security reporting.
  • Refactor
    • Consolidated governance checks around shared workflows, replacing repository-local workflow references.

Walkthrough

The PR updates repository workflow wrappers to use pinned reusable workflows from hyperpolymath/standards. It also adds job-level permissions for CodeQL, governance, mirroring, Hypatia, Scorecard, and secret-scanner jobs.

Changes

Workflow centralisation

Layer / File(s) Summary
CodeQL workflow wrappers
.github/workflows/codeql.yml across 1-formats, 2-protocols, and rhodium-standard-repositories
CodeQL jobs now use the pinned remote workflow and explicit read or security-event permissions.
Governance workflow wrappers
.github/workflows/governance.yml across the affected repositories
Governance jobs now use the pinned shared workflow with actions: read and contents: read.
Mirror workflow wrappers
.github/workflows/mirror.yml across the affected repositories
Mirror jobs now use the pinned shared workflow with read-only Actions and contents permissions.
Security workflow wrappers
.github/workflows/hypatia-scan.yml, .github/workflows/scorecard*.yml, .github/workflows/secret-scanner.yml
Security jobs now use pinned shared workflows and declare their required permissions.

Priority: ➖ Normal

Estimated code review effort: 3 (Moderate) | ~25 minutes

Change: Bug fix

Suggested reviewers: joshuajewell

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarises the main change: replacing unsupported reusable-workflow paths with valid references across root and nested copies.
Description check ✅ Passed The description directly explains the workflow reference correction, required permissions, affected templates, and estate-wide scope. It is fully related to the changeset.
Docstring Coverage ✅ Passed No 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 ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

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

A rabbit checks each workflow line,
Pinned paths sparkle in the sign,
Read-only paws guard every gate,
Shared scans now coordinate,
Clear permissions guide the hop,
Safe workflows never stop.

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

@hyperpolymath
hyperpolymath merged commit 000b9f6 into main Sep 19, 2026
11 of 19 checks passed
@hyperpolymath
hyperpolymath deleted the fix/reusable-workflow-refs branch September 19, 2026 19:47
@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