75 lines
2.6 KiB
Markdown
75 lines
2.6 KiB
Markdown
|
|
---
|
||
|
|
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`.
|