Stranded Run Recovery
Resuming and Finishing Recorded Runs
Recovery for unfinished merges and completion from the run record.
2 milestones 7 tasks 28 agents
3 plan 7 execute 11 review
172k peak context
140k median execute
2h 25m total 14m 55s per task
4m 30s plan 1h 5m execute 30m 7s review
101 edits 902 commands
codex harness
A stopped run could be stranded by an unresolved merge, while a completed run could remain open after its branch had already landed. This run separated recovery at resume from completion from the recorded task list. The current tree retains both paths and their documentation.
How this walkthrough is structured
Feature
What did the run build and ship?
An uncommitted merge is recoverable at resume, and recorded completed work can close a run through `gantry merge`.
Build
How did Gantry structure the work?
The cut separated worktree recovery from recorded completion, giving each boundary its own acceptance criteria.
Milestone 1
Resume Merge Recovery
4 tasks 13 agents 1h 14m wall time 172k peak context
The resume documentation classifies an in-progress merge as uncommitted work. It gives the operator the choice to commit the resolution or resume and discard the half-merge. The current finish path preserves interrupted project state on a recovery ref before it clears merge residue and resets the worktree.
The milestone defined the resume boundary around an unresolved merge instead of treating it as a refusal. Its brief distinguished a committed resolution from in-progress merge state and required a recovery ref and journal entry before reset. The ledger records the milestone as done and green. The run facts contain no milestone attribution, so they do not locate a local recovery or re-plan.
Milestone 2
Recorded Run Finish
3 tasks 11 agents 53m 27s wall time 153k peak context
The partial-merge command checks recorded root-task completion before deciding whether the run finishes. It writes the run completion record after a successful merge or when there is nothing to merge. The CLI reference keeps an incomplete recorded task list resumable and says that completed recorded work finishes the run.
Completion was made a property of the run record rather than a live resume session. The brief kept incomplete runs resumable while defining already-merged and empty-work cases separately. Its ledger row is done and green. The run facts do not attribute stages to this milestone, so they record no local recovery or re-plan.