Repository navigation
Conversation
Setting the repo variable KEYPATH_CI_RUNNER=hosted runs build-and-test and code-quality on GitHub's xcode-27 image (macOS 27, Xcode 27.0 27A266a). Unset, both jobs run on the mini exactly as before. Job names, and so the required checks, don't change. On hosted runs: - the disk-reserve check is skipped - the timeout is 60 minutes, since every run is cold - each job gets its own concurrency group - mise and SwiftLint are installed from Homebrew Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… test - Hosted runs now pin Xcode 27.0 through the stable-Xcode path, which keeps the scripts' version check, instead of an override that skips it. - Each hosted job gets its own concurrency group, so the two jobs run in parallel. - The disk check runs on hosted too, with a smaller floor (12 GiB). - code-quality gets 30 minutes on hosted. - mise is told to trust mise.toml. - The test-runner crash allowance is off on hosted. - The contract test now reads the runner expression and checks both jobs switch together. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…r guard Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Both lint scripts read a missing rg as "no hits" and passed without checking anything. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Review of the supplied diff: no blocking issues. The runner-selection expressions are valid. The hosted path is gated on one variable, and the jobs fall back to the self-hosted labels when the variable is unset. The Minor notes, not blockers:
|
rg exits 2 on an error such as a missing path, and both lints read that as "no hits". The autofixer lint had been passing that way since WizardAutoFixer.swift was deleted; it now says so explicitly. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Review of PR 1344: no blocking findings. The runner-selection expressions, job-level concurrency and timeout expressions, and the rg exit-code handling all look correct. Minor, non-blocking:
Test coverage: the |
… lint WizardAutoFixer.swift was deleted on 2026-05-02 (9d62b11), so the lint has had nothing to check since. The sleep lint wrote to a fixed /tmp path, which overlapping jobs could share. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Review of the diff only. I found nothing blocking, and I haven't run the workflow.
|
The suite shared SubprocessRunnerFake.shared with nine other test files. Swift Testing runs suites in parallel, so another suite's reset() could clear the command log between the service's pgrep and the assertion. On the first hosted run, isRunning was true but the pgrep command was missing from the log. Each test now creates its own fake. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Review of PR 1344: no blocking issues found. A few non-blocking notes:
|
Summary
The mini, which hosts both CI runners, is offline for servicing, so no PR's required checks can run. This adds a switch that moves CI to GitHub-hosted runners without changing the mini setup.
KEYPATH_CI_RUNNER=hosted, andbuild-and-testandcode-qualityrun on GitHub'sxcode-27image (macOS 27, public preview). Delete the variable and both jobs run on the mini exactly as before. The job names, and so the required checks, are the same either way.SDKROOTso cargo and Swift use the same SDK.build-and-testand 30 forcode-quality, since every run is cold.mise.tomlso the SwiftFormat pin applies.rgis missing. They used to pass without checking anything.DeploymentScriptContractTestsnow reads the runner expression. It checks that onlybuild-and-testuses the safe runner and that both jobs switch together.The variable is already set, so this PR's own CI is the first hosted run. Coverage, cache-warm and runner-health stay on the mini; they're scheduled jobs and don't block PRs.
Status: draft until a hosted run passes
The local review gate still reports open findings that only a real run can settle:
xcode-27resolves to a runner;Xcode_27.appstays at 27.0;I'll fix what actually breaks, then mark this ready.
Not changed: SwiftLint on hosted runs is Homebrew's current version, not pinned. It lints only changed files.
Rollback
🤖 Generated with Claude Code