Instead of always rebuilding, write a .ghostty_sha stamp file
inside the xcframework after each build. On cache miss, only
seed from local if the stamp matches the current submodule SHA.
This avoids both unnecessary rebuilds and stale ABI mismatches.
- Remove local xcframework seeding on cache miss — the local build
output isn't tied to the current submodule SHA and can produce
ABI mismatches. Always run zig build when cache misses.
- Add 300s timeout on lock acquisition. If a prior setup was killed
uncleanly (SIGKILL, host crash), the lock dir persists forever
and blocks all future runs. Now auto-removes stale locks.