Skip to content

ci: remove Apple Containers jobs - #121

Open
bilby91 wants to merge 2 commits into
mainfrom
chore/remove-apple-container-ci
Open

ci: remove Apple Containers jobs#121
bilby91 wants to merge 2 commits into
mainfrom
chore/remove-apple-container-ci

Conversation

@bilby91

@bilby91 bilby91 commented Aug 24, 2026

Copy link
Copy Markdown
Member

Summary

  • remove the macOS Apple Containers bridge/unit-test matrix
  • remove the live Apple Containers integration-test matrix
  • keep the Linux and Podman CI jobs unchanged

Validation

  • actionlint .github/workflows/ci.yml
  • git diff --check

@coderabbitai

coderabbitai Bot commented Aug 24, 2026

Copy link
Copy Markdown

Warning

Review limit reached

  • Run on-demand review

On-demand reviews are free for the next 27 days. After that, they cost $0.25 per reviewed file.

Or wait 57 minutes for your next included review.

View limit details

Limit details: You’ve used the included review currently available. Your 65 included PR review attempts over the past 7 days set your current allowance at 1 review per hour.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 8b4d21d7-cd9f-4f03-812f-091c4665558b

📥 Commits

Reviewing files that changed from the base of the PR and between e46401a and df112b0.

📒 Files selected for processing (2)
  • .github/workflows/ci.yml
  • README.md

Comment @coderabbitai help to get the list of available commands.

@dap-code-review-by-crunchloop dap-code-review-by-crunchloop Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review — head 0cc5e7c

Reviewed PR #121 at head 0cc5e7c against base e46401a: one changed workflow file in one commit (2 additions, 160 deletions). Read the repository engineering directives at the required base SHA, CONTRIBUTING.md, the complete changed workflow, the Apple backend build constraints/tests, README, design record, and CI history. Focused on backend-specific CI coverage and documentation/contract conformance; no application runtime paths were changed. PRD.md is referenced by the repository documents but is absent at the base SHA, and no CLAUDE.md or AGENTS.md exists, so those could not be reviewed. I did not execute project code or tests. Inline-thread replies will not reach this review; respond in the pull-request conversation if clarification is needed.

Commented inline

  • [MEDIUM] [R8] Removing the only macOS job leaves the supported Apple backend completely outside CI — .github/workflows/ci.yml:84
  • [LOW] [D11] README still claims CI runs the removed macOS Apple-container job — .github/workflows/ci.yml:84

Verdict

ADVISORY — findings worth reading, none of them blocking.

Comment thread .github/workflows/ci.yml
Comment on lines -46 to -84
# Apple-container backend lives in runtime/applecontainer and is
# darwin/arm64-only (see build tags). This job builds the Swift
# bridge and runs the Go test suite on macOS so we get coverage of
# cgo compilation, go:embed of libACBridge.dylib, and the
# daemon-free unit tests. Daemon-dependent tests skip cleanly via
# runtimeOrSkip when Apple's `container` apiserver isn't running.
test-darwin:
runs-on: macos-26
strategy:
fail-fast: false
matrix:
go: ["1.25", "1.26"]
steps:
- uses: actions/checkout@v6
- uses: actions/setup-go@v6
with:
go-version: ${{ matrix.go }}
cache: true
- name: Select Xcode with Swift 6.2
# apple/container 0.12.3 declares swift-tools-version 6.2;
# the macos-15 image ships an older Xcode by default. Pick
# the newest installed so SwiftPM can resolve the package.
run: sudo xcode-select -s /Applications/Xcode_latest.app || sudo xcode-select -s "$(ls -d /Applications/Xcode_*.app | sort -V | tail -1)"
- name: Cache SwiftPM artifacts
uses: actions/cache@v5
with:
path: |
applecontainer-bridge/.build
~/Library/Caches/org.swift.swiftpm
# Key on Package.resolved so the cache busts when dependency
# versions move. Bump the `v1` prefix to force a full miss
# after a toolchain change that breaks artifact compat.
key: swiftpm-v1-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('applecontainer-bridge/Package.resolved') }}
restore-keys: |
swiftpm-v1-${{ runner.os }}-${{ runner.arch }}-
- name: Build Swift bridge
run: make bridge
- run: go vet ./...
- run: go test -race -count=1 ./...

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[MEDIUM] [R8] Removing the only macOS job leaves the supported Apple backend completely outside CI

  • Witness: The deleted test-darwin job was the only workflow job that ran make bridge and go vet ./.../go test ./... on macOS. Verbatim checks on the new workflow: grep -nE 'go test|go vet|runs-on|test-darwin|test-integration-darwin' .github/workflows/ci.yml returns only runs-on: ubuntu-latest and the Linux/Podman commands; separately, grep -RIl '^//go:build darwin && arm64' runtime/applecontainer test/integration returns the Apple runtime and test files. Thus a broken cgo/Swift embed or any Darwin-only compile/test regression can pass every remaining CI job.
  • Consumer: runtime/applecontainer/runtime_darwin_arm64.go:1 is guarded by //go:build darwin && arm64, so the remaining Ubuntu go test ./... at .github/workflows/ci.yml:44 excludes the supported Apple implementation and its Darwin tests; macOS consumers can consequently receive a release that CI never compiled.
  • Fix: Retain a Darwin/arm64 compile-and-unit-test job (it can omit the unavailable live-daemon integration job), or add an explicit supported-backend validation elsewhere that builds the bridge and runs the Darwin-tagged package/tests.

