You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[bug] inspect reports live: Dead for detached-run workers that are running #47
For a detached run, meshloop inspect reports each running worker as "live": "Dead" while the worker process is alive and making progress.
Version / OS
meshloop 0.3.0, origin/main @ 2769f08. Windows 11 native.
Observed
Detached run holoself-sprint-31-34-v2: the meshloop resume --graph … process (spawned by run --detach) → node ml-harness.mjs claude <prompt> → claude -p …, all present in Win32_Process. At the same time, inspect --json showed node 1 state: Running, live: "Dead", pane_id: null. The worker exited normally 4.4 min later, and the node reached AwaitingReview.
Cause
CliHarness::session_live (crates/meshloop-adapters/src/harness.rs:182) returns Live only if the attempt is in this process's in-memory running registry. inspect runs in a different process from the detached resume that owns the child, so the registry is always empty there and every attempt reads Dead.
cancel is not affected: it kills by the persisted attempt.pid (main.rs ~1066). But live is shown to users and agents as if it were authoritative.
Expected
When the caller doesn't own the child, liveness comes from the persisted attempt PID: OS process existence plus a start-time check against PID reuse. It reports Ambiguous or unknown when that can't be determined, never Dead.
Acceptance criteria
Test: detached run with a long-running fixture worker → inspect from a separate process reports Live.
Test: worker exited → Dead. PID reused by an unrelated process → not Live.
A PID-plus-identity check already exists. crates/meshloop-adapters/src/process.rs has orphan_identity_matches(pid, executable), with Windows and POSIX versions, which cancel uses through kill_orphaned_tree for workers this process didn't start (#30). session_live could fall back to it when the attempt isn't in the in-memory registry:
In the registry → Live (unchanged).
Not in the registry, handle.pid set and the identity matches → Live.
PID gone, or the identity doesn't match → Dead.
Can't tell (lookup error, no PID saved) → Ambiguous.
status shows the same live field, so this fixes it there too.
Executors: Claude Sonnet Meshloop workers wrote the change, and the Claude Code (Opus 5.5) orchestrator made the fixes recorded in the commit messages.
Checks:cargo run --locked -p xtask -- check passes on 8808951 (Windows 11). Not run: Linux/macOS.
CI at merge: ubuntu check passed; the windows and second ubuntu jobs were still pending.
Activity
smota commentedon Oct 7, 2026
Extra finding, checked on
origin/main@09a823a:A PID-plus-identity check already exists.
crates/meshloop-adapters/src/process.rshasorphan_identity_matches(pid, executable), with Windows and POSIX versions, whichcanceluses throughkill_orphaned_treefor workers this process didn't start (#30).session_livecould fall back to it when the attempt isn't in the in-memory registry:Live(unchanged).handle.pidset and the identity matches →Live.Dead.Ambiguous.statusshows the samelivefield, so this fixes it there too.smota commentedon Oct 7, 2026
Workflow status: delivered. PR #63 merged by smota as
d058307(2026-10-07).work/status-liveness-verify), commit(s) 78579d8, 8808951.cargo run --locked -p xtask -- checkpasses on8808951(Windows 11). Not run: Linux/macOS.