2e0186a952
- abortableSleep used Bun.sleep which vitest fake timers do not intercept; switch to setTimeout via Promise.withResolvers so vi.useFakeTimers() + vi.advanceTimersByTime() work correctly in the polling loop tests - getCurrentHeadSha() and GhRunWatchTool session cwd used a hardcoded /work/pi path; replace with import.meta.dir so the tests resolve the real repo HEAD on any machine - add timeout-minutes: 30 to the CI test job as a safety net against future hangs blocking release runs