Six TDD tasks: schema + KDL parsing, the Waiting state and WaitInfo, a
ready module that evaluates one condition, the interruptible gate inside
do_start, CLI surfacing, and the README.
Also corrects the spec: xy-protocol has no etcetera dependency, so ~ is
expanded from $HOME; and in KDL `command`/`args` are sibling nodes inside
the wait-for block, which changes how the parser counts conditions.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EGntTHCW3sEPy1VBRopNNp
Docker-backed servers lose a startup race against OrbStack at login and are
marked Failed ~15s in, because a missing docker socket burns the crash-retry
budget. Measured: OrbStack takes 18s to create its socket; the retry cap
trips at 15s.
Adds a per-server wait-for precondition (path / tcp / command) that gates
the spawn without consuming the retry budget, surfaces as a new Waiting
state, and stays interruptible by stop/shutdown.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EGntTHCW3sEPy1VBRopNNp