pi-dispatch v1.10.3
A worker now stops watching when it stops working.
startWorker arms three directory watches so an operator can edit triggers.json, pause-windows.json
and scoped-limits.json without a restart. Each was created and then thrown away: unref keeps a handle
from holding the event loop open, but it does not disarm it, so every worker that shut down inside a
process that kept running left three armed watches behind. Each still held that worker's log closure, so
a reload fired later wrote a line stamped with the host of a worker that had stopped.
Each watch now returns a stop handle, registered in the same list that already closes the queues and the
host registry. It closes the watcher, cancels the debounce, and silences a reload it can no longer recall.
Two smaller fixes ride along, both found while closing this one. The shutdown's closer loop now delivers
the per item isolation its own comment always claimed: a closer that threw before returning a promise, or
an absent one, used to strand every closer after it, including the registry row deletion that keeps a
stopped host from lingering as a ghost peer. And the worker test harness now tears down on a boot that
refuses after the worker was already built, where it used to skip teardown entirely.
Upgrade with npm install. Nothing in the configuration surface moved.