Fleet mode
A fleet runs a whole milestone in parallel. Each epic becomes a lane
(its own worktree + pane + branch). A short-lived command — hordr fleet check
— advances every lane one step: dispatch, await, rollup, merge. There is no
long-running daemon.
Plan the milestone
Section titled “Plan the milestone”Decompose into epics and tasks. Each epic is a parallel lane; tasks within an epic are serialized.
# the milestonebeans create "Ship onboarding" -t milestone# → hordr-MS
# epics (each becomes a lane)beans create "Auth" -t epic --parent hordr-MSbeans create "Profile" -t epic --parent hordr-MS --blocked-by hordr-AUTH-EPIC
# tasks inside an epic, chained into a pipelinebeans create "Implement X" -t task --parent hordr-AUTH-EPIC --assigned implementerbeans create "Test X" -t task --parent hordr-AUTH-EPIC --assigned tester --blocked-by hordr-IMPLbeans create "Review X" -t task --parent hordr-AUTH-EPIC --assigned reviewer --blocked-by hordr-TESTAlways set assigned: on tasks. Missing assigned: defaults to implementer
with a warning; an unresolvable role blocks the task.
Create and advance
Section titled “Create and advance”hordr fleet create hordr-MS # creates the milestone worktree + laneshordr fleet check # one broker pass over every lane (run repeatedly)hordr fleet status # see where each lane isfleet check is idempotent and safe to run on a timer or by hand. Each pass:
- Scans lanes, creates worktrees lazily for newly-unblocked epics.
- Dispatches the next ready task in each free lane.
- Awaits in-flight agents; on
/doneit rolls up status. - Merges a completed epic into the milestone integration branch, then tears
down its lane (worktree remove +
git branch -d). - When every epic is done, finishes the fleet: merges the integration branch into primary and tears it down too.
Cross-epic dependencies
Section titled “Cross-epic dependencies”A --blocked-by epic gets no worktree until its blocker merges. When it
unblocks, its worktree branches from the milestone integration branch — which
now contains the blocker’s code. Lazy creation is dependency resolution.
The 3-tier merge
Section titled “The 3-tier merge”Epic → integration branch merges use three tiers (ADR-0014):
git merge --ff-only— clean fast-forward.git merge --no-ff— merge commit.- Conflict — left in-progress; hordr spawns a merger agent to resolve, then resumes.
Recoverable states
Section titled “Recoverable states”A lane that hits trouble doesn’t die — it parks:
merging— merger agent resolving a conflict.uncommitted— dirty worktree at teardown; recover the work, thenreset.blocked— waiting on a dependency or a crashed agent.
Use hordr fleet reset <epic> to re-queue a lane, and hordr fleet abort to
tear a fleet down (beans are always kept for retry).