Skip to main content

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 --workers cap, per-repo max_parallel overrides, and same-repo checkout serialization are all preserved.
  • Simultaneous daemon run is airtight (#556) — a kernel flock on <home>/daemon.lock backstops the #550 singleton guard: exactly one process ever wins, a SIGKILLed daemon releases the lock automatically (no stale-lock lockout), and a daemon start/restart whose child loses the race reports the refusal instead of a false "started". daemon stop can 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/3 in job list/job show and is automatically re-dispatched when the blocker clears. Hard-bounded at 3 attempts; product failures (an agent's failed decision) and jobs that already produced output are never auto-retried. New additive job.deferred event: consumers must treat job.failed followed by job.deferred as non-terminal.

Per-job runtime override (#531)

  • --runtime <rt> (+ companion --session <ref>) on agent run/ask/review/ implement and orchestrate runs 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 last is rejected for overrides (it cannot be made collision-safe).

SkillOpt: measure the judge (#344)

  • gitmoot skillopt judge agreement reports 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 --web adds /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: the gitmoot setup quick-start now includes the required --session, and daemon --repo is documented (in docs and the CLI's own help text) as scoping the daemon to a single repo.