tractor/ai/prompt-io/opencode/20260818T031532Z_4151b956_p...

2.6 KiB
Raw Blame History

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. Ruffs 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.