Global port coordination¶
The registry at ~/.local/state/splashdown/{ports.tsv,kv.tsv} is machine-wide, not per-repo. When any checkout allocates a port, the allocator considers:
- Every other checkout's pinned ports (any repo, any worktree)
- Live
bind()probes (catches ports held by non-splashdown processes)
So three unrelated projects can each declare range = [3000, 3100] and never collide. Splashdown hands them 3000, 3001, 3002 (or whatever's free at allocation time).
Lazy GC: entries for checkouts whose directory no longer exists are dropped on next allocation. That's how git worktree remove cleanup works without a hook.