Improving a team Shipped
Score a team against its own rubric, propose edits, apply the ones you approve, re-run, and stop when a deterministic authority says to.
The walls
- The proposing dispatch is read-only. It can propose, it cannot write — the session applies approved edits.
- Nothing under
evals/is ever a valid edit target. The loop must not edit its own rubric mid-run. - At most five proposals per iteration, capped at three iterations (hard max five).
- A clean git tree is required to start, because the rollback trail is load-bearing.
- Convergence means every criterion scores at least 8 on every primary scenario. Holdouts confirm at the end; they never gate.
- A confirmed regression reverts to the best-scoring commit — a git revert, never a reset.
- Every iteration pauses for you. A plain "keep going" is structural, enforced by a guard that refuses to advance an un-acknowledged iteration.
socialteam, scored against its own rubric
Reported as halted, not converged: it stopped at the iteration cap with one criterion finishing at 7 against a bar of 8. A run that stops one point short is not a success, and calling it one is how a rubric stops meaning anything.
The iteration gate
What the iterations actually found
socialteam's 20.0 baseline was not the team being bad at writing — it was a missing tool grant. The generated authoring objective denied its own child web access, so the team honestly reported that it was blocked and produced nothing. Fixing that took it to 68.18, but freshness regressed to 1 because a prose instruction was being overridden. Iteration two moved that window into fixed doctrine and freshness went to 10. The lesson written down afterward: doctrine files bind, method prose gets overridden.
Every iteration is a commit
Which makes rollback ordinary git history rather than a bespoke undo, and makes the improvement itself reviewable by the same pipeline that reviews everything else.