Skip to content

feat(fleet): support resuming workflows from the Fleet Manager TUI History screen - #463

Merged
Jason Robert (jrob5756) merged 2 commits into
mainfrom
feature/460-fleet-tui-resume-history
Aug 18, 2026
Merged

feat(fleet): support resuming workflows from the Fleet Manager TUI History screen#463
Jason Robert (jrob5756) merged 2 commits into
mainfrom
feature/460-fleet-tui-resume-history

Conversation

@jrob5756

Copy link
Copy Markdown
Collaborator

Summary

Adds resume support for completed/failed runs surfaced in the History screen, plus the underlying fleet.resume module that resolves a checkpoint and launches a resumed run.

Closes#460

Jason Robertand others added 2 commits August 18, 2026 13:06
…story screen
Adds resume support for completed/failed runs surfaced in the History
screen, plus the underlying fleet.resume module that resolves a
checkpoint and launches a resumed run.
…ning
Applies PR #463 review findings for issue #460's Fleet Manager TUI
History Resume feature:
- correlate_checkpoints now excludes any entry whose event log is
referenced by a currently-live run record (reusing
retention._live_event_log_paths(), which itself relies on
is_process_alive), failing closed when liveness can't be determined.
Previously a still-running workflow with a periodic or CLI-resumed
failure checkpoint could be resumed from the TUI, making the new
child adopt the live run's run_id, overwrite its run record, and
interleave two processes' events into one JSONL log.
- HistoryScreen.action_resume and NewRunScreen.action_launch now honor
BackgroundLaunch's documented still_running -> workflow_started ->
run_record_written check order via a new shared
fleet.tui.actions.report_background_launch() helper, instead of
reporting a dashboard URL unconditionally for a process that may
have already exited (issue #410).
- The run_id fallback in correlate_checkpoints is now taken only when
event_log_path was never recorded or the recorded file no longer
exists, not whenever the primary lookup simply missed, narrowing the
window for a checkpoint to join an unrelated row that happens to
share an inherited run_id. Both resume notifications now name the
checkpoint's workflow so an operator can catch a surprising match.
- ResumableCheckpoint.trigger is now typed as the existing
CheckpointTrigger literal instead of a bare str, the unreachable
claimed_checkpoints guard is removed, and checkpoint ordering is
re-sorted defensively rather than relying on list_checkpoints'
undeclared ordering.
- Added tests covering live-run exclusion, the still_running/
workflow_started notification paths on both TUI screens, the
narrowed run_id fallback, and that pressing r resumes the
highlighted row (not always row 0) including real cursor-movement
gating.
- Documented the liveness rule and the periodic-checkpoints-are-opt-in
caveat in resume.py, docs/fleet.md, and CHANGELOG.md.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@jrob5756
Jason Robert (jrob5756) marked this pull request as ready for review August 18, 2026 17:47
@jrob5756
Jason Robert (jrob5756) merged commit 9860a71 into mainAug 18, 2026
13 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fleet TUI: resume an unfinished run from the History screen

1 participant

@jrob5756