Spec files that create /tmp/dsh-* directories via mkdtemp now track and delete them in afterEach/afterAll; module-scope fixture dirs (executor spill dirs) are removed in afterAll. The file list came from the observed-residue inventory on the self-hosted CI host: only specs whose dirs actually accumulated were leak sources (issue #3134), superseding the kept-but-unmerged CI sweep branch per the #3233 review decision. Product per-process spill roots (dsh-subprocess-local spawn, dsh-spill-local store) register a process-exit handler that removes the memoized dir, so processes that used the spawn/spill path clean up on normal exit. A SIGKILLed process cannot run in-process teardown; the machine-side timer remains the backstop for that path. Agent Note: .agents/notes/implemented/process/2026-08-28-test-temp-dir-self-cleanup.md
description, kind
| description | kind |
|---|---|
| The subprocess group map: the shared child-process service and its local host provider, for users and maintainers navigating the group. | package-group |
subprocess/ — subprocess capability family
English | 中文
Summary
Every child process and terminal session the harness runs — bash commands, language servers, persistent shells, and out-of-process subagent backends — starts, observes, and terminates through one shared service (ctx.subprocess), with a local provider running them on the host machine. It is not a standalone product feature: the consuming capability seams decide what each process means, and command semantics, deadlines, and model-facing presentation stay with them. The group provides executable lookup, bounded output capture with spill recovery, whole-tree termination, and a scrubbed starting environment for every child.
Table of Contents
Packages
| Package | Role | ctx key |
|---|---|---|
subprocess |
Defines the child-process service: executable lookup, managed process spawns, and real terminal sessions | ctx.subprocess |
subprocess-local |
Runs those process and terminal spawns on the host machine | registers on ctx.subprocess |
win32-process |
Owns the shared Win32 bindings for restricted process creation, stdio, Job assignment, waits, and handle cleanup | library — no ctx key |
The service keeps process lifetime across consumer reloads; consumers own what a process means (a bash command, a language server) and every default that shapes one.
Related documentation
- Subprocess subsystem — spawn specs, output readers, outcomes, and the managed
DSH_*environment. - Subprocess seam Agent Note — why the process half of the bash executors became its own seam.
Dev Note
Working context for maintainers — click to expand
None.