Files
stack/agents/darkwing/work/queue-55/out/gate-round2/cli-tests.log
T
jason.woltjeandClaude Opus 5.5 fa6d889cb7 queue-55: round 2 candidate packet (darkwing)
Answers Filbert's comment 27251 and Dewey's comment 27253: R1 type-ahead
window, R2 terminal cell widths, B1 cut inside the question, 30 mutants
killed, N1-N8. Candidate manifest sha256 3f2d8f8e. Gate on c506c6ec:
cli 106/106 and every scripts/test-*.sh exit 0. The feature stays
uncommitted.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-11 13:39:05 -05:00

117 lines
11 KiB
Plaintext
Raw 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.
✔ every screen and overlay fits 120x36, 80x24 and the narrow layout, row for row (1388.082384ms)
✔ width counts terminal cells: wide CJK and emoji 2, U+FE0F after a one-cell base 1, marks 0 (67.593336ms)
✔ broker text is shown, never interpreted: no raw control character or bidi override reaches the terminal (143.85161ms)
✔ NO_COLOR: no escape codes, except reverse video on the selected row (226.278082ms)
✔ 1-9 shows the decide flow's own lines and question; only y resolves (190.559659ms)
✔ the app shows the same decide text as mosaic decide (109.597544ms)
✔ any key but y or Y at the question answers No; nothing is sent (874.466315ms)
✔ type-ahead never answers the question: a paste, keys typed before it is drawn, keys inside askMs (660.940214ms)
✔ quitting at the question answers No and sends nothing, armed or not (180.705251ms)
✔ a timer tick reads nothing under an overlay, never answers the question, and keeps a resolved status (219.873581ms)
✔ a long question is cut inside the question; the action, target, choice and prompt stay (Dewey B1) (264.814429ms)
✔ outcome unknown: the CLI's sentence, no retry, then the trail or a re-read (236.352318ms)
✔ refused and failed reads keep the last list, marked stale; a refused decide says refused (136.823699ms)
✔ keys: views, moving, trail of a selection, the command line, help and quit (374.348794ms)
✔ one option: the status line says Press 1, not 1-1 (123.773035ms)
✔ no business: the app says so and :business picks one (84.30717ms)
✔ mosaic with no argument: exit 3 in an agent run, exit 4 with the usage off a terminal, the app on one (4.148559ms)
✔ scripts/mosaic with no argument reaches the app entry; the seat usage it printed before has not drifted (275.068261ms)
✔ strings to keep exactly live once, in the decide flow and the transport; the app does not restate them (0.6017ms)
✔ decide with --note still asks; a No sends nothing (54.813604ms)
✔ the app's business comes from a live bus host only (1.680961ms)
✔ runApp leaves the terminal as it found it on q, end of input, SIGTERM, SIGINT, SIGHUP and an error (9.900172ms)
✔ draw is pure: same state, same frame (1.563689ms)
✔ inbox lists only decisions routed to the human, with what approving authorizes and how to decide (558.465697ms)
✔ decide resolves by id prefix with --yes, and the trail shows it in broker order with the task to follow (226.333914ms)
✔ decide refuses without a terminal or --yes, on an unknown option and on a short reference (124.030399ms)
✔ decide prints a declining choice as declining (123.202347ms)
✔ an unknown outcome is reported once and never resent (100.701958ms)
✔ a decision closed before the answer arrives exits 2 and points at its trail (106.502603ms)
✔ a prefix that matches two open decisions exits 2 and resolves neither (107.996238ms)
✔ without --business a command uses the live host's business, and a stale host.json is not a host (84.361031ms)
✔ every human command refuses inside an agent run before it touches the bus (47.368796ms)
✔ usage errors exit 4; no business and no host is a usage error (91.207182ms)
✔ agents and tasks print through the broker (82.943846ms)
✔ notify.json: missing, loose, malformed and extra keys refuse; a binding or null passes (1.528757ms)
✔ bootConfig builds the broker's boot message for one business, with no trackers key when no project names one (91.398158ms)
✔ trackers come from the tracker.* variables of the one project that names a tracker project (58.642973ms)
✔ with two projects, the one that sets tracker.project supplies the tracker and the other is no conflict (58.964757ms)
✔ two projects that each name a tracker project refuse, since the boot shape holds one (56.269289ms)
✔ a business without tracker.baseUrl gets no trackers entry (48.660207ms)
✔ an unknown business and a broken system config refuse with exit 3 (89.684246ms)
✔ empty views say so (1.526241ms)
✔ the trail keeps the broker's order and names a decision's task without its rows (1.600511ms)
✔ tasks print the tracker fields the snapshot carries (0.358094ms)
✔ the host boots the broker, binds a launch in process, and the notifier DMs a blocking decision exactly once (1475.971054ms)
✔ a notifier that dies takes the host down with exit 1, so the unit restarts the pair (301.319751ms)
✔ a second host for the same data root refuses with exit 3 while the first runs (229.25187ms)
✔ a broker reply that misses the wait breaks the channel: the late reply answers nothing, later requests refuse, the host exits 1 (1228.180989ms)
✔ a broker reply with another request's id, or none, breaks the channel and the host exits 1 (345.996602ms)
✔ a broker reply with no request waiting breaks the channel and the host exits 1 (189.581835ms)
✔ a notifier that refuses stops the broker and the host refuses with exit 3 (550.192871ms)
✔ a notifier that refuses after the broker died still refuses with exit 3, without a send to the dead broker (218.85895ms)
✔ a notifier that dies before it replies, after the broker died, still refuses, without a send to the dead broker (179.181892ms)
✔ a close send that fails with EPIPE after the notifier refuses still gives the notifier's refusal, exit 3 (298.228093ms)
✔ a close send that fails with EPIPE after the notifier dies unanswered still gives the notifier's error (187.817774ms)
✔ close() whose stop and close sends fail with EPIPE still finishes, with exit 1 (264.604371ms)
✔ watchChildren reports a child that died before it was called, and one that dies later (32.060309ms)
✔ bus stop refuses to signal a live pid that is not a bus host (203.20409ms)
✔ bus start refuses with exit 3 and the code when the broker refuses to boot; bus status names the lock (332.872065ms)
✔ bus start refuses with exit 3 without a notifier config (180.02518ms)
✔ bus start runs until bus stop; status reports it while it runs (939.74172ms)
✔ bus-service.sh renders the unit and installs it into a given directory (49.869693ms)
✔ bus start --pm: the PM runs under its own PID namespace, registered, with a manifest (1835.799228ms)
✔ the PM launches a coder through its launch tool; the coder answers; refusals name their code (791.19158ms)
✔ a runner that stops at once ends its launch with the runner's reason (248.693167ms)
✔ a host that died hard leaves its sessions to the next host, which kills them and ends their runs so the role can be launched again (861.342895ms)
✔ a host that died hard leaves its sessions to the next host, which finds one already exited (23) and ends their runs so the role can be launched again (4052.369698ms)
✔ a malformed sessions.json refuses the host start with exit 3 and stays as it was (162.656426ms)
✔ an over-long launch request is refused at once, not at the 10 s idle timeout (159.332156ms)
✔ a launch client that never closes its side doesn't hold the host's close (172.449402ms)
✔ a runner that ignores SIGTERM is killed when the host closes (1275.853097ms)
✔ zoned uses the IANA zone across DST (56.263686ms)
✔ each open blocking decision is DM'd once, across polls and a restart; non-blocking ones are not (628.011326ms)
✔ two blocking decisions get two DMs with different nonces (143.867589ms)
✔ the digest nonce differs per business and per day and fits Discord's 25 characters (0.421052ms)
✔ a failed DM is journaled, backs off, and is retried until it lands (129.80481ms)
✔ five definite refusals stop a DM: one gave-up line, one log line, and a restart keeps the count (110.686399ms)
✔ 429s, 5xx-style unknowns and refusals without a status never count toward the limit (122.930633ms)
✔ a crash between the fifth refusal and its gave-up line: the next poll appends it and sends nothing (114.02775ms)
✔ 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 (200.131735ms)
✔ a restart after the second refusal does not send before that refusal's 30 min are up (137.077578ms)
✔ the digest goes at 08:00 Chicago once a day, with blocking ones marked as DM'd (88.191016ms)
✔ a late start with no digest for the day sends one at once; an empty inbox gets one line (76.683336ms)
✔ an inbox read failure is logged and the next poll retries (1.291748ms)
✔ no Discord id reaches the journal or the log (108.749226ms)
✔ the journal: a torn tail is copied out and truncated, so an append after it reopens cleanly (29.499338ms)
✔ the journal: a crash between the copy and the truncate leaves a tail the next open repairs (65.404216ms)
✔ the journal: a whole file that is one torn line truncates to empty (22.595781ms)
✔ the journal: a malformed complete line refuses and leaves the file and any torn tail alone (4.271563ms)
✔ the journal: a loose file mode, a loose directory or a symlinked journal refuses (1.311849ms)
✔ the journal: a line with a wrong type refuses with exit 3 and names the field (10.18965ms)
✔ the journal: a symlinked directory refuses and says it is a link (0.546915ms)
✔ 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.930554ms)
✔ the journal: an append after the file was swapped for a symlink refuses and writes nothing through it (0.744786ms)
✔ the journal: a directory it cannot write or create refuses with exit 3 and names the path (0.925587ms)
✔ digest content stays within Discord's 2000 characters (0.55609ms)
✔ runLoop never overlaps ticks and stops after the one in flight (111.970759ms)
task.close {} answered: invalid-request; fake saw 18 requests, first GET /info 200, GET /projects/1 200, GET /projects/1/views 200
task.close on a missing task answered: task-not-found; it made GET /tasks/999 404
✔ bootConfig trackers reach the S3 adapter in the real broker child, which goes ready against a fake Vikunja (893.910564ms)
✔ the transport writes {business, verb, args} to the child and reads its JSON (75.055927ms)
✔ a bus code on stderr becomes the exit code; garbage and timeouts are outcome problems (2278.818425ms)
✔ busExit and refuseInsideAgent (0.555669ms)
✔ talk sends a REQUEST, prints and reads everything that arrives, and stops at the reply (732.667829ms)
✔ talk --wait 0 only sends; no reply within --wait exits 1 and says where it will show (1152.250705ms)
✔ talk, stop and launches off/on refuse inside an agent run; bad arguments are usage errors (132.977272ms)
✔ launches off and on go to the broker and change the business's launch state (110.37747ms)
✔ launches list reads sessions.json and marks a stale entry; stop reports it and refuses a non-runner (95.505355ms)
ℹ tests 106
ℹ suites 0
ℹ pass 106
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 9738.674718