Skip to content

CI on the supported platforms: Ubuntu 24.04 and macOS 26 - #39

Merged
JacobStephens2 merged 3 commits into
mainfrom
issue-32
Sep 25, 2026
Merged

JacobStephens2 merged 3 commits into
mainfrom
issue-32

Conversation

@JacobStephens2

@JacobStephens2 JacobStephens2 commented Sep 25, 2026 •

Copy link
Copy Markdown
Owner

Summary

 jobs:
   test:
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-24.04
     # fmt --check, clippy -D warnings, cargo test
+  test-macos:
+    runs-on: macos-26
+    # cargo test

On macOS the only thing that failed was the test harness. $TMPDIR is under /var, which is a symlink to /private/var. git reports the resolved path, so the worktree path a test expected no longer matched. Scenario now resolves its temp root once, and path() builds on the resolved path:

 pub struct Scenario {
-    root: TempDir,
+    _temp_dir: TempDir,   // only kept to delete the temp root on drop
+    root: PathBuf,        // temp root with symlinks resolved, as git reports it
 }

No product code changed. Process-group signalling, hostname lookup and the Python fakes for gh and claude all worked on macOS without changes.

Evidence

  • Before: on the first push, test-macos failed with 1 of 11 failing in fresh_run, and cargo stopped before running the remaining test binaries:
    runs_claude_headless_in_auto_mode_in_a_sibling_worktree_on_the_issue_branch
      left:  "/private/var/folders/.../work/widgets-issue-7"
      right: "/var/folders/.../work/widgets-issue-7"
    
    After: test (ubuntu-24.04) and test-macos (macos-26) both pass on this PR, with the full suite on each.

Merge Danger

Door: two-way

Only CI config and the test harness change. A revert undoes it.

Blast Radius: CI

PRs now also wait on a macOS job, about 1 to 1.5 minutes per run. Runner images no longer move forward with -latest, so moving to a new image means bumping the label by hand.

Unaddressed findings

Standards

  • Duplicated Code: test-macos repeats the checkout, toolchain, cache and test steps from test. A matrix could share them. Skipped. It's four short steps. A matrix would need if: runner.os == 'Linux' guards on fmt and clippy, which is harder to read than two plain jobs.
  • The comment about pinned platforms states a support policy the README doesn't record yet. Skipped. Documenting the supported platforms for 0.1.0 belongs with the rest of parent Spec: release thirdshift 0.1.0 as installable binaries #30, not this CI ticket.
  • The note about the fakes being on the runner image is only in the Ubuntu job. Skipped. It is minor, and the comment says "the runner image" generically.

Spec

None.

Closes #32

🤖 Generated with Claude Code

JacobStephens2 and others added 3 commits September 25, 2026 15:24
Pin the format, lint and test job to ubuntu-24.04 and add a job that
runs the test suite on a macos-26 Apple Silicon runner, the platforms
0.1.0 supports.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
On macOS the temp directory is under /var, a symlink to /private/var,
so paths git reports didn't match the ones the tests built.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
It's what path() builds on; the TempDir is only kept to delete it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@JacobStephens2 JacobStephens2 changed the title CI on Ubuntu 24.04 and macOS 26 CI on the supported platforms: Ubuntu 24.04 and macOS 26 Sep 25, 2026
@JacobStephens2
JacobStephens2 marked this pull request as ready for review September 25, 2026 15:34
@JacobStephens2
JacobStephens2 merged commit 6383a14 into main Sep 25, 2026
2 checks passed
@JacobStephens2
JacobStephens2 deleted the issue-32 branch September 25, 2026 15:38
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.

CI on the supported platforms: Ubuntu 24.04 and macOS 26

1 participant