mirror of
https://github.com/deepseek-ai/deepseek-harness.git
synced 2026-09-11 04:00:38 +00:00
settle() dropped the run from `live` eagerly, before the grace-window SIGKILL reaped a same-group survivor. A dispose() racing a just-resolved run() then snapshotted an empty `live` and returned while the descendant was still alive, so teardown's "no subprocess outlives the fiber" (and its JSDoc) was false for that window. The run now stays in `live` until the process-group poll confirms the group empty, at which point it is both dropped from `live` and its finished promise resolved. Adds a regression test asserting dispose() of a completed run with a same-group survivor returns only after the survivor stops executing.