Comment thread .github/workflows/ci.yml
Comment on lines -46 to -84
# Apple-container backend lives in runtime/applecontainer and is
# darwin/arm64-only (see build tags). This job builds the Swift
# bridge and runs the Go test suite on macOS so we get coverage of
# cgo compilation, go:embed of libACBridge.dylib, and the
# daemon-free unit tests. Daemon-dependent tests skip cleanly via
# runtimeOrSkip when Apple's `container` apiserver isn't running.
test-darwin:
runs-on: macos-26
strategy:
fail-fast: false
matrix:
go: ["1.25", "1.26"]
steps:
- uses: actions/checkout@v6
- uses: actions/setup-go@v6
with:
go-version: ${{ matrix.go }}
cache: true
- name: Select Xcode with Swift 6.2
# apple/container 0.12.3 declares swift-tools-version 6.2;
# the macos-15 image ships an older Xcode by default. Pick
# the newest installed so SwiftPM can resolve the package.
run: sudo xcode-select -s /Applications/Xcode_latest.app || sudo xcode-select -s "$(ls -d /Applications/Xcode_*.app | sort -V | tail -1)"
- name: Cache SwiftPM artifacts
uses: actions/cache@v5
with:
path: |
applecontainer-bridge/.build
~/Library/Caches/org.swift.swiftpm
# Key on Package.resolved so the cache busts when dependency
# versions move. Bump the `v1` prefix to force a full miss
# after a toolchain change that breaks artifact compat.
key: swiftpm-v1-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('applecontainer-bridge/Package.resolved') }}
restore-keys: |
swiftpm-v1-${{ runner.os }}-${{ runner.arch }}-
- name: Build Swift bridge
run: make bridge
- run: go vet ./...
- run: go test -race -count=1 ./...

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[LOW] [D11] README still claims CI runs the removed macOS Apple-container job

  • Witness: The new workflow contains no test-darwin or test-integration-darwin job (the deleted jobs are the only matching entries in the base workflow), but README.md:297-301 still says: CI runs both the Linux + Docker suite and a macos-26 job that builds the Swift bridge and runs the applecontainer unit tests. A contributor or user checking the documented CI guarantee will therefore be told that Apple builds are validated when they are no longer run.
  • Consumer: README.md:297-301 is the documentation consumed by contributors/users to determine which backend CI validates; reading it yields a macOS validation guarantee that .github/workflows/ci.yml no longer provides.
  • Fix: Update the Tests section to state that Apple-container tests are not currently run in hosted CI and explain the supported/manual validation path, or restore a matching macOS job.

@dap-code-review-by-crunchloop dap-code-review-by-crunchloop Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review — head df112b0

Re-reviewed the synchronized head df112b0 (two commits, two changed files; the new commit only updates README.md). Verified the documentation finding is fixed: README now states Apple-container integration tests are not run in hosted CI. Rechecked the remaining CI coverage issue against the new workflow and Darwin-only build constraints; no macOS compile/unit-test job was restored, so it remains open. No additional defects were found in the README update. Directives were again applied from base e46401a; PRD.md remains absent at that SHA. No project code or tests were executed.

