✓ **Phase 9 completed: The worker's request slot and the end-of-request exchange** — commit `df94afc`.

The contract file `test_contract_phase9_request_exchange.py` passes 9/9 over a real lane (the site's verbs on a `SpaWorker`, a real `WorkerHandler` under a real `SpaCommander`, on a real UDS); full suite 2078 passed / 2 skipped; `ruff check .` clean. The worker's local subscription index, `fan_out_local` and `deposit_dbevent` are gone: events accumulate on a `RequestSlot` held per traffic-pool thread and leave through `collect_page`, which places the `/desk/exchange` call, applies the retired STATE writes to the user's Bag and only then merges the collect. Four `> Review:` notes are in the plan — the surviving `dbevents` field in the shared `register_registry.py`, `reset`/`drop` no longer reaching a page's own captures, a woken page's subscriptions not re-filed at the desk, and TYTX's millisecond rounding of `change_ts`.
