Skip to content

v0.9.1

Choose a tag to compare

@wdhwg001 wdhwg001 released this 30 Aug 07:53
· 104 commits to main since this release

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 a ps-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 (started minus result = 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 is search'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: wait exits 124 on --timeout expiry (the GNU timeout convention) - 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.