tools/ship.sh: gates -> push -> deploy, so deployed means committed

One command closes the deploy gap: ship.sh refuses a dirty tree (the deploy rsyncs the WORKING TREE, not a git ref — without the check, uncommitted work ships silently and stellate.app drifts ahead of main), runs the full gate suite (verify.sh + theory/pipes/speech), pushes, then runs…

▶ Play it: Dial Tone Prophet — the genre built out of recorded and synthesized voices https://stellate.app/?genre=spokenword&seed=2904&path=196.11721,215.11754,177.11754&xdur=13.122

0240cfb https://github.com/aboard-io/stellate/commit/0240cfb0e39ff93af2538811df81ea1484101d8b