command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/cli/tests/case2-install.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/DTwCI2
begin: {"utc": "2026-10-24T20:17:33.150+00:00", "load1": "4.56"}
launch nice: 19
✔ the library install writes the business file, personas and slot dir, makes the copy and starts nothing (316.600862ms)
✔ a library re-run passes and leaves every file as it was (410.449757ms)
✔ a re-run refuses business-file-differs and leaves the file unchanged (284.399487ms)
✔ a re-run refuses persona-differs when an installed persona isn't the staged one, and writes nothing (284.060102ms)
✔ the factory install writes no library mapping, persona or slot dir (190.145174ms)
✔ the factory install refuses a library project and bus.tester off, before anything is written (77.903846ms)
✔ the library install refuses bus.tester on and a persona var in the input (87.467442ms)
✔ the install refuses root, a business id mismatch, another --home and a config dir with group bits (57.210488ms)
✔ the library install needs --personas (6.32704ms)
✔ a validate refusal removes the business file this run wrote (259.993727ms)
✔ N4: a validate refusal on a re-run leaves the matching business file in place, byte for byte (419.679162ms)
✔ a clean library host passes the precheck with no mirror yet (437.370995ms)
✔ the library precheck refuses a persona file at 0644 (402.239834ms)
✔ the library precheck refuses a persona whose digest isn't persona.sha256 (486.338823ms)
✔ the library precheck refuses a persona dir with group bits (427.127751ms)
✔ the library precheck refuses a business file at 0644 (418.65069ms)
✔ the library precheck refuses a changes.jsonl at 0644 (584.985728ms)
✔ the library precheck refuses a Discord binding (440.294399ms)
✔ --library-status refuses library-mirror-missing before the bus has made the mirror (367.796987ms)
✔ --library-status refuses library-never-synced on a fresh mirror (364.294188ms)
✔ --library-status names a recorded lastError before the null lastFetch it leaves (N3) (378.938572ms)
✔ --library-status prints each R-problem's path as an escaped JSON string, then the count, and passes (430.082225ms)
✔ --library-status takes no --profile (6.678089ms)
✔ Vikunja 614: install preserves the explicit notifier decision bytes and mode and creates none when absent (491.973833ms)
✔ row 322 F8: library personas install from the copy with no clone node_modules (149.391819ms)
✔ row 322 F9: importer refusal keeps the error line rather than the Node banner (101.097247ms)
✔ C2-21: library install supplies chief identity and books publish for its real read grant (279.442287ms)
ℹ tests 27
ℹ suites 0
ℹ pass 27
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 8285.795984
