ci: age upstream release (6h) and pin per-slice macOS deployment targets (arm64 14.0, x64 13.3)#19
Merged
Merged
Conversation
d725704 to
0cb136d
Compare
Build only the newest ggml-org/llama.cpp release that has been public for at least UNSLOTH_LLAMA_MIN_RELEASE_AGE_HOURS (default 6h), instead of the absolute latest. A deliberate delay gives a malicious or broken upstream release time to be caught and yanked before we compile and ship it to Studio users. The window is overridable per-run via the min_age_hours dispatch input, and an explicit upstream_tag still bypasses the filter.
0cb136d to
9ef9d68
Compare
Declare an explicit -DCMAKE_OSX_DEPLOYMENT_TARGET for each slice instead of inheriting the runner OS (the omission that let upstream's arm64 floor drift to 26). arm64 pins 14.0, matching the floor of upstream's last good pre-macos-26 release; no Apple Silicon Mac is capped below 14. x64 pins 13.3, matching upstream's own Intel leg, so 2017 Intel Macs stuck on Ventura stay covered. The load gate fails any slice whose minos exceeds its target.
cb550e9 to
c448f02
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two pre-go-live refinements to the daily macOS prebuilt producer.
1. Age upstream releases before building (supply-chain delay)
Build only the newest
ggml-org/llama.cpprelease that has been public for at leastUNSLOTH_LLAMA_MIN_RELEASE_AGE_HOURS(default 6h), instead of the absolute latest release.A deliberate aging window is a supply-chain defense: if upstream publishes a compromised or broken release, the delay gives the community time to detect and yank it before we compile from that source and ship binaries to Studio users. We already build from upstream source (not their binaries) and pin our own deployment target, so this only changes which commit we pick, not how we build.
The
resolvejob selects the newest non-draft, non-prerelease release whosepublished_atis at least the window old:UNSLOTH_LLAMA_MIN_RELEASE_AGE_HOURS, set at the workflow level).min_age_hoursdispatch input.upstream_tagdispatch input still bypasses the filter for manual rebuilds.2. Pin the macOS deployment target explicitly, per slice
Declare an explicit
-DCMAKE_OSX_DEPLOYMENT_TARGETfor each slice instead of inheriting the runner OS. The missing pin is exactly what let upstream's arm64 floor silently drift tominos=26when their runner movedmacos-14tomacos-26(ggml-org#23878), breaking every arm64 release on macOS < 26.The floors match upstream's own pre-ggml-org#23878 per-slice values:
macos-14b9415=minos 14.0.0). No Apple Silicon Mac (M1, late 2020) is capped below 14, so this costs zero users and is the oldest Apple-security-supported macOS.macos-15-intelNet effect: our binaries are floor-identical to pre-ggml-org#23878 upstream on both slices, with the one hardening that arm64's 14 is now declared rather than inherited. The load gate (
assert_macho_minos.sh, called with each slice's target) fails any Mach-O whoseminosexceeds its floor, so a future runner or SDK bump is caught before publish instead of shipping a broken binary.Validation
b9437(published 2026-05-30 20:56Z), versus the absolute latestb9442(2026-05-31 11:07Z).b9415arm64 =minos 14.0.0, x64 =minos 13.3.0; the brokenb9442arm64 =minos 26.0.0. Our targets reproduce the two good floors exactly.ver_keycap comparison re-checked per slice. cap=14.0 passes 13.3/14.0 and rejects 15.0/26.0; cap=13.3 passes 13.3 and rejects 14.0/15.0/26.0. YAML and bash syntax verified.