# Runtime evidence for PR [#28078](https://git.cafe/pingdotgg/t3code/pull/28078)

No captured outcome contradicts the expected Linux service behavior.

Captured: 12 named matrix rows / 12, including all 14 variants / 14, each on both revisions twice (56 fixture executions).

fs-06; Linux 6.1.102 x64; Node v26.12.1; Effect / NodeServices 4.0.5; exact clean revisions [a24ec905c8](https://git.cafe/pingdotgg/t3code/commit/a24ec905c8157f1ef6114639ff614617d98f10e9) → [390fce27e6](https://git.cafe/pingdotgg/t3code/commit/390fce27e6fde8663da301e6b708b06eb44824df).

Every pending observation is bounded at 10 seconds after the real root exit. Completion after explicit child cleanup is marked in raw events and does not count as bounded completion. Root exit is observed through the real spawner handle; timing is observational and includes small scheduling overhead.

Driver: [driver.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a3d848166de83c2b/driver.mjs); SHA256 `d4b1b3ea07413d54d2d5524845c6f975c2ace079db0932aafc212d9267192e80`.
Exact invocation: `python3 /tmp/lead-28078-r1/evidence-capture/run-captures.py`; it runs `cd <checkout>/packages/provider-acp` then `python3 <evidence>/subreaper.py <new-timestamped-run-dir> node <evidence>/driver.mjs`. [run-captures.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c4a3dcc3a56817b9/run-captures.py); [runs-manifest.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b7f8ac19654d725f/runs-manifest.json).

The driver imports each checkout's actual `clientTerminals.ts` with real NodeServices. `shellCommands:true` except R03b. This is not a live Devin/ACP wire capture. R01 uses the disclosed BASH_ENV hook; R07 gates real stream chunks until root exit+100 ms. S-REDIR is an instrumented reporter-shaped command. No tracked files were edited.

| Row | Before [a24ec905c8](https://git.cafe/pingdotgg/t3code/commit/a24ec905c8157f1ef6114639ff614617d98f10e9) (runs 1 / 2) | After [390fce27e6](https://git.cafe/pingdotgg/t3code/commit/390fce27e6fde8663da301e6b708b06eb44824df) (runs 1 / 2) | Match expected? |
|---|---|---|---|
| R01 — Literal reporter command / escaped Bash and sleep | 1: wait pending at exit+10 s; status absent; done buffered; Bash/sleep alive<br>2: wait pending at exit+10 s; status absent; done buffered; Bash/sleep alive | 1: wait answered at exit+250.9 ms; status {"exitCode":0,"signal":null}; done buffered; Bash/sleep alive<br>2: wait answered at exit+251.5 ms; status {"exitCode":0,"signal":null}; done buffered; Bash/sleep alive | Yes, both runs |
| R02 — Plain child / late stdout and stderr / 32-byte tail | 1: wait pending at exit+10 s; status absent; late writes OK; tail 32 bytes, truncated, matches append order<br>2: wait pending at exit+10 s; status absent; late writes OK; tail 32 bytes, truncated, matches append order | 1: wait answered at exit+250.2 ms; status {"exitCode":0,"signal":null}; late writes OK; tail 32 bytes, truncated, matches append order<br>2: wait answered at exit+250.1 ms; status {"exitCode":0,"signal":null}; late writes OK; tail 32 bytes, truncated, matches append order | Yes, both runs |
| R03a — Executable + args / shellCommands true | 1: wait pending at exit+10 s; status absent; background child alive<br>2: wait pending at exit+10 s; status absent; background child alive | 1: wait answered at exit+251.1 ms; status {"exitCode":0,"signal":null}; background child alive<br>2: wait answered at exit+251.3 ms; status {"exitCode":0,"signal":null}; background child alive | Yes, both runs |
| R03b — Executable + args / shellCommands false | 1: wait pending at exit+10 s; status absent; background child alive<br>2: wait pending at exit+10 s; status absent; background child alive | 1: wait answered at exit+250.1 ms; status {"exitCode":0,"signal":null}; background child alive<br>2: wait answered at exit+251.6 ms; status {"exitCode":0,"signal":null}; background child alive | Yes, both runs |
| R04 — Only stdout held / late stdout | 1: wait pending at exit+10 s; status absent; late marker buffered; write OK<br>2: wait pending at exit+10 s; status absent; late marker buffered; write OK | 1: wait answered at exit+251.3 ms; status {"exitCode":0,"signal":null}; late marker buffered; write OK<br>2: wait answered at exit+250.0 ms; status {"exitCode":0,"signal":null}; late marker buffered; write OK | Yes, both runs |
| R05 — Only stderr held / late stderr | 1: wait pending at exit+10 s; status absent; late marker buffered; write OK<br>2: wait pending at exit+10 s; status absent; late marker buffered; write OK | 1: wait answered at exit+251.0 ms; status {"exitCode":0,"signal":null}; late marker buffered; write OK<br>2: wait answered at exit+250.4 ms; status {"exitCode":0,"signal":null}; late marker buffered; write OK | Yes, both runs |
| R06 — Redirected child / finite-pipe control | 1: wait answered at exit+0.1 ms; status {"exitCode":0,"signal":null}; done buffered; redirected child alive<br>2: wait answered at exit+0.1 ms; status {"exitCode":0,"signal":null}; done buffered; redirected child alive | 1: wait answered at exit+0.1 ms; status {"exitCode":0,"signal":null}; done buffered; redirected child alive<br>2: wait answered at exit+0.1 ms; status {"exitCode":0,"signal":null}; done buffered; redirected child alive | Yes, both runs |
| R07 — 100 ms stream-delivery gate / controlled harness | 1: wait answered at exit+100.9 ms; status {"exitCode":0,"signal":null}; gate 100.0 ms; both DRAIN markers; no pre-gate answer<br>2: wait answered at exit+102.1 ms; status {"exitCode":0,"signal":null}; gate 101.1 ms; both DRAIN markers; no pre-gate answer | 1: wait answered at exit+101.3 ms; status {"exitCode":0,"signal":null}; gate 100.1 ms; both DRAIN markers; no pre-gate answer<br>2: wait answered at exit+102.7 ms; status {"exitCode":0,"signal":null}; gate 101.2 ms; both DRAIN markers; no pre-gate answer | Yes, both runs |
| R08 — Release before publication / retained embedded content | 1: release pending at exit+10 s; retained status absent; released handle rejected; both content forms retained<br>2: release pending at exit+10 s; retained status absent; released handle rejected; both content forms retained | 1: release answered at exit+249.9 ms; retained status exit 0; released handle rejected; both content forms retained<br>2: release answered at exit+249.9 ms; retained status exit 0; released handle rejected; both content forms retained | Yes, both runs |
| R09 — disposeAll / mixed exited, active and released records | 1: disposeAll pending at exit+10 s; active root stopped; both escaped children alive; second disposal completed<br>2: disposeAll pending at exit+10 s; active root stopped; both escaped children alive; second disposal completed | 1: disposeAll answered at exit+251.4 ms; active root stopped; both escaped children alive; second disposal completed<br>2: disposeAll answered at exit+250.9 ms; active root stopped; both escaped children alive; second disposal completed | Yes, both runs |
| R10 — 16-live limit / slot recovered without release | 1: wait pending at exit+10 s; status absent; replacement rejected (limit16); target unreleased<br>2: wait pending at exit+10 s; status absent; replacement rejected (limit16); target unreleased | 1: wait answered at exit+251.1 ms; status {"exitCode":0,"signal":null}; replacement accepted; target unreleased<br>2: wait answered at exit+250.2 ms; status {"exitCode":0,"signal":null}; replacement accepted; target unreleased | Yes, both runs |
| R11 — Explicit kill / SIGTERM / escaped child survives | 1: wait pending at exit+10 s; status absent; background child alive<br>2: wait pending at exit+10 s; status absent; background child alive | 1: wait answered at exit+250.2 ms; status {"exitCode":null,"signal":"SIGTERM"}; background child alive<br>2: wait answered at exit+250.3 ms; status {"exitCode":null,"signal":"SIGTERM"}; background child alive | Yes, both runs |
| R12a — Finite nonzero exit / stdout and stderr | 1: wait answered at exit+0.1 ms; status {"exitCode":3,"signal":null}; OUT and ERR, untruncated<br>2: wait answered at exit+0.1 ms; status {"exitCode":3,"signal":null}; OUT and ERR, untruncated | 1: wait answered at exit+0.0 ms; status {"exitCode":3,"signal":null}; OUT and ERR, untruncated<br>2: wait answered at exit+0.1 ms; status {"exitCode":3,"signal":null}; OUT and ERR, untruncated | Yes, both runs |
| R12b — Empty success control | 1: wait answered at exit+0.1 ms; status {"exitCode":0,"signal":null}; empty, untruncated<br>2: wait answered at exit+0.1 ms; status {"exitCode":0,"signal":null}; empty, untruncated | 1: wait answered at exit+0.1 ms; status {"exitCode":0,"signal":null}; empty, untruncated<br>2: wait answered at exit+0.1 ms; status {"exitCode":0,"signal":null}; empty, untruncated | Yes, both runs |

## What else changed

- Exit status and wait completion become available while inherited pipes are still held. R01–R05/R11 answer at about exit+250 ms instead of remaining pending at exit+10 s.
- Release and mixed disposal complete before escaped-child cleanup; retained snapshots carry exit status. Released public handles still reject and both embedded-content forms keep their text.
- An unreleased exited terminal recovers one of the 16 live slots. The initial full-capacity attempt still rejects.
- Late stdout/stderr remain readable without EPIPE; the 32-byte tail still follows actual admitted order. Redirected, 100 ms drain, finite-nonzero and empty controls preserve outcomes without a fixed 250 ms delay.
- PIDs, UTC timestamps, and execution durations vary between captures; cross-stream order is unspecified. No other service outcome difference was observed in this fixture set. No UI/pixel comparison applies.

## Raw transcripts and reproducibility

- before run 1: [before-run1-20261103T015404343267Z.jsonl](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/805d23e4885bf3b5/before-run1-20261103T015404343267Z.jsonl)
- after run 1: [after-run1-20261103T015550364574Z.jsonl](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/26d36b70c3d6cd91/after-run1-20261103T015550364574Z.jsonl)
- before run 2: [before-run2-20261103T015558477284Z.jsonl](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a1af46cab9efaa2b/before-run2-20261103T015558477284Z.jsonl)
- after run 2: [after-run2-20261103T015743361722Z.jsonl](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f381b7a2ed5a56df/after-run2-20261103T015743361722Z.jsonl)
- [driver.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a3d848166de83c2b/driver.mjs)
- [background.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/808c744d0ca4d8fe/background.mjs)
- [parent.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/63e1e1f0a81993de/parent.mjs)
- [reporter-hook.bash](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/23b0c2d8bc9e1d60/reporter-hook.bash)
- [subreaper.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8c4a0871f19a211a/subreaper.py)
- [run-captures.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c4a3dcc3a56817b9/run-captures.py)
- [build-report.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/759d92fa3e6cd369/build-report.py)
- [build-evidence-section.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a66e6bef6f80bd20/build-evidence-section.py)
- [upload-artifacts.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c778633166b68126/upload-artifacts.py)
- [README.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8e89c02078d985f0/README.md)
- [fixture-matrix.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2b6c24ec91355810/fixture-matrix.md)
- [runs-manifest.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b7f8ac19654d725f/runs-manifest.json)
- [capture-launcher.jsonl](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d4bddbdf744200dc/capture-launcher.jsonl)
- [final-verification.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a7a8f434d22d4855/final-verification.json)
- [validation.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ca97bf1eb23b0353/validation.json)
- [runtime-fixtures.tar.gz](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7808a9d901ea7a6f/runtime-fixtures.tar.gz)
- [source-and-helpers.tar.gz](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9417e27349211e4e/source-and-helpers.tar.gz)
- [exploratory-smokes.tar.gz](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/77788d8608b8a06f/exploratory-smokes.tar.gz)

## Per-row comparison sheets

- R01: [R01-comparison.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2abbd465a3f9f4c0/R01-comparison.md)
- R02: [R02-comparison.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b3d4561d2d4e5901/R02-comparison.md)
- R03a: [R03a-comparison.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5ab4d660c3ccc4c1/R03a-comparison.md)
- R03b: [R03b-comparison.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/405e1fac3be09edc/R03b-comparison.md)
- R04: [R04-comparison.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a53d812fffed3e63/R04-comparison.md)
- R05: [R05-comparison.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/44457052a3fd377a/R05-comparison.md)
- R06: [R06-comparison.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/dd1a97d8ee7c77ec/R06-comparison.md)
- R07: [R07-comparison.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/00ebc473c1cd919b/R07-comparison.md)
- R08: [R08-comparison.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f376f1c67182e9d8/R08-comparison.md)
- R09: [R09-comparison.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2fa7f63cd60c5e82/R09-comparison.md)
- R10: [R10-comparison.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/44aed6664a26f883/R10-comparison.md)
- R11: [R11-comparison.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f3648c3ff14cf53b/R11-comparison.md)
- R12a: [R12a-comparison.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d5b2384a538ba041/R12a-comparison.md)
- R12b: [R12b-comparison.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8fbf0ede38db9041/R12b-comparison.md)

## Unverified and inapplicable

- Live Devin turn: unverified; native Devin is unavailable on every VM (permanent blocker). No full ACP handler/wire or recovery of an already wedged session is claimed.
- `cannot-verify windows`: native Windows unavailable on fs-06. POSIX signal/process-group behavior is Linux-only.
- `cannot-verify macos`: native macOS unavailable on this VM; no other machine was accessed.
- All required Linux fixture rows captured; no matrix row silently omitted. Web/desktop/mobile UI, viewport, theme, stills, video and pixel diffs are N/A for this server-only boundary.

## Cleanup

Every main capture ends with `final_pid_verification` reporting `remaining: []`. Escaped children were signalled only by recorded PID and actually waitpid-reaped by the uploaded subreaper. The reporter sleep was reaped by the Bash hook and its parent by the subreaper. No server, browser, mobile device or lease was started. Lead-owned checkouts and scratch files remain in place.

FRICTION: tool | Initial smoke driver held its reaper reply pipe open after completing fixtures; the wrapper needed an explicit completion message. Fixed before all four final captures. | A finish handshake in the starter harness would have avoided the cleanup-only rerun.
