Follow-up to #66, #461, #465, and #470.
The strengthened nested-worker normal-exit control exposed that Home's embedded node:worker_threads parentPort still uses fakeParentPort with no-op close, ref, and unref. Calling close with a message listener attached leaves the worker event loop alive; no close event fires. This is independent of descendant joining.
Reproduction is committed as tests/runtime/worker-parent-port-close.pending.mjs: a worker registers a message listener and close listener, sends a handshake, and closes its parentPort. Expected: natural exit 0 and exactly one close callback. Current native Home: a bounded 3-second deadline failure, exit 1 after bounded worker cleanup. The exact Node control (only executable guard removed) passes.
Implement the native parent-port lifecycle and ref ownership, preserving outgoing accepted messages and rejecting/dropping post-close delivery appropriately. Include listener cleanup, close-event ordering, ref/unref/hasRef, repeated close, and worker shutdown. Do not alias close to process.exit: other worker resources may keep it alive, and close is asynchronous.
The #470 descendant regression uses a one-shot message listener for its normal control so that it tests descendant exit independently. The close failure above is kept explicit and is not counted as passing coverage.