command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/cli/tests/host.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/vIKtpP
begin: {"utc": "2026-10-24T20:39:03.617+00:00", "load1": "2.07"}
launch nice: 19
✔ the host boots the broker, binds a launch in process, and the notifier DMs a blocking decision exactly once (937.017167ms)
✔ a notifier that dies takes the host down with exit 1, so the unit restarts the pair (261.467904ms)
✔ a second host for the same data root refuses with exit 3 while the first runs (181.094787ms)
✔ two bus starts racing for one data root leave one host running; the other refuses that a host already runs (592.391096ms)
✔ a host takes over a host.lock its dead host left, and puts back a live claim that replaced it meanwhile (1.701163ms)
✔ 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.734165ms)
✔ a live host's lock stays, however old the file is (0.479255ms)
✔ a host.lock left by a host killed with SIGKILL doesn't stop the next bus start (983.021908ms)
✔ while a host boots, a reader sees no host: the human commands still ask for --business, stop and status find none (238.046519ms)
✔ a host started before host.lock existed, holding only host.json, still refuses a second start, which leaves no lock (29.463227ms)
✔ a broker fork that throws leaves no host.lock and no host.json (32.006849ms)
✔ a broker send that throws leaves no host.lock and no host.json (30.754192ms)
✔ a broker that misses its boot wait leaves no host.lock and no host.json (32.019099ms)
✔ a notifier fork that throws stops the broker and leaves no host.lock and no host.json (258.982144ms)
✔ a notifier send that throws stops the broker and leaves no host.lock and no host.json (190.964437ms)
✔ 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 (175.586827ms)
✔ 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.80746ms)
✔ a host.json that can't be written stops both children and leaves no host.lock (291.441254ms)
✔ an error event on the broker before it replies fails the start at once, and leaves no host.lock and no live child (32.125461ms)
✔ an error event on the notifier before it replies fails the start at once, and leaves no host.lock and no live child (181.417684ms)
✔ an error event on the broker while the notifier starts fails the start once the notifier replies (290.020768ms)
✔ 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 (299.658737ms)
✔ 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 (365.997059ms)
✔ a broker reply that misses the wait breaks the channel: the late reply answers nothing, later requests refuse, the host exits 1 (1185.98022ms)
✔ a broker reply with another request's id, or none, breaks the channel and the host exits 1 (370.306157ms)
✔ a broker reply with no request waiting breaks the channel and the host exits 1 (180.733365ms)
✔ a notifier that refuses stops the broker and the host refuses with exit 3 (239.085041ms)
✔ a notifier that refuses after the broker died still refuses with exit 3, without a send to the dead broker (230.893865ms)
✔ a notifier that dies before it replies, after the broker died, still refuses, without a send to the dead broker (179.958631ms)
✔ a close send that fails with EPIPE after the notifier refuses still gives the notifier's refusal, exit 3 (243.515564ms)
✔ a close send that fails with EPIPE after the notifier dies unanswered still gives the notifier's error (173.2074ms)
✔ close() whose stop and close sends fail with EPIPE still finishes, with exit 1 (246.442595ms)
✔ watchChildren reports a child that died before it was called, and one that dies later (23.442073ms)
✔ bus stop refuses to signal a live pid that is not a bus host (202.862001ms)
✔ bus start refuses with exit 3 and the code when the broker refuses to boot; bus status names the lock (350.455448ms)
✔ bus start refuses with exit 3 without a notifier config (126.405969ms)
✔ bus start runs until bus stop; status reports it while it runs (846.985046ms)
✔ bus start --no-launch says launches are disabled in its host-up line and stops cleanly; with --pm it is a usage error (710.323232ms)
✔ bus-service.sh renders the unit and installs it into a given directory (194.605252ms)
✔ bus-service.sh pins the claude binary, refuses one the unit can't carry, and renders without one (429.298941ms)
✔ bus-service.sh refuses a directory pin and keeps a symlink default unresolved (95.080352ms)
✔ bus-service.sh refuses a default claude without the execute bit, or in a PATH dir with a space (58.812699ms)
✔ bus start --pm while halted keeps the control host up without launching the chief (436.122093ms)
ℹ tests 43
ℹ suites 0
ℹ pass 43
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 12228.779276
