Gitmoot v0.8.2
The unattended-reliability release: the daemon can no longer be wedged by a stuck job, duplicated by a race, or tricked into throwing work away on a temporary auth/rate-limit failure. Plus per-job runtime overrides, the judge trust-meter, and the dashboard galaxy view.
What's new since v0.8.1
Daemon: unwedgeable, singleton, self-healing
- A stuck or long job no longer wedges the daemon (#562) — jobs run on
tracked async dispatch instead of inline in the worker tick. Other queued
jobs, heartbeat scans, and recovery keep flowing while a long job runs. The
host-wide
--workerscap, per-repomax_paralleloverrides, and same-repo checkout serialization are all preserved. - Simultaneous
daemon runis airtight (#556) — a kernelflockon<home>/daemon.lockbackstops the #550 singleton guard: exactly one process ever wins, a SIGKILLed daemon releases the lock automatically (no stale-lock lockout), and adaemon start/restartwhose child loses the race reports the refusal instead of a false "started".daemon stopcan also stop a positively-verified untracked daemon holding the lock. - Operational blockers are classified and auto-retried (#532, first slice) —
a job that fails on an expired/invalid token (401) or a rate limit (429, with
the reset time parsed from the error) is deferred, not failed: it shows as
blocked-operational: <class>: attempt n/3injob list/job showand is automatically re-dispatched when the blocker clears. Hard-bounded at 3 attempts; product failures (an agent'sfaileddecision) and jobs that already produced output are never auto-retried. New additivejob.deferredevent: consumers must treatjob.failedfollowed byjob.deferredas non-terminal.
Per-job runtime override (#531)
--runtime <rt>(+ companion--session <ref>) onagent run/ask/review/ implementandorchestrateruns a single job through a different runtime while the agent keeps its default. Overridden jobs always get a fresh session on the override runtime — the agent's default-runtime session is never read, written, or locked — and orchestration continuations carry the override across generations.--session lastis rejected for overrides (it cannot be made collision-safe).
SkillOpt: measure the judge (#344)
gitmoot skillopt judge agreementreports judge↔human agreement (raw %, Cohen's kappa, per-dimension,--json) per comparison from stored ranked feedback, with explicit small-sample caveats. The live Mode A loop — real merged-PR + CI outcomes harvested into the optimizer producing a better candidate — was proven end-to-end on a real repo and closed (#538).
Web dashboard: galaxy view (#503)
dashboard --webadds/api/graph: a whole-history galaxy of every job and run with node detail panels, hover and idle-performance polish.
Docs completeness (#603)
- A full audit against the shipped feature surface fixed 74 gaps across the
agent skill, gitmoot.io,
llms.txt, and the README — and corrected two long-standing errors: thegitmoot setupquick-start now includes the required--session, anddaemon --repois documented (in docs and the CLI's own help text) as scoping the daemon to a single repo.