protocol · 7 steps

optimize-unattended.

optimize-unattended is the autonomous twin of optimize: the same metric-driven hypothesis loop, but with no batch checkpoints. The experimentation step runs unattended to a termination condition (or a manual interrupt), making it suitable for overnight and weekend runs. Six of its seven steps are byte-identical to optimize — only experimentation differs.

Steps

  1. 01Setupread-only

    Same interactive metric elicitation as optimize. batch_size is still elicited but inert — there’s no checkpoint to gate.

  2. 02Metricread-only

    Same metric-script contract + double-run stability gate.

  3. 03Baselinemeasure

    Same baseline capture + cost projection, plus an unbounded-mode typed acknowledgment.

  4. 04Experimentationunattended

    The autonomous loop — no DAIC switches mid-run, no per-iteration user gate. Runs until a termination condition fires or the operator interrupts.

    many agents fan out in parallel
  5. 05Synthesissynthesize

    Same findings document + non-blocking metric-gaming audit.

  6. 06Code-reviewspec gate

    Same full two-stage gate.

    OpusAntigravityCodex
  7. 07Completiondocs · push

    Same squash-from-best_commit + leaderboard MR/PR.

    writes back to the shared LLM wiki

What makes it distinctive

No checkpoints — runs to termination

The experimentation step drops the batch_checkpoint post_func. It keeps going until check_termination fires (max_iterations, max_duration, regression-halt, or target metric reached) or you interrupt manually.

Termination conditions

Set bounds up front: a max iteration count, a wall-clock duration (e.g. “8h”), a consecutive-regression halt, or a target metric value. The first to fire ends the run.

Same engine, same guarantees

Engine-owned measurement, frozen paths, and the squash+leaderboard completion are shared verbatim with optimize. Only the human-in-the-loop pause is removed.

branch optimize/ — o-<name>