Skip to content

v0.0.54 — waves replace one-shot planning

Choose a tag to compare

@sebyx07 sebyx07 released this 25 Jul 20:46
· 19 commits to main since this release

Builds on v0.0.53, which stopped maxPrs from truncating work. This release stops the plan from being the run.

Wave re-planning

A plan was the whole run: plan once, drive the groups to exhaustion, exit. Nothing ever asked whether the goal was met, so a plan that under-covered it shipped a fraction and exited 0 — with no path by which the remainder would ever be built.

A plan is now one wave. When every group in a wave lands, a goal assessor reads the repo as it now is and either ends the run or names what remains, which the Planner plans as the next wave — against real code instead of a guess.

Bounded by cost, not counts, consistent with how step limits and subagent fan-out already behave:

  • only a clean sweep earns another wave — blocked / cancelled / awaiting-pr / session-cap return exactly as before
  • the assessor fails safe to complete: a broken or stalled check ends the run rather than planning work off no evidence
  • remaining work identical to a goal an earlier wave already planned is a livelock, not progress, and stops the run
  • maxCostUsd / maxTotalTokens still trip inside the work loop, and now span waves correctly

Planning-phase fixes

  • Small repos skip the scout survey. Measured: an 11-file docs-only repo drew 2 rounds / 6 scouts over ~11 minutes, and the Planner then read the same files itself. Under 25 tracked files the wave is skipped and the Planner gets the repo map alone. A git failure (zero tracked files) still surveys — that means size unknown, not small.
  • An over-cap plan is retried, not fatal. The cap is now a schema refinement, so the Planner is asked to regroup through the existing corrective loop instead of the run dying on the first over-cap submission.
  • Compressed planner prose, paid on every subagent spawn.

Fixes found while reviewing the wave loop

  • maxSessions had become a per-wave bound — each wave built a fresh work loop seeded from the run-start snapshot, restarting the session counter. It now accumulates across waves.
  • The rolling PR context was likewise reset per wave, so a later wave's PR bodies were composed as though earlier PRs never happened.

Full diffs: #321 · #322 · #323