pub fn state_dir(id: &JobId) -> StringExpand description
Remote per-job state, as a shell string (never a local PathBuf).
Jobs live under jobs/ rather than directly in the state dir because the
ticket lock keeps <host>.lock in the same tree. Sharing one parent made
coop ls report dev.lock as an orphaned job, and would have let prune
delete a live lock. They collide whenever the orchestrator and the target
are the same machine, which is exactly the local-sshd test setup.