0.1.3 - live observation
hscope --watch keeps the circuit live while a session runs — and withholds judgment on the turn that is still running. It observes only: no hook in your session, nothing is blocked, and a violation on screen is one a human has to act on.
Added
hscope --watch(andhscope ingest --watch): 2s mtime scan → hash only the files that moved → re-judge only those sessions. The viewer polls/api/metaand refreshes itself, silently. Without--watch, no polling at all.- A turn in flight is shown, not judged — no terminal
stop_reasonand the transcript was written to within 15 min. Judging it would fire the verification gate on the very turn about to run the check, and its streamed token usage is not final until the last record lands. It is judged the moment the turn ends — or once its liveness window lapses, if you interrupt it. A verdict deferred must not become a verdict skipped. verify_watch— 24 assertions, including the mutation case: with the in-flight guard off, the false verdicts really do fire.verify_allis now 20 harnesses.
Fixed
- A half-written last line of a live transcript counts as
truncated_tail, notbad_lines— it is the normal state of a running session. Damage on any other line (and a broken last line in a file that did end in a newline) still counts.
Verified against
hscope doctor holds every invariant over a 289-session corpus spanning Claude Code 2.1.165 … 2.1.207 (29 harness versions).
On PyPI and npm this follows 0.1.1 — 0.1.2 was cut in the repo but never uploaded, so its discovery-metadata pass ships here.