tractor/tractor
Gud Boi 643e1c861b Complete IPC frames before sender cancellation
Cancellation inside `send_all()` can publish a partial frame. Closing
the actor-wide stream preserved framing but destroyed every context
on the channel and replaced primary errors with `TransportClosed`.

Deats,
- shield complete frame publication, then deliver pending
  cancellation
- keep the shared channel reusable after context-local cancellation
- absorb transport closure while reporting an unshippable overrun
- cover mid-frame cancellation and failed overrun error shipment

This deliberately defers cancellation until the current frame write
resolves; channel teardown remains the fallback for broken peers.

Prompt-IO: ai/prompt-io/opencode/20260819T234824Z_557065d8_prompt_io.md

(this patch was generated in some part by `opencode` using `gpt-5.6-sol` (`openai`))
2026-08-21 15:03:34 -04:00
..
_testing Make UDS reaping platform-aware 2026-08-14 10:36:27 -04:00
devx Fix `pformat_caller_frame()`s bogus `indent` kwarg 2026-08-18 20:13:07 -04:00
discovery Derive transport registries from one list 2026-08-14 23:17:09 -04:00
experimental Use `aid.uid` over manual `(name, uuid)` tuples 2026-06-27 21:38:30 -04:00
ipc Complete IPC frames before sender cancellation 2026-08-21 15:03:34 -04:00
msg Use linked contexts in `to_actor.run()` 2026-08-21 15:03:34 -04:00
runtime Use linked contexts in `to_actor.run()` 2026-08-21 15:03:34 -04:00
spawn Reap `to_actor.run()` children before return 2026-08-21 15:03:34 -04:00
to_actor Reject misplaced empty `runtime_kwargs` 2026-08-21 15:03:34 -04:00
trionics Match Trio's startup error exactly 2026-08-12 15:45:23 -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 Complete IPC frames before sender cancellation 2026-08-21 15:03:34 -04:00
_exceptions.py Fix send-side `MsgTypeError` rendering 2026-08-20 11:57:39 -04:00
_root.py Move registrar probes to `discovery._api` 2026-08-14 18:43:36 -04:00
_streaming.py Use `aid.uid` over manual `(name, uuid)` tuples 2026-06-27 21:38:30 -04:00
log.py Retain dynamic logger caller discovery 2026-08-12 20:52:47 -04:00
to_asyncio.py Add `maybe_signal_aio_task()` + cause-chain guard 2026-06-17 17:39:44 -04:00