Skip to content

Releases: stump-wtf/harness

v0.17.0

Choose a tag to compare

@github-actions github-actions released this 26 Oct 23:15

harness v0.17.0 adds an MCP stdio bridge for inspecting and controlling the daemon (status, runs, logs), renders pipe-run live streams as readable entries in the logs, and feeds those streams into the observer's fan-out. Fixes cover byte-faithful attach output, keystroke ordering and skewed host clocks.

Features

  • Expose daemon status, runs, logs and controls over MCP stdio (5b4da15)
  • Render pipe run streams as readable entries in logs (fa46f26)
  • Feed a pipe run's live stream into the observer's fan-out (767bddb)

Fixes

  • Keep the readable attach byte-faithful for interactive output (5948a6f)
  • Keep attached keystrokes and pastes in typed order (7dfd209)
  • Clamp proctree started_at against skewed host clocks (dad82be)

Docs

  • Describe pipe run stream rendering in the logs docs (ac21b20)

Maintenance

  • Settle the live capture before comparing it to the finished log (0d15172)
  • 1 dependency update

Full changelog: v0.16.0...v0.17.0

Executed via scheduled Harness using glm-5.3-flash in Crush

v0.16.0

Choose a tag to compare

@github-actions github-actions released this 25 Oct 19:38

harness v0.16.0: run lifecycle hooks (pre_run/post_run) with templated per-run workdirs, a graceful stop flag for stop, restart and daemon shutdown, and a fix keeping Shift/Ctrl cursor-key and Shift+Tab bindings while attached.

