v2.4.0 — runs build on the existing app
v2.4.0 — runs build on the existing app
Run 2 must not rebuild what run 1 shipped. With this release the planner and every executing agent know the code that already exists, iterating is one robust action instead of three fragile steps, and two crews can no longer race the same repository.
What's new
- The planner sees your repository. Every plan on a non-empty repo includes the file tree,
architecture.md, and the previous plan's task list, with an explicit "plan changes ON TOP of this code" instruction — initial plans, iterations, and QA replans alike. - Agents see the codebase. Every agent prompt carries a compact "Existing codebase" section ("MODIFY the existing code; do NOT scaffold a new project") plus a fuller
.wisp/repo-map.mdin the worktree — no more re-discovering the repo on every task. - One-call iteration.
POST /api/projects/:id/iterationsplans, locks, starts, and links your change requests server-side, with real rollback: a failed plan leaves nothing behind; a failed run start keeps your change requests queued. The dashboard's "Run Iteration" now uses this single call. - Concurrent runs are blocked. A per-project guard (409
run_already_active) prevents two crews from building and merging the same repository at once. - Robustness: verified runs without
docs/project-state.mdno longer block future iterations; repository file names can't break the prompt's fenced tree block; Insights keeps a singleh1per page (a11y + flaky-test fix).
Update (existing install)
/plugin marketplace remove wisp-local
/plugin marketplace add Samuel0101010/wisp-orchestrator
/plugin install wisp@wisp-local
Then /wisp-dashboard. The version chip reads v2.4.0. (If you see Permission denied (publickey), run once: git config --global "url.https://github.com/.insteadOf" "git@github.com:".)
Verification
All 8 local gates green; server (636) + web (211) + orchestrator unit tests; full e2e 54/54 green; CI (verify + e2e) green on the PR and on main. Built subagent-driven with adversarial reviews that executed the gates and ran live experiments (git worktree exclude semantics, hostile-filename fence escape — found and fixed, concurrency race — found and guarded), plus a live mock-mode end-to-end check of the new iteration endpoint.
🤖 Generated with Claude Code