Skip to main content

Gitmoot v0.7.0

The complete automatic template-optimization loop for SkillOpt, plus runtime-reliability and orchestration improvements. Agent templates can now self-improve from real usage — feeding the existing gitmoot-skillopt optimizer, with no weight training and manual promotion preserved. Every new SkillOpt capability is off by default and additive.

Pairs with gitmoot-skillopt v0.4.0 (the judge's trajectory digest and the live-pairwise producer ship there).

What's new since v0.6.0

SkillOpt — automatic template optimization (new, off by default)

  • Mode A — outcome harvest (#465, #468) — verifiable job outcomes (PR merged vs blocked, external CI, review decision, fix-round count) become auto-trace feedback for the template version that produced them. Automatic revert detection flips an earlier positive when a merged PR is later reverted (#467), and deterministic tool checkers (dupl/jscpd/golangci-lint/gocyclo/diff-size) add objective [0,1] dimensions that the LLM can't game (#485).
  • Cross-family review signal (#469, #470) — a reviewer from a different model family scores quality and scope-fidelity (intended scope vs actual diff) as a soft, secondary signal; the verifiable outcomes stay the floor.
  • Mode B — champion/challenger (#473) — a Thompson-sampling Beta-Bernoulli bandit + a gitmoot skillopt ab command, live-traffic A/B interception for ask agents on a sampled fraction (#482), and a cross-family LLM-judge auto-pairwise that records evidence without touching the bandit (#483).
  • Promotion (#471, #472) — configurable auto-promote with a confidence guardrail and candidate.* notifications; promotion canary + auto-rollback (#484) routes a sampled fraction of traffic to a canary version and rolls back via the existing rollback API if it regresses over a bounded window.
  • Judge hardening (epic #344) — a cross-family judge jury with median / majority / minority-veto aggregation + a disagreement flag (#349); and live pairwise evaluation — the fork emits a blinded paired review packet and gitmoot skillopt pairwise import ingests it into canonical feedback (#508), unblinding each pick to champion/challenger.

Runtime reliability

  • Claude transient-401 retry with exponential backoff for the intermittent "socket connection closed" error under sustained concurrency (#487, #509).
  • Bounded re-ask loop on malformed agent output instead of a hard failure (#495).
  • More reliable read-only agent ask — no implement-guard block, clearer timeout (#496).

Orchestration & dashboard

  • --recipe flag for deterministic fan-out (#477).
  • Delegation worktree + branch cleanup (#492); job-kill releases stranded locks and terminalizes orphaned queued children (#491).
  • Dashboard active_jobs view — in-flight jobs surfaced in the interactive TUI Activity page (#505).

Tests

  • Full-chain end-to-end tests: the canary lifecycle (#504), the Mode A harvester (#465), and a cross-repo pairwise round-trip validating the fork producer ↔ Go importer contract (#514).

Upgrade notes

No breaking changes. Every new SkillOpt feature is off by default (a nil/false config knob ⇒ byte-identical behavior) and promotion stays manual unless you opt in.

Install / upgrade

  • Existing install: gitmoot update
  • Fresh install: curl -fsSL https://gitmoot.io/install.sh | sh