unsloth/.github/scripts
Daniel Han c5b4f5ee86 CI: prove the installer works on a machine with no developer toolchain
No job has ever run the installer on a machine without one.
studio-mac-install-matrix.yml is the only macOS installer job and it runs
'bash install.sh --local --no-torch' on runners that already have the Xcode CLT
selected and setup-python preinstalled, so the CLT gate never fires there, and
--local is precisely the mode that legitimately needs git. Repo-wide there was
zero coverage of xcode-select or CommandLineTools outside install.sh itself.

clean-machine-install-ci.yml runs the installer on a genuinely stripped machine.
macOS legs move /var/db/xcode_select_link, /Library/Developer/CommandLineTools,
/Applications/Xcode*.app and Homebrew aside, so xcode-select -p, git, cc and
clang really do fail, and restore unconditionally afterwards. Removing the
select-link alone is not enough: xcode-select falls through to a full Xcode.app
and re-arms /usr/bin/git. Linux legs use containers, which are genuinely clean.
Windows legs cover winget visible and masked, plus windows-11-arm. A WSL leg
covers the 126 lines of WSL-specific install.sh logic that had no runtime test.

Each macOS leg runs four deliveries: pipe (the advertised command, and the shape
that turns an early exit into curl (56)), file (separates installer logic from
pipe delivery), no-torch, and tauri (stdin closed, no tty, as the desktop app
invokes it). One leg records every toolchain invocation and asserts the trace,
which is the real deliverable: proof the installer never reached for a compiler
rather than proof it happened to succeed.

The asserts test that tools do NOT WORK rather than that they are absent from
PATH. On a real virgin Mac /usr/bin/git and /usr/bin/cc exist as CLT stubs, so
'command -v git' succeeds and only running it tells the truth.

desktop-app-clean-machine-ci.yml installs and launches the SHIPPED desktop app
release on a stripped machine, covering Gatekeeper and quarantine on macOS, NSIS
silent install on Windows, and Xvfb with WebKit2GTK on Linux.

Known limit, stated plainly: hosted macOS runners are developer machines. Masking
reproduces this bug and proves the installer does not invoke a toolchain, but it
cannot prove no hidden dependency exists on a truly virgin Mac. An ephemeral-VM
lane is the follow-up.
2026-07-28 12:07:33 +00:00
..
agent-guides-drive.sh Give opencode real timeout headroom in Local Agent Guides CI (#7235) 2026-07-19 06:08:54 -07:00
agent-guides-install.sh CLI: Rename unsloth connect to unsloth start (#6613) 2026-07-03 08:17:27 -07:00
assert-llama-loads.sh Replace standalone Studio wording with Unsloth (#7221) 2026-07-19 00:47:04 -07:00
assert-prompt-cache.sh Replace standalone Studio wording with Unsloth (#7221) 2026-07-19 00:47:04 -07:00
ci-connect-prompt.txt Add Local Agent Guides CI (#6547) 2026-06-22 04:21:48 -07:00
ci-min-system-prompt.txt Add Local Agent Guides CI (#6547) 2026-06-22 04:21:48 -07:00
clean-machine-assert.sh CI: prove the installer works on a machine with no developer toolchain 2026-07-28 12:07:33 +00:00
clean-machine-env.sh CI: prove the installer works on a machine with no developer toolchain 2026-07-28 12:07:33 +00:00
hf-download-with-retry.sh Replace standalone Studio wording with Unsloth (#7221) 2026-07-19 00:47:04 -07:00
run-studio-permission-browser.sh Studio: clarify tool permission controls (#7181) 2026-07-20 09:55:39 -03:00
serve-unsloth-run.sh CLI: Rename unsloth connect to unsloth start (#6613) 2026-07-03 08:17:27 -07:00