fix(process): list refreshes no longer leave exited children running

Carve the direct-child list reconciliation from Indigo Karasu's earliest
PR #60506 (2a96ae2cbf806ccdc3e9b584911774f32622f421), corroborated by
fangliquanflq's narrow #81385 (50ffd243d92627e4a03a3ee8427ad0f5e090c3ab).
Run the existing helper after task/session filtering and reuse the
idempotent owner-stamped completion path. Do not import cross-session
disclosure, bare-PID healing, forget RPCs, or reader rewrites.

A real-child regression fails before this change and passes after it:
the direct child exits while its descendant keeps writing to stdout;
listing reports exit without consuming the result or waiting for EOF.

Co-authored-by: fangliquanflq <fangliquan@qq.com>
Co-authored-by: Teknium <127238744+teknium1@users.noreply.github.com>
This commit is contained in:
Indigo Karasu
2026-09-07 21:07:46 -07:00
committed by Teknium
parent 8dc4b6f565
commit 41380ccef9
2 changed files with 122 additions and 0 deletions
+3
View File
@@ -1950,6 +1950,9 @@ class ProcessRegistry(ProcessCheckpointMixin):
]
result = []
for s in all_sessions:
# List-only refreshes must observe child exit even while descendants
# keep the capture pipe open; retain the existing completion owner.
self._reconcile_local_exit(s)
entry = {
"session_id": s.id,
"command": s.command[:200],