tractor/tractor
Gud Boi 85f1bc1cb4 Keep `Actor.cancel_soon()` in the root nursery
A late self-cancel can arrive after the RPC service nursery has
closed. Starting `Actor.cancel()` there raises before teardown can
cancel the shielded parent-channel loop or run lifetime callbacks.

Schedule one root-owned task to await `Actor.cancel(None)` before
cancelling the root scope. Deduplicate pending requests, and cancel
the root scope directly once runtime cancellation has completed.

Add a fresh-child regression for open and closed service nurseries
under native Trio and asyncio infection. Check repeated requests
before completion, after completion and from a lifetime callback;
prove all three creator-owned shm segments disappear before parent
nursery teardown can mask a failure. Include the session raw record
referenced by the structured provenance already in the parent.

Prompt-IO:
 ai/prompt-io/opencode/20260916_ib_disconnect_cleanup.md

(this patch was generated in some part by `opencode`
using `gpt-6-astra` (`openai`))
2026-10-30 13:13:37 -04:00
..
_testing Make UDS reaping platform-aware 2026-08-14 10:36:27 -04:00
devx Mv task UID formatting into `devx.pformat` 2026-10-21 11:29:32 -04:00
discovery Normalize `Registrar.delete_addr()` declarations 2026-10-04 20:37:47 -04:00
experimental Reap the `@pub` example daemon on stream exit 2026-08-25 20:03:18 -04:00
ipc Wrap default `Server.listen_on()` addrs 2026-09-01 23:07:53 -04:00
msg Emit canonical tagged addresses 2026-09-01 15:47:28 -04:00
runtime Keep `Actor.cancel_soon()` in the root nursery 2026-10-30 13:13:37 -04:00
spawn Remove `run_in_actor()` + the ria reap cluster 2026-08-25 19:16:32 -04:00
to_actor Remove `run_in_actor()` + the ria reap cluster 2026-08-25 19:16:32 -04:00
trionics Reject concurrent `BroadcastReceiver.receive()` calls 2026-08-27 22:11:55 -04:00
__init__.py Add `tractor.to_actor` one-shot task API subpkg 2026-08-21 15:03:34 -04:00
_child.py Add per-actor `setproctitle` via `devx._proctitle` 2026-06-17 17:39:44 -04:00
_clustering.py Use `.aid.uid` to avoid deprecation warns 2026-03-13 21:10:52 -04:00
_code_load.py Mv `load_module_from_path()` to a new `._code_load` submod 2026-02-11 21:03:29 -05:00
_context.py Notify unfinished `Context` owners on IPC EOF 2026-10-30 13:13:37 -04:00
_exceptions.py Remove `run_in_actor()` + the ria reap cluster 2026-08-25 19:16:32 -04:00
_root.py Peel tunnels before `Endpoint` binding 2026-09-01 15:21:18 -04:00
_streaming.py Clean broadcast cancellation diagnostics 2026-08-27 21:18:00 -04:00
log.py Mv task UID formatting into `devx.pformat` 2026-10-21 11:29:32 -04:00
to_asyncio.py Avoid `raise None` after successful `asyncio` exit 2026-10-30 13:10:53 -04:00