v0.4.0 — CLI surface diet: a ~6-verb front door, unified config, readable help
A CLI surface overhaul — witness's command surface is now organized around what a user actually does, with the engine's internal vocabulary moved off the front door. Breaking for anyone scripting the old commands (see below); the distillation engine and data are unchanged.
The new front door (~6 verbs, grouped)
READ profile · status
LENSES lens
CONFIG config
SETUP install · uninstall · doctor
MAINT export · cleanup
Highlights
witness status— one read for "is it working / what's captured / is it fresh" (replacesdistill status).- Unified
config— one scoped tree:witness config set <key> <value> [--lens <name>], canonical keysrunner/mine_model/review_modelat both scopes, andconfig listshows an origin view ((lens override)vsinherited from default, never blank) so per-lens overrides are legible.witness lens setis gone — it'sconfig set --lensnow. installis host-wiring only — it wires the editor integration + MCP; the runner default moves towitness config set runner <claude|opencode>.- Scannable
lens show— a compact card by default (dimensions, models, prompt excerpts);witness lens show <name> --promptsfor the full prompt text. - De-jargoned, grouped help — the L0/L1/L2 pipeline vocabulary no longer leaks into user-facing help/output;
witness --helpis sectioned. - The worker moved off the front door —
distill/revieware now the hiddenwitness worker run|stop|reviewoperator group (a normal user never needs them; the worker runs off editor hooks).importis hidden plumbing.
Breaking changes
witness distill status→witness status;witness distill start/--all/stop→witness worker run [--detach]/witness worker stop;witness review→witness worker review.witness lens set <name> …→witness config set <key> <value> --lens <name>.witness version→witness --version.- Installed editor hooks are unaffected — the hook contract (
capture/session-start/session-end) is unchanged, so existing installs keep capturing. Only the human-facing command names moved.
Verification
Built and reviewed via a fresh-subagent-per-task workflow with a final whole-branch review (which caught + fixed a command-name collision before release); make fmt vet test + -race green; hook ABI verified byte-unchanged; --json outputs undecorated; live smoke on an isolated archive. Zero engine changes.