fix(ci): pin Xcode 26.x, drop phantom VoiceLog, harden Batcher timing #167

Merged
KofTwentyTwo merged 1 commits from fix/ci-xcode-26-and-batcher-timing into develop 2026-05-13 13:37:48 +00:00
KofTwentyTwo commented 2026-05-13 13:14:39 +00:00 (Migrated from github.com)

Summary

Fixes CI run 25799596445, which failed on 6 SPM packages + the App target.

Root cause: toolchain skew. Local dev runs Swift 6.3.2 (Xcode 26); CI selected Xcode 16 (Swift 6.0). Several dependencies + tests now require Swift 6.2+:

  • mlx-audio-swift v0.1.2 ships swift-tools-version:6.2. Swift 6.0 cannot parse it → resolution fails for Voice, Harness, and the App target.
  • MCP swift-sdk 0.12.0 uses the new withThrowingTaskGroup overload (no of: parameter) introduced in Swift 6.2.
  • AgentCore tests use @MainActor XCTestCase with await super.setUp() — rejected by Swift 6.0, accepted by Swift 6.1+.

The macos-15 runner already ships Xcode 26.3 (and 26.2 / 26.1 / 26.0) alongside Xcode 16.x, so switching the xcode-select target fixes everything in one shot.

Changes

  • ci.yml — Both Xcode-using jobs (swift-packages + app-build) now select /Applications/Xcode_26.3.app with /Applications/Xcode_26.app as fallback.
  • ci.yml — Drop VoiceLog from the SPM matrix. No packages/VoiceLog directory exists; the job failed with chdir error: No such file or directory. Voice-log capability lives under v1.1.
  • BatcherTests.swift — Bump waitForDrain from 80 ms to 250 ms. The batcher window is 33 ms; 80 ms was tight enough that the macos-15 runner dropped test_tokenDeltaConcat with sendCount=0. 250 ms (~7.5× window) survives CI jitter.

Test plan

  • swift test --package-path packages/Bus --filter BatcherTests passes locally (5/5 tests, 1.27 s).
  • CI run with this PR shows all 13 SPM jobs + App target green.
  • publish-tag fires after merge to develop with a v0.X.Y-dev.<run> pre-release.

Refs CI run 25799596445.

🤖 Generated with Claude Code

## Summary Fixes CI run [25799596445](https://github.com/KofTwentyTwo/Jarvis/actions/runs/25799596445), which failed on 6 SPM packages + the App target. Root cause: toolchain skew. Local dev runs Swift 6.3.2 (Xcode 26); CI selected Xcode 16 (Swift 6.0). Several dependencies + tests now require Swift 6.2+: - `mlx-audio-swift` v0.1.2 ships `swift-tools-version:6.2`. Swift 6.0 cannot parse it → resolution fails for Voice, Harness, and the App target. - MCP `swift-sdk` 0.12.0 uses the new `withThrowingTaskGroup` overload (no `of:` parameter) introduced in Swift 6.2. - AgentCore tests use `@MainActor` `XCTestCase` with `await super.setUp()` — rejected by Swift 6.0, accepted by Swift 6.1+. The `macos-15` runner already ships Xcode 26.3 (and 26.2 / 26.1 / 26.0) alongside Xcode 16.x, so switching the `xcode-select` target fixes everything in one shot. ## Changes - `ci.yml` — Both Xcode-using jobs (`swift-packages` + `app-build`) now select `/Applications/Xcode_26.3.app` with `/Applications/Xcode_26.app` as fallback. - `ci.yml` — Drop `VoiceLog` from the SPM matrix. No `packages/VoiceLog` directory exists; the job failed with `chdir error: No such file or directory`. Voice-log capability lives under v1.1. - `BatcherTests.swift` — Bump `waitForDrain` from 80 ms to 250 ms. The batcher window is 33 ms; 80 ms was tight enough that the macos-15 runner dropped `test_tokenDeltaConcat` with `sendCount=0`. 250 ms (~7.5× window) survives CI jitter. ## Test plan - [x] `swift test --package-path packages/Bus --filter BatcherTests` passes locally (5/5 tests, 1.27 s). - [ ] CI run with this PR shows all 13 SPM jobs + App target green. - [ ] `publish-tag` fires after merge to `develop` with a `v0.X.Y-dev.<run>` pre-release. Refs CI run 25799596445. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.