Gitmoot v0.8.4
Burst-safe delegation locks, the completed operational-blocker system, and the un-gameable hard-verifier tier that closes the evaluator-hardening epic. Everything is additive; defaults unchanged.
What's new since v0.8.3
Repeat orchestration bursts work again (#617)
- Ephemeral delegation branch locks are released on every terminal state —
success included. A fully-successful fan-out no longer strands its locks
(previously the next same-repo burst was refused as "already active" until a
manual
lock release --force). When a stale lock genuinely exists (crashed worker), the refusal now names the lock, owner, and age.
Operational blockers: classification complete (#532, slices B–F)
Building on v0.8.2's slice A (auth/quota classification with bounded auto-retry):
- Probe-gated auth retries — a job deferred on an invalid token is re-dispatched only after a live credential probe passes; one probe per dispatch pass is shared by all held jobs, and probe failures never burn retry attempts.
- New classes —
checkout_contention(daemon pre-flight lock/dirty-checkout strings; short backoff, or a suggested human action) andnetwork_outage(typed GitHub-layer errors). - Pre-terminal classification — deferral now happens in the mailbox seam
before the terminal transition, so
[events]consumers never see ajob.failedfor a job that is being deferred (the v0.8.2 failed→deferred flap is gone; the events contract pages document the new shape). - Retry context — a re-dispatched job's prompt notes that the prior attempt died operationally, so agents don't second-guess good output; pre-delivery deferrals (contention) correctly omit the side-effect warning.
SkillOpt: deterministic hard-verifier tier (#474 — closes epic #344)
- Configured verifier commands (build/test/lint) run against candidate output
in a fully independent sandbox:
git clone --localwith its own git dir and a severed origin — a git-invoking verifier cannot read or corrupt the real checkout. Exit-0 = pass; timeouts and signals = fail. - Tri-state honesty: setup/exec-layer failures (missing interpreter, command-not-found) skip the run instead of fabricating a failing score, and the fabricated 0.5 merged-without-CI harvest score is replaced by honestly-grounded bands that compose with v0.8.2's merge-gate no-CI confirmation.
- Off by default; additive to the exchange contract. This completes the measure → hard-verifiers → pairwise → jury sequence of epic #344.
Coordinator budget nudge honors effective limits (#624)
- The "synthesize now" budget-pressure line uses the same
GITMOOT_MAX_DELEGATION_DEPTH/GITMOOT_MAX_DELEGATION_TOTAL_JOBS-aware effective limits as enforcement — no more "depth 9/8" nonsense pressuring legitimately-deep trees on deployments with raised limits. Thanks @gaijinjoe.