Conversation
… pipeline Two hardening passes on the autonomous review-to-merge loop, both targeting recurring friction in long claim-to-ship sessions: fix regression guard (lib/fix-regression-guard.md): after a review round applies fixes and before it re-reviews/pushes, scan the *fix diff itself* for the two classes that cause review spirals — unscoped state-clearing/restoring writes (a "restore" keyed to a whole collection instead of the one record the finding named) and side effects folded onto a hot path (an updatedAt/event/ cache write on every tick) — and add a focused regression test where the fix touches scoping or timestamp/side-effect logic. Wired into the local-agent, ollama, and multi-reviewer (parallel) loop bodies; it earns its keep most in parallel mode, which runs no automatic re-review to catch a fix's own bug. CI flake handling (lib/ci-flake-handling.md): when a required check fails during the in-session checks watch in /do:pr and /do:release, do one conservative re-run on the same commit — pass-on-rerun is a flake (merge proceeds, logged with the run URL), fail-again is real (PR left open / release aborted). One re-run, required checks only, same SHA only; mechanism-only with no project-specific signature matching so the commands stay project-agnostic. Both new libs added to the install.sh/uninstall.sh LIBS allowlists (parity test enforces this). A parallel-claim --swarm follow-up is tracked in #93.
…d-ci-flake Add post-fix regression guard and CI-flake re-run to the review/merge pipeline
/do:next shipped one item per run; --swarm (issues mode) now claims and ships up to N independent open issues at once and serializes only the merge — the throughput multiplier the single-issue flow couldn't be. Design is an orchestration layer over the existing single-issue phases, not a new claim path: a partition step up front (Swarm Phase A) selects the first N independent eligible issues off the same priority/oldest queue — skipping any that depend on, or obviously file-overlap, another in the batch — then one subagent per issue (Phase B) runs the unchanged Phases 2-6 in its own worktree with /do:pr --no-merge, and a serialized merge queue (Phase C) merges the PRs one at a time, re-syncing each onto the advancing default branch (deletions-win on changelog/PLAN conflicts) and routing flaky-CI failures through the existing ci-flake-handling guard. Reconcile/cleanup (Phase D) sweeps worktrees, releases a died agent's claim back to the queue, and re-evaluates parent epics. Each agent claims its handed issue through the normal Phase 2 assignee-marker + race read-back, so the same lease that guards two tabs guards two swarm agents; the partition just makes a collision unlikely. --swarm bare runs 3 agents, --swarm=N sets the count (clamped 1..6, ≈N× tokens). Issues-mode only, incompatible with an explicit target, and falls back to sequential when the harness can't spawn parallel subagents. Closes #93.
…ntial fallback, explicit return shapes - State each agent runs single-issue Phases 2–6 (no merge, no Phase 7) rather than overclaiming "is a /do:next run" — keeps the spec from implying the agent merges/cleans up. - Make the fan-out return shape explicit (PR-opened vs yielded/skipped) and have Phase C dispatch on `pr_number` presence, closing a gap where the merge queue's status handling didn't match the shapes Phase B produces. - Add the missing sequential-fallback path to Phase B for harnesses that can't spawn parallel subagents (the precondition promised it; Phase B didn't do it). - Reference single-issue Phase 6's merge gate and Phase 7's closure step from the merge queue instead of re-enumerating them, so they can't drift; drop the misleading "died agent" mention from Phase C (handled in Phase D). - Trim the duplicated throughput-multiplier tail from the README paragraph.
…lign sequential-fallback wording with Phase B
…flight; run Phase 1 explicit-number validation+setup before each agent's claim
…lure to yielded result, closed/missing to skipped
…d ci-flake-handling copy in release merge gate
…e merging Swarm agents open PRs with /do:pr --no-merge, so /do:pr's CI merge gate never runs; the re-sync in Phase C step 2 also pushes a fresh SHA. Step 3 merged immediately without watching required checks, contradicting its own prose about flake handling and bypassing the gate on protected repos. Add the gh pr checks --required --watch step before gh pr merge, matching the single-issue Phase 6 and /do:pr merge gates.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Release v3.18.0 — see
.changelogs/v3.18.0.mdfor the full notes.Highlights
/do:next --swarm. Ship several independent open issues in one run — each in its own worktree subagent — with only the merges serialized so every PR lands on the advancing default branch. Defaults to 3 agents (--swarm=N, clamped 1–6); a PR that isn't review-clean or can't cleanly re-sync is left open instead of force-merged.Full Diff: v3.17.2...v3.18.0
Test plan
node --test test/*.test.js— 156/156 passrelease...maindiff (13 files): clean, no findings