v0.9.1
A new command class: status and wait, the live-truth pair. Every other command answers "what happened" reproducibly; these two answer "what is happening NOW", are point-in-time, and are explicitly non-reproducible - a deliberate, documented departure from the forensic contract.
New
csift status <target>: one-shot liveness verdict for a session -running|waiting-children|waiting-hitl|idle-eot|stale-dead|unknown- from a three-way join, never a single-surface inference: the harness session registry (transition-writes only, never a heartbeat), the transcript tail state machine (an unreturned tool call at the tail = a tool in flight), and aps-based owner-pid probe guarded against pid reuse by the process start time. Child liveness joins each subagent transcript's own tail with the incremental workflow journal (startedminusresult= agents in flight). The elicitation sidecar covers human-in-the-loop blocks. Every verdict ships its evidence rows, and every degradation is stated in the output.csift wait <target> --until COND[,...]: block until a condition fires, first hit wins. The closed condition set:stop,hitl,auq,notification[:REGEX],tool:NAME[:REGEX],write:PATH_RE[:LINE_RE],verdict:V. STRICT post-start baseline semantics: only bytes appended after the watch starts count as events; history issearch's job. A readiness line on stderr makes scripted waits race-free against their own trigger. Polling is incremental (byte offsets, torn tails held) and adaptive (200ms floor to 2s ceiling); lanes and the sidecar born mid-wait join the watch automatically.- Exit codes:
waitexits 124 on--timeoutexpiry (the GNUtimeoutconvention) - the ONE documented exception to the crate's 0-vs-non-zero exit law; it applies to no other command.
Fixed (0.9.1)
- Pid liveness on busybox-ps hosts (Alpine and friends): busybox ps rejects -p and the lstart field, so a live session's pid read as dead and status reported stale-dead. The probe now falls back to /proc/ on Linux when the ps form fails, with the reuse-guard skip disclosed. Found by the release matrix's musl test lanes; v0.9.0 is the same feature set without this fix and ships no binaries.
Verification
- 957 unit + 481 e2e; the six design acceptance probes plus discovery, degradation, baseline-law, and scoping rounds; line coverage 95.39% (above the 0.8.2 baseline); a scoped mutation census over the new modules with survivors converted or classified.
- All eight platform binaries built at the tag with the FULL test suite green on every Linux and Windows lane; macOS binaries built with path-privacy remapping.
Full details: CHANGELOG 0.9.0 and the SPEC section 6 ledger.