ci: adopt the public hosted-runner posture - #200
Merged
Conversation
The repository is now public, and the runner-policy engine forbids local-runner selector routing for public repositories, so declare visibility "public" (selfHostedCi false, exception inventory emptied) and remove the select-runner job from all seven workflows. Every lane runs on GitHub-hosted ubuntu-24.04 — free for public repositories — and each reviewed reusable receives its runner input explicitly. Reusable pins move to 90f1c54 where a reviewed contract exists at that revision (do-not-merge-gate, semantic-pr, pr-issue-linkage, link-check, claude-review, zizmor, osv-scanner); standards-sync stays at its newest registered contract, ec91c34. Verified: the policy engine passes with public visibility evidence, 224/224 runner-policy component tests pass, actionlint clean on all seven workflows. Co-Authored-By: Claude Fable 5 (1M context) <noreply@anthropic.com>
Contributor
Author
|
Recommendation (agent, session "Self Hosted Actions"): merge this next. Since the repo flipped public, every standards PR fails the |
This was referenced Jul 18, 2026
This was referenced Jul 18, 2026
kyle-sexton
added a commit
that referenced
this pull request
Jul 18, 2026
#201) ## What Register `standards-sync.yml@0b45b9f` in the runner policy (contract body copied from the reviewed `ec91c343` entry), record the lockstep provenance note, and move `sync.yml`'s pin to it. ## Why The sync wave still ran `standards-sync@ec91c34`, which predates the PR-body template fix — every distributed sync PR failed its target's pr-issue-linkage gate and needed a hand-patched body (dotfiles#225, provisioning#175, claude-code-plugins#345 this wave). The `ec91c343..0b45b9f` diff for the reusable is confined to the body heredoc: it adds the "No linked issue" sentence and a `## Related` section (melodic-software/ci-workflows#146); inputs, secrets, permissions, and routing are unchanged. ## Verification 224/224 runner-policy component tests pass; the policy engine passes with public visibility evidence; actionlint clean on sync.yml; markdownlint + biome + lefthook gauntlet green. ## Related No linked issue. melodic-software/ci-workflows#146 (template fix), #200 (public posture this builds on). 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01YZxBP1B8Hf7ZRaqDrP6ma9 Co-authored-by: Claude Fable 5 (1M context) <noreply@anthropic.com>
This was referenced Jul 18, 2026
kyle-sexton
added a commit
to melodic-software/claude-code-plugins
that referenced
this pull request
Jul 18, 2026
## What Declare `visibility: "public"` in `.github/runner-policy.json` (selfHostedCi false) and remove the `select-runner` job from all six workflows: every lane runs on GitHub-hosted `ubuntu-24.04`, each reviewed reusable receives its `runner` input explicitly, and pins move to `90f1c54`. This branch also carries the standards-sync materialization from #345 (the 90f1c54 contract registrations the policy engine needs) — #345's diff becomes empty once this merges. ## Why The repository is public but its runner policy declared private — the engine fails closed on that mismatch, which is the `Runner policy` red on #345 and every current PR. Same reconciliation as melodic-software/standards#200: for public repositories the engine forbids local-runner selector routing outright, so the fix is the full hosted conversion. Hosted minutes are free for public repositories, and this removes ccp's CI + claude-review load from the self-hosted fleet — ccp was the largest queue consumer today (37 queued runs at peak). ## Verification The synced policy engine passes with public visibility evidence (`--repository-visibility public`); actionlint clean on all six workflows. Required-check contexts are preserved (`ci-status`, `do-not-merge / do-not-merge`, `pr-issue-linkage / pr-issue-linkage`, `pr-title / pr-title`). ## Related Closes #347. melodic-software/standards#200 (same posture conversion), #345 (sync distribution folded in), melodic-software/ci-workflows#141/#144 (the 90f1c54 revision). 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01YZxBP1B8Hf7ZRaqDrP6ma9 --------- Co-authored-by: melodic-standards-sync[bot] <300666570+melodic-standards-sync[bot]@users.noreply.github.com> Co-authored-by: Claude Fable 5 (1M context) <noreply@anthropic.com>
kyle-sexton
added a commit
that referenced
this pull request
Jul 18, 2026
…0f1c54 contracts (#203) ## Summary Registers the two `ci-workflows@90f1c54` contracts that fell through the cracks when #189 was closed as subsumed by #200: #194 registered six of the eight reusable contracts at this revision; the `pester` (hosted-only, `windows-2025`) and `pulumi-version-drift-check` (runner-input) entries existed only on #189's branch and never reached main. Both entries are carried verbatim from #189's branch (review basis there: byte-identical at 90f1c54 to each workflow's newest previously approved SHA). The README contract-count paragraph moves from six to eight accordingly. 224/224 runner-policy tests pass locally. Consumers: github-iac's pulumi-version-drift-check caller and the medley/provisioning pester lanes need these once their pins move to 90f1c54. No linked issue. ## Related - #189 (closed as subsumed; carried these two entries) - #194 (registered the other six contracts at this revision) - #200 (public hosted posture whose subsumption close orphaned these) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
kyle-sexton
added a commit
that referenced
this pull request
Jul 18, 2026
…repo exclusions (#204) ## Summary `claude-code-plugins` and `standards` went public. The private-repo exclusion arms in `lychee.toml` still listed both, so links into them were skipped by the online link-check across every consuming repository. Drop them per the exclusion block's own keep-in-sync rule; links to the four remaining private repos stay excluded. Surfaced by a review thread on melodic-software/github-iac#172 — `lychee.toml` is a managed materialization there, so the fix lands here and syncs down. No linked issue ## Related - melodic-software/github-iac#172 - #200 (public hosted-runner posture) 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Fable 5 (1M context) <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
Declare
visibility: "public"in.github/runner-policy.json(selfHostedCi false, exception inventory emptied) and remove theselect-runnerjob from all seven workflows: every lane now runs on GitHub-hostedubuntu-24.04, with each reviewed reusable receiving itsrunnerinput explicitly. Net −181 lines.Why
The repository is public (confirmed intentional), and the runner-policy engine fails closed on the visibility mismatch — currently red on main's own CI and on #189. For public repositories the engine forbids local-runner selector routing outright (
public-self-hosted-routing), so the reconciliation is the full hosted conversion, not a one-line declaration. Hosted minutes are free for public repositories, and this removes the standards CI load from the self-hosted fleet entirely.Reusable pins move to
90f1c54where a reviewed contract exists at that revision;standards-syncstays at its newest registered contract (ec91c34). This supersedes the selector-pin portion of #189.Verification
node components/runner-policy/runner-policy.mjs --root . --repository-visibility publicpasses; 224/224 runner-policy component tests pass; actionlint clean on all seven workflows; lefthook gauntlet green.Related
No linked issue. #189 (superseded selector pins), #195 (policy exception-category removal this builds on), melodic-software/ci-workflows#141/#144 (the 90f1c54 revision).
🤖 Generated with Claude Code
https://claude.ai/code/session_01YZxBP1B8Hf7ZRaqDrP6ma9