Skip to content

ci: fail PRs when the release toolchain cannot build the app - #214

Closed
FZ2000 wants to merge 7 commits into
mainfrom
ci/release-build-oldest-xcode
Closed

FZ2000 wants to merge 7 commits into
mainfrom
ci/release-build-oldest-xcode

Conversation

@FZ2000

@FZ2000 FZ2000 commented Sep 14, 2026

Copy link
Copy Markdown
Collaborator

Problem

PR #190 passed every CI check yet main could not be built into a signed DMG on the release machine (reported: macOS 15.7 / Xcode 26.3, swift build -c release failing with ambiguous use of operator '-' in WorkTimeCanvas.swift). #212 carries the three-line fix.

Change

Adds macos-release-build: macos-15 (the release OS) with Xcode_26.3 (the release toolchain), running swift build -c release in apps/agentacct — exactly build-app.sh's compile command.

Reproduction status: not yet achieved (full matrix below)

Building the broken pre-fix revision (5aff13a) succeeds on everything reachable:

Configuration Result on pre-fix code
Xcode 26.6 (runner default) builds
Xcode 26.3 on macos-26 builds
Xcode 26.3 on macos-15 (log verified "Xcode 26.3", 17C529) builds
Xcode 26.2 / 26.1.1 / 26.0.1 on macos-15 builds (CI matrix)
Xcode 16.4 builds
Swift main development snapshot (preview), typecheck of the exact expression builds
Swift 5 and Swift 6 language modes, arm64 and x86_64 builds
Type-check cost of the expression ~2 ms (no timeout risk)

Searches of local transcripts, the agentacct ledger and the Swift issue tracker found no matching diagnostic or documented regression. Conclusion: the release-only failure is not reproducible with any toolchain, SDK or language configuration available here; it is specific to that machine's environment.

What is needed to make this leg a true reproducer

Run on the release machine and paste the output:

xcode-select -p
xcodebuild -version
swift --version
cd <checkout> && swift build -c release 2>&1 | tee /tmp/release-build.log

The first error block from /tmp/release-build.log plus those three version lines will identify the toolchain/state that fails (candidate explanations: a beta/regressed Swift build behind "26.3", a CommandLineTools-vs-Xcode mismatch, or stale incremental state). If it is a swift.org or beta toolchain, this job will pin that exact version.

Until then this check is release-OS/toolchain parity and defense-in-depth; it is not claimed to catch the #212 class.

FZ2000 added 7 commits September 13, 2026 19:52
The release DMG is cut on Xcode 26.3 while CI pinned 26.6, so a
CGFloat/Double ambiguity in WorkTimeCanvas.swift passed every check and
broke only the release build. This leg runs build-app.sh's exact command
(swift build -c release) under the release toolchain.
The release DMG is cut on macOS 15.7 with Xcode 26.3; a lone Xcode pin on
macos-26 did not reproduce the release-only compile failure, so pin the
runner image too.
@FZ2000

FZ2000 commented Sep 14, 2026

Copy link
Copy Markdown
Collaborator Author

Closing without merging. The failure this job guarded against (ambiguous use of operator '-' in WorkTimeCanvas.swift on the release machine) could not be reproduced anywhere: Xcode 26.0.1-26.6 on macos-15/macos-26, Xcode 16.4, Swift 5/6 modes, a Swift main snapshot, and x86_64 cross-builds all compile the pre-fix revision (5aff13a) cleanly. No local session, transcript, or ledger records the diagnostic either. Per Frank: not reproducible here, so not a bug we should fix. The clarifying fix (#212) is already merged and harmless. Reopen if a release-machine build log ever surfaces.

@FZ2000 FZ2000 closed this Sep 14, 2026
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