Features

  • graceful stop flag for stop, restart and daemon shutdown (#990) (4961446)
  • pre_run/post_run hooks + templated per-run workdir (#983) (f24d7fa)

Fixes

  • keep Shift/Ctrl on cursor keys and Shift+Tab when attached (#988) (0910f03)

Maintenance

  • 1 dependency update
  • test: let a spawned test daemon bind its own metrics port (#989) (062b47f)
  • test(attach): wait on replay frames, not the snapshot, in tail ordering (#991) (419d838)

Full changelog: v0.15.0...v0.16.0

v0.15.0

Choose a tag to compare

@github-actions github-actions released this 24 Oct 15:15

Changelog

Features

  • f75c03f feat: model_pin table, validation and capability interfaces (SPEC-0020) (#973)
  • 6f0f02b feat: surface last successful model call and supervised children in list/describe (#970)

Fixes

  • f43dfc3 fix: carry a redacted body summary in StatusError for diagnosable merge refusals (#976)
  • ca6b379 fix: refuse an agent install whose merged table would not load (#974)
  • c8d8de0 fix: stop the merge train chasing an approval the forge no longer counts (#978)

v0.14.0

Choose a tag to compare

@github-actions github-actions released this 21 Oct 15:27

harness v0.14.0 batches merge-train PRs onto a single train commit, lets command packages run bundled scripts via {{package.dir}}, and fixes schedule state reporting and bundled-file scan listings.

Features

  • Batch PRs onto one train commit (SPEC-0025 REQ-17) (a100d19)
  • Let a command package run its bundled script with {{package.dir}} (46e0d5b)

Fixes

  • List every bundled file with its scan status (6bfc7b9)
  • fix(surfaces): a stopped schedule reads disarmed, not armed (e83d486)

Maintenance

  • 1 dependency update

Full changelog: v0.13.0...v0.14.0

v0.13.0

Choose a tag to compare

@github-actions github-actions released this 17 Oct 23:17

harness v0.13.0: quota parks, the budget day, package env vars and READMEs, harness stable, trigger event context, and health and stall watchdogs.

Features

  • per-harness health_cmd probe with restart/notify action (#960) (301a457)
  • progress-based stall_timeout watchdog (#959) (a904a52)
  • stable lint and stable check for stable checkouts (38c6a3d)
  • event context, typed{} envelope metadata and event.* template paths (15e4228)
  • announce a quota park once, with its reset and rule (0b4ddbd)
  • park a harness on an exhausted quota until the reset (0804139)
  • let packages suggest supervision defaults you choose (#931) (479d52d)
  • promote agent stable to top-level harness stable (977ae66)
  • show the package README at info, install and upgrade; flag a package without one (8ef41bf)
  • declare package env vars in [[env]]; doctor checks them (08ae398)
  • SPDX [package].license field (7418cbb)
  • one admission funnel, the budget day, max_runs_per_day (725309d)

Fixes

  • retry each fuzz target once to survive the stop-window flake (abb5af1)
  • reset channel backoff from accumulated healthy streams (66687aa)
  • admit a restart before stopping the running process (0beefe0)

Docs

  • document the trigger event context for v0.13.0 (4f98d99)
  • amend ADR-0044 so a package can suggest supervision defaults (e455fa0)

Maintenance

  • 6 dependency updates

Full changelog: v0.12.0...v0.13.0

v0.12.0

Choose a tag to compare

@github-actions github-actions released this 07 Oct 21:01

Changelog

Features

  • c4e9376 feat!: hold reasons (hours, quota, budget); hold_reasons replaces held (#898)
  • fd401d5 feat(config): parse and validate run budget keys and [budget] (#896)
  • 63af3df feat(modelerr): one model-error classifier, plus ResetAfter (#897)
  • 2e2e911 feat: agent list, describe attribution and the doctor pin row (#815) (#885)
  • d003841 feat: agent packages content scan and confirmation gate (#812) (#880)
  • a02f598 feat: agent stables — [stable.*], stable add/remove/update/list, search and info (#811) (#878)
  • 9d85f77 feat: harness agent install, uninstall and prune (#813) (#883)
  • b935d44 feat: harness agent upgrade — resolve, diff, rescan, re-pin (#814) (#884)
  • 7e013d6 feat: model API config, chat-completions client and gate-call layer
  • ff1af1a feat: ordered skill merge, shadowing diagnostics and spawn-time projection (#75) (#892)
  • 74645c1 feat: packages ship one-shot prompts; package paths stay inside (#908)
  • b38036e feat: prompt_template and prompt_template_file (SPEC-0017 REQ-5, REQ-7) (#905)
  • 6d190dc feat: the package skill tier in the ordered skill merge (#816) (#893)
  • ce9dfcf feat: upgrade effective-value review and the confirmed-scope write (#882) (#887)
  • 1dd674b feat: verify the standard-webhooks signature scheme on webhook routes (#904)

Fixes

  • 2f2ed8a fix(docs): renumber agent-package-stables off ADR-0040 (#872)
  • 009e0a2 fix(mergetrain): keep stacked PRs out of the train (#873)
  • 97d2757 fix(modelapi): one deadline per screen, so a freed slot cannot outlive it (#918)
  • 3fe65d4 fix(notify): a triggered harness's failed run is not a give-up (#895)
  • e63e3a2 fix: capture socket peer credentials on darwin (#889)
  • ffa4e0e fix: prune keeps pins that kept review paths point into (#891)
  • 90ba6f2 fix: register an events subscription before the daemon's HELLO reply (#879)
  • 1f19ff5 fix: report socket peer credentials on darwin (#890)
  • 0390493 fix: skip value continuation lines when finding a key (#888)
  • e4fa9d8 fix: stop claude-code preview and attach output staircasing (#881)
  • af97649 fix: the upgrade review covers skill_paths (#816 follow-up) (#894)
  • 9a2a335 fix: trace enabled-intent changes and alert on boot-dormant autostart (#835) (#866)

Other

  • e4c3390 toil: consolidate on agent-trace's shared credential redactor (#916)

harness v0.11.0

Choose a tag to compare

@github-actions github-actions released this 29 Sep 17:22

harness v0.11.0

A supervision release: harness now tells you when an agent is stuck waiting at a prompt, lets you query run history across harnesses even when offline, and folds token, cost and model information into every run.

Highlights

  • See stuck agents immediately. A harness sitting at a prompt waiting for input gets a waiting marker in the harness list, with a capture of what it is showing, so nothing idles in silence (4047571).
  • Query the run ledger across harnesses, offline. runs now answers questions about run history for every harness at once, and without a live daemon (72887eb).
  • Tokens, cost and the served model on every run. Usage reports and observer activity are folded into the open run, so a run's cost is part of its record, not a separate report (06a34c1, 1fe9520).
  • harness stop now suppresses the schedule. Stopping a harness no longer lets the scheduler immediately bring it back (d0e8c36).
  • Readable stream-json in attach. Agents that speak stream-json render readably in attach and the preview, via a line mux that needs no emulator (2be6adf, 1ea4026).
  • A more durable ledger. A synced line is acknowledged only once it is committed, fixing acknowledgement races (31134eb).

Features

  • Surface stuck-at-prompt harnesses via a waiting marker and capture (4047571)
  • Query the run ledger across harnesses, and offline (72887eb)
  • Fold usage reports into runs: tokens, cost, served model (06a34c1)
  • Fold observer activity into the open run (1fe9520)
  • Attach stream-json one-shots through an emulator-less line mux (1ea4026)
  • Comment-preserving, atomic harness.toml table editor (881b514)
  • Agent package manifest schema, pin store, and source resolution at load (b2a2b02)

Fixes

  • Render stream-json readably in attach and the preview (2be6adf)
  • harness stop suppresses the schedule (d0e8c36)
  • Ack a synced ledger line only once it is committed (31134eb)
  • The boot scan no longer lists a trimmed skip's update as a Partial stub (0377ad9)
  • Bound the shift-passthrough mouse release window (91205a3)
  • Log config load warnings and show them on doctor's config row (2232378)
  • harness.toml editing: array-aware headers, dual-spelling add, validated keys (8b883bf)
  • harness.toml editing: replace the whole value and tidy only the removal seam (16408e4)
  • Follow the harness's package source through the edit round-trip (704c6b5)
  • Carry the pin reference on the agent-package wire and name it PackageSource (0ea2eca)
  • Security: get_trajectory reads only sessions it reported (370435e)

Reliability & tests

  • Notify tests wait on deliveries, not files, and no longer race a wall-clock hook budget (50a27e9, 3505c1c)
  • Transcript live appends are gated on the sessions' baseline reads (37da254)
  • Run history is counted only after the ledger commits the burst (d396e28)
  • Ledger fsync is skipped in the metrics, scheduler and remote test binaries (f66c404, 3dce799)

Install / upgrade

brew install stump-wtf/tap/harness
# or: brew tap stump-wtf/tap && brew install harness
brew upgrade harness

Binaries for Linux and macOS (amd64, arm64) and checksums.txt are attached below.

Full changelog: v0.10.0...v0.11.0

Executed via scheduled Harness using Qwen3.8-27B in Crush

v0.10.0

Choose a tag to compare

@github-actions github-actions released this 28 Sep 11:03

Changelog

  • b0dec5c Merge branch 'main' into feat/480-trigger-metrics-v2
  • 6cf3fd1 Merge branch 'main' into feat/480-trigger-metrics-v2
  • 7dd2d3d Merge branch 'main' into feat/480-trigger-metrics-v2
  • 4e2e764 Merge branch 'main' into feat/480-trigger-metrics-v2
  • dc05f6c Merge branch 'main' into feat/506-pi-omp-adapters-v2
  • 720b00f Merge branch 'main' into feat/506-pi-omp-adapters-v2
  • 2bddad3 Merge main into feat/structured-oneshot-pipes
  • f57b4e7 Merge origin/main: adopt the [daemon] process-settings pattern (#789)
  • 40dc347 Merge origin/main: resolve against byte-bounded scrollback (#793)
  • e0efd3b Merge remote-tracking branch 'origin/main' into feat/480-trigger-metrics-v2
  • 8bdd16e Merge remote-tracking branch 'origin/main' into feat/480-trigger-metrics-v2
  • 20b801f Merge remote-tracking branch 'origin/main' into feat/506-pi-omp-adapters-v2
  • c6b1964 Merge remote-tracking branch 'origin/main' into feat/506-pi-omp-adapters-v2
  • 5125f0c Merge remote-tracking branch 'origin/main' into feat/506-pi-omp-adapters-v2
  • 4f2d773 Merge remote-tracking branch 'origin/main' into feat/506-pi-omp-adapters-v2
  • 7ca8a78 Merge remote-tracking branch 'origin/main' into feat/506-pi-omp-adapters-v2
  • ad87a6c Merge remote-tracking branch 'origin/main' into feat/compress-sealed-logs
  • 99c9a05 Merge remote-tracking branch 'origin/main' into feat/daemon-memory-guardrails
  • 158f3cf Merge remote-tracking branch 'origin/main' into review-791
  • 45c2887 Merge remote-tracking branch 'origin/main' into review-792
  • 520d244 Merge remote-tracking branch 'origin/main' into review-792
  • a028864 feat(adapter): declare claude-code's structured prompt stream
  • d9f4b5b feat(daemon): add compress_logs setting, on by default
  • e71a3d8 feat(daemon): add opt-in memory_limit and loopback-only pprof_addr
  • f3fdc7b feat(daemon): show a pipe run's stream in logs --run N --raw
  • 6ef858b feat(metrics): export Go runtime memory classes and the GC heap goal
  • 8eb335b feat(metrics): export harness_trigger_* on the SPEC-0013 endpoint
  • 399bc3a feat(redact): mask JSON lines per string, skip unmatchable text
  • 3368e7a feat(sealedlog): compress sealed logs with zstd, read either form
  • 9569994 feat(settings): parse human byte sizes as a setting kind
  • 3c092ce feat(skills): learned skill store with the two-channel gate (#788)
  • ce585e3 feat(skills): serving clones, FTS5 retrieval index, retrieval counts (#78) (#794)
  • 67ef20e feat(supervisor): compress rotated backups and closed runs' logs
  • cb64ddd feat(supervisor): run stream-json one-shots on pipes, not a PTY
  • 99d3a66 feat(webhook): de-duplicate delivery IDs and enforce rate_limit
  • f1a3d98 feat: add pi and omp adapters and command transcripts binding
  • 6ebef5a feat: add the command harness kind, exec'd without a shell
  • 5cf69b5 fix(adapter): observe OMP sessions now that agent-trace v0.6.0 reads them
  • 9a2971c fix(attach): bound scrollback by bytes and replay it without copying (#793)
  • 776756b fix(attach): release a removed Mux and cap its scrollback
  • 2e11c65 fix(supervisor): release each spawn's sanitizer emulator
  • 0bbe2f9 fix(test): pass a nil clock to startDaemonSources in the metrics test
  • b6603a7 fix(tui): cap the vtView emulator's scrollback
  • fa66fdb fix: accept [daemon] process settings in harness.toml
  • 85ca820 fix: honour typed --config and --socket in doctor's settings report
  • 6704535 fix: reject a prompt on a generic harness at every front door
  • 6eb8f7e merge: resolve against #689's ordered publish and per-source stats
  • 76ec466 refactor(config): fold memory_limit and pprof_addr into checkDaemonSettings

v0.9.0

Choose a tag to compare

@github-actions github-actions released this 27 Sep 19:01

Changelog

  • a994c26 Merge branch 'main' into toil/public-intake
  • 45cf39c Merge branch 'main' into toil/public-intake
  • af8cfd7 Merge remote-tracking branch 'origin/main' into toil/public-intake
  • 2550db5 Merge remote-tracking branch 'origin/main' into toil/public-intake
  • c9cae8c Merge remote-tracking branch 'origin/main' into toil/public-intake
  • 3cc5e47 Merge remote-tracking branch 'origin/main' into toil/public-intake
  • cfec972 Merge remote-tracking branch 'origin/main' into u653
  • ed787fb feat(ledger): record every resident process lifetime as a run (#649)
  • 7fbfca7 feat(peek): render claude-code stream-json readably in the live preview (#738)
  • a0d6eb3 feat(trigger): add harness triggers and show triggered harnesses (replay of #656) (#689)
  • 18ab9e7 feat(tui): one-shot preview and chatroom read like harness logs
  • e89ae5f feat(webhook): verify hmac-sha256, github, gitea and gitlab deliveries
  • b569f6a feat: command one-shots with argv templates over the run context (#661)
  • 49df0c3 fix(observe): attribute rows written during a scan to the open run (#714)
  • 4dfaa34 fix: pass the scheduler clock to startDaemonSources in the hmac test
  • b88badc refactor: extract the harness logs renderer into internal/logview

v0.8.0

Choose a tag to compare

@github-actions github-actions released this 26 Sep 18:44

Changelog

  • ee82610 feat(cli): style one-shot verbs on a terminal, keep pipes plain (#728)
  • 51a8f07 feat(cli): style one-shot verbs on a terminal, keep pipes plain (#728)
  • 4072a31 feat(logs): style harness logs on a terminal, collapse repeats (#727)
  • 2f98667 feat: notify hook — alert when a harness fails, is loop-stopped, or rotated (#729)
  • aadb623 feat: notify hook — alert when a harness fails, is loop-stopped, or rotated (#729)
  • fa79a15 fix(sessionguard): resolve the crush store from --data-dir (#726)