Skip to content

Commit 33decae

Browse files
docs: record phase B completion in the handoff
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent 4f84335 commit 33decae

1 file changed

Lines changed: 25 additions & 9 deletions

File tree

handoff-phase-b-async-core.md

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# Handoff: Phase B — invert execnet onto an async-native Trio core
22

3-
For a fresh session on branch `feat/trio-host-thread-io`. B.1–B.5 are done;
4-
work continues at **B.6**. Plan context lives in session memory
5-
(`trio-port-plan`), but everything needed is restated here.
3+
For a fresh session on branch `feat/trio-host-thread-io`. **Phase B is
4+
complete (B.1–B.6)**; work continues at **Phase C**. Plan context lives in
5+
session memory (`trio-port-plan`), but everything needed is restated here.
66

77
Run checks with `uv run pytest testing/` and `uv run pre-commit run -a`
88
(never grep-filter pre-commit output). ssh paths have a real local harness
@@ -130,12 +130,28 @@ unchanged (508 passed). What landed, and the decisions taken:
130130
`testing/test_threadpool.py`, conftest's `pool` fixture). Do this at
131131
the end of the phase (B.6 or later) if the tests pinning them move.
132132

133-
### B.6 Namespace split
134-
135-
Introduce `execnet.sync` / `execnet.trio` / `execnet.portal`; top-level
136-
`execnet.*` aliases into `execnet.sync`. Existing suite pinned to the
137-
facade; add trio-native tests (memory_stream_pair + FrameDecoder for
138-
protocol-level, real popen gateways inside `trio.run` for integration).
133+
### B.6 Namespace split — DONE (commit `4f84335`)
134+
135+
`execnet.sync` (blocking facade re-exports; top-level `execnet.*` aliases
136+
into it), `execnet.trio` (AsyncGroup/AsyncGateway/AsyncChannel, raw
137+
channels, stream helpers, shared serialization + errors), and
138+
`execnet.portal` (LoopPortal/SyncReceiver). `trio`/`portal` load lazily
139+
via module `__getattr__`, so `import execnet` still does not import the
140+
trio event loop (pinned by `testing/test_namespaces.py`). Trio-native
141+
protocol/integration tests already live in `testing/test_trio_gateway.py`
142+
(memory_stream_pair + real popen gateways inside `trio.run`).
143+
144+
### End-of-phase leftovers (deferred into C/D)
145+
146+
- Retire `ExecModel` internals and `WorkerPool`: still pinned by
147+
`multi.safe_terminate`, `testing/test_threadpool.py`, and conftest's
148+
`pool` fixture, and `get_execmodel`/backend names feed Phase C's
149+
`execmodel=` compat mapping — retire once C lands the new worker
150+
config axes.
151+
- ChannelFile / makefile over RawChannel (async makefile) — untouched;
152+
the sync str-based wrappers stay for backward compat.
153+
- rsync data plane / wheel shipping over raw channels — later.
154+
- Async remote_exec on the worker (`exec=task`) — Phase C.
139155

140156
## Invariants (do not regress)
141157

0 commit comments

Comments
 (0)