---
model: claude-opus-4-8
service: claude
session: c7860302-6a33-4d92-821c-0807d68be464
timestamp: 2026-07-02T17:22:33Z
git_ref: 5cd190c5
scope: code
substantive: true
raw_file: 20260702T172233Z_5cd190c5_prompt_io.raw.md
---

## Prompt

Branched session (`to_actor_subpkg_POST_WEEKLY_CUTOFF_2OPUS`,
now on Opus 4.8) continuing the `._ria_nursery` removal after
step A committed + pushed (`5cd190c5`/`99310269`):

> ok continue where your superior left off please

then, after the commit-split discussion:

> yup committed and pushed so take a look ma fren.

i.e. green-lighting step-B prep against the committed step-A
tree.

## Response summary

Step B of the `._ria_nursery` removal (issue #477): delete
the now-vestigial secondary nursery,

- collapse the inner `async with (collapse_eg(),
  trio.open_nursery() as ria_nursery)` layer in
  `_open_and_supervise_one_cancels_all_nursery` — `da_nursery`
  becomes the single nursery for ALL subactors.
- `ActorNursery.__init__` drops the `ria_nursery` param + the
  `self._ria_nursery` attr; `start_actor()` drops its
  `nursery=` escape-hatch param.
- `._cancel_after_result_on_exit` kept (ria-child
  discriminator for `_reap_ria_portals()`).

Verified behavior-preserving via a first-principles argument
(zero-task nursery = a bare checkpoint) + the targeted gate
(`test_cancellation test_spawning test_local test_rpc
test_to_actor` = 49 passed, 1 xfailed on trio). The two
error handlers were deliberately NOT merged — that changes
propagation semantics and is deferred to its own PR (TODO
left at the outer `except`).

## Files changed

- `tractor/runtime/_supervise.py` — collapse the ria nursery
  layer + drop the ctor/`start_actor` params + refresh the
  now-stale nursery comments

## Human edits

None yet — committed via the drafted
`.claude/git_commit_msg_ria_step_b.md` (user-driven
`git commit --edit`).
