# Supplemental close-mid-query evidence

Original background-job close failures remain preserved in the original matrix/archive. This supplement uses a separate fixture with `set +m` and an EXIT/HUP/TERM trap that terminates its captured child. It retains the same real-app RPC, child identity verification, busy labels, gated ps query, metadata removal, and one-minute observation. No source changes.

| Round | Source SHA | Close reply ms | Late closed activity | Query peak live | Valid cleanup |
|---|---|---|---|---|---|
| supplement-after-close | cca46259f59d82f31c7277cc2129b4a7185df890 | 9.046191 | 0 | 1 | True |
| supplement-before-close | 5a969c17e76301e45e53e1fd9aad2f5b4599d865 | 12.678534 | 0 | 1 | True |

Both terminals initially reported their exact ev-case-N busy labels. Closed terminal metadata was removed before releasing the in-flight query gate. The surviving terminal remained observable. Every captured query and terminal child was gone at cleanup; source guards remained stable. These terminal.close results do not independently verify closeIdle timeout budgets or Windows.

Reproduce on a parent-coordinated clean checkout:

```sh
python3 /tmp/ev-16874/supplement-run.py --sha cca46259f59d82f31c7277cc2129b4a7185df890 --label supplement-after-close --mode close --terminals 2 --seconds 60
python3 /tmp/ev-16874/supplement-run.py --sha 5a969c17e76301e45e53e1fd9aad2f5b4599d865 --label supplement-before-close --mode close --terminals 2 --seconds 60
```

The original AFTER full round uses a77f9be73aec486def0b419b80431f9a853a423c; supplemental AFTER uses merged cca46259f59d82f31c7277cc2129b4a7185df890. The parent reports no Manager/processRunner implementation differences from the merge. Evidence records both actual SHAs explicitly.

Cleanup verification checked 349 recorded server/query/fixture identities across fourteen captures. Original orphaned children were explicitly cleaned by recorded PID+startTicks; invalid original results remain untouched. All other captures cleaned automatically. Keep /tmp/ev-16874 scripts until independent audit. Cleanup targets are exact case directories in measured-matrix.json and supplement-close.json; never upload their private/, home/, or server.log.

Friction category|event|prevention
fixture lifecycle|background shell job survived close on both baseline and after|separate supplemental fixture disables job control and traps child cleanup; preserve original failures
measurement|metadata map contains empty label arrays|count only observed nonempty labels
coordination|independent auditor needs a stopped server and pinned source|explicit completion handshake before source switch
