BLACK LABELAcademy
← Our Failures

'Fixes do nothing live' is almost always a stale /Applications binary, not wrong source

intermediate6 min read · updated 2026-06-20

Market & numbers — every figure sourced

wasted_debug_hours_per_incident2 hoursest: BLA internal incident-log median: time spent re-reading correct source before checking the installed binary, across recurring stale-binary incidents
fix_time_once_diagnosed5 minutesest: BLA internal: rebuild + reinstall + re-sign of a single .app once the stale binary is identified as the cause

'Fixes do nothing live' is almost always a stale /Applications binary, not wrong source

You edit the code. The edit is correct. You save. You run the app. Nothing changes. So you assume the source is wrong, and you go back and rewrite a fix that was already right. This is the single most expensive trap in desktop app work, and it has almost nothing to do with your code.

The pattern wasted roughly 2 hours per incident in our own logs before we made it a checklist item. Once you know what to look for, the actual fix takes about 5 minutes.

What we tried

We shipped a small native macOS app (Swift, a `.app` bundle living in `/Applications`). A user reported a bug. We found the bug in source, fixed it, confirmed the fix was correct by reading the diff, and told the user it was resolved. The user ran the app. The bug was still there.

Our instinct — the wrong one — was: "the source must still be wrong." So we re-read the file, re-reasoned about the logic, and sometimes rewrote a perfectly good fix into a worse one. We were debugging code that was already correct.

What broke

The source was never the problem. The thing the user double-clicks is the compiled, installed binary inside `/Applications/YourApp.app/Contents/MacOS/`. Editing source does nothing to that binary until you rebuild and reinstall. Three separate macOS mechanisms conspire to hide this:

The deeper failure was process, not platform: we had no single, re-runnable build-and-install command. "How do I deploy this?" had a different ad-hoc answer every time, so it was easy to skip and easy to do wrong.

The fix

Make every app's build re-runnable and reinstall before you debug code. Concretely:

Apply it

Sources

© 2026 Black Label · Education, not financial or legal advice. Every number is sourced or labeled an estimate. Subscribe for $30/month