Runs the dispatched command under a wall-clock ceiling, killing its whole
process group on timeout — mirrors seam.ts's runHarness: a harness's
own children (tool shells, MCP servers) can outlive a kill of only the
direct child and hold stdio open indefinitely, so the group is what gets
signalled. This workstation process has no drain/abort feature of its
own (that lives in the orchestrator, not here), so unlike seam.ts there
is no live-pid bookkeeping to support it.
Runs the dispatched command under a wall-clock ceiling, killing its whole process group on timeout — mirrors seam.ts's
runHarness: a harness's own children (tool shells, MCP servers) can outlive a kill of only the direct child and hold stdio open indefinitely, so the group is what gets signalled. This workstation process has no drain/abort feature of its own (that lives in the orchestrator, not here), so unlike seam.ts there is no live-pid bookkeeping to support it.