Files
stack/agents/magica/work/queue-329/gate/cli-notifier.test.txt

40 lines
2.9 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/cli/tests/notifier.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/eZFGIj
begin: {"utc": "2026-10-24T20:20:55.673+00:00", "load1": "6.30"}
launch nice: 19
✔ zoned uses the IANA zone across DST (17.041786ms)
✔ each open blocking decision is DM'd once, across polls and a restart; non-blocking ones are not (27.633968ms)
✔ two blocking decisions get two DMs with different nonces (17.607895ms)
✔ the digest nonce differs per business and per day and fits Discord's 25 characters (1.07468ms)
✔ a failed DM is journaled, backs off, and is retried until it lands (18.290298ms)
✔ five definite refusals stop a DM: one gave-up line, one log line, and a restart keeps the count (21.948577ms)
✔ 429s, 5xx-style unknowns and refusals without a status never count toward the limit (22.480808ms)
✔ a crash between the fifth refusal and its gave-up line: the next poll appends it and sends nothing (15.856559ms)
✔ polled every POLL_MS against a permanent 403, a DM is sent at 0, 30, 60, 90 and 120 min and gives up only then (139.364273ms)
✔ a restart after the second refusal does not send before that refusal's 30 min are up (74.809896ms)
✔ the digest goes at 08:00 Chicago once a day, with blocking ones marked as DM'd (20.521481ms)
✔ a late start with no digest for the day sends one at once; an empty inbox gets one line (14.882784ms)
✔ an inbox read failure is logged and the next poll retries (0.684789ms)
✔ no Discord id reaches the journal or the log (15.909276ms)
✔ the journal: a torn tail is copied out and truncated, so an append after it reopens cleanly (1.914169ms)
✔ the journal: a crash between the copy and the truncate leaves a tail the next open repairs (2.095447ms)
✔ the journal: a whole file that is one torn line truncates to empty (1.115216ms)
✔ the journal: a malformed complete line refuses and leaves the file and any torn tail alone (0.423831ms)
✔ the journal: a loose file mode, a loose directory or a symlinked journal refuses (0.506636ms)
✔ the journal: a line with a wrong type refuses with exit 3 and names the field (1.84503ms)
✔ the journal: a symlinked directory refuses and says it is a link (0.289235ms)
✔ the journal: a dangling directory link, a parent that is a file and a journal that is a directory each refuse with exit 3 (0.446763ms)
✔ the journal: an append after the file was swapped for a symlink refuses and writes nothing through it (0.365931ms)
✔ the journal: a directory it cannot write or create refuses with exit 3 and names the path (0.431657ms)
✔ digest content stays within Discord's 2000 characters (0.278548ms)
✔ runLoop never overlaps ticks and stops after the one in flight (111.802509ms)
✔ processing halt prevents notifier reads and sends and fences the wait before delivery (35.880601ms)
ℹ tests 27
ℹ suites 0
ℹ pass 27
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 687.087182