79 lines
2.4 KiB
Markdown
79 lines
2.4 KiB
Markdown
|
|
---
|
||
|
|
model: claude-fable-5
|
||
|
|
service: claude
|
||
|
|
session: f6c84722-471a-4458-9a80-e453fea9029f
|
||
|
|
timestamp: 2026-07-02T16:58:06Z
|
||
|
|
git_ref: a34aaf98
|
||
|
|
scope: code
|
||
|
|
substantive: true
|
||
|
|
raw_file: 20260702T165806Z_a34aaf98_prompt_io.raw.md
|
||
|
|
---
|
||
|
|
|
||
|
|
## Prompt
|
||
|
|
|
||
|
|
Follow-up round in the same session as the
|
||
|
|
`tractor.to_actor` landing (see
|
||
|
|
`20260702T154255Z_65bf9df5_prompt_io.md`). After
|
||
|
|
committing that work the user green-lit the deferred
|
||
|
|
items:
|
||
|
|
|
||
|
|
> go go go on this with what time you have left, in
|
||
|
|
> particular see if you can get the _ria_nursery
|
||
|
|
> removal going!
|
||
|
|
|
||
|
|
then extended the deadline twice to iterate on the
|
||
|
|
discovered hang:
|
||
|
|
|
||
|
|
> continue on this up until a 12:58:30 deadline
|
||
|
|
|
||
|
|
and finally chose "Commit step A now" from the
|
||
|
|
next-steps prompt.
|
||
|
|
|
||
|
|
## Response summary
|
||
|
|
|
||
|
|
Step A of the `._ria_nursery` removal (issue #477): hoist
|
||
|
|
`.run_in_actor()` result-reaping out of the spawn
|
||
|
|
backends into the `ActorNursery` machinery so ria
|
||
|
|
children spawn via the default daemon nursery,
|
||
|
|
|
||
|
|
- new `_supervise._reap_ria_portals()` runs one
|
||
|
|
`_spawn.cancel_on_completion()` task per ria child
|
||
|
|
AFTER `._join_procs` is set; happy path awaits it
|
||
|
|
right after `._join_procs.set()`.
|
||
|
|
- error path SEQUENCES: snapshot ria
|
||
|
|
`(portal, subactor)` pairs -> `await an.cancel()` ->
|
||
|
|
0.5s-bounded reap. Two failed intermediates informed
|
||
|
|
this: a concurrent reap+cancel DEADLOCKED
|
||
|
|
`test_multierror`; a 3s bound blew
|
||
|
|
`test_cancel_while_childs_child_in_sync_sleep`'s
|
||
|
|
`fail_after` deadline.
|
||
|
|
- backends (`spawn/_trio.py`, `spawn/_mp.py`) lose the
|
||
|
|
`._cancel_after_result_on_exit` membership branch,
|
||
|
|
per-child reaper nursery + dead imports.
|
||
|
|
- design/probe-history doc:
|
||
|
|
`ai/conc-anal/ria_nursery_removal_plan.md` (from an
|
||
|
|
agent-verified machinery map).
|
||
|
|
|
||
|
|
Verification: `test_cancellation.py` fully green
|
||
|
|
(20 passed, 1 xfailed) incl. the previously-hung
|
||
|
|
`test_multierror`; `test_to_actor`+`test_spawning`
|
||
|
|
20/20; bounded full-suite gate SIGINT'd ~30s early at
|
||
|
|
303 passed / 0 failures (user opted to commit on that
|
||
|
|
signal, deferring the unbounded re-run to step-B
|
||
|
|
verification).
|
||
|
|
|
||
|
|
## Files changed
|
||
|
|
|
||
|
|
- `tractor/runtime/_supervise.py` — `_reap_ria_portals()`
|
||
|
|
+ two call-sites; `run_in_actor()` off the ria nursery
|
||
|
|
- `tractor/spawn/_trio.py` — reaper branch + import drop
|
||
|
|
- `tractor/spawn/_mp.py` — same as `_trio.py`
|
||
|
|
- `ai/conc-anal/ria_nursery_removal_plan.md` — plan +
|
||
|
|
probe history
|
||
|
|
|
||
|
|
## Human edits
|
||
|
|
|
||
|
|
None yet — committed via the drafted
|
||
|
|
`.claude/git_commit_msg_ria_step_a.md` (user-driven
|
||
|
|
`git commit --edit`).
|