Repository navigation
Run Dependabot pull requests on GitHub-hosted runners - #932
Conversation
Reviewer's GuideThis PR rolls out the established runner-selection pattern across the pull-request lanes: forked and Dependabot pull requests use GitHub-hosted runners, while other executions retain their lane-specific Ubicloud runners. The workflow contract parser, fixtures, mutation tests, property coverage, and developer documentation are updated to enforce the exact author-based guard and explain its operational tradeoffs. Sequence diagram for pull request runner selectionsequenceDiagram
participant GitHub
participant Workflow as GitHub Actions workflow
participant Runner
GitHub->>Workflow: Start pull_request run
alt fork pull request
Workflow->>Runner: runs-on ubuntu-latest
else author is dependabot[bot]
Workflow->>Runner: runs-on ubuntu-latest
else other pull request
Workflow->>Runner: runs-on lane-specific Ubicloud runner
end
Flow diagram for push and pull request runner placementflowchart TD
A[Workflow run] --> B{Pull request context}
B -->|"Fork or author is dependabot[bot]"| C[GitHub-hosted ubuntu-latest]
B -->|Other pull request| D[Lane-specific Ubicloud runner]
B -->|Push to main| D
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
Summary
The author reports 1,321 workflow-contract tests passed and 3 were skipped. Ruff check and format, and WalkthroughWorkflow runner selection now uses hosted runners for pull requests from forks and pull requests authored by ChangesHosted runner fallback
Possibly related PRs
Suggested labels: Suggested reviewers: Priority: ⬇️ Low Change: Feature Merge Risk: ⚪ Minimal · up to
|
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
GitHub-hosted minutes cost nothing on a public repository, so a pull request authored by dependabot[bot] now falls back to ubuntu-latest like a fork's. The expression tests pull_request.user.login rather than github.actor, which changes when someone re-runs or pushes. A push to main has no pull_request payload and stays on Ubicloud, so main still writes the cache. `fork_fallback.py` reads the combined guard (`HOSTED_GUARD`) and requires it on the three pull-request lanes; the mutation table the property tests draw from gains `dependabot-arm-dropped` and `actor-instead-of-author`. Netsuke is a heavy repository: the measured Dependabot run on `ubuntu-latest` follows after merge. Bespoke contract, so this PR takes the full review gate.
d1b802d to
2728195
Compare
|
Rebased onto main only because the squash merge of a branch whose workflow file diverged from main needs the |
Part of DF12-89
Rollout of the pattern in leynos/typos-config-builder#152 (reviewed and merged): Dependabot pull requests on a public repository run on GitHub-hosted runners, not Ubicloud. User decision of 19 October 2026.
Change
Every Ubicloud
runs-onthat has the fork fallback gains the Dependabot arm, in the pilot's shape:pull_request.user.login(the author), notgithub.actor, which changes on a re-run.mainhave nopull_requestpayload and stay on Ubicloud, so main's caches stay warm.fork_fallback.pyreads the combined guard (HOSTED_GUARD) and requires it on the three pull-request lanes; the mutation table the property tests draw from gainsdependabot-arm-droppedandactor-instead-of-author. Netsuke is a heavy repository: the measured Dependabot run onubuntu-latestfollows after merge. Bespoke contract, so this PR takes the full review gate.docs/developers-guide.mdrecords the reason and the cold-cache consequence.Check script row (before)
["netsuke", "pending", "4 ubicloud jobs, 3 lacking the arm"]from~/docs/jm5-dependabot-runners/bin/check.pyonorigin/HEADbefore this change.Gates
pytest tests/workflow_contracts --doctest-modulesasmake test-workflow-contractsruns it (1321 passed, 3 skipped),ruff@0.16.4check and format clean,mdtablefix --checkclean.Mutation proof
ci.yml:user.loginreplaced byactor(all jobs)ci.yml: Dependabot arm removed (first job)netsukefile-test.yml:user.loginreplaced byactor(all jobs)netsukefile-test.yml: Dependabot arm removed (first job)tests/workflow_contracts/fork_fallback.py:and placement.guard == HOSTED_GUARD->and placement.guard == FORK_GUARDMerge class
Mechanical rollout of the pilot's shape (same expression, same form of contract change, docs paragraph, mutation proof), per the lead's ruling of 19 October.
Overlapping open PRs
These open PRs touch the same kind of files; per the standing rulings they do not hold this PR and are left untouched:
netsuke-buildthrough crates.io Trusted Publishing #903 (use-trusted-packaging)Summary by Sourcery
Route fork and Dependabot pull requests to GitHub-hosted runners while keeping push workflows on Ubicloud.
New Features:
Enhancements:
Tests:
Selector proof
Selector proof: natural Dependabot runs on ubuntu-latest, all green: https://github.com/leynos/actix-v2a/actions/runs/39958329992, https://github.com/leynos/typos-config-builder/actions/runs/39990740324, https://github.com/leynos/agentland/actions/runs/39965006591; and a main push staying on ubicloud-standard-2: https://github.com/leynos/typos-config-builder/actions/runs/39181228629.