Skip to content

fix: list a run hmz exec holds as going in hmz web and /epics - #370

Merged
futrime merged 1 commit into
mainfrom
fix/exec-runs-going
Oct 12, 2026
Merged

futrime merged 1 commit into
mainfrom
fix/exec-runs-going

Conversation

@futrime

@futrime futrime commented Oct 12, 2026

Copy link
Copy Markdown
Member

What

Found in release acceptance of main@d7f732e9: while hmz exec runs an epic, hmz web listed it as ○ unfinished with 0 sessions (/api/runs said "how": "unfinished"), and the terminal interface's /epics said was left unfinished — the words for a run killed where it stood. specs/web.md requires each run be shown as "how each ended or that it is going".

The runtime already knew: a run holds an exclusive flock on its epic's .held while it goes, and _going() read it — but only to refuse --resume.

Changes

  • hmz.runtime.epic.going() (was _going) and Epics.going(): whether an epic's run is held now, by this process or another.
  • hmz web: a run going reads running whether a host holds it (held, followed live and stoppable) or another process does; the menus offer no Resume or Export of it.
  • TUI /epics: such a run reads is still going.
  • Specs: going added to the API listings in specs/runtime/SPEC.md and specs/runtime/doing.md — the fix needs it public, so the listing is changed to match (one line each).
  • Docs: docs/reference/tui.md (which documented the old behaviour), docs/reference/web.md, docs/user/web.md.

Tests

  • Unit: going() and Epics.going() true while held and false after; row() says running for a run going but not held.
  • Integration: /api/runs and /api/runs/<name> say running for an epic another holder keeps open, done once it ends; /epics says is still going. Both integration tests fail without the fix.

🤖 Generated with Claude Code

Copilot AI balanced review requested due to automatic review settings October 12, 2026 14:33

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

A run another process holds -- `hmz exec`, which no host speaks for -- was
listed as `unfinished` in `hmz web` and as `was left unfinished` on `/epics`
for as long as it ran, as though it had been killed. The runtime already
knew: a run holds its epic's `.held` lock while it goes. `going()` now says so
in public, `Epics.going` beside it, and both interfaces read it: the web says
such a run is `running` and offers no Resume or Export of it, and `/epics`
says it `is still going`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@futrime
futrime force-pushed the fix/exec-runs-going branch from 14204a9 to 7d77c92 Compare October 12, 2026 15:03
@futrime
futrime enabled auto-merge October 12, 2026 15:07
@futrime
futrime added this pull request to the merge queue Oct 12, 2026
Merged via the queue into main with commit 085fd0a Oct 12, 2026
14 checks passed
@futrime
futrime deleted the fix/exec-runs-going branch October 12, 2026 15:24
Sign up for free to 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.

2 participants