---
model: openai/gpt-5.6-sol
service: opencode
timestamp: 2026-08-18T03:15:32Z
git_ref: 4151b956
diff_cmd: git diff HEAD~1..HEAD
---

Implemented only the P1 lifecycle finding from the approved PR #481
review, preserving the requested one-fix-at-a-time commit boundary.

> `git diff HEAD~1..HEAD -- tractor/runtime/_supervise.py`

Added per-child reap request/completion events to `ActorNursery`, a
shielded child-specific cancel-and-reap operation, late-registration
latching for nursery teardown, and cancellation escalation that waits
for debugger release before using non-ignorable process termination.
The nursery-wide cancellation path snapshots child records before
checkpointing so concurrent one-shot cleanup cannot invalidate its
iteration.

> `git diff HEAD~1..HEAD -- tractor/spawn/_trio.py`

Changed Trio child monitors to wait on their per-child reap requests.

> `git diff HEAD~1..HEAD -- tractor/spawn/_mp.py`

Changed multiprocessing child monitors to wait on their per-child reap
requests.

> `git diff HEAD~1..HEAD -- tractor/spawn/_spawn.py`

Ensured every backend publishes child-reap completion after its process
monitor exits.

> `git diff HEAD~1..HEAD -- tractor/to_actor/_api.py`

Changed owned one-shot cleanup to await child-specific process joining
and bookkeeping removal instead of treating the cancel RPC as reaping.

> `git diff HEAD~1..HEAD -- tests/test_to_actor.py`

Added regressions for immediate caller-managed nursery cleanup, failed
cancel acknowledgement escalation, and child registration after a
latched nursery-wide teardown request.

Verification:

`pytest -q tests/test_to_actor.py tests/test_cancellation.py tests/test_spawning.py tests/discovery/test_multi_program.py`

Result: `46 passed, 1 xfailed, 3 xpassed`.

`pytest -q tests/test_to_actor.py --tpt-proto uds`

Result: `13 passed`.

`pytest -q tests/test_to_actor.py --spawn-backend mp_spawn --tpt-proto tcp`

Result: `13 passed`.

One broad verification run was mistakenly launched in parallel with
the UDS and `mp_spawn` actor suites. It timed out
`test_remote_error_from_caller_nursery`; the node passed immediately
in isolation and the complete broad selection then passed serially.
The failure was classified as concurrent test-session interference,
not accepted as a passing boundary result.

Ruff, Python compilation, and `git diff --check` passed for the changed
boundary. Ruff's existing `_trio.py` F401 finding was reproduced at the
unmodified PR head and excluded from attribution to this patch.

No source files were staged, committed, pushed, or used for review
replies. The previously approved top-level review was published before
the fix at reviewed head `4151b956`.
