tractor/ai/conc-anal
Gud Boi ff3474728c Doc ria-reap hang fix + paused reaper re-scope
Append two sections to the ria-removal plan capturing the
2026-07-02 hang episode + the resulting design pivot.

Regression writeup: the full-suite hang on
`test_tractor_cancels_aio` root-caused to the step-A reaper
hoist (`5cd190c5`), not the B2 handler merge. The happy-path
`_reap_ria_portals()` parks unbounded on `wait_for_result()`
after a user `portal.cancel_actor()`; the old spawn-backend
reaper raced `soft_kill()`'s scope-cancel, the hoist dropped
it. Records the `proc.poll()` death-watch fix + why poll (not
the event `wait_func`) bc `soft_kill` already awaits
`proc.sentinel` (a 2nd `wait_readable` -> `BusyResourceError`).

Pause writeup: user's insight that the hoist landed in the
wrong scope — result-waiting belongs in the `to_actor`
one-shot scope (`_invoke_in_subactor()`), beside `an` + a
local task-nursery + cancel-scope, where bounding the wait is
trivial + the hang dissolves. So the poll fix is likely
SUPERSEDED (flagged do-not-land); the anti-hang guard commit
(`d1fb4a1a`) stays red-first per the failing-test convention.

(this patch was generated in some part by `claude-code` using
`claude-opus-4-8` (`anthropic`))
2026-07-06 10:59:20 -04:00
..
fork_thread_semantics_execution_vs_memory.md Add posix-multithreaded-`fork()` explainer doc 2026-06-17 13:45:31 -04:00
ria_nursery_removal_plan.md Doc ria-reap hang fix + paused reaper re-scope 2026-07-06 10:59:20 -04:00
spawn_time_boot_death_dup_name_issue.md Add boot-race conc-anal, widen `xfail` to `n_dups=8` 2026-06-17 17:39:44 -04:00
test_register_duplicate_name_daemon_connect_race_issue.md Add `test_register_duplicate_name` race analysis 2026-06-17 13:45:31 -04:00
trio_033_cancel_cascade_slowdown_depth3_issue.md Bump trio depth=3 cancel timeout 6→12s 2026-06-17 17:39:44 -04:00
trio_wakeup_socketpair_busy_loop_under_fork_issue.md Add `tractor.trionics.patches` subpkg + first fix 2026-06-17 17:39:44 -04:00