Repository navigation
Run the script contract tests on Linux - #1011
Conversation
The "Release and repository contracts" job waited for a hosted
macos-latest runner on every pull request. Twice on 2026-11-05 GitHub
never assigned one ("The job was not acquired by Runner of type hosted
even after multiple attempts"), so the job was cancelled with no steps
run and had to be rerun by hand. The xcode-27 build jobs in the same
runs got runners within seconds.
- The job now runs on ubuntu-latest and installs zsh with apt. Nothing
in the suite uses ripgrep, so the job no longer installs it.
- Six tests run check-version.sh or the Xcode Cloud guards, which read
plists with plutil, a macOS-only tool. They skip when plutil is
missing.
- The Chromium host build, which already holds a macOS runner and lints
Swift, runs the whole suite after preparing the build, so those six
still run on every change that builds the Mac app. When a change
builds only iOS, the iOS build runs it instead, as it does for the
Swift lint.
- RepositoryGuardrails.md says where the suite runs and what it needs.
Signed-off-by: Paul Davis <pauldavis101@gmail.com>
|
No actionable comments were generated in the recent review. Walkthrough
Merge Risk:
|
What changed
The Release and repository contracts job ran on
macos-latest. On 2026-11-05 GitHub twice never gave it a runner. In run 42077955348 (#975) and run 42103909261 (#978) it ended with "The job was not acquired by Runner of type hosted even after multiple attempts" and a notice about macOS arm64 capacity. Both times it was cancelled with no steps run and had to be rerun by hand. Thexcode-27build jobs in the same runs got runners within seconds. The first cancellation came after 24 minutes, past the 15-minute timeout, so a longer timeout or one that ignores queue time would not have helped.ubuntu-latestand installs zsh with apt, as the core job does. Nothing the suite runs uses ripgrep (onlyvalidate-identity.shdoes, throughbootstrap.sh), so the job no longer installs it.plutil. Three intest_version_contract.pyruncheck-version.sh --static, which reads the Info.plists with it. Three intest_xcode_cloud_configuration.pyrun the Xcode Cloud guards, which read the archive plists with it (the post-clone guard does so throughcheck-version.sh --static). They now skip whenplutilis missing.xcode-27runner and already lints Swift, so this costs about 15 seconds and no extra runner. When a change builds only iOS, Build iOS runs the suite instead, as it does for the Swift lint. A documentation-only change runs neither, and none of the six reads a file in the documentation area.Documentation/RepositoryGuardrails.mdnow says where the suite runs and what it needs.No app code changes, so there is no version bump or release note.
Validation
python3 -m unittest discover -s Scripts/Testsran 47 tests, OK, none skipped. The checkout is unchanged afterwards, so the build step that follows sees the same tree.ubuntu:24.04container (aarch64, Python 3.12.3, run as a non-root user) with onlyzshandclangadded and no ripgrep:command not found: plutilincheck-version.sh, and an unset application path fromci_post_xcodebuild.sh.plutiltests above.test_chromium_forktests fail onhashlib.file_digest, so the guardrails page now says Python 3.11 or newer.git diff --check,Scripts/check-public-source.pyandScripts/check-version.sh --staticpassed.AI usage
crest-contributionskill (.agents/skills/crest-contribution/SKILL.md), followed it, and reviewed every generated line.Boundaries
Documentation/ReleaseNotes.json.Scripts/check-version.sh --fix-commit.CONTRIBUTING.md.Summary by CodeRabbit
patch, a C++ compiler, andplutil.