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 abcommand, 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 importingests 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
--recipeflag for deterministic fan-out (#477).- Delegation worktree + branch cleanup (#492); job-kill releases stranded locks and terminalizes orphaned queued children (#491).
- Dashboard
active_jobsview — 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