# Transfer list, event.ports, detach

The learner can keep `port1`, move `port2` in a transfer list, read `event.ports[0]`, treat the sender handle as detached, and expect `DataCloneError` on clone or second transfer. That is now the floor: the next lesson can spend working memory on a dedicated worker’s implicit port versus minting a second pair.

Evidence: the learner said they passed lesson 3 (handoff lab + checks).

Implications: teach `Worker.postMessage` as an already-enabled pipe (no `start()`, no `targetOrigin`) and the choose/reject playbook. That is the last mission success criterion.
