command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/cli/tests/host.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/RmG13S
begin: {"utc": "2026-10-24T20:19:52.258+00:00", "load1": "4.72"}
launch nice: 19
✔ the host boots the broker, binds a launch in process, and the notifier DMs a blocking decision exactly once (936.812823ms)
✔ a notifier that dies takes the host down with exit 1, so the unit restarts the pair (268.593551ms)
✔ a second host for the same data root refuses with exit 3 while the first runs (184.545658ms)
✔ two bus starts racing for one data root leave one host running; the other refuses that a host already runs (612.540774ms)
✔ a host takes over a host.lock its dead host left, and puts back a live claim that replaced it meanwhile (2.170996ms)
✔ a host.lock that goes between the check and the read is tried again; one that can't be parsed still refuses as unreadable (0.796474ms)
✔ a live host's lock stays, however old the file is (0.716808ms)
✔ a host.lock left by a host killed with SIGKILL doesn't stop the next bus start (1026.721773ms)
✔ while a host boots, a reader sees no host: the human commands still ask for --business, stop and status find none (231.90434ms)
✔ a host started before host.lock existed, holding only host.json, still refuses a second start, which leaves no lock (28.406418ms)
✔ a broker fork that throws leaves no host.lock and no host.json (38.825447ms)
✔ a broker send that throws leaves no host.lock and no host.json (33.369602ms)
✔ a broker that misses its boot wait leaves no host.lock and no host.json (38.334533ms)
✔ a notifier fork that throws stops the broker and leaves no host.lock and no host.json (187.792876ms)
✔ a notifier send that throws stops the broker and leaves no host.lock and no host.json (175.68518ms)
✔ a boot reply with no reader for the business refuses with exit 3 naming it, before the notifier starts, and leaves no host.lock and no live broker (179.623371ms)
✔ a boot reply with no reader for the business refuses with exit 3 naming it, with no notifier, and leaves no host.lock and no live broker (183.147464ms)
✔ a host.json that can't be written stops both children and leaves no host.lock (305.621706ms)
✔ an error event on the broker before it replies fails the start at once, and leaves no host.lock and no live child (31.212716ms)
✔ an error event on the notifier before it replies fails the start at once, and leaves no host.lock and no live child (179.15729ms)
✔ an error event on the broker while the notifier starts fails the start once the notifier replies (292.556517ms)
✔ an error event on the broker once the host is up stops the host with exit 1, and leaves no host.lock and no host.json (294.938795ms)
✔ an error event on the notifier once the host is up stops the host with exit 1, and leaves no host.lock and no host.json (324.793332ms)
✔ a broker reply that misses the wait breaks the channel: the late reply answers nothing, later requests refuse, the host exits 1 (1195.570036ms)
✔ a broker reply with another request's id, or none, breaks the channel and the host exits 1 (398.099247ms)
✔ a broker reply with no request waiting breaks the channel and the host exits 1 (179.523071ms)
✔ a notifier that refuses stops the broker and the host refuses with exit 3 (240.099474ms)
✔ a notifier that refuses after the broker died still refuses with exit 3, without a send to the dead broker (264.066963ms)
✔ a notifier that dies before it replies, after the broker died, still refuses, without a send to the dead broker (205.257161ms)
✔ a close send that fails with EPIPE after the notifier refuses still gives the notifier's refusal, exit 3 (264.511154ms)
✔ a close send that fails with EPIPE after the notifier dies unanswered still gives the notifier's error (226.881808ms)
✔ close() whose stop and close sends fail with EPIPE still finishes, with exit 1 (414.100772ms)
✔ watchChildren reports a child that died before it was called, and one that dies later (34.826063ms)
✔ bus stop refuses to signal a live pid that is not a bus host (203.826259ms)
✔ bus start refuses with exit 3 and the code when the broker refuses to boot; bus status names the lock (453.92522ms)
✔ bus start refuses with exit 3 without a notifier config (175.012893ms)
✔ bus start runs until bus stop; status reports it while it runs (932.811874ms)
✔ bus start --no-launch says launches are disabled in its host-up line and stops cleanly; with --pm it is a usage error (782.15841ms)
✔ bus-service.sh renders the unit and installs it into a given directory (277.422161ms)
✔ bus-service.sh pins the claude binary, refuses one the unit can't carry, and renders without one (510.440969ms)
✔ bus-service.sh refuses a directory pin and keeps a symlink default unresolved (121.146164ms)
✔ bus-service.sh refuses a default claude without the execute bit, or in a PATH dir with a space (76.867287ms)
✔ bus start --pm while halted keeps the control host up without launching the chief (468.475029ms)
ℹ tests 43
ℹ suites 0
ℹ pass 43
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 13104.374274