Commented inline

  • [MEDIUM] [R8] Removing the only macOS job leaves the supported Apple backend completely outside CI — .github/workflows/ci.yml:84

Verdict

ADVISORY — findings worth reading, none of them blocking.

Comment thread .github/workflows/ci.yml
Comment on lines -46 to -84
# Apple-container backend lives in runtime/applecontainer and is
# darwin/arm64-only (see build tags). This job builds the Swift
# bridge and runs the Go test suite on macOS so we get coverage of
# cgo compilation, go:embed of libACBridge.dylib, and the
# daemon-free unit tests. Daemon-dependent tests skip cleanly via
# runtimeOrSkip when Apple's `container` apiserver isn't running.
test-darwin:
runs-on: macos-26
strategy:
fail-fast: false
matrix:
go: ["1.25", "1.26"]
steps:
- uses: actions/checkout@v6
- uses: actions/setup-go@v6
with:
go-version: ${{ matrix.go }}
cache: true
- name: Select Xcode with Swift 6.2
# apple/container 0.12.3 declares swift-tools-version 6.2;
# the macos-15 image ships an older Xcode by default. Pick
# the newest installed so SwiftPM can resolve the package.
run: sudo xcode-select -s /Applications/Xcode_latest.app || sudo xcode-select -s "$(ls -d /Applications/Xcode_*.app | sort -V | tail -1)"
- name: Cache SwiftPM artifacts
uses: actions/cache@v5
with:
path: |
applecontainer-bridge/.build
~/Library/Caches/org.swift.swiftpm
# Key on Package.resolved so the cache busts when dependency
# versions move. Bump the `v1` prefix to force a full miss
# after a toolchain change that breaks artifact compat.
key: swiftpm-v1-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('applecontainer-bridge/Package.resolved') }}
restore-keys: |
swiftpm-v1-${{ runner.os }}-${{ runner.arch }}-
- name: Build Swift bridge
run: make bridge
- run: go vet ./...
- run: go test -race -count=1 ./...

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[MEDIUM] [R8] Removing the only macOS job leaves the supported Apple backend completely outside CI

  • Witness: The deleted test-darwin job was the only workflow job that ran make bridge and go vet ./.../go test ./... on macOS. Verbatim checks on the new workflow: grep -nE 'go test|go vet|runs-on|test-darwin|test-integration-darwin' .github/workflows/ci.yml returns only runs-on: ubuntu-latest and the Linux/Podman commands; separately, grep -RIl '^//go:build darwin && arm64' runtime/applecontainer test/integration returns the Apple runtime and test files. Thus a broken cgo/Swift embed or any Darwin-only compile/test regression can pass every remaining CI job.
  • Consumer: runtime/applecontainer/runtime_darwin_arm64.go:1 is guarded by //go:build darwin && arm64, so the remaining Ubuntu go test ./... at .github/workflows/ci.yml:44 excludes the supported Apple implementation and its Darwin tests; macOS consumers can consequently receive a release that CI never compiled.
  • Fix: Retain a Darwin/arm64 compile-and-unit-test job (it can omit the unavailable live-daemon integration job), or add an explicit supported-backend validation elsewhere that builds the bridge and runs the Darwin-tagged package/tests.

@bilby91

bilby91 commented Aug 24, 2026

Copy link
Copy Markdown
Member Author

Counterargument for DAP finding 3 (“Removing the only macOS job leaves the supported Apple backend completely outside CI”):

The repository directive R8 requires backend-specific behavior to have backend coverage or an explicit statement of which backend is untested. This PR explicitly removes both Apple matrices, and commit df112b0 now records in the repository that Apple-container tests are not run in hosted CI while identifying their Darwin/ARM64 and live-apiserver requirements. The deleted live job also documents that GitHub-hosted macOS runners do not expose the Virtualization.framework capability it needs.

Given that the unsupported hosted-CI path and the remaining manual test path are now explicit, absence of a hosted macOS job is an intentional, documented validation boundary rather than an undisclosed coverage defect. Please re-check that argument against R8 and dismiss finding 3 if you agree that its claim no longer holds as a review defect.

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.

1 participant