"A successful swift build is not deployment proof."
The Most Expensive Green Checkmark
You run swift build, it succeeds, and something in your brain files the work as done. For a native app that embeds a big C library, that instinct is a trap with a delay on it. A green build proves the code compiled and linked in your environment. It says nothing about whether the app will even launch on a Mac that isn't yours.
The reason is where the linker found libmpv. On your development machine, Homebrew has it sitting at a tidy path, and the build happily links against it. Ship that exact binary to a clean Mac with no Homebrew, and it dies on launch looking for a dylib that isn't there. The build was honest — it linked what it found. What it found just doesn't travel.
You can see the trap in one command — ask the built binary where it thinks its dependencies live:
Build, Release, Run Are Three Different Things
The cleanest mental model borrows from the twelve-factor discipline: build, release, and run are separate stages. Build turns source into artifacts. Release packages those artifacts into something self-contained and versioned. Run is that release executing on a real target. Ashen Reel treats them as distinct on purpose — the build makes binaries, a scripted release bundles and signs the whole dependency closure, and the run is proven on the actual installed app. Collapsing them is exactly how a dev-only dylib path sails all the way to a user's launch failure.