Files
jason.woltje 068d868a99 lead: commit rocko's untracked evidence (4471 files: queue-124 queue-129 queue-171 queue-178 queue-280 queue-31 queue-84 queue-85 queue-94)
Unclaimed files left in the canonical checkout. Inventory: canonical-cleanup-inventory.md (commit-as-evidence groups). detect-secrets scan clean on 2026-11-02: hits are sha256 pins, git object ids, test sentinels already in tracked tests and unit-file lines.
2026-11-02 15:05:15 -06:00

4842 lines
198 KiB
Plaintext

TAP version 13
# Subtest: list prints the revision and the users
ok 1 - list prints the revision and the users
---
duration_ms: 61.649358
type: 'test'
...
# Subtest: grant writes one revision up, a receipt line, and the id in the file
ok 2 - grant writes one revision up, a receipt line, and the id in the file
---
duration_ms: 56.562053
type: 'test'
...
# Subtest: a viewer grant writes the viewer level, one revision up
ok 3 - a viewer grant writes the viewer level, one revision up
---
duration_ms: 56.278234
type: 'test'
...
# Subtest: a second write appends a second receipt and leaves the first intact
ok 4 - a second write appends a second receipt and leaves the first intact
---
duration_ms: 116.11102
type: 'test'
...
# Subtest: a stale revision refuses with revision-conflict and writes nothing
ok 5 - a stale revision refuses with revision-conflict and writes nothing
---
duration_ms: 112.733171
type: 'test'
...
# Subtest: a live holder's lock refuses and leaves the file and the lock alone
ok 6 - a live holder's lock refuses and leaves the file and the lock alone
---
duration_ms: 45.909801
type: 'test'
...
# Subtest: an empty or unreadable lock refuses, since its holder may still be writing
ok 7 - an empty or unreadable lock refuses, since its holder may still be writing
---
duration_ms: 102.779522
type: 'test'
...
# Subtest: a lock left by a dead pid refuses, names the pid, and is not reclaimed
ok 8 - a lock left by a dead pid refuses, names the pid, and is not reclaimed
---
duration_ms: 90.955536
type: 'test'
...
# Subtest: a failed rename leaves the old bytes, removes the temp file, and writes no receipt
ok 9 - a failed rename leaves the old bytes, removes the temp file, and writes no receipt
---
duration_ms: 56.36319
type: 'test'
...
# Subtest: a group-writable access file refuses with exit 3, names the file, and changes nothing
ok 10 - a group-writable access file refuses with exit 3, names the file, and changes nothing
---
duration_ms: 52.733009
type: 'test'
...
# Subtest: an agent or tester caller is refused before the context or the access file is read
ok 11 - an agent or tester caller is refused before the context or the access file is read
---
duration_ms: 3.314217
type: 'test'
...
# Subtest: the lock is mode 0600 while held and removed after a refused write
ok 12 - the lock is mode 0600 while held and removed after a refused write
---
duration_ms: 49.069982
type: 'test'
...
# Subtest: a grant naming an unknown instance is refused before any write
ok 13 - a grant naming an unknown instance is refused before any write
---
duration_ms: 50.345598
type: 'test'
...
# Subtest: a project name resolves to its id at grant time
ok 14 - a project name resolves to its id at grant time
---
duration_ms: 59.256548
type: 'test'
...
# Subtest: an unknown project name refuses before any write
ok 15 - an unknown project name refuses before any write
---
duration_ms: 49.410831
type: 'test'
...
# Subtest: revoke removes the user's grants and leaves a revision behind
ok 16 - revoke removes the user's grants and leaves a revision behind
---
duration_ms: 111.453732
type: 'test'
...
# Subtest: revoke of a user with no grant refuses and writes nothing
ok 17 - revoke of a user with no grant refuses and writes nothing
---
duration_ms: 50.096997
type: 'test'
...
# Subtest: an agent caller is refused before the bus is asked
ok 18 - an agent caller is refused before the bus is asked
---
duration_ms: 1.605855
type: 'test'
...
# Subtest: --tester is refused on every verb before the bus is asked
ok 19 - --tester is refused on every verb before the bus is asked
---
duration_ms: 2.019111
type: 'test'
...
# Subtest: a bus that refuses the human proof blocks the write
ok 20 - a bus that refuses the human proof blocks the write
---
duration_ms: 56.992748
type: 'test'
...
# Subtest: the context reads console.sso subjects and the business files, and peers stay empty
ok 21 - the context reads console.sso subjects and the business files, and peers stay empty
---
duration_ms: 16.228371
type: 'test'
...
# Subtest: the real human-cli, run from agent ancestry, refuses and writes nothing
ok 22 - the real human-cli, run from agent ancestry, refuses and writes nothing
---
duration_ms: 5271.989506
type: 'test'
...
# Subtest: every screen and overlay fits 120x36, 80x24 and the narrow layout, row for row
ok 23 - every screen and overlay fits 120x36, 80x24 and the narrow layout, row for row
---
duration_ms: 2714.453457
type: 'test'
...
# Subtest: width counts terminal cells: wide CJK and emoji 2, U+FE0F after a one-cell base 1, marks 0
ok 24 - width counts terminal cells: wide CJK and emoji 2, U+FE0F after a one-cell base 1, marks 0
---
duration_ms: 151.824918
type: 'test'
...
# Subtest: broker text is shown, never interpreted: no raw control character or bidi override reaches the terminal
ok 25 - broker text is shown, never interpreted: no raw control character or bidi override reaches the terminal
---
duration_ms: 343.221236
type: 'test'
...
# Subtest: NO_COLOR: no escape codes, except reverse video on the selected row
ok 26 - NO_COLOR: no escape codes, except reverse video on the selected row
---
duration_ms: 446.3152
type: 'test'
...
# Subtest: 1-9 shows the decide flow's own lines and question; only y resolves
ok 27 - 1-9 shows the decide flow's own lines and question; only y resolves
---
duration_ms: 126.59542
type: 'test'
...
# Subtest: the app shows the same decide text as mosaic decide
ok 28 - the app shows the same decide text as mosaic decide
---
duration_ms: 49.609043
type: 'test'
...
# Subtest: any key but y or Y at the question answers No; nothing is sent
ok 29 - any key but y or Y at the question answers No; nothing is sent
---
duration_ms: 466.326381
type: 'test'
...
# Subtest: below 40x10 the question is hidden, so every key answers it No, y included (Filbert R3)
ok 30 - below 40x10 the question is hidden, so every key answers it No, y included (Filbert R3)
---
duration_ms: 170.87193
type: 'test'
...
# Subtest: under 40 columns a tall terminal shows the too-small screen even where the decide box would fit; y sends nothing (Filbert N10)
ok 31 - under 40 columns a tall terminal shows the too-small screen even where the decide box would fit; y sends nothing (Filbert N10)
---
duration_ms: 631.121199
type: 'test'
...
# Subtest: a hidden decide box names the way out, and the status line under it does not promise y (Filbert N12)
ok 32 - a hidden decide box names the way out, and the status line under it does not promise y (Filbert N12)
---
duration_ms: 96.96666
type: 'test'
...
# Subtest: a throw while answering the question goes to crash, sends nothing and leaves no job pending
ok 33 - a throw while answering the question goes to crash, sends nothing and leaves no job pending
---
duration_ms: 66.141692
type: 'test'
...
# Subtest: type-ahead never answers the question: a paste, keys typed before it is drawn, keys inside askMs
ok 34 - type-ahead never answers the question: a paste, keys typed before it is drawn, keys inside askMs
---
duration_ms: 568.553731
type: 'test'
...
# Subtest: quitting at the question answers No and sends nothing, armed or not
ok 35 - quitting at the question answers No and sends nothing, armed or not
---
duration_ms: 90.897606
type: 'test'
...
# Subtest: a timer tick reads nothing under an overlay, never answers the question, and keeps a resolved status
ok 36 - a timer tick reads nothing under an overlay, never answers the question, and keeps a resolved status
---
duration_ms: 80.019282
type: 'test'
...
# Subtest: a long question is cut inside the question; the action, target, choice and prompt stay (Dewey B1)
ok 37 - a long question is cut inside the question; the action, target, choice and prompt stay (Dewey B1)
---
duration_ms: 123.541157
type: 'test'
...
# Subtest: a decide box too big for the terminal says so, and every key answers it No, y included (Dewey B1, round 3)
ok 38 - a decide box too big for the terminal says so, and every key answers it No, y included (Dewey B1, round 3)
---
duration_ms: 759.858902
type: 'test'
...
# Subtest: at every size the decide box shows each line y depends on, or says it is hidden
ok 39 - at every size the decide box shows each line y depends on, or says it is hidden
---
duration_ms: 16599.714068
type: 'test'
...
# Subtest: outcome unknown: the CLI's sentence, no retry, then the trail or a re-read
ok 40 - outcome unknown: the CLI's sentence, no retry, then the trail or a re-read
---
duration_ms: 159.640871
type: 'test'
...
# Subtest: refused and failed reads keep the last list, marked stale; a refused decide says refused
ok 41 - refused and failed reads keep the last list, marked stale; a refused decide says refused
---
duration_ms: 59.775604
type: 'test'
...
# Subtest: help or a detail box cut to fit keeps its last line, Esc included (Dewey)
ok 42 - help or a detail box cut to fit keeps its last line, Esc included (Dewey)
---
duration_ms: 32.294884
type: 'test'
...
# Subtest: keys: views, moving, trail of a selection, the command line, help and quit
ok 43 - keys: views, moving, trail of a selection, the command line, help and quit
---
duration_ms: 159.872179
type: 'test'
...
# Subtest: one option: the status line says Press 1, not 1-1
ok 44 - one option: the status line says Press 1, not 1-1
---
duration_ms: 41.730747
type: 'test'
...
# Subtest: no business: the app says so and :business picks one
ok 45 - no business: the app says so and :business picks one
---
duration_ms: 24.5916
type: 'test'
...
# Subtest: mosaic with no argument: exit 3 in an agent run, exit 4 with the usage off a terminal, the app on one
ok 46 - mosaic with no argument: exit 3 in an agent run, exit 4 with the usage off a terminal, the app on one
---
duration_ms: 4.167674
type: 'test'
...
# Subtest: scripts/mosaic with no argument reaches the app entry; the seat usage it printed before has not drifted
ok 47 - scripts/mosaic with no argument reaches the app entry; the seat usage it printed before has not drifted
---
duration_ms: 313.814465
type: 'test'
...
# Subtest: strings to keep exactly live once, in the decide flow and the transport; the app does not restate them
ok 48 - strings to keep exactly live once, in the decide flow and the transport; the app does not restate them
---
duration_ms: 0.748923
type: 'test'
...
# Subtest: decide with --note still asks; a No sends nothing
ok 49 - decide with --note still asks; a No sends nothing
---
duration_ms: 21.124064
type: 'test'
...
# Subtest: the app's business comes from a live bus host only
ok 50 - the app's business comes from a live bus host only
---
duration_ms: 1.675664
type: 'test'
...
# Subtest: runApp leaves the terminal as it found it on q, end of input, SIGTERM, SIGINT, SIGHUP and an error, the first frame's included
ok 51 - runApp leaves the terminal as it found it on q, end of input, SIGTERM, SIGINT, SIGHUP and an error, the first frame's included
---
duration_ms: 12.264506
type: 'test'
...
# Subtest: draw is pure: same state, same frame
ok 52 - draw is pure: same state, same frame
---
duration_ms: 1.332454
type: 'test'
...
# Subtest: recordBootRefused keeps the last good load across refusals; recordBootOk clears the refusal
ok 53 - recordBootRefused keeps the last good load across refusals; recordBootOk clears the refusal
---
duration_ms: 5.349005
type: 'test'
...
# Subtest: an unknown key and a JSON syntax error each leave the bus down with the reason and path in the status
ok 54 - an unknown key and a JSON syntax error each leave the bus down with the reason and path in the status
---
duration_ms: 1360.728584
type: 'test'
...
# Subtest: a missing file is recorded too, and a valid file clears the status on the next start
ok 55 - a missing file is recorded too, and a valid file clears the status on the next start
---
duration_ms: 897.522422
type: 'test'
...
# Subtest: row 195 accept: every check passing exits 0, with each P mark and counts that match the lines
ok 56 - row 195 accept: every check passing exits 0, with each P mark and counts that match the lines
---
duration_ms: 531.044881
type: 'test'
...
# Subtest: row 195 accept: exits 1 with each F check failing alone, and its line names it
ok 57 - row 195 accept: exits 1 with each F check failing alone, and its line names it
---
duration_ms: 5002.289259
type: 'test'
...
# Subtest: row 195 accept: F3 fails on exit 0 with no reply line, and its evidence takes talk's error
ok 58 - row 195 accept: F3 fails on exit 0 with no reply line, and its evidence takes talk's error
---
duration_ms: 957.721268
type: 'test'
...
# Subtest: row 195 accept: F1 fails on a unit that isn't active or isn't User=mosaic
ok 59 - row 195 accept: F1 fails on a unit that isn't active or isn't User=mosaic
---
duration_ms: 1169.137155
type: 'test'
...
# Subtest: row 195 accept: F2 fails when healthz doesn't answer and when another pid holds the port
ok 60 - row 195 accept: F2 fails when healthz doesn't answer and when another pid holds the port
---
duration_ms: 1129.689045
type: 'test'
...
# Subtest: row 195 accept: F5 fails on unpriv_bwrap (enforce), on complain and on a trailing space
ok 61 - row 195 accept: F5 fails on unpriv_bwrap (enforce), on complain and on a trailing space
---
duration_ms: 1833.615823
type: 'test'
...
# Subtest: row 195 accept: F5 fails with no bwrap of mosaic's, and passes on comm alone
ok 62 - row 195 accept: F5 fails with no bwrap of mosaic's, and passes on comm alone
---
duration_ms: 856.092295
type: 'test'
...
# Subtest: row 195 accept: F6 fails on a stub that prints nothing, on a path outside claude-<pin> and on a .. segment
ok 63 - row 195 accept: F6 fails on a stub that prints nothing, on a path outside claude-<pin> and on a .. segment
---
duration_ms: 1418.780938
type: 'test'
...
# Subtest: row 195 accept: F7 fails on two live PM launches, one for another business, and no launch.by
ok 64 - row 195 accept: F7 fails on two live PM launches, one for another business, and no launch.by
---
duration_ms: 1153.31029
type: 'test'
...
# Subtest: row 195 accept: F8 fails on 0640, on another owner and on a symlink, and never prints the credential
ok 65 - row 195 accept: F8 fails on 0640, on another owner and on a symlink, and never prints the credential
---
duration_ms: 1303.504325
type: 'test'
...
# Subtest: row 195 accept: F9 fails on another owner, a group-writable mode and a number for the flag
ok 66 - row 195 accept: F9 fails on another owner, a group-writable mode and a number for the flag
---
duration_ms: 1037.34845
type: 'test'
...
# Subtest: row 195 accept: F9 won't run --node as root off the pin path or with a writable directory above it
ok 67 - row 195 accept: F9 won't run --node as root off the pin path or with a writable directory above it
---
duration_ms: 821.247269
type: 'test'
...
# Subtest: row 195 accept: F11 fails on one *.json under discord/ and passes on an empty directory
ok 68 - row 195 accept: F11 fails on one *.json under discord/ and passes on an empty directory
---
duration_ms: 768.103887
type: 'test'
...
# Subtest: row 195 accept: each P check reports unnamed on its fault, and the exit stays 0
ok 69 - row 195 accept: each P check reports unnamed on its fault, and the exit stays 0
---
duration_ms: 3429.613177
type: 'test'
...
# Subtest: row 195 accept: P2 is unnamed with a supplementary group, and P5 names docker
ok 70 - row 195 accept: P2 is unnamed with a supplementary group, and P5 names docker
---
duration_ms: 701.572048
type: 'test'
...
# Subtest: row 195 accept: P5 is closed with no jarvis account, and P2 with an empty authorized_keys
ok 71 - row 195 accept: P5 is closed with no jarvis account, and P2 with an empty authorized_keys
---
duration_ms: 344.226227
type: 'test'
...
# Subtest: row 195 accept: P9 is unnamed once for each item missing
ok 72 - row 195 accept: P9 is unnamed once for each item missing
---
duration_ms: 1849.067809
type: 'test'
...
# Subtest: row 195 accept: P10 is unnamed with 7333 held by another pid; P11 with the unit disabled
ok 73 - row 195 accept: P10 is unnamed with 7333 held by another pid; P11 with the unit disabled
---
duration_ms: 694.228608
type: 'test'
...
# Subtest: row 195 accept: every P check unnamed together still exits 0
ok 74 - row 195 accept: every P check unnamed together still exits 0
---
duration_ms: 324.693271
type: 'test'
...
# Subtest: row 195 accept: a bad args file refuses with exit 2 before any check, each for its own reason
ok 75 - row 195 accept: a bad args file refuses with exit 2 before any check, each for its own reason
---
duration_ms: 131.568719
type: 'test'
...
# Subtest: row 195 accept: usage errors and a run without --root as a user exit 2
ok 76 - row 195 accept: usage errors and a run without --root as a user exit 2
---
duration_ms: 15.463592
type: 'test'
...
# Subtest: row 195 accept: every in-instance call goes through sudo -u mosaic -H env PATH=<node dir>:...
ok 77 - row 195 accept: every in-instance call goes through sudo -u mosaic -H env PATH=<node dir>:...
---
duration_ms: 323.952411
type: 'test'
...
# Subtest: row 195 accept: the host check runs with --check and never --enforce
ok 78 - row 195 accept: the host check runs with --check and never --enforce
---
duration_ms: 278.653136
type: 'test'
...
# Subtest: row 240 check: exits 0 with all seven items and a note that bubblewrap is the install pin
ok 79 - row 240 check: exits 0 with all seven items and a note that bubblewrap is the install pin
---
duration_ms: 124.246708
type: 'test'
...
# Subtest: row 240 check: exits 1 with each item failing alone, and its line names it
ok 80 - row 240 check: exits 1 with each item failing alone, and its line names it
---
duration_ms: 554.224098
type: 'test'
...
# Subtest: row 240 check: item 1 fails when a package owns the profile, when dpkg -S errs, or with no pin
ok 81 - row 240 check: item 1 fails when a package owns the profile, when dpkg -S errs, or with no pin
---
duration_ms: 248.291995
type: 'test'
...
# Subtest: row 240 check: item 2 fails on a loaded mosaic-bwrap, a missing unpriv_bwrap or a failed aa-status
ok 82 - row 240 check: item 2 fails on a loaded mosaic-bwrap, a missing unpriv_bwrap or a failed aa-status
---
duration_ms: 217.965363
type: 'test'
...
# Subtest: row 240 check: item 3 fails on a second file naming bwrap as a word, /{usr/,}bin/bwrap included
ok 83 - row 240 check: item 3 fails on a second file naming bwrap as a word, /{usr/,}bin/bwrap included
---
duration_ms: 317.001844
type: 'test'
...
# Subtest: row 240 check: item 4 reads the label under the units' no-new-privs and matches it exactly
ok 84 - row 240 check: item 4 reads the label under the units' no-new-privs and matches it exactly
---
duration_ms: 280.374747
type: 'test'
...
# Subtest: row 240 check: item 5 needs the statoverride and stat to agree
ok 85 - row 240 check: item 5 needs the statoverride and stat to agree
---
duration_ms: 67.314041
type: 'test'
...
# Subtest: row 240 check: item 6 fails on protected_hardlinks 0; item 7 fails with the floor at 732 and reads 1023 with no unit
ok 86 - row 240 check: item 6 fails on protected_hardlinks 0; item 7 fails with the floor at 732 and reads 1023 with no unit
---
duration_ms: 406.496489
type: 'test'
...
# Subtest: row 240 check: a bubblewrap version other than the install pin is a note, not a failure
ok 87 - row 240 check: a bubblewrap version other than the install pin is a note, not a failure
---
duration_ms: 76.261451
type: 'test'
...
# Subtest: row 240 enforce: a pass with no DRIFT changes nothing and exits 0
ok 88 - row 240 enforce: a pass with no DRIFT changes nothing and exits 0
---
duration_ms: 70.864631
type: 'test'
...
# Subtest: row 240 enforce: each failure exits 0, unloads the profile, closes bwrap, writes DRIFT and one log line
ok 89 - row 240 enforce: each failure exits 0, unloads the profile, closes bwrap, writes DRIFT and one log line
---
duration_ms: 616.077934
type: 'test'
...
# Subtest: row 240 enforce: with DRIFT present and every item passing, it still closes bwrap
ok 90 - row 240 enforce: with DRIFT present and every item passing, it still closes bwrap
---
duration_ms: 88.894987
type: 'test'
...
# Subtest: row 240 enforce: no unload when aa-status lists neither bwrap profile; never writes the statoverride
ok 91 - row 240 enforce: no unload when aa-status lists neither bwrap profile; never writes the statoverride
---
duration_ms: 647.058203
type: 'test'
...
# Subtest: row 240 upstream: a candidate whose profile differs prints the difference and exits 0
ok 92 - row 240 upstream: a candidate whose profile differs prints the difference and exits 0
---
duration_ms: 111.023311
type: 'test'
...
# Subtest: row 240 boot unit: a oneshot after apparmor and before the bus that runs --enforce
ok 93 - row 240 boot unit: a oneshot after apparmor and before the bus that runs --enforce
---
duration_ms: 0.415955
type: 'test'
...
# Subtest: row 240 pins and usage: the shipped pins are r6's, the script reads the pins beside it, and bad usage exits 2
ok 94 - row 240 pins and usage: the shipped pins are r6's, the script reads the pins beside it, and bad usage exits 2
---
duration_ms: 93.187863
type: 'test'
...
# Subtest: stage takes each profile's SOUL.md byte for byte and prints the pairing with sizes and digests
ok 95 - stage takes each profile's SOUL.md byte for byte and prints the pairing with sizes and digests
---
duration_ms: 121.549132
type: 'test'
...
# Subtest: stage lists the per-channel prompts in all three places by name and byte count only
ok 96 - stage lists the per-channel prompts in all three places by name and byte count only
---
duration_ms: 110.39724
type: 'test'
...
# Subtest: a config key with a newline prints as one quoted line
ok 97 - a config key with a newline prints as one quoted line
---
duration_ms: 105.51663
type: 'test'
...
# Subtest: a read trace shows stage and the dry run open SOUL.md and config.yaml and never memory, sessions or secrets
ok 98 - a read trace shows stage and the dry run open SOUL.md and config.yaml and never memory, sessions or secrets
---
duration_ms: 204.792585
type: 'test'
...
# Subtest: the pairing refuses anything but two existing profiles naming Bean and Chet once each, and writes nothing
ok 99 - the pairing refuses anything but two existing profiles naming Bean and Chet once each, and writes nothing
---
duration_ms: 829.439309
type: 'test'
...
# Subtest: a profile with no persona refuses: no SOUL.md, a blank one, a symlink, not UTF-8
ok 100 - a profile with no persona refuses: no SOUL.md, a blank one, a symlink, not UTF-8
---
duration_ms: 714.950922
type: 'test'
...
# Subtest: the import applies C2-08's exported fence at its boundaries
ok 101 - the import applies C2-08's exported fence at its boundaries
---
duration_ms: 815.919176
type: 'test'
...
# Subtest: install writes 0600 persona files in 0700 directories whose digests match, and prints the vars
ok 102 - install writes 0600 persona files in 0700 directories whose digests match, and prints the vars
---
duration_ms: 189.848555
type: 'test'
...
# Subtest: install refuses an open or foreign staging file, a digest off the manifest and an existing persona
ok 103 - install refuses an open or foreign staging file, a digest off the manifest and an existing persona
---
duration_ms: 950.617115
type: 'test'
...
# Subtest: --dry-run writes nothing and prints only counts and the fence fault, two heading lines in a fixture counted
ok 104 - --dry-run writes nothing and prints only counts and the fence fault, two heading lines in a fixture counted
---
duration_ms: 90.984754
type: 'test'
...
# Subtest: --dry-run applies C2-08's fence: over it the fault prints, nothing is written and it exits 1
ok 105 - --dry-run applies C2-08's fence: over it the fault prints, nothing is written and it exits 1
---
duration_ms: 173.016955
type: 'test'
...
# Subtest: a directory made between the check and mkdir refuses by name, at stage and at install
ok 106 - a directory made between the check and mkdir refuses by name, at stage and at install
---
duration_ms: 294.147928
type: 'test'
...
# Subtest: --dry-run counts three lines naming a Hermes tool or channel and prints none of the words
ok 107 - --dry-run counts three lines naming a Hermes tool or channel and prints none of the words
---
duration_ms: 93.803704
type: 'test'
...
# Subtest: usage: stage needs one of --staging and --dry-run, install takes only its own options
ok 108 - usage: stage needs one of --staging and --dry-run, install takes only its own options
---
duration_ms: 602.224834
type: 'test'
...
# Subtest: a clean library render writes both units 0644 with the fixed lines, and enables both then starts the bus then the Console
ok 109 - a clean library render writes both units 0644 with the fixed lines, and enables both then starts the bus then the Console
---
duration_ms: 257.999107
type: 'test'
...
# Subtest: PATH starts with the --node directory, for a node outside the default list and for /usr/bin/node
ok 110 - PATH starts with the --node directory, for a node outside the default list and for /usr/bin/node
---
duration_ms: 238.927545
type: 'test'
...
# Subtest: a failed bus start refuses with the Console not started
ok 111 - a failed bus start refuses with the Console not started
---
duration_ms: 223.92486
type: 'test'
...
# Subtest: the script never links a unit file
ok 112 - the script never links a unit file
---
duration_ms: 0.315761
type: 'test'
...
# Subtest: factory renders --pm once and one MOSAIC_CLAUDE_BIN line, and without them both tokens render empty
ok 113 - factory renders --pm once and one MOSAIC_CLAUDE_BIN line, and without them both tokens render empty
---
duration_ms: 468.523037
type: 'test'
...
# Subtest: a re-install over running units says they are still on the old copy and must restart together, never that it started them
ok 114 - a re-install over running units says they are still on the old copy and must restart together, never that it started them
---
duration_ms: 938.580591
type: 'test'
...
# Subtest: a re-install to another copy re-renders both units, and an edited installed unit refuses
ok 115 - a re-install to another copy re-renders both units, and an edited installed unit refuses
---
duration_ms: 2188.76637
type: 'test'
...
# Subtest: a template with a namespace, user or system call restriction refuses
ok 116 - a template with a namespace, user or system call restriction refuses
---
duration_ms: 569.12781
type: 'test'
...
# Subtest: the bus template's EnvironmentFile line must be there and point at the session env, and the Console template must have none
ok 117 - the bus template's EnvironmentFile line must be there and point at the session env, and the Console template must have none
---
duration_ms: 421.502467
type: 'test'
...
# Subtest: a template holding an unknown token, PermissionsStartOnly or a privileged Exec prefix refuses
ok 118 - a template holding an unknown token, PermissionsStartOnly or a privileged Exec prefix refuses
---
duration_ms: 361.864019
type: 'test'
...
# Subtest: a symlink at either unit path refuses
ok 119 - a symlink at either unit path refuses
---
duration_ms: 364.330196
type: 'test'
...
# Subtest: a --node that is relative, not root-owned or under <home> refuses
ok 120 - a --node that is relative, not root-owned or under <home> refuses
---
duration_ms: 38.350955
type: 'test'
...
# Subtest: a re-install with a different --node or different serve flags refuses
ok 121 - a re-install with a different --node or different serve flags refuses
---
duration_ms: 1214.571395
type: 'test'
...
# Subtest: an installed pair whose units name different copies refuses
ok 122 - an installed pair whose units name different copies refuses
---
duration_ms: 694.076054
type: 'test'
...
# Subtest: a copy id that is short, uppercase, holds / or .., or names no directory refuses
ok 123 - a copy id that is short, uppercase, holds / or .., or names no directory refuses
---
duration_ms: 59.404202
type: 'test'
...
# Subtest: library refuses a privileged-floor miss, a bad proof pair and every flag outside its set
ok 124 - library refuses a privileged-floor miss, a bad proof pair and every flag outside its set
---
duration_ms: 622.623695
type: 'test'
...
# Subtest: library refuses a proof file not owned by <user>'s uid
ok 125 - library refuses a proof file not owned by <user>'s uid
---
duration_ms: 44.530765
type: 'test'
...
# Subtest: factory refuses a tester port on --port, a missing --port or --business, and each proxy flag
ok 126 - factory refuses a tester port on --port, a missing --port or --business, and each proxy flag
---
duration_ms: 389.371734
type: 'test'
...
# Subtest: factory: the tester port equal to --port refuses
ok 127 - factory: the tester port equal to --port refuses
---
duration_ms: 26.791955
type: 'test'
...
# Subtest: factory refuses a --claude that is relative, not root-owned or under <home>, and a re-install with another --pm or --claude
ok 128 - factory refuses a --claude that is relative, not root-owned or under <home>, and a re-install with another --pm or --claude
---
duration_ms: 1023.855874
type: 'test'
...
# Subtest: the precheck passes on a good host and prints free memory, without the key
ok 129 - the precheck passes on a good host and prints free memory, without the key
---
duration_ms: 189.629484
type: 'test'
...
# Subtest: the precheck refuses each failed host check
ok 130 - the precheck refuses each failed host check
---
duration_ms: 1667.9219
type: 'test'
...
# Subtest: the precheck refuses a user missing from passwd, a business file that does not load, and a symlinked run root
ok 131 - the precheck refuses a user missing from passwd, a business file that does not load, and a symlinked run root
---
duration_ms: 1057.059206
type: 'test'
...
# Subtest: a bwrap that fails refuses and prints the sysctl and where bwrap is
ok 132 - a bwrap that fails refuses and prints the sysctl and where bwrap is
---
duration_ms: 188.250836
type: 'test'
...
# Subtest: an unprivileged port floor at or below the Console's port refuses, and so does a missing Console unit
ok 133 - an unprivileged port floor at or below the Console's port refuses, and so does a missing Console unit
---
duration_ms: 872.347861
type: 'test'
...
# Subtest: bus.tester: library refuses it on, factory needs it on, and factory refuses a library business
ok 134 - bus.tester: library refuses it on, factory needs it on, and factory refuses a library business
---
duration_ms: 734.494829
type: 'test'
...
# Subtest: the claude check runs only for a claude-code instance, and refuses a claude that appends or answers wrong
ok 135 - the claude check runs only for a claude-code instance, and refuses a claude that appends or answers wrong
---
duration_ms: 1675.214999
type: 'test'
...
# Subtest: the claude check runs the bus unit's MOSAIC_CLAUDE_BIN over claude on PATH
ok 136 - the claude check runs the bus unit's MOSAIC_CLAUDE_BIN over claude on PATH
---
duration_ms: 445.118664
type: 'test'
...
# Subtest: the session env file refuses when missing, open to others, a symlink, empty, or emptied by a later line
ok 137 - the session env file refuses when missing, open to others, a symlink, empty, or emptied by a later line
---
duration_ms: 1034.102797
type: 'test'
...
# Subtest: inside a session's sandbox a bind below 1024 fails with EACCES, and a bind on a free high port succeeds
ok 138 - inside a session's sandbox a bind below 1024 fails with EACCES, and a bind on a free high port succeeds
---
duration_ms: 157.422757
type: 'test'
...
# Subtest: CLI off, absent and other-only channel selections refuse every project/thread flow before any effect
ok 139 - CLI off, absent and other-only channel selections refuse every project/thread flow before any effect
---
duration_ms: 25.625456
type: 'test'
...
# Subtest: CLI enabled project/thread lists dispatch through selection without changing output
ok 140 - CLI enabled project/thread lists dispatch through selection without changing output
---
duration_ms: 2.676726
type: 'test'
...
# Subtest: both channels off recover through the existing human CLI, socket and organization writer
ok 141 - both channels off recover through the existing human CLI, socket and organization writer
---
duration_ms: 3988.998291
type: 'test'
...
# Subtest: inbox lists only decisions routed to the human, with what approving authorizes and how to decide
ok 142 - inbox lists only decisions routed to the human, with what approving authorizes and how to decide
---
duration_ms: 49.635942
type: 'test'
...
# Subtest: decide resolves by id prefix with --yes, and the trail shows it in broker order with the task to follow
ok 143 - decide resolves by id prefix with --yes, and the trail shows it in broker order with the task to follow
---
duration_ms: 38.652846
type: 'test'
...
# Subtest: decide refuses without a terminal or --yes, on an unknown option and on a short reference
ok 144 - decide refuses without a terminal or --yes, on an unknown option and on a short reference
---
duration_ms: 36.9195
type: 'test'
...
# Subtest: decide prints a declining choice as declining
ok 145 - decide prints a declining choice as declining
---
duration_ms: 37.209601
type: 'test'
...
# Subtest: an unknown outcome is reported once and never resent
ok 146 - an unknown outcome is reported once and never resent
---
duration_ms: 30.655904
type: 'test'
...
# Subtest: a decision closed before the answer arrives exits 2 and points at its trail
ok 147 - a decision closed before the answer arrives exits 2 and points at its trail
---
duration_ms: 30.960287
type: 'test'
...
# Subtest: a prefix that matches two open decisions exits 2 and resolves neither
ok 148 - a prefix that matches two open decisions exits 2 and resolves neither
---
duration_ms: 33.137182
type: 'test'
...
# Subtest: without --business a command uses the live host's business, and a stale host.json is not a host
ok 149 - without --business a command uses the live host's business, and a stale host.json is not a host
---
duration_ms: 32.663968
type: 'test'
...
# Subtest: every human command refuses inside an agent run before it touches the bus
ok 150 - every human command refuses inside an agent run before it touches the bus
---
duration_ms: 32.562363
type: 'test'
...
# Subtest: usage errors exit 4; no business and no host is a usage error
ok 151 - usage errors exit 4; no business and no host is a usage error
---
duration_ms: 28.061603
type: 'test'
...
# Subtest: agents and tasks print through the broker
ok 152 - agents and tasks print through the broker
---
duration_ms: 22.866393
type: 'test'
...
# Subtest: notify.json: missing, loose, malformed and extra keys refuse; a binding or null passes
ok 153 - notify.json: missing, loose, malformed and extra keys refuse; a binding or null passes
---
duration_ms: 2.257252
type: 'test'
...
# Subtest: bootConfig builds the broker's boot message for one business, with no trackers key when no project names one
ok 154 - bootConfig builds the broker's boot message for one business, with no trackers key when no project names one
---
duration_ms: 86.79554
type: 'test'
...
# Subtest: trackers come from the tracker.* variables of the one project that names a tracker project
ok 155 - trackers come from the tracker.* variables of the one project that names a tracker project
---
duration_ms: 133.538861
type: 'test'
...
# Subtest: with two projects, the one that sets tracker.project supplies the tracker and the other is no conflict
ok 156 - with two projects, the one that sets tracker.project supplies the tracker and the other is no conflict
---
duration_ms: 66.885351
type: 'test'
...
# Subtest: two projects that each name a tracker project refuse, since the boot shape holds one
ok 157 - two projects that each name a tracker project refuse, since the boot shape holds one
---
duration_ms: 61.065795
type: 'test'
...
# Subtest: a business without tracker.baseUrl gets no trackers entry
ok 158 - a business without tracker.baseUrl gets no trackers entry
---
duration_ms: 66.17803
type: 'test'
...
# Subtest: an unknown business and a broken system config refuse with exit 3
ok 159 - an unknown business and a broken system config refuse with exit 3
---
duration_ms: 103.273962
type: 'test'
...
# Subtest: row 199: issue and rotate send the stdin token once to credentials.issue and print no value
ok 160 - row 199: issue and rotate send the stdin token once to credentials.issue and print no value
---
duration_ms: 14.541698
type: 'test'
...
# Subtest: row 199: rotate goes ahead on each held state, rotation-due included, and refuses not-issued, revoked and an unknown entry
ok 161 - row 199: rotate goes ahead on each held state, rotation-due included, and refuses not-issued, revoked and an unknown entry
---
duration_ms: 5.889299
type: 'test'
...
# Subtest: row 199: status, revoke and delete; the tester runs status and revoke only
ok 162 - row 199: status, revoke and delete; the tester runs status and revoke only
---
duration_ms: 5.202263
type: 'test'
...
# Subtest: row 210: issue of a host.<id> kind prints public material only
ok 163 - row 210: issue of a host.<id> kind prints public material only
---
duration_ms: 2.756895
type: 'test'
...
# Subtest: row 199: scripts/mosaic sends credentials to packages/cli, not the seat CLI
ok 164 - row 199: scripts/mosaic sends credentials to packages/cli, not the seat CLI
---
duration_ms: 176.524741
type: 'test'
...
# Subtest: follow prints an unsolicited message after plain talk returned
ok 165 - follow prints an unsolicited message after plain talk returned
---
duration_ms: 61.266647
type: 'test'
...
# Subtest: talk --follow continues after reply and prints a later unsolicited message
ok 166 - talk --follow continues after reply and prints a later unsolicited message
---
duration_ms: 56.557092
type: 'test'
...
# Subtest: inbox lists all unread human messages under decisions, does not deliver or read them
ok 167 - inbox lists all unread human messages under decisions, does not deliver or read them
---
duration_ms: 705.511405
type: 'test'
...
# Subtest: follow refuses agent context and bad arguments
ok 168 - follow refuses agent context and bad arguments
---
duration_ms: 34.593772
type: 'test'
...
# Subtest: follow Ctrl-C wakes the poll sleep and removes its handler; transport errors also clean up
ok 169 - follow Ctrl-C wakes the poll sleep and removes its handler; transport errors also clean up
---
duration_ms: 36.135911
type: 'test'
...
# Subtest: plain talk leaves the process SIGINT handlers unchanged
ok 170 - plain talk leaves the process SIGINT handlers unchanged
---
duration_ms: 38.852326
type: 'test'
...
# Subtest: empty views say so
ok 171 - empty views say so
---
duration_ms: 1.120481
type: 'test'
...
# Subtest: the trail keeps the broker's order and names a decision's task without its rows
ok 172 - the trail keeps the broker's order and names a decision's task without its rows
---
duration_ms: 2.98189
type: 'test'
...
# Subtest: tasks print the tracker fields the snapshot carries
ok 173 - tasks print the tracker fields the snapshot carries
---
duration_ms: 0.274719
type: 'test'
...
# Subtest: guardDocker refuses a compose run unless PI_AUTH_FILE is a regular file inside the lane temp root
ok 174 - guardDocker refuses a compose run unless PI_AUTH_FILE is a regular file inside the lane temp root
---
duration_ms: 6.083655
type: 'test'
...
# Subtest: cleanEnv points PI_AUTH_FILE at the lane fixture and drops MOSAIC_LIVE_PROVIDER
ok 175 - cleanEnv points PI_AUTH_FILE at the lane fixture and drops MOSAIC_LIVE_PROVIDER
---
duration_ms: 1.002274
type: 'test'
...
# Subtest: test-release.sh activates through the mock adapter with a 0600 fixture auth file
ok 176 - test-release.sh activates through the mock adapter with a 0600 fixture auth file
---
duration_ms: 2371.094256
type: 'test'
...
# {"script":"test-release.sh","extra":[],"wallMs":2209,"status":0}
# Subtest: test-task.sh mounts only its fixture, uses only the mock adapter and prints the live skip twice
ok 177 - test-task.sh mounts only its fixture, uses only the mock adapter and prints the live skip twice
---
duration_ms: 13269.10728
type: 'test'
...
# {"script":"test-task.sh","extra":[],"wallMs":13128,"status":1}
# Subtest: M-T: MOSAIC_LIVE_PROVIDER=1 runs the real-model cases, which fail under a fixture auth file
ok 178 - M-T: MOSAIC_LIVE_PROVIDER=1 runs the real-model cases, which fail under a fixture auth file
---
duration_ms: 12013.292613
type: 'test'
...
# {"script":"test-task.sh","extra":["MOSAIC_LIVE_PROVIDER","PI_AUTH_FILE"],"wallMs":11909,"status":1}
# Subtest: parallel lease holders use only the active lane and its shared state
ok 179 - parallel lease holders use only the active lane and its shared state
---
duration_ms: 33.733848
type: 'test'
...
# Subtest: unrelated home changes do not become lane writes, and own-root references do
ok 180 - unrelated home changes do not become lane writes, and own-root references do
---
duration_ms: 0.754112
type: 'test'
...
# Subtest: proof summaries refuse missing timings, non-overlap and a pair without a lane swap
ok 181 - proof summaries refuse missing timings, non-overlap and a pair without a lane swap
---
duration_ms: 1.494585
type: 'test'
...
# Subtest: an exhausted single-port band refuses, and an occupied foreign listener survives the probe
ok 182 - an exhausted single-port band refuses, and an occupied foreign listener survives the probe
---
duration_ms: 17.011521
type: 'test'
...
# Subtest: parallel child allocators share real lane locks; a lease remains held through child shutdown
ok 183 - parallel child allocators share real lane locks; a lease remains held through child shutdown
---
duration_ms: 244.687629
type: 'test'
...
# Subtest: abrupt allocator death releases its holder without touching a foreign lease
ok 184 - abrupt allocator death releases its holder without touching a foreign lease
---
duration_ms: 95.85464
type: 'test'
...
# Subtest: fixture caches survive a replacement environment with a separate tmp subdirectory
ok 185 - fixture caches survive a replacement environment with a separate tmp subdirectory
---
duration_ms: 40.557492
type: 'test'
...
# Subtest: an unrelated session can append while a supervised step runs without becoming an attributed write
ok 186 - an unrelated session can append while a supervised step runs without becoming an attributed write
---
duration_ms: 66.791014
type: 'test'
...
# Subtest: a changed COPY input or actual image ID refuses compatible image sharing
ok 187 - a changed COPY input or actual image ID refuses compatible image sharing
---
duration_ms: 10.525107
type: 'test'
...
# Subtest: warm Docker guard disables implicit build and pull and refuses image mutation
ok 188 - warm Docker guard disables implicit build and pull and refuses image mutation
---
duration_ms: 2.919681
type: 'test'
...
# Subtest: exclusive image preparation records actual image ID and build wall time and requires a grant
ok 189 - exclusive image preparation records actual image ID and build wall time and requires a grant
---
duration_ms: 6.324569
type: 'test'
...
# Subtest: cleanup refuses a foreign Docker label and removes only an exact owned project
ok 190 - cleanup refuses a foreign Docker label and removes only an exact owned project
---
duration_ms: 0.750533
type: 'test'
...
# Subtest: missing receipt and missing image refuse without permitting a gate
ok 191 - missing receipt and missing image refuse without permitting a gate
---
duration_ms: 5.038004
type: 'test'
...
# Subtest: a tag changed between supervised steps fails the next boundary and suppresses gate success
ok 192 - a tag changed between supervised steps fails the next boundary and suppresses gate success
---
duration_ms: 53.382901
type: 'test'
...
# Subtest: mutable-base rebuilds with identical files have distinct image IDs; cold and warm counters stay separate
ok 193 - mutable-base rebuilds with identical files have distinct image IDs; cold and warm counters stay separate
---
duration_ms: 7.007073
type: 'test'
...
# Subtest: warm pinned execution records zero builds and checks the tag again after its final step
ok 194 - warm pinned execution records zero builds and checks the tag again after its final step
---
duration_ms: 106.981073
type: 'test'
...
# Subtest: installed Compose accepts rewritten run argv without starting a container
ok 195 - installed Compose accepts rewritten run argv without starting a container
---
duration_ms: 69.811435
type: 'test'
...
# Subtest: installed Compose resolves the private override with no build and the pinned image
ok 196 - installed Compose resolves the private override with no build and the pinned image
---
duration_ms: 115.313172
type: 'test'
...
# {"installedComposeConfig":{"buildPresent":false,"image":"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}}
# Subtest: guard owns every Compose file argument and refuses caller configuration overrides
ok 197 - guard owns every Compose file argument and refuses caller configuration overrides
---
duration_ms: 1.320213
type: 'test'
...
# Subtest: changing packages/processing-control/src/state.mjs invalidates the image receipt
ok 198 - changing packages/processing-control/src/state.mjs invalidates the image receipt
---
duration_ms: 2.93364
type: 'test'
...
# Subtest: changing packages/processing-control/src/entrypoint.mjs invalidates the image receipt
ok 199 - changing packages/processing-control/src/entrypoint.mjs invalidates the image receipt
---
duration_ms: 2.790017
type: 'test'
...
# Subtest: unfinished dead-owner runs quarantine their lane and a recovery record clears only that run
ok 200 - unfinished dead-owner runs quarantine their lane and a recovery record clears only that run
---
duration_ms: 10.832435
type: 'test'
...
# Subtest: a legacy landing gate beside a lane stays legacy even with the same parent
ok 201 - a legacy landing gate beside a lane stays legacy even with the same parent
---
duration_ms: 4.003327
type: 'test'
...
# Subtest: the shell status entry reads scratch receipts and reports legacy processes without mutating old slots
ok 202 - the shell status entry reads scratch receipts and reports legacy processes without mutating old slots
---
duration_ms: 116.099265
type: 'test'
...
# Subtest: recovery supersedes an unclean terminal without rewriting either receipt
ok 203 - recovery supersedes an unclean terminal without rewriting either receipt
---
duration_ms: 3.470594
type: 'test'
...
# Subtest: the wrapper refuses a held lane lock and preserves its inode
ok 204 - the wrapper refuses a held lane lock and preserves its inode
---
duration_ms: 87.325505
type: 'test'
...
# Subtest: a held kernel lock without a start receipt is BUSY rather than CLEAR
ok 205 - a held kernel lock without a start receipt is BUSY rather than CLEAR
---
duration_ms: 10.395289
type: 'test'
...
# Subtest: SIGKILL leaves a quarantined run and locked recovery publishes a new clean receipt
ok 206 - SIGKILL leaves a quarantined run and locked recovery publishes a new clean receipt
---
duration_ms: 435.499849
type: 'test'
...
# Subtest: a malformed receipt refuses status and an identity mismatch cannot look live
ok 207 - a malformed receipt refuses status and an identity mismatch cannot look live
---
duration_ms: 2.643759
type: 'test'
...
# Subtest: a symlink lock is refused before acquiring or replacing its target
ok 208 - a symlink lock is refused before acquiring or replacing its target
---
duration_ms: 65.57954
type: 'test'
...
# Subtest: failed recovery keeps quarantine and never publishes a clean recovery receipt
ok 209 - failed recovery keeps quarantine and never publishes a clean recovery receipt
---
duration_ms: 366.845447
type: 'test'
...
# Subtest: two shared image holders coexist, but exclusive preparation refuses their lock
ok 210 - two shared image holders coexist, but exclusive preparation refuses their lock
---
duration_ms: 207.7755
type: 'test'
...
# Subtest: two simultaneous shell claims have one winner; supervisor retains lock FDs and ordinary children do not
ok 211 - two simultaneous shell claims have one winner; supervisor retains lock FDs and ordinary children do not
---
duration_ms: 176.745295
type: 'test'
...
# Subtest: same checkout and a legacy land gate each refuse a claim on an otherwise free lane
ok 212 - same checkout and a legacy land gate each refuse a claim on an otherwise free lane
---
duration_ms: 6.4834
type: 'test'
...
# Subtest: recovery kills a proven surviving child, preserves a foreign child and keeps quarantine if interrupted
ok 213 - recovery kills a proven surviving child, preserves a foreign child and keeps quarantine if interrupted
---
duration_ms: 853.415851
type: 'test'
...
# Subtest: preflight refuses unsafe lane roots, missing grants and live port 9 before side effects
ok 214 - preflight refuses unsafe lane roots, missing grants and live port 9 before side effects
---
duration_ms: 62.040912
type: 'test'
...
# Subtest: discovery preserves all package and script steps while ignoring non-file shell names
ok 215 - discovery preserves all package and script steps while ignoring non-file shell names
---
duration_ms: 27.053225
type: 'test'
...
# Subtest: a failed step stops the gate and records its nonzero exit without running the next step
ok 216 - a failed step stops the gate and records its nonzero exit without running the next step
---
duration_ms: 34.948367
type: 'test'
...
# Subtest: a cancelled step stops its process group and records failure
ok 217 - a cancelled step stops its process group and records failure
---
duration_ms: 138.698664
type: 'test'
...
# Subtest: step receipts retain pass fail skipped counts and hashes of their actual logs
ok 218 - step receipts retain pass fail skipped counts and hashes of their actual logs
---
duration_ms: 84.08579
type: 'test'
...
# Subtest: preflight rejects a real 31-byte root, missing dependency tree, occupied band and missing inventory
ok 219 - preflight rejects a real 31-byte root, missing dependency tree, occupied band and missing inventory
---
duration_ms: 60.32659
type: 'test'
...
# Subtest: preflight refuses canonical and builder checkouts and an existing output
ok 220 - preflight refuses canonical and builder checkouts and an existing output
---
duration_ms: 33.857873
type: 'test'
...
# Subtest: both candidates must carry every approved launcher file
ok 221 - both candidates must carry every approved launcher file
---
duration_ms: 25.88224
type: 'test'
...
# Subtest: the 92-byte socket example passes and an over-107-byte pathname refuses
ok 222 - the 92-byte socket example passes and an over-107-byte pathname refuses
---
duration_ms: 0.311833
type: 'test'
...
# Subtest: package/script duplicates stay and every supervised step clears NODE_TEST_CONTEXT
ok 223 - package/script duplicates stay and every supervised step clears NODE_TEST_CONTEXT
---
duration_ms: 117.000123
type: 'test'
...
# Subtest: scoped ss loopback and wildcard port 9 listeners refuse
ok 224 - scoped ss loopback and wildcard port 9 listeners refuse
---
duration_ms: 63.486971
type: 'test'
...
# Subtest: step children use legacy umask 022 while the supervisor retains 077
ok 225 - step children use legacy umask 022 while the supervisor retains 077
---
duration_ms: 69.832241
type: 'test'
...
# Subtest: lane wrapper keeps its state directory and lock files private
ok 226 - lane wrapper keeps its state directory and lock files private
---
duration_ms: 173.788705
type: 'test'
...
# Subtest: the review loop: the coder pushes and asks, the reviewer fetches and approves, and the task's trail holds each step
ok 227 - the review loop: the coder pushes and asks, the reviewer fetches and approves, and the task's trail holds each step
---
duration_ms: 1771.623239
type: 'test'
...
# Subtest: refusals: no action, non-fast-forward, an unknown commit or request, and a push for another task moves only that task's ref
ok 228 - refusals: no action, non-fast-forward, an unknown commit or request, and a push for another task moves only that task's ref
---
duration_ms: 1543.588489
type: 'test'
...
# Subtest: the size cap refuses a push before any byte
ok 229 - the size cap refuses a push before any byte
---
duration_ms: 460.190162
type: 'test'
...
# Subtest: a fetch over the cap refuses before any byte reaches the reviewer
ok 230 - a fetch over the cap refuses before any byte reaches the reviewer
---
duration_ms: 1524.331505
type: 'test'
...
# Subtest: the socket refuses a request with no capability, an unknown one, and a bad request line
ok 231 - the socket refuses a request with no capability, an unknown one, and a bad request line
---
duration_ms: 697.233291
type: 'test'
...
# Subtest: a rigged clone runs nothing: hooks, fsmonitor, a filter, a gitlink and a symlinked .git/config leave no marker
ok 232 - a rigged clone runs nothing: hooks, fsmonitor, a filter, a gitlink and a symlinked .git/config leave no marker
---
duration_ms: 1406.19931
type: 'test'
...
# Subtest: an identity with no role, or of another business, refuses not-a-role and moves no ref
ok 233 - an identity with no role, or of another business, refuses not-a-role and moves no ref
---
duration_ms: 986.775832
type: 'test'
...
# Subtest: a review of a project the business no longer has refuses unknown-project
ok 234 - a review of a project the business no longer has refuses unknown-project
---
duration_ms: 875.905605
type: 'test'
...
# Subtest: past maxActive connections the socket refuses git-busy, and a hung-up connection frees its slot
ok 235 - past maxActive connections the socket refuses git-busy, and a hung-up connection frees its slot
---
duration_ms: 411.774976
type: 'test'
...
# Subtest: close() answers host-closing to a connection still sending its request line
ok 236 - close() answers host-closing to a connection still sending its request line
---
duration_ms: 416.317511
type: 'test'
...
# Subtest: a bundle that trickles in refuses body-timeout at its deadline and frees its slot
ok 237 - a bundle that trickles in refuses body-timeout at its deadline and frees its slot
---
duration_ms: 841.018492
type: 'test'
...
# Subtest: a reviewer gone before its bundle was sent is filed fetch-aborted, not as the host's fault
ok 238 - a reviewer gone before its bundle was sent is filed fetch-aborted, not as the host's fault
---
duration_ms: 1402.735983
type: 'test'
...
# Subtest: a reviewer that hangs up the moment it has the whole bundle was served, not aborted
ok 239 - a reviewer that hangs up the moment it has the whole bundle was served, not aborted
---
duration_ms: 2868.287225
type: 'test'
...
# Subtest: send: a close after every byte left is served; one that fails a queued write is fetch-aborted
ok 240 - send: a close after every byte left is served; one that fails a queued write is fetch-aborted
---
duration_ms: 43.760803
type: 'test'
...
# Subtest: a bundle with no bytes for bodyIdle refuses body-timeout long before its deadline
ok 241 - a bundle with no bytes for bodyIdle refuses body-timeout long before its deadline
---
duration_ms: 698.275536
type: 'test'
...
# Subtest: send: a close once the loop is past its last chunk is served, and a failed write there is fetch-aborted
ok 242 - send: a close once the loop is past its last chunk is served, and a failed write there is fetch-aborted
---
duration_ms: 55.37159
type: 'test'
...
# Subtest: letGo waits for an answer to leave for at most its cap, then destroys the socket
ok 243 - letGo waits for an answer to leave for at most its cap, then destroys the socket
---
duration_ms: 300.966624
type: 'test'
...
# Subtest: a record that fails and can't be undone refuses rollback-failed, which the host logs
ok 244 - a record that fails and can't be undone refuses rollback-failed, which the host logs
---
duration_ms: 838.771542
type: 'test'
...
# Subtest: land: the squash runs the gate in its own worktree, then main moves and the broker records it
ok 245 - land: the squash runs the gate in its own worktree, then main moves and the broker records it
---
duration_ms: 1322.304465
type: 'test'
...
# Subtest: land: an arbiter-resolved landing's squash says the arbiter resolved it through the broker
ok 246 - land: an arbiter-resolved landing's squash says the arbiter resolved it through the broker
---
duration_ms: 1163.825768
type: 'test'
...
# Subtest: land: refusals before the gate answer the role at once and leave main and no worktree
ok 247 - land: refusals before the gate answer the role at once and leave main and no worktree
---
duration_ms: 1268.592862
type: 'test'
...
# Subtest: land: a failed gate is refused gate-failed with its step, told to the role, and main stays
ok 248 - land: a failed gate is refused gate-failed with its step, told to the role, and main stays
---
duration_ms: 1112.730168
type: 'test'
...
# Subtest: land: a record the broker refuses moves main back, and the landing is refused with the broker's code
ok 249 - land: a record the broker refuses moves main back, and the landing is refused with the broker's code
---
duration_ms: 1214.794028
type: 'test'
...
# Subtest: land: a second landing while one runs refuses land-busy, and close() stops the gate and refuses host-closing
ok 250 - land: a second landing while one runs refuses land-busy, and close() stops the gate and refuses host-closing
---
duration_ms: 1056.100231
type: 'test'
...
# Subtest: the host boots the broker, binds a launch in process, and the notifier DMs a blocking decision exactly once
ok 251 - the host boots the broker, binds a launch in process, and the notifier DMs a blocking decision exactly once
---
duration_ms: 1195.920359
type: 'test'
...
# Subtest: a notifier that dies takes the host down with exit 1, so the unit restarts the pair
ok 252 - a notifier that dies takes the host down with exit 1, so the unit restarts the pair
---
duration_ms: 471.150053
type: 'test'
...
# Subtest: a second host for the same data root refuses with exit 3 while the first runs
ok 253 - a second host for the same data root refuses with exit 3 while the first runs
---
duration_ms: 307.395864
type: 'test'
...
# Subtest: two bus starts racing for one data root leave one host running; the other refuses that a host already runs
ok 254 - two bus starts racing for one data root leave one host running; the other refuses that a host already runs
---
duration_ms: 942.065765
type: 'test'
...
# Subtest: a host takes over a host.lock its dead host left, and puts back a live claim that replaced it meanwhile
ok 255 - a host takes over a host.lock its dead host left, and puts back a live claim that replaced it meanwhile
---
duration_ms: 2.101031
type: 'test'
...
# Subtest: a host.lock that goes between the check and the read is tried again; one that can't be parsed still refuses as unreadable
ok 256 - a host.lock that goes between the check and the read is tried again; one that can't be parsed still refuses as unreadable
---
duration_ms: 1.244753
type: 'test'
...
# Subtest: a live host's lock stays, however old the file is
ok 257 - a live host's lock stays, however old the file is
---
duration_ms: 0.928594
type: 'test'
...
# Subtest: a host.lock left by a host killed with SIGKILL doesn't stop the next bus start
ok 258 - a host.lock left by a host killed with SIGKILL doesn't stop the next bus start
---
duration_ms: 1442.336532
type: 'test'
...
# Subtest: while a host boots, a reader sees no host: the human commands still ask for --business, stop and status find none
ok 259 - while a host boots, a reader sees no host: the human commands still ask for --business, stop and status find none
---
duration_ms: 477.464089
type: 'test'
...
# Subtest: a host started before host.lock existed, holding only host.json, still refuses a second start, which leaves no lock
ok 260 - a host started before host.lock existed, holding only host.json, still refuses a second start, which leaves no lock
---
duration_ms: 64.219339
type: 'test'
...
# Subtest: a broker fork that throws leaves no host.lock and no host.json
ok 261 - a broker fork that throws leaves no host.lock and no host.json
---
duration_ms: 57.660506
type: 'test'
...
# Subtest: a broker send that throws leaves no host.lock and no host.json
ok 262 - a broker send that throws leaves no host.lock and no host.json
---
duration_ms: 66.714588
type: 'test'
...
# Subtest: a broker that misses its boot wait leaves no host.lock and no host.json
ok 263 - a broker that misses its boot wait leaves no host.lock and no host.json
---
duration_ms: 67.36226
type: 'test'
...
# Subtest: a notifier fork that throws stops the broker and leaves no host.lock and no host.json
ok 264 - a notifier fork that throws stops the broker and leaves no host.lock and no host.json
---
duration_ms: 316.011139
type: 'test'
...
# Subtest: a notifier send that throws stops the broker and leaves no host.lock and no host.json
ok 265 - a notifier send that throws stops the broker and leaves no host.lock and no host.json
---
duration_ms: 323.795404
type: 'test'
...
# Subtest: 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
ok 266 - 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
---
duration_ms: 336.648689
type: 'test'
...
# Subtest: 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
ok 267 - 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
---
duration_ms: 319.500866
type: 'test'
...
# Subtest: a host.json that can't be written stops both children and leaves no host.lock
ok 268 - a host.json that can't be written stops both children and leaves no host.lock
---
duration_ms: 521.510333
type: 'test'
...
# Subtest: an error event on the broker before it replies fails the start at once, and leaves no host.lock and no live child
ok 269 - an error event on the broker before it replies fails the start at once, and leaves no host.lock and no live child
---
duration_ms: 69.742668
type: 'test'
...
# Subtest: an error event on the notifier before it replies fails the start at once, and leaves no host.lock and no live child
ok 270 - an error event on the notifier before it replies fails the start at once, and leaves no host.lock and no live child
---
duration_ms: 324.222452
type: 'test'
...
# Subtest: an error event on the broker while the notifier starts fails the start once the notifier replies
ok 271 - an error event on the broker while the notifier starts fails the start once the notifier replies
---
duration_ms: 505.897557
type: 'test'
...
# Subtest: 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
ok 272 - 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
---
duration_ms: 509.395736
type: 'test'
...
# Subtest: 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
ok 273 - 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
---
duration_ms: 493.257939
type: 'test'
...
# Subtest: a broker reply that misses the wait breaks the channel: the late reply answers nothing, later requests refuse, the host exits 1
ok 274 - a broker reply that misses the wait breaks the channel: the late reply answers nothing, later requests refuse, the host exits 1
---
duration_ms: 1328.611195
type: 'test'
...
# Subtest: a broker reply with another request's id, or none, breaks the channel and the host exits 1
ok 275 - a broker reply with another request's id, or none, breaks the channel and the host exits 1
---
duration_ms: 606.162376
type: 'test'
...
# Subtest: a broker reply with no request waiting breaks the channel and the host exits 1
ok 276 - a broker reply with no request waiting breaks the channel and the host exits 1
---
duration_ms: 296.668057
type: 'test'
...
# Subtest: a notifier that refuses stops the broker and the host refuses with exit 3
ok 277 - a notifier that refuses stops the broker and the host refuses with exit 3
---
duration_ms: 439.173266
type: 'test'
...
# Subtest: a notifier that refuses after the broker died still refuses with exit 3, without a send to the dead broker
ok 278 - a notifier that refuses after the broker died still refuses with exit 3, without a send to the dead broker
---
duration_ms: 434.953142
type: 'test'
...
# Subtest: a notifier that dies before it replies, after the broker died, still refuses, without a send to the dead broker
ok 279 - a notifier that dies before it replies, after the broker died, still refuses, without a send to the dead broker
---
duration_ms: 348.286066
type: 'test'
...
# Subtest: a close send that fails with EPIPE after the notifier refuses still gives the notifier's refusal, exit 3
ok 280 - a close send that fails with EPIPE after the notifier refuses still gives the notifier's refusal, exit 3
---
duration_ms: 383.715797
type: 'test'
...
# Subtest: a close send that fails with EPIPE after the notifier dies unanswered still gives the notifier's error
ok 281 - a close send that fails with EPIPE after the notifier dies unanswered still gives the notifier's error
---
duration_ms: 264.023528
type: 'test'
...
# Subtest: close() whose stop and close sends fail with EPIPE still finishes, with exit 1
ok 282 - close() whose stop and close sends fail with EPIPE still finishes, with exit 1
---
duration_ms: 395.486091
type: 'test'
...
# Subtest: watchChildren reports a child that died before it was called, and one that dies later
ok 283 - watchChildren reports a child that died before it was called, and one that dies later
---
duration_ms: 40.884504
type: 'test'
...
# Subtest: bus stop refuses to signal a live pid that is not a bus host
ok 284 - bus stop refuses to signal a live pid that is not a bus host
---
duration_ms: 203.455629
type: 'test'
...
# Subtest: bus start refuses with exit 3 and the code when the broker refuses to boot; bus status names the lock
ok 285 - bus start refuses with exit 3 and the code when the broker refuses to boot; bus status names the lock
---
duration_ms: 580.914083
type: 'test'
...
# Subtest: bus start refuses with exit 3 without a notifier config
ok 286 - bus start refuses with exit 3 without a notifier config
---
duration_ms: 225.801487
type: 'test'
...
# Subtest: bus start runs until bus stop; status reports it while it runs
ok 287 - bus start runs until bus stop; status reports it while it runs
---
duration_ms: 1348.438549
type: 'test'
...
# Subtest: bus start --no-launch says launches are disabled in its host-up line and stops cleanly; with --pm it is a usage error
ok 288 - bus start --no-launch says launches are disabled in its host-up line and stops cleanly; with --pm it is a usage error
---
duration_ms: 904.333175
type: 'test'
...
# Subtest: bus-service.sh renders the unit and installs it into a given directory
ok 289 - bus-service.sh renders the unit and installs it into a given directory
---
duration_ms: 342.122156
type: 'test'
...
# Subtest: bus-service.sh pins the claude binary, refuses one the unit can't carry, and renders without one
ok 290 - bus-service.sh pins the claude binary, refuses one the unit can't carry, and renders without one
---
duration_ms: 786.19254
type: 'test'
...
# Subtest: bus-service.sh refuses a directory pin and keeps a symlink default unresolved
ok 291 - bus-service.sh refuses a directory pin and keeps a symlink default unresolved
---
duration_ms: 173.383761
type: 'test'
...
# Subtest: bus-service.sh refuses a default claude without the execute bit, or in a PATH dir with a space
ok 292 - bus-service.sh refuses a default claude without the execute bit, or in a PATH dir with a space
---
duration_ms: 121.014594
type: 'test'
...
# Subtest: bus start --pm while halted keeps the control host up without launching the chief
ok 293 - bus start --pm while halted keeps the control host up without launching the chief
---
duration_ms: 669.887684
type: 'test'
...
# Subtest: row 234: hosts status prints one line per host, and --json the rows
ok 294 - row 234: hosts status prints one line per host, and --json the rows
---
duration_ms: 4.477321
type: 'test'
...
# Subtest: row 234: hosts check and remove send the host id, as the human or the tester
ok 295 - row 234: hosts check and remove send the host id, as the human or the tester
---
duration_ms: 0.891096
type: 'test'
...
# Subtest: row 234: a malformed hosts command is a usage error and calls nothing
ok 296 - row 234: a malformed hosts command is a usage error and calls nothing
---
duration_ms: 4.308912
type: 'test'
...
# Subtest: row 234: a bus refusal exits 2 with its code
ok 297 - row 234: a bus refusal exits 2 with its code
---
duration_ms: 1.063754
type: 'test'
...
# Subtest: row 234: scripts/mosaic sends hosts to packages/cli, not the seat CLI
ok 298 - row 234: scripts/mosaic sends hosts to packages/cli, not the seat CLI
---
duration_ms: 188.335849
type: 'test'
...
# Subtest: row 235: hosts revoke sends agent, host and reason, and sweep the host, as the human or the tester
ok 299 - row 235: hosts revoke sends agent, host and reason, and sweep the host, as the human or the tester
---
duration_ms: 0.869066
type: 'test'
...
# Subtest: row 235 (N10): revoke without --reason, --reason on another verb, and inherited names are usage errors
ok 300 - row 235 (N10): revoke without --reason, --reason on another verb, and inherited names are usage errors
---
duration_ms: 5.024818
type: 'test'
...
# Subtest: row 235: a status line shows the tags of a revoke in progress
ok 301 - row 235: a status line shows the tags of a revoke in progress
---
duration_ms: 0.771496
type: 'test'
...
# Subtest: row 165 CLI: instance add puts an instance in the file, validate exits 0, and the log names the human
ok 302 - row 165 CLI: instance add puts an instance in the file, validate exits 0, and the log names the human
---
duration_ms: 274.055164
type: 'test'
...
# Subtest: row 165 CLI: instance set passes the vars file and --no-launch, and a vars-only change needs no restart
ok 303 - row 165 CLI: instance set passes the vars file and --no-launch, and a vars-only change needs no restart
---
duration_ms: 212.797293
type: 'test'
...
# Subtest: row 165 CLI: a refusal names its code and why, exits 2 and keeps the bytes
ok 304 - row 165 CLI: a refusal names its code and why, exits 2 and keeps the bytes
---
duration_ms: 94.800075
type: 'test'
...
# Subtest: row 165 CLI: usage errors exit 4 before any bus call, and an agent session is refused
ok 305 - row 165 CLI: usage errors exit 4 before any bus call, and an agent session is refused
---
duration_ms: 64.504586
type: 'test'
...
# Subtest: row 165: scripts/mosaic sends business instances and instance to packages/cli, and validate still to packages/business
ok 306 - row 165: scripts/mosaic sends business instances and instance to packages/cli, and validate still to packages/business
---
duration_ms: 230.924735
type: 'test'
...
# Subtest: REQ-LIMIT-2 a claude-code launch asks mayLaunch with launch.account.name
ok 307 - REQ-LIMIT-2 a claude-code launch asks mayLaunch with launch.account.name
---
duration_ms: 38.131559
type: 'test'
...
# Subtest: REQ-LIMIT-2 each login set the account can name is accepted when the bus host holds exactly it
ok 308 - REQ-LIMIT-2 each login set the account can name is accepted when the bus host holds exactly it
---
duration_ms: 62.911591
type: 'test'
...
# Subtest: REQ-LIMIT-2 account-credential-missing: the named set is not a login set, or the bus host lacks part of it
ok 309 - REQ-LIMIT-2 account-credential-missing: the named set is not a login set, or the bus host lacks part of it
---
duration_ms: 57.093097
type: 'test'
...
# Subtest: REQ-LIMIT-2 account-credential-ambiguous: the bus host sets a credential variable outside the named set, ANTHROPIC_BASE_URL included
ok 310 - REQ-LIMIT-2 account-credential-ambiguous: the bus host sets a credential variable outside the named set, ANTHROPIC_BASE_URL included
---
duration_ms: 40.529061
type: 'test'
...
# Subtest: REQ-LIMIT-2 account-is-credential: launch.account.name is the value of a credential variable the bus host sets
ok 311 - REQ-LIMIT-2 account-is-credential: launch.account.name is the value of a credential variable the bus host sets
---
duration_ms: 28.877875
type: 'test'
...
# Subtest: REQ-LIMIT-2 a pi launch carries account null and skips both account checks
ok 312 - REQ-LIMIT-2 a pi launch carries account null and skips both account checks
---
duration_ms: 28.771208
type: 'test'
...
# Subtest: REQ-LIMIT-2 with no launch.account a claude-code launch carries null and the environment is not checked for ambiguity
ok 313 - REQ-LIMIT-2 with no launch.account a claude-code launch carries null and the environment is not checked for ambiguity
---
duration_ms: 16.147351
type: 'test'
...
# Subtest: REQ-LIMIT-4 the launcher asks mayLaunch with the instance, provider, model and account (row 126), and goes on to authorization on an allow
ok 314 - REQ-LIMIT-4 the launcher asks mayLaunch with the instance, provider, model and account (row 126), and goes on to authorization on an allow
---
duration_ms: 31.777315
type: 'test'
...
# Subtest: REQ-LIMIT-3 REQ-LIMIT-4 a launch whose subject is at its limit is refused limit-reached and logged with the check, limit and count
ok 315 - REQ-LIMIT-3 REQ-LIMIT-4 a launch whose subject is at its limit is refused limit-reached and logged with the check, limit and count
---
duration_ms: 16.437117
type: 'test'
...
# Subtest: REQ-LIMIT-4 fail closed: a refused op, a check failure or a malformed answer refuses limit-check-failed, naming the check and the code
ok 316 - REQ-LIMIT-4 fail closed: a refused op, a check failure or a malformed answer refuses limit-check-failed, naming the check and the code
---
duration_ms: 140.072259
type: 'test'
...
# Subtest: REQ-LIMIT-4 the launcher reaches token-limit only through the bus: launcher.mjs imports no limit check
ok 317 - REQ-LIMIT-4 the launcher reaches token-limit only through the bus: launcher.mjs imports no limit check
---
duration_ms: 0.863462
type: 'test'
...
# Subtest: a launcher before trusted control initialization refuses processing-uninitialized
ok 318 - a launcher before trusted control initialization refuses processing-uninitialized
---
duration_ms: 5.896387
type: 'test'
...
# Subtest: each launch rereads limits and model selections; lowered limits keep sessions and log exact hit
ok 319 - each launch rereads limits and model selections; lowered limits keep sessions and log exact hit
---
duration_ms: 60.810787
type: 'test'
...
# Subtest: row 65 a passing primary is the route: its provider and model reach mayLaunch, and a stated fallback is never used
ok 320 - row 65 a passing primary is the route: its provider and model reach mayLaunch, and a stated fallback is never used
---
duration_ms: 36.453027
type: 'test'
...
# Subtest: row 65 a failed primary preflight takes the stated fallback, and the limit checks see the fallback route
ok 321 - row 65 a failed primary preflight takes the stated fallback, and the limit checks see the fallback route
---
duration_ms: 22.732995
type: 'test'
...
# Subtest: row 65 a failed primary with no fallback refuses with the preflight code and never asks mayLaunch
ok 322 - row 65 a failed primary with no fallback refuses with the preflight code and never asks mayLaunch
---
duration_ms: 15.108245
type: 'test'
...
# Subtest: row 65 a fallback whose own preflight fails refuses with its code and names both reasons
ok 323 - row 65 a fallback whose own preflight fails refuses with its code and names both reasons
---
duration_ms: 16.297943
type: 'test'
...
# Subtest: row 65 the fallback route spends launch.account when its module counts the account
ok 324 - row 65 the fallback route spends launch.account when its module counts the account
---
duration_ms: 23.972239
type: 'test'
...
# Subtest: row 65 a missing harness, model or thinking var refuses no-route naming it, and the system execution keys never fill it
ok 325 - row 65 a missing harness, model or thinking var refuses no-route naming it, and the system execution keys never fill it
---
duration_ms: 45.007173
type: 'test'
...
# Subtest: row 65 a harness that is not switched on refuses harness-off, primary or fallback, and an off primary never falls back
ok 326 - row 65 a harness that is not switched on refuses harness-off, primary or fallback, and an off primary never falls back
---
duration_ms: 55.384065
type: 'test'
...
# Subtest: row 65 the loader refusing a module refuses harness-refused and names it; a module that throws refuses harness-failed
ok 327 - row 65 the loader refusing a module refuses harness-refused and names it; a module that throws refuses harness-failed
---
duration_ms: 45.965074
type: 'test'
...
# Subtest: row 65 a thinking level the route harness does not apply refuses thinking-unsupported, on the primary or a fallback taken
ok 328 - row 65 a thinking level the route harness does not apply refuses thinking-unsupported, on the primary or a fallback taken
---
duration_ms: 63.182037
type: 'test'
...
# Subtest: C2-04: launcher workspace clones code but never the library
ok 329 - C2-04: launcher workspace clones code but never the library
---
duration_ms: 1720.042976
type: 'test'
...
# Subtest: bus start --pm: the launcher instance (the chief of staff) runs under its own PID namespace, registered, with a manifest
ok 330 - bus start --pm: the launcher instance (the chief of staff) runs under its own PID namespace, registered, with a manifest
---
duration_ms: 1575.498284
type: 'test'
...
# usage: {"event":"usage-unknown","business":"acme","run":"re6b9d066c3cd","instance":"chief","turn":"2df48978-a0bd-4450-8940-9fc996c25a05","source":"@none","code":"baseline-unknown"}
# usage: {"event":"usage-unknown","business":"acme","run":"r9fef2dfe1995","instance":"coder","turn":"a991b9d8-fb04-4a9b-ab1f-82ce3920bc96","source":"@none","code":"baseline-unknown"}
# usage: {"event":"usage-unknown","business":"acme","run":"re6b9d066c3cd","instance":"chief","turn":"a7d874bb-a2f1-4034-b700-ca870466c9e0","source":"@none","code":"baseline-unknown"}
# Subtest: the chief of staff launches a coder through its launch tool; the coder answers; refusals name their code
ok 331 - the chief of staff launches a coder through its launch tool; the coder answers; refusals name their code
---
duration_ms: 1190.496889
type: 'test'
...
# usage: {"event":"usage-unknown","business":"acme","run":"r6b96151d5fe3","instance":"chief","turn":"88cb5e13-6d5e-4550-bc98-ec91750e842f","source":"@none","code":"baseline-unknown"}
# usage: {"event":"usage-unknown","business":"acme","run":"rcbab79b7d1d5","instance":"pm","turn":"b1c5bb7e-4ecb-4e03-851b-cfced75b6368","source":"@none","code":"baseline-unknown"}
# usage: {"event":"usage-unknown","business":"acme","run":"r6b96151d5fe3","instance":"chief","turn":"cb4e40bd-364a-4288-bb40-1d77324532eb","source":"@none","code":"baseline-unknown"}
# usage: {"event":"usage-unknown","business":"acme","run":"rcbab79b7d1d5","instance":"pm","turn":"1cddf295-a7c3-438a-bdb7-e908434ef575","source":"@none","code":"baseline-unknown"}
# usage: {"event":"usage-unknown","business":"acme","run":"rcbab79b7d1d5","instance":"pm","turn":"a733c878-6151-462d-b8ce-32da5b467241","source":"@none","code":"baseline-unknown"}
# usage: {"event":"usage-unknown","business":"acme","run":"r6b96151d5fe3","instance":"chief","turn":"89845f52-7729-4da7-84e7-a9598a612133","source":"@none","code":"baseline-unknown"}
# usage: {"event":"usage-unknown","business":"acme","run":"rcbab79b7d1d5","instance":"pm","turn":"f46f4ce5-f681-495a-afc3-787305740b8c","source":"@none","code":"baseline-unknown"}
# usage: {"event":"usage-unknown","business":"acme","run":"r6b96151d5fe3","instance":"chief","turn":"783239d6-df6e-4fab-9b18-0ec662482225","source":"@none","code":"baseline-unknown"}
# Subtest: a launched pm's request_staff reaches the chief of staff; no other session has the tool and the launch limits still hold
ok 332 - a launched pm's request_staff reaches the chief of staff; no other session has the tool and the launch limits still hold
---
duration_ms: 2179.20601
type: 'test'
...
# Subtest: each launch makes sure the workspace has a clone of the project: cloned, fast-forwarded, or fetched and logged
ok 333 - each launch makes sure the workspace has a clone of the project: cloned, fast-forwarded, or fetched and logged
---
duration_ms: 5000.166501
type: 'test'
...
# Subtest: a role the broker says holds a merge decision gets land_work, its prompt line, its landing and the git socket; without it, none
ok 334 - a role the broker says holds a merge decision gets land_work, its prompt line, its landing and the git socket; without it, none
---
duration_ms: 1047.67666
type: 'test'
...
# Subtest: REQ-LAUNCH-1 the tick starts a listed merge decision holder once, with land_work, the Landing line and its landing turn; an unlisted holder starts nothing
ok 335 - REQ-LAUNCH-1 the tick starts a listed merge decision holder once, with land_work, the Landing line and its landing turn; an unlisted holder starts nothing
---
duration_ms: 718.77913
type: 'test'
...
# usage: {"event":"usage-unknown","business":"acme","run":"r5178ec390bf1","instance":"coder","turn":"8e87e8f3-8314-46cf-96f9-a72b64e72a75","source":"@none","code":"baseline-unknown"}
# Subtest: a holder running since before the resolution is stopped once the broker releases it, land-relaunch, and the next tick starts it: landing turn first, then the message that waited
ok 336 - a holder running since before the resolution is stopped once the broker releases it, land-relaunch, and the next tick starts it: landing turn first, then the message that waited
---
duration_ms: 1147.704991
type: 'test'
...
# Subtest: a landing run that ended isn't started again for its decision, a spent decision starts nothing, and a new decision starts the holder
ok 337 - a landing run that ended isn't started again for its decision, a spent decision starts nothing, and a new decision starts the holder
---
duration_ms: 905.210229
type: 'test'
...
# Subtest: after a restart, the new host's first tick starts a holder whose decision is still held
ok 338 - after a restart, the new host's first tick starts a holder whose decision is still held
---
duration_ms: 1479.055271
type: 'test'
...
# Subtest: a refused landing start is logged once per code with its decision, isn't a start, and the next tick with room starts the holder
ok 339 - a refused landing start is logged once per code with its decision, isn't a start, and the next tick with room starts the holder
---
duration_ms: 973.560387
type: 'test'
...
# Subtest: a project clone that can't be made refuses checkout-failed, from --chief and from a session, with no run and no clone left
ok 340 - a project clone that can't be made refuses checkout-failed, from --chief and from a session, with no run and no clone left
---
duration_ms: 456.686904
type: 'test'
...
# Subtest: a runner that stops at once ends its launch with the runner's reason
ok 341 - a runner that stops at once ends its launch with the runner's reason
---
duration_ms: 559.295335
type: 'test'
...
# Subtest: a Claude Code launch with no session credential refuses before it starts
ok 342 - a Claude Code launch with no session credential refuses before it starts
---
duration_ms: 280.689121
type: 'test'
...
# Subtest: a pi launch needs no session credential: pi logs in through its own ENV_ALLOW variables
ok 343 - a pi launch needs no session credential: pi logs in through its own ENV_ALLOW variables
---
duration_ms: 489.127632
type: 'test'
...
# usage: {"event":"plugin-refused","kind":"harness","name":"down","code":"missing","message":"/mnt/storage/scratch/rocko-r280/packages/plugins/harness/down is missing","kept":[]}
# plugins: {"event":"plugin-refused","kind":"harness","name":"down","code":"missing","message":"/mnt/storage/scratch/rocko-r280/packages/plugins/harness/down is missing","kept":[]}
# Subtest: row 65 a failed primary preflight launches the fallback on a fixture harness module, recording the route and the reason
ok 344 - row 65 a failed primary preflight launches the fallback on a fixture harness module, recording the route and the reason
---
duration_ms: 539.089006
type: 'test'
...
# Subtest: a runner killed from the host ends its launch as killed, not failed
ok 345 - a runner killed from the host ends its launch as killed, not failed
---
duration_ms: 609.956578
type: 'test'
...
# Subtest: a missing or failing bwrap refuses sandbox-unavailable before anything starts; there is no unconfined fallback
ok 346 - a missing or failing bwrap refuses sandbox-unavailable before anything starts; there is no unconfined fallback
---
duration_ms: 290.067424
type: 'test'
...
# Subtest: row 64 a role skill that isn't enabled refuses skill-not-enabled, and one that isn't a plain directory skill-refused, before anything starts
ok 347 - row 64 a role skill that isn't enabled refuses skill-not-enabled, and one that isn't a plain directory skill-refused, before anything starts
---
duration_ms: 332.137207
type: 'test'
...
# Subtest: row 213 a creative instance's persona is read from <configDir>/personas: off its digest the launch fails with the mismatch as its reason
ok 348 - row 213 a creative instance's persona is read from <configDir>/personas: off its digest the launch fails with the mismatch as its reason
---
duration_ms: 483.136133
type: 'test'
...
# Subtest: row 64 on Claude Code a role skill that isn't enabled refuses the same way, before anything starts
ok 349 - row 64 on Claude Code a role skill that isn't enabled refuses the same way, before anything starts
---
duration_ms: 301.633134
type: 'test'
...
# usage: {"event":"usage-unknown","business":"acme","run":"rf62fb847445e","instance":"chief","turn":"136b9a96-a07c-415d-b708-f2bf8c2c3dd6","source":"@none","code":"baseline-unknown"}
# usage: {"event":"usage-unknown","business":"acme","run":"rf62fb847445e","instance":"chief","turn":"2149ac7c-2404-442e-9f57-df986a428365","source":"@none","code":"baseline-unknown"}
# usage: {"event":"usage-unknown","business":"acme","run":"rec4916167bec","instance":"coder","turn":"5bc3b60e-a40c-4db9-8493-9b876bdc2345","source":"@none","code":"baseline-unknown"}
# Subtest: a real Claude Code coder's shell can't read a stand-in secret or anything else its sandbox doesn't hold
ok 350 - a real Claude Code coder's shell can't read a stand-in secret or anything else its sandbox doesn't hold
---
duration_ms: 1970.36282
type: 'test'
...
# Subtest: 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
ok 351 - 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
---
duration_ms: 1222.167178
type: 'test'
...
# Subtest: 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
ok 352 - 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
---
duration_ms: 4126.417061
type: 'test'
...
# Subtest: bus start --no-launch leaves an earlier host's live session alone: no signal, no end, sessions.json as it was
ok 353 - bus start --no-launch leaves an earlier host's live session alone: no signal, no end, sessions.json as it was
---
duration_ms: 228.317774
type: 'test'
...
# Subtest: bus start --no-launch refuses every launch: the PM launch and a session's request, each logged, nothing spawned
ok 354 - bus start --no-launch refuses every launch: the PM launch and a session's request, each logged, nothing spawned
---
duration_ms: 184.767854
type: 'test'
...
# Subtest: bus start --no-launch starts no thread tick; the same host with launches runs it
ok 355 - bus start --no-launch starts no thread tick; the same host with launches runs it
---
duration_ms: 1173.83866
type: 'test'
...
# Subtest: a malformed sessions.json refuses the host start with exit 3 and stays as it was
ok 356 - a malformed sessions.json refuses the host start with exit 3 and stays as it was
---
duration_ms: 183.768346
type: 'test'
...
# Subtest: an over-long launch request is refused at once, not at the 10 s idle timeout
ok 357 - an over-long launch request is refused at once, not at the 10 s idle timeout
---
duration_ms: 196.157601
type: 'test'
...
# Subtest: a launch client that never closes its side doesn't hold the host's close
ok 358 - a launch client that never closes its side doesn't hold the host's close
---
duration_ms: 189.213436
type: 'test'
...
# Subtest: a runner that ignores SIGTERM is killed when the host closes
ok 359 - a runner that ignores SIGTERM is killed when the host closes
---
duration_ms: 1366.230324
type: 'test'
...
# Subtest: kill switch refuses chief and hire before launch work and a clear permits a later request
ok 360 - kill switch refuses chief and hire before launch work and a clear permits a later request
---
duration_ms: 315.878806
type: 'test'
...
# Subtest: kill switch stops an actual managed namespace and records the halt reason without rewriting its bundle
ok 361 - kill switch stops an actual managed namespace and records the halt reason without rewriting its bundle
---
duration_ms: 323.146693
type: 'test'
...
# Subtest: a launch waiting across halt and resume cannot use its stale admission
ok 362 - a launch waiting across halt and resume cannot use its stale admission
---
duration_ms: 192.588069
type: 'test'
...
# Subtest: REQ-LIMIT-3 REQ-LIMIT-4 formatTokens shows each limit counted, not enforced, or check failed, in reset path words
ok 363 - REQ-LIMIT-3 REQ-LIMIT-4 formatTokens shows each limit counted, not enforced, or check failed, in reset path words
---
duration_ms: 1.446567
type: 'test'
...
# Subtest: REQ-LIMIT-2 row 126: any daily quota row adds one line after the list saying the count is this stack's own use
ok 364 - REQ-LIMIT-2 row 126: any daily quota row adds one line after the list saying the count is this stack's own use
---
duration_ms: 0.446876
type: 'test'
...
# Subtest: REQ-LIMIT-3 the view prints the limits then the token lines; --json keeps tokens in the result
ok 365 - REQ-LIMIT-3 the view prints the limits then the token lines; --json keeps tokens in the result
---
duration_ms: 4.654668
type: 'test'
...
# Subtest: REQ-LIMIT-3 reset reads the revision, then sends limits.set with one path per limit, a word per level
ok 366 - REQ-LIMIT-3 reset reads the revision, then sends limits.set with one path per limit, a word per level
---
duration_ms: 0.992381
type: 'test'
...
# Subtest: REQ-LIMIT-3 reset with no path, or with --file, is refused before the bus
ok 367 - REQ-LIMIT-3 reset with no path, or with --file, is refused before the bus
---
duration_ms: 2.384495
type: 'test'
...
# Subtest: migration needs no bus/config, prints whole converted document, is idempotent and never writes
ok 368 - migration needs no bus/config, prints whole converted document, is idempotent and never writes
---
duration_ms: 23.284332
type: 'test'
...
# Subtest: limits view/set use the human bus transport and pass only the explicit patch
ok 369 - limits view/set use the human bus transport and pass only the explicit patch
---
duration_ms: 2.333208
type: 'test'
...
# Subtest: limits set passes an assistants patch through unchanged, and the usage names the key
ok 370 - limits set passes an assistants patch through unchanged, and the usage names the key
---
duration_ms: 1.998968
type: 'test'
...
# Subtest: post-119 example and Jason fixture migrate with checked inherited models; wrong or absent config refuses
ok 371 - post-119 example and Jason fixture migrate with checked inherited models; wrong or absent config refuses
---
duration_ms: 319.123926
type: 'test'
...
# Subtest: plugins view/set use the human bus transport and pass only the explicit patch (vikunja:19/305)
ok 372 - plugins view/set use the human bus transport and pass only the explicit patch (vikunja:19/305)
---
duration_ms: 4.17433
type: 'test'
...
# Subtest: inbox --read marks one message by the id inbox prints, delivered or not, and leaves the rest unread
ok 373 - inbox --read marks one message by the id inbox prints, delivered or not, and leaves the rest unread
---
duration_ms: 61.228359
type: 'test'
...
# Subtest: inbox --read refuses an id that is not the human's, prints its code, still marks the rest and exits 2
ok 374 - inbox --read refuses an id that is not the human's, prints its code, still marks the rest and exits 2
---
duration_ms: 38.496688
type: 'test'
...
# Subtest: inbox --read refuses an ambiguous or short prefix, names every match, reads nothing for them and marks the rest
ok 375 - inbox --read refuses an ambiguous or short prefix, names every match, reads nothing for them and marks the rest
---
duration_ms: 1.595452
type: 'test'
...
# Subtest: inbox --read-all marks every message the inbox walk lists, delivered or not, and inbox then shows 0 unread
ok 376 - inbox --read-all marks every message the inbox walk lists, delivered or not, and inbox then shows 0 unread
---
duration_ms: 1445.356551
type: 'test'
...
# Subtest: inbox --read stops on an error that is not about one message
ok 377 - inbox --read stops on an error that is not about one message
---
duration_ms: 1.201046
type: 'test'
...
# Subtest: inbox --read and --read-all refuse bad combinations; other verbs refuse them
ok 378 - inbox --read and --read-all refuse bad combinations; other verbs refuse them
---
duration_ms: 25.840594
type: 'test'
...
# Subtest: the human names an instance, lists it, and talk's message.send reaches it by that name
ok 379 - the human names an instance, lists it, and talk's message.send reaches it by that name
---
duration_ms: 42.904245
type: 'test'
...
# Subtest: name and names refuse the wrong number of arguments with the usage
ok 380 - name and names refuse the wrong number of arguments with the usage
---
duration_ms: 22.223568
type: 'test'
...
# Subtest: zoned uses the IANA zone across DST
ok 381 - zoned uses the IANA zone across DST
---
duration_ms: 24.782715
type: 'test'
...
# Subtest: each open blocking decision is DM'd once, across polls and a restart; non-blocking ones are not
ok 382 - each open blocking decision is DM'd once, across polls and a restart; non-blocking ones are not
---
duration_ms: 42.919884
type: 'test'
...
# Subtest: two blocking decisions get two DMs with different nonces
ok 383 - two blocking decisions get two DMs with different nonces
---
duration_ms: 25.50961
type: 'test'
...
# Subtest: the digest nonce differs per business and per day and fits Discord's 25 characters
ok 384 - the digest nonce differs per business and per day and fits Discord's 25 characters
---
duration_ms: 0.288991
type: 'test'
...
# Subtest: a failed DM is journaled, backs off, and is retried until it lands
ok 385 - a failed DM is journaled, backs off, and is retried until it lands
---
duration_ms: 30.662562
type: 'test'
...
# Subtest: five definite refusals stop a DM: one gave-up line, one log line, and a restart keeps the count
ok 386 - five definite refusals stop a DM: one gave-up line, one log line, and a restart keeps the count
---
duration_ms: 34.223373
type: 'test'
...
# Subtest: 429s, 5xx-style unknowns and refusals without a status never count toward the limit
ok 387 - 429s, 5xx-style unknowns and refusals without a status never count toward the limit
---
duration_ms: 42.797216
type: 'test'
...
# Subtest: a crash between the fifth refusal and its gave-up line: the next poll appends it and sends nothing
ok 388 - a crash between the fifth refusal and its gave-up line: the next poll appends it and sends nothing
---
duration_ms: 28.273949
type: 'test'
...
# Subtest: 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
ok 389 - 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
---
duration_ms: 224.682254
type: 'test'
...
# Subtest: a restart after the second refusal does not send before that refusal's 30 min are up
ok 390 - a restart after the second refusal does not send before that refusal's 30 min are up
---
duration_ms: 117.060041
type: 'test'
...
# Subtest: the digest goes at 08:00 Chicago once a day, with blocking ones marked as DM'd
ok 391 - the digest goes at 08:00 Chicago once a day, with blocking ones marked as DM'd
---
duration_ms: 29.332912
type: 'test'
...
# Subtest: a late start with no digest for the day sends one at once; an empty inbox gets one line
ok 392 - a late start with no digest for the day sends one at once; an empty inbox gets one line
---
duration_ms: 23.21684
type: 'test'
...
# Subtest: an inbox read failure is logged and the next poll retries
ok 393 - an inbox read failure is logged and the next poll retries
---
duration_ms: 1.225035
type: 'test'
...
# Subtest: no Discord id reaches the journal or the log
ok 394 - no Discord id reaches the journal or the log
---
duration_ms: 23.127564
type: 'test'
...
# Subtest: the journal: a torn tail is copied out and truncated, so an append after it reopens cleanly
ok 395 - the journal: a torn tail is copied out and truncated, so an append after it reopens cleanly
---
duration_ms: 3.155651
type: 'test'
...
# Subtest: the journal: a crash between the copy and the truncate leaves a tail the next open repairs
ok 396 - the journal: a crash between the copy and the truncate leaves a tail the next open repairs
---
duration_ms: 4.029534
type: 'test'
...
# Subtest: the journal: a whole file that is one torn line truncates to empty
ok 397 - the journal: a whole file that is one torn line truncates to empty
---
duration_ms: 2.073649
type: 'test'
...
# Subtest: the journal: a malformed complete line refuses and leaves the file and any torn tail alone
ok 398 - the journal: a malformed complete line refuses and leaves the file and any torn tail alone
---
duration_ms: 0.882341
type: 'test'
...
# Subtest: the journal: a loose file mode, a loose directory or a symlinked journal refuses
ok 399 - the journal: a loose file mode, a loose directory or a symlinked journal refuses
---
duration_ms: 1.08209
type: 'test'
...
# Subtest: the journal: a line with a wrong type refuses with exit 3 and names the field
ok 400 - the journal: a line with a wrong type refuses with exit 3 and names the field
---
duration_ms: 3.686106
type: 'test'
...
# Subtest: the journal: a symlinked directory refuses and says it is a link
ok 401 - the journal: a symlinked directory refuses and says it is a link
---
duration_ms: 0.648017
type: 'test'
...
# Subtest: the journal: a dangling directory link, a parent that is a file and a journal that is a directory each refuse with exit 3
ok 402 - the journal: a dangling directory link, a parent that is a file and a journal that is a directory each refuse with exit 3
---
duration_ms: 1.082947
type: 'test'
...
# Subtest: the journal: an append after the file was swapped for a symlink refuses and writes nothing through it
ok 403 - the journal: an append after the file was swapped for a symlink refuses and writes nothing through it
---
duration_ms: 0.667653
type: 'test'
...
# Subtest: the journal: a directory it cannot write or create refuses with exit 3 and names the path
ok 404 - the journal: a directory it cannot write or create refuses with exit 3 and names the path
---
duration_ms: 0.816512
type: 'test'
...
# Subtest: digest content stays within Discord's 2000 characters
ok 405 - digest content stays within Discord's 2000 characters
---
duration_ms: 0.426884
type: 'test'
...
# Subtest: runLoop never overlaps ticks and stops after the one in flight
ok 406 - runLoop never overlaps ticks and stops after the one in flight
---
duration_ms: 111.500602
type: 'test'
...
# Subtest: processing halt prevents notifier reads and sends and fences the wait before delivery
ok 407 - processing halt prevents notifier reads and sends and fences the wait before delivery
---
duration_ms: 32.174685
type: 'test'
...
# Subtest: a human command refused with human-required prints the other-tree line and exits 3
ok 408 - a human command refused with human-required prints the other-tree line and exits 3
---
duration_ms: 3.872739
type: 'test'
...
# Subtest: a --tester command refused with tester-required prints the other-tree line and exits 3
ok 409 - a --tester command refused with tester-required prints the other-tree line and exits 3
---
duration_ms: 1.528483
type: 'test'
...
# Subtest: other exit-3 refusals print no other-tree line
ok 410 - other exit-3 refusals print no other-tree line
---
duration_ms: 2.109671
type: 'test'
...
# Subtest: the line names no path
ok 411 - the line names no path
---
duration_ms: 0.19081
type: 'test'
...
# Subtest: human halt/status/resume uses management transport without loading any channel
ok 412 - human halt/status/resume uses management transport without loading any channel
---
duration_ms: 44.11521
type: 'test'
...
# Subtest: halt refuses inside an agent before transport
ok 413 - halt refuses inside an agent before transport
---
duration_ms: 21.114024
type: 'test'
...
# Subtest: resume refuses inside an agent before transport
ok 414 - resume refuses inside an agent before transport
---
duration_ms: 19.152956
type: 'test'
...
# Subtest: unknown and partially stopped outcomes are never reported as a successful halt
ok 415 - unknown and partially stopped outcomes are never reported as a successful halt
---
duration_ms: 19.774612
type: 'test'
...
# Subtest: threads project resolution explains a business repository and falls back if its file cannot load
ok 416 - threads project resolution explains a business repository and falls back if its file cannot load
---
duration_ms: 90.248169
type: 'test'
...
# Subtest: project create prints the repository-name refusal and exits two without writing
ok 417 - project create prints the repository-name refusal and exits two without writing
---
duration_ms: 38.966652
type: 'test'
...
# Subtest: project init/check use declared business repo and never contact the bus
ok 418 - project init/check use declared business repo and never contact the bus
---
duration_ms: 210.424946
type: 'test'
...
# Subtest: project commands validate args and refuse undeclared projects and agent init
ok 419 - project commands validate args and refuse undeclared projects and agent init
---
duration_ms: 44.960864
type: 'test'
...
# Subtest: project create and list validate their arguments before any bus call
ok 420 - project create and list validate their arguments before any bus call
---
duration_ms: 53.076775
type: 'test'
...
# Subtest: project dispatcher reaches the human CLI
ok 421 - project dispatcher reaches the human CLI
---
duration_ms: 164.460252
type: 'test'
...
# Subtest: T3 end to end: publish under an approved decision sends the work commit to the agent's own fork and records it once
ok 422 - T3 end to end: publish under an approved decision sends the work commit to the agent's own fork and records it once
---
duration_ms: 1129.307188
type: 'test'
...
# Subtest: T3 end to end: a fork the token can't reach is fork-unavailable, filed once, and nothing is recorded as allowed
ok 423 - T3 end to end: a fork the token can't reach is fork-unavailable, filed once, and nothing is recorded as allowed
---
duration_ms: 773.108797
type: 'test'
...
# Subtest: a bad branch or project refuses before the broker; a fork, user or ref in the request is ignored
ok 424 - a bad branch or project refuses before the broker; a fork, user or ref in the request is ignored
---
duration_ms: 1012.328922
type: 'test'
...
# Subtest: T3 end to end: two agents, one project, each lands on its own fork only; the upstream receives nothing
ok 425 - T3 end to end: two agents, one project, each lands on its own fork only; the upstream receives nothing
---
duration_ms: 1734.933376
type: 'test'
...
# Subtest: T3: a push after checkPublish and before the lock refuses ref-moved; the fork receives nothing
ok 426 - T3: a push after checkPublish and before the lock refuses ref-moved; the fork receives nothing
---
duration_ms: 1194.397712
type: 'test'
...
# Subtest: T3: a push recorded while the bus process pushes refuses decision-mismatch; only the decision's commit reached the fork
ok 427 - T3: a push recorded while the bus process pushes refuses decision-mismatch; only the decision's commit reached the fork
---
duration_ms: 890.37508
type: 'test'
...
# Subtest: row 237: two publishes race on one decision; the second refuses publish-busy and exactly one push reaches the fork
ok 428 - row 237: two publishes race on one decision; the second refuses publish-busy and exactly one push reaches the fork
---
duration_ms: 926.05847
type: 'test'
...
# Subtest: sage-1440: the publishResult poll is bounded: publish-timeout, filed once, and nothing recorded
ok 429 - sage-1440: the publishResult poll is bounded: publish-timeout, filed once, and nothing recorded
---
duration_ms: 838.567327
type: 'test'
...
# bus: publish a1da3f5e-80b7-436a-9913-59ac530527b0: pushed after the git socket refused publish-timeout; recorded
# Subtest: row 242: a retry after publish-timeout refuses publish-busy while the bus process's push runs; the late push is recorded and the decision pushes once
ok 430 - row 242: a retry after publish-timeout refuses publish-busy while the bus process's push runs; the late push is recorded and the decision pushes once
---
duration_ms: 1069.275001
type: 'test'
...
# Subtest: a copy carries every file the harness modules read from it
ok 431 - a copy carries every file the harness modules read from it
---
duration_ms: 959.624645
type: 'test'
...
# Subtest: shared copy: npm ci, pushed reachability, readonly/existing copy, webui delegation
ok 432 - shared copy: npm ci, pushed reachability, readonly/existing copy, webui delegation
---
duration_ms: 1066.112646
type: 'test'
...
# Subtest: wrapper preserves Q81 lease and marker, rejects foreign/symlink; check uses effective roots
ok 433 - wrapper preserves Q81 lease and marker, rejects foreign/symlink; check uses effective roots
---
duration_ms: 1609.607183
type: 'test'
...
# Subtest: row 190 N6: check --instance passes only when the wrapper exports the instance's MOSAIC_CONFIG
ok 434 - row 190 N6: check --instance passes only when the wrapper exports the instance's MOSAIC_CONFIG
---
duration_ms: 1559.611622
type: 'test'
...
# Subtest: bus unit copy/pm pins, install refuses all busy states and failed reads, drop-in refusal
ok 435 - bus unit copy/pm pins, install refuses all busy states and failed reads, drop-in refusal
---
duration_ms: 1576.630328
type: 'test'
...
# Subtest: missing package manifest refuses before npm; npm failure removes the unpublished temp copy
ok 436 - missing package manifest refuses before npm; npm failure removes the unpublished temp copy
---
duration_ms: 695.664695
type: 'test'
...
# Subtest: real pinned install loads bus and Console; same-copy mosaic talk passes proof, other trees refuse
ok 437 - real pinned install loads bus and Console; same-copy mosaic talk passes proof, other trees refuse
---
duration_ms: 7070.142875
type: 'test'
...
# Subtest: bus status reads effective copy/pm/drop-ins without writes; check refuses an overridden ExecStart
ok 438 - bus status reads effective copy/pm/drop-ins without writes; check refuses an overridden ExecStart
---
duration_ms: 1171.055293
type: 'test'
...
# Subtest: drop-ins in either override field and malformed metadata refuse; uninstall also checks --no-reload
ok 439 - drop-ins in either override field and malformed metadata refuse; uninstall also checks --no-reload
---
duration_ms: 664.567226
type: 'test'
...
# Subtest: install never shows a template name on systemd 261; template drop-ins still refuse
ok 440 - install never shows a template name on systemd 261; template drop-ins still refuse
---
duration_ms: 624.509639
type: 'test'
...
# Subtest: unlisted instance drop-in is found in another unit lookup directory; path discovery errors refuse
ok 441 - unlisted instance drop-in is found in another unit lookup directory; path discovery errors refuse
---
duration_ms: 485.616705
type: 'test'
...
# Subtest: inherited mosaic-.service.d override refuses without changing the unit
ok 442 - inherited mosaic-.service.d override refuses without changing the unit
---
duration_ms: 604.991557
type: 'test'
...
# Subtest: inherited service.d override refuses without changing the unit
ok 443 - inherited service.d override refuses without changing the unit
---
duration_ms: 627.98278
type: 'test'
...
# Subtest: inherited drop-in unreadable directory or file refuses before writing
ok 444 - inherited drop-in unreadable directory or file refuses before writing
---
duration_ms: 527.121584
type: 'test'
...
# Subtest: row 232: copy --bundle copies a SHA the bundle's refactor reaches, byte-identical to copy SHA, and refuses the rest
ok 445 - row 232: copy --bundle copies a SHA the bundle's refactor reaches, byte-identical to copy SHA, and refuses the rest
---
duration_ms: 3305.168041
type: 'test'
...
# Subtest: row 232: wrapper --create writes the first wrapper only, the same bytes wrapper ID writes, and refuses over any file
ok 446 - row 232: wrapper --create writes the first wrapper only, the same bytes wrapper ID writes, and refuses over any file
---
duration_ms: 952.974441
type: 'test'
...
# Subtest: row 232: check --units external reads the system units, the default reads the user units
ok 447 - row 232: check --units external reads the system units, the default reads the user units
---
duration_ms: 782.861241
type: 'test'
...
# Subtest: T-I1 bootstrap --instance creates each instance's config, root and marker once, and refuses what it must not claim
# Subtest: alpha and beta get a 0700 config dir, a config naming ~/.mosaic-NAME, a 0700 root and a 0644 marker
ok 1 - alpha and beta get a 0700 config dir, a config naming ~/.mosaic-NAME, a 0700 root and a 0644 marker
---
duration_ms: 116.941322
type: 'test'
...
# Subtest: under umask 077 the config and marker are 0600: the source honors the operator's umask
ok 2 - under umask 077 the config and marker are 0600: the source honors the operator's umask
---
duration_ms: 53.322923
type: 'test'
...
# Subtest: a second bootstrap of each changes no byte, mode or mtime
ok 3 - a second bootstrap of each changes no byte, mode or mtime
---
duration_ms: 215.183499
type: 'test'
...
# Subtest: a non-empty root without its own marker refuses before anything is written, worktrees included
ok 4 - a non-empty root without its own marker refuses before anything is written, worktrees included
---
duration_ms: 230.43404
type: 'test'
...
# Subtest: an empty existing root is claimed, and an existing config whose root lost its marker refuses, not repairs
ok 5 - an empty existing root is claimed, and an existing config whose root lost its marker refuses, not repairs
---
duration_ms: 111.606125
type: 'test'
...
# Subtest: a dangling symlink at the config path is never written through, named or default
ok 6 - a dangling symlink at the config path is never written through, named or default
---
duration_ms: 106.246443
type: 'test'
...
# Subtest: bad names and stray arguments exit 4 and write nothing
ok 7 - bad names and stray arguments exit 4 and write nothing
---
duration_ms: 855.011365
type: 'test'
...
# Subtest: --instance dev writes exactly what no flag writes
ok 8 - --instance dev writes exactly what no flag writes
---
duration_ms: 103.602041
type: 'test'
...
1..8
ok 448 - T-I1 bootstrap --instance creates each instance's config, root and marker once, and refuses what it must not claim
---
duration_ms: 1795.72076
type: 'test'
...
# Subtest: T-I2 selection: the four rows of D1 through the instance op and through an entry point
# Subtest: row 1: no flag and no MOSAIC_CONFIG is the default; a missing default config leaves the data root empty
ok 1 - row 1: no flag and no MOSAIC_CONFIG is the default; a missing default config leaves the data root empty
---
duration_ms: 109.142218
type: 'test'
...
# Subtest: row 2: MOSAIC_CONFIG alone is that config with the default names
ok 2 - row 2: MOSAIC_CONFIG alone is that config with the default names
---
duration_ms: 46.567405
type: 'test'
...
# Subtest: row 3: --instance NAME alone is NAME's config, root and suffix
ok 3 - row 3: --instance NAME alone is NAME's config, root and suffix
---
duration_ms: 105.536103
type: 'test'
...
# Subtest: row 4: both must name one file; a symlink to it agrees, any other file exits 4
ok 4 - row 4: both must name one file; a symlink to it agrees, any other file exits 4
---
duration_ms: 785.828598
type: 'test'
...
# Subtest: a named instance with no config exits 3 with its own bootstrap hint
ok 5 - a named instance with no config exits 3 with its own bootstrap hint
---
duration_ms: 66.428136
type: 'test'
...
# Subtest: an entry point takes --instance in any position, once, and refuses a mismatch before it prints
ok 6 - an entry point takes --instance in any position, once, and refuses a mismatch before it prints
---
duration_ms: 367.700133
type: 'test'
...
# Subtest: copy takes no --instance in either script: every instance shares the copies
ok 7 - copy takes no --instance in either script: every instance shares the copies
---
duration_ms: 52.092534
type: 'test'
...
1..7
ok 449 - T-I2 selection: the four rows of D1 through the instance op and through an entry point
---
duration_ms: 1643.230378
type: 'test'
...
# Subtest: T-I7 claims: the instance op refuses a root another instance claims, and a named root with no marker
# Subtest: alpha's config pointing at beta's root refuses instance-root-mismatch in every op
ok 1 - alpha's config pointing at beta's root refuses instance-root-mismatch in every op
---
duration_ms: 285.848602
type: 'test'
...
# Subtest: MOSAIC_CONFIG naming alpha's config with no flag refuses: the root is alpha's
ok 2 - MOSAIC_CONFIG naming alpha's config with no flag refuses: the root is alpha's
---
duration_ms: 48.560237
type: 'test'
...
# Subtest: a default config whose root carries alpha's marker refuses; one naming dev, or none, passes
ok 3 - a default config whose root carries alpha's marker refuses; one naming dev, or none, passes
---
duration_ms: 157.649566
type: 'test'
...
# Subtest: a named root whose marker is missing, a symlink, unparsable or the wrong shape refuses instance-root-unclaimed
ok 4 - a named root whose marker is missing, a symlink, unparsable or the wrong shape refuses instance-root-unclaimed
---
duration_ms: 420.623157
type: 'test'
...
1..4
ok 450 - T-I7 claims: the instance op refuses a root another instance claims, and a named root with no marker
---
duration_ms: 1038.812134
type: 'test'
...
# Subtest: T-I5 two real bus hosts, one per instance, run at once and each answers from its own socket under its own root
ok 451 - T-I5 two real bus hosts, one per instance, run at once and each answers from its own socket under its own root
---
duration_ms: 2223.890657
type: 'test'
...
# Subtest: T-I10 the guard protects every instance's config dir and data roots, even under a corrupt config
ok 452 - T-I10 the guard protects every instance's config dir and data roots, even under a corrupt config
---
duration_ms: 158.573723
type: 'test'
...
# Subtest: row 232: confirm, revert, gate, --to and --expect-from need --units external; the user-only flags are usage under it, and so are row 273's --send and --no-sso
ok 453 - row 232: confirm, revert, gate, --to and --expect-from need --units external; the user-only flags are usage under it, and so are row 273's --send and --no-sso
---
duration_ms: 1893.518882
type: 'test'
...
# Subtest: row 232: pm-on and activate --pm-after-harness refuse external-pm
ok 454 - row 232: pm-on and activate --pm-after-harness refuse external-pm
---
duration_ms: 1926.991406
type: 'test'
...
# Subtest: row 232: units-running (N4) refuses while a unit is active and leaves the store, the log and TAKEN; failed counts as down
ok 455 - row 232: units-running (N4) refuses while a unit is active and leaves the store, the log and TAKEN; failed counts as down
---
duration_ms: 3623.461008
type: 'test'
...
# Subtest: row 232: activate stages: the pointer stays, AWAITING-UNITS names TO, a backup of the stopped store, no directory in the set, no --user, no journal
ok 456 - row 232: activate stages: the pointer stays, AWAITING-UNITS names TO, a backup of the stopped store, no directory in the set, no --user, no journal
---
duration_ms: 2955.719072
type: 'test'
...
# Subtest: row 232: A3 order: capture-failed and marker-failed refuse with exit 3 and leave no marker or FAILED
ok 457 - row 232: A3 order: capture-failed and marker-failed refuse with exit 3 and leave no marker or FAILED
---
duration_ms: 2669.538638
type: 'test'
...
# Subtest: row 232: confirm and revert refuse open-activation with no marker, two, the wrong copy, or one the log holds closed; refusals name no activation
ok 458 - row 232: confirm and revert refuse open-activation with no marker, two, the wrong copy, or one the log holds closed; refusals name no activation
---
duration_ms: 5024.010298
type: 'test'
...
# Subtest: row 232: confirm polls: bus status good after 3 s fails with --timeout 1, writes FAILED and leaves the rest; FAILED then refuses activation-failed
ok 459 - row 232: confirm polls: bus status good after 3 s fails with --timeout 1, writes FAILED and leaves the rest; FAILED then refuses activation-failed
---
duration_ms: 4323.814435
type: 'test'
...
# Subtest: row 232: confirm polls to a pass with --timeout 10: the pointer, an ok line that reads as the started run, no marker
ok 460 - row 232: confirm polls to a pass with --timeout 10: the pointer, an ok line that reads as the started run, no marker
---
duration_ms: 5783.122043
type: 'test'
...
# Subtest: row 232: stale-start: @1792540799 fails a start floor of 1792540800 with stale-start
ok 461 - row 232: stale-start: @1792540799 fails a start floor of 1792540800 with stale-start
---
duration_ms: 3003.231656
type: 'test'
...
# Subtest: row 232: stale-start is a gate code: an enter time that turns to @1792540800 after 2 s passes with --timeout 10
ok 462 - row 232: stale-start is a gate code: an enter time that turns to @1792540800 after 2 s passes with --timeout 10
---
duration_ms: 4339.589839
type: 'test'
...
# Subtest: row 232: gate (N2, A2f): --since 1792540800 passes @1792540800 and fails @1792540799; it writes nothing
ok 463 - row 232: gate (N2, A2f): --since 1792540800 passes @1792540800 and fails @1792540799; it writes nothing
---
duration_ms: 2797.575728
type: 'test'
...
# Subtest: row 232: the external PM check reads launches list: one live run of launch.by since the start passes
ok 464 - row 232: the external PM check reads launches list: one live run of launch.by since the start passes
---
duration_ms: 9533.270797
type: 'test'
...
# Subtest: row 232: revert puts the wrapper back and leaves the store when nothing migrated
ok 465 - row 232: revert puts the wrapper back and leaves the store when nothing migrated
---
duration_ms: 1398.573556
type: 'test'
...
# Subtest: row 232: confirm --rollback refuses rollback-mismatch, and logs rollback-failed with exit 2 when OLD fails its gate
ok 466 - row 232: confirm --rollback refuses rollback-mismatch, and logs rollback-failed with exit 2 when OLD fails its gate
---
duration_ms: 3452.826106
type: 'test'
...
# Subtest: row 232: confirm --rollback after a --restore swap logs rollbackCode not-attempted; rollback --restore finds an external backup
ok 467 - row 232: confirm --rollback after a --restore swap logs rollbackCode not-attempted; rollback --restore finds an external backup
---
duration_ms: 3171.944595
type: 'test'
...
# Subtest: row 232: sequence 1: activate, confirm times out, revert, confirm --rollback --cause A5: gate-failed rollback ok
ok 468 - row 232: sequence 1: activate, confirm times out, revert, confirm --rollback --cause A5: gate-failed rollback ok
---
duration_ms: 3492.560442
type: 'test'
...
# Subtest: row 232: sequence 2: activate --migrate, the wrapper install fails, revert restores TAKEN, confirm --rollback --cause A3
ok 469 - row 232: sequence 2: activate --migrate, the wrapper install fails, revert restores TAKEN, confirm --rollback --cause A3
---
duration_ms: 2888.455801
type: 'test'
...
# Subtest: row 232: sequence 3: activate, root's A4 fails, revert, confirm --rollback --cause A4: failed code units-start
ok 470 - row 232: sequence 3: activate, root's A4 fails, revert, confirm --rollback --cause A4: failed code units-start
---
duration_ms: 2926.351121
type: 'test'
...
# Subtest: row 232: sequence 4: a capture failure leaves nothing open, then A2f's gate OLD writes nothing
ok 471 - row 232: sequence 4: a capture failure leaves nothing open, then A2f's gate OLD writes nothing
---
duration_ms: 1774.716316
type: 'test'
...
# Subtest: row 232: sequence 5: a confirm of the wrong copy is refused, and revert and confirm --rollback still close the activation
ok 472 - row 232: sequence 5: a confirm of the wrong copy is refused, and revert and confirm --rollback still close the activation
---
duration_ms: 3287.931192
type: 'test'
...
# Subtest: row 232: sequence 6: a revert that fails leaves the activation open, and the next --plan refuses interrupted-run
ok 473 - row 232: sequence 6: a revert that fails leaves the activation open, and the next --plan refuses interrupted-run
---
duration_ms: 1556.030444
type: 'test'
...
# Subtest: row 232: sequence 7: adopt, two confirmed activates, rollback --to the previous copy, confirmed, logs op rollback
ok 474 - row 232: sequence 7: adopt, two confirmed activates, rollback --to the previous copy, confirmed, logs op rollback
---
duration_ms: 6831.830161
type: 'test'
...
# Subtest: row 232: sequence 8: a migration that writes and fails: revert restores the backup byte for byte, confirm --rollback --cause A3
ok 475 - row 232: sequence 8: a migration that writes and fails: revert restores the backup byte for byte, confirm --rollback --cause A3
---
duration_ms: 2710.708797
type: 'test'
...
# Subtest: row 232: user mode: every systemctl call carries --user, and activate, rollback and check make the base's calls
ok 476 - row 232: user mode: every systemctl call carries --user, and activate, rollback and check make the base's calls
---
duration_ms: 6252.290982
type: 'test'
...
# Subtest: row 232: user mode: a default activate --plan prints the base's bytes
ok 477 - row 232: user mode: a default activate --plan prints the base's bytes
---
duration_ms: 2129.298195
type: 'test'
...
# Subtest: T1 adopt writes the pointer from the units once; a failing check refuses check-failed
ok 478 - T1 adopt writes the pointer from the units once; a failing check refuses check-failed
---
duration_ms: 2680.082229
type: 'test'
...
# Subtest: T2 activate installs exactly the pointer's pm, claude and Console flags
ok 479 - T2 activate installs exactly the pointer's pm, claude and Console flags
---
duration_ms: 3748.980252
type: 'test'
...
# Subtest: T3 a hand-edited unit refuses unit-flags-drift, names the difference and changes nothing
# Subtest: pm
ok 1 - pm
---
duration_ms: 1711.999991
type: 'test'
...
# Subtest: claude
ok 2 - claude
---
duration_ms: 1525.416453
type: 'test'
...
# Subtest: console
ok 3 - console
---
duration_ms: 1584.139375
type: 'test'
...
1..3
ok 480 - T3 a hand-edited unit refuses unit-flags-drift, names the difference and changes nothing
---
duration_ms: 4822.953808
type: 'test'
...
# Subtest: T4 each item 3 refusal changes nothing and logs one line with its code
# Subtest: copy-missing
ok 1 - copy-missing
---
duration_ms: 1171.002828
type: 'test'
...
# Subtest: copy-unreachable
ok 2 - copy-unreachable
---
duration_ms: 1346.896885
type: 'test'
...
# Subtest: copy-schema-unknown
ok 3 - copy-schema-unknown
---
duration_ms: 1265.870998
type: 'test'
...
# Subtest: already-active
ok 4 - already-active
---
duration_ms: 1254.990812
type: 'test'
...
# Subtest: instance-busy (another business active)
ok 5 - instance-busy (another business active)
---
duration_ms: 1276.989846
type: 'test'
...
# Subtest: instance-busy (this business activating)
ok 6 - instance-busy (this business activating)
---
duration_ms: 1345.929103
type: 'test'
...
# Subtest: drop-in-override
ok 7 - drop-in-override
---
duration_ms: 1249.678972
type: 'test'
...
# Subtest: no-pointer
ok 8 - no-pointer
---
duration_ms: 639.500232
type: 'test'
...
1..8
ok 481 - T4 each item 3 refusal changes nothing and logs one line with its code
---
duration_ms: 9553.143639
type: 'test'
...
# Subtest: T5 an activate with no migration stops the Console then the bus, installs, starts the bus then the Console
ok 482 - T5 an activate with no migration stops the Console then the bus, installs, starts the bus then the Console
---
duration_ms: 2271.568709
type: 'test'
...
# Subtest: T6 a migration without --migrate rolls back with migration-needs-flag
ok 483 - T6 a migration without --migrate rolls back with migration-needs-flag
---
duration_ms: 1830.197672
type: 'test'
...
# Subtest: T7 --migrate takes the backup before the migration runs
ok 484 - T7 --migrate takes the backup before the migration runs
---
duration_ms: 2046.792897
type: 'test'
...
# Subtest: T8 a failed migration restores the backup and keeps the store it replaced
ok 485 - T8 a failed migration restores the backup and keeps the store it replaced
---
duration_ms: 1956.46166
type: 'test'
...
# Subtest: T9 a store outside the target's chain rolls back with store-newer
ok 486 - T9 a store outside the target's chain rolls back with store-newer
---
duration_ms: 1722.743514
type: 'test'
...
# Subtest: T10 each gate check failing alone rolls back and puts every file back
# Subtest: units-inactive
ok 1 - units-inactive
---
duration_ms: 5246.096966
type: 'test'
...
# Subtest: bus-status
ok 2 - bus-status
---
duration_ms: 4587.038068
type: 'test'
...
# Subtest: healthz
ok 3 - healthz
---
duration_ms: 5868.469249
type: 'test'
...
# Subtest: copy-check
ok 4 - copy-check
---
duration_ms: 6217.547976
type: 'test'
...
# Subtest: pm-launch-unconfirmed
ok 5 - pm-launch-unconfirmed
---
duration_ms: 5092.550517
type: 'test'
...
1..5
ok 487 - T10 each gate check failing alone rolls back and puts every file back
---
duration_ms: 27012.731002
type: 'test'
...
# Subtest: T10b the PM check needs exactly one launched line for a live run of this start
# Subtest: no launched line
ok 1 - no launched line
---
duration_ms: 5086.573886
type: 'test'
...
# Subtest: two lines
ok 2 - two lines
---
duration_ms: 5314.204888
type: 'test'
...
# Subtest: a changed word
ok 3 - a changed word
---
duration_ms: 5150.182644
type: 'test'
...
# Subtest: run not in launches list
ok 4 - run not in launches list
---
duration_ms: 6447.860213
type: 'test'
...
# Subtest: run started before the start
ok 5 - run started before the start
---
duration_ms: 5128.017044
type: 'test'
...
# Subtest: a human launch with no journal line
ok 6 - a human launch with no journal line
---
duration_ms: 5039.880083
type: 'test'
...
# Subtest: run for another business
ok 7 - run for another business
---
duration_ms: 5116.375695
type: 'test'
...
# Subtest: run not live
ok 8 - run not live
---
duration_ms: 5074.051973
type: 'test'
...
# Subtest: one well-formed line and a live run pass
ok 9 - one well-formed line and a live run pass
---
duration_ms: 1872.335835
type: 'test'
...
1..9
ok 488 - T10b the PM check needs exactly one launched line for a live run of this start
---
duration_ms: 44230.953102
type: 'test'
...
# Subtest: T11 a rollback whose gate fails too: rollback-failed, exit 2, both units stopped, no retry
ok 489 - T11 a rollback whose gate fails too: rollback-failed, exit 2, both units stopped, no retry
---
duration_ms: 6967.154633
type: 'test'
...
# Subtest: T12 rollback takes the previous copy from the log
ok 490 - T12 rollback takes the previous copy from the log
---
duration_ms: 3157.114954
type: 'test'
...
# Subtest: T13 a rollback across a migration needs --restore, then restores and goes live
ok 491 - T13 a rollback across a migration needs --restore, then restores and goes live
---
duration_ms: 3686.823998
type: 'test'
...
# Subtest: T14 events written after the backup need --events N with the right N
ok 492 - T14 events written after the backup need --events N with the right N
---
duration_ms: 4438.462855
type: 'test'
...
# Subtest: T14b a rollback --restore whose gate fails stops both units and skips item 6
ok 493 - T14b a rollback --restore whose gate fails stops both units and skips item 6
---
duration_ms: 5800.746122
type: 'test'
...
# Subtest: T14c a rollback without --restore whose gate fails runs item 6
ok 494 - T14c a rollback without --restore whose gate fails runs item 6
---
duration_ms: 5815.231787
type: 'test'
...
# Subtest: T15 --plan names the migration and the restore and changes nothing
ok 495 - T15 --plan names the migration and the restore and changes nothing
---
duration_ms: 2339.140945
type: 'test'
...
# Subtest: T26 --plan lists the commits an activate adds, after the migration lines
ok 496 - T26 --plan lists the commits an activate adds, after the migration lines
---
duration_ms: 1267.174278
type: 'test'
...
# Subtest: T27 --plan names each migration step, or says the steps cannot be read
ok 497 - T27 --plan names each migration step, or says the steps cannot be read
---
duration_ms: 1005.72499
type: 'test'
...
# Subtest: T25 --plan refuses copies-unrelated when neither copy is an ancestor of the other
ok 498 - T25 --plan refuses copies-unrelated when neither copy is an ancestor of the other
---
duration_ms: 470.542144
type: 'test'
...
# Subtest: T23 --plan reads the store without changing a file, stopped or held
# Subtest: stopped store
ok 1 - stopped store
---
duration_ms: 590.656536
type: 'test'
...
# Subtest: held store
ok 2 - held store
---
duration_ms: 545.144141
type: 'test'
...
1..2
ok 499 - T23 --plan reads the store without changing a file, stopped or held
---
duration_ms: 1136.315135
type: 'test'
...
# Subtest: T24 business-mismatch and capture-failed refuse with exit 3; a short id is a usage error
ok 500 - T24 business-mismatch and capture-failed refuse with exit 3; a short id is a usage error
---
duration_ms: 1299.303932
type: 'test'
...
# Subtest: T16 status prints the pointer, the log, the check, bus status and drift, and writes nothing
ok 501 - T16 status prints the pointer, the log, the check, bus status and drift, and writes nothing
---
duration_ms: 900.386791
type: 'test'
...
# Subtest: T19 a started line with no final line: status shows it and every changing verb refuses
ok 502 - T19 a started line with no final line: status shows it and every changing verb refuses
---
duration_ms: 1163.333275
type: 'test'
...
# Subtest: T20 a held run lock refuses run-locked without a log line; status and --plan still run
ok 503 - T20 a held run lock refuses run-locked without a log line; status and --plan still run
---
duration_ms: 1252.36428
type: 'test'
...
# Subtest: T21 a bus unit with no MOSAIC_CLAUDE_BIN: adopt and activate refuse no-claude-pin
ok 504 - T21 a bus unit with no MOSAIC_CLAUDE_BIN: adopt and activate refuse no-claude-pin
---
duration_ms: 1394.598371
type: 'test'
...
# Subtest: T22 the stopped store read: a -wal or -shm refuses store-unclean and is left alone; a clean read adds no file
# Subtest: bus.sqlite-wal
ok 1 - bus.sqlite-wal
---
duration_ms: 1630.611218
type: 'test'
...
# Subtest: bus.sqlite-shm
ok 2 - bus.sqlite-shm
---
duration_ms: 1764.058899
type: 'test'
...
# Subtest: clean
ok 3 - clean
---
duration_ms: 1822.885981
type: 'test'
...
1..3
ok 505 - T22 the stopped store read: a -wal or -shm refuses store-unclean and is left alone; a clean read adds no file
---
duration_ms: 5218.171423
type: 'test'
...
# Subtest: T28 a unit path, drop-in directory or drop-in file that cannot be read, or a relative unit path, refuses drop-in-override before any stop
# Subtest: unit path
ok 1 - unit path
---
duration_ms: 798.784635
type: 'test'
...
# Subtest: drop-in directory
ok 2 - drop-in directory
---
duration_ms: 782.830597
type: 'test'
...
# Subtest: drop-in file
ok 3 - drop-in file
---
duration_ms: 752.29666
type: 'test'
...
# Subtest: relative unit path
ok 4 - relative unit path
---
duration_ms: 754.732245
type: 'test'
...
1..4
ok 506 - T28 a unit path, drop-in directory or drop-in file that cannot be read, or a relative unit path, refuses drop-in-override before any stop
---
duration_ms: 3089.408174
type: 'test'
...
# Subtest: T29 a bus that stops during the held-store read: --plan says so, rollback --restore refuses restore-mismatch
# Subtest: --plan
ok 1 - --plan
---
duration_ms: 801.557898
type: 'test'
...
# Subtest: rollback --restore
ok 2 - rollback --restore
---
duration_ms: 2189.816107
type: 'test'
...
1..2
ok 507 - T29 a bus that stops during the held-store read: --plan says so, rollback --restore refuses restore-mismatch
---
duration_ms: 2991.843025
type: 'test'
...
# Subtest: T30 a copy check that agrees on another copy fails the gate with copy-check and rolls back
ok 508 - T30 a copy check that agrees on another copy fails the gate with copy-check and rolls back
---
duration_ms: 5780.119013
type: 'test'
...
# Subtest: T31 a quoted or escaped Environment= or ExecStart= is unreadable: refusals by name, nothing read from /a
# Subtest: Environment double quotes
ok 1 - Environment double quotes
---
duration_ms: 1675.673724
type: 'test'
...
# Subtest: Environment single quotes
ok 2 - Environment single quotes
---
duration_ms: 1654.052043
type: 'test'
...
# Subtest: Environment backslash
ok 3 - Environment backslash
---
duration_ms: 1662.256582
type: 'test'
...
# Subtest: ExecStart quotes
ok 4 - ExecStart quotes
---
duration_ms: 1664.911887
type: 'test'
...
# Subtest: Console ExecStart quotes
ok 5 - Console ExecStart quotes
---
duration_ms: 1642.716601
type: 'test'
...
1..5
ok 509 - T31 a quoted or escaped Environment= or ExecStart= is unreadable: refusals by name, nothing read from /a
---
duration_ms: 8300.62655
type: 'test'
...
# Subtest: T32 item 1: --pm-after-harness refuses a target without harness or a file that sets it, and passes without the PM
# Subtest: usage: not with --pm, and only for activate
ok 1 - usage: not with --pm, and only for activate
---
duration_ms: 621.554285
type: 'test'
...
# Subtest: pm-after-harness-target
ok 2 - pm-after-harness-target
---
duration_ms: 880.701524
type: 'test'
...
# Subtest: pm-after-harness-set
ok 3 - pm-after-harness-set
---
duration_ms: 1240.725402
type: 'test'
...
# Subtest: a pointer without pm
ok 4 - a pointer without pm
---
duration_ms: 825.828559
type: 'test'
...
# Subtest: phase 1 installs without --pm, skips pm_launched and writes the pending pointer
ok 5 - phase 1 installs without --pm, skips pm_launched and writes the pending pointer
---
duration_ms: 1880.679918
type: 'test'
...
1..5
ok 510 - T32 item 1: --pm-after-harness refuses a target without harness or a file that sets it, and passes without the PM
---
duration_ms: 5450.344749
type: 'test'
...
# Subtest: T33 item 2: read_pointer takes pmPending only as true beside pm false; a pending pointer refuses activate and shows in status
# Subtest: read_pointer
ok 1 - read_pointer
---
duration_ms: 1518.94268
type: 'test'
...
# Subtest: pm-pending, already-adopted and the status line
ok 2 - pm-pending, already-adopted and the status line
---
duration_ms: 2655.911618
type: 'test'
...
1..2
ok 511 - T33 item 2: read_pointer takes pmPending only as true beside pm false; a pending pointer refuses activate and shows in status
---
duration_ms: 4175.31828
type: 'test'
...
# Subtest: T34 item 3: pm-on refuses before any stop, passes with the PM, or puts the phase-1 bus back
# Subtest: not-pending
ok 1 - not-pending
---
duration_ms: 700.969769
type: 'test'
...
# Subtest: harness-unset
ok 2 - harness-unset
---
duration_ms: 2188.449354
type: 'test'
...
# Subtest: a launched line passes: the bus alone restarts with --pm
ok 3 - a launched line passes: the bus alone restarts with --pm
---
duration_ms: 3165.231982
type: 'test'
...
# Subtest: a failed pm_launched puts the phase-1 unit back: exit 1, still pending
ok 4 - a failed pm_launched puts the phase-1 unit back: exit 1, still pending
---
duration_ms: 5949.545189
type: 'test'
...
# Subtest: a failed phase-1 gate too: pm-on-down, exit 2, both units stopped
ok 5 - a failed phase-1 gate too: pm-on-down, exit 2, both units stopped
---
duration_ms: 7874.80142
type: 'test'
...
1..5
ok 512 - T34 item 3: pm-on refuses before any stop, passes with the PM, or puts the phase-1 bus back
---
duration_ms: 19879.995123
type: 'test'
...
# Subtest: T35 item 4: rollback from pending installs --pm; a plug-in kind the target lacks refuses by name
# Subtest: rollback from pending gates pm_launched on the old copy
ok 1 - rollback from pending gates pm_launched on the old copy
---
duration_ms: 3180.463363
type: 'test'
...
# Subtest: after the harness set, rollback refuses until harness is gone
ok 2 - after the harness set, rollback refuses until harness is gone
---
duration_ms: 4501.900775
type: 'test'
...
# Subtest: activate names every kind the target lacks
ok 3 - activate names every kind the target lacks
---
duration_ms: 1298.060401
type: 'test'
...
1..3
ok 513 - T35 item 4: rollback from pending installs --pm; a plug-in kind the target lacks refuses by name
---
duration_ms: 8981.13395
type: 'test'
...
# Subtest: T36 --plan shows the pending state and lists the row 169 refusals it can see
ok 514 - T36 --plan shows the pending state and lists the row 169 refusals it can see
---
duration_ms: 3151.36886
type: 'test'
...
# Subtest: T37 tester-port activate writes pointer and unit, replaces the port, and supported re-pin and rollback keep it
ok 515 - T37 tester-port activate writes pointer and unit, replaces the port, and supported re-pin and rollback keep it
---
duration_ms: 6444.301244
type: 'test'
...
# Subtest: T38 tester-port rollback to unsupported target drops flag in plan, steps, unit and pointer
ok 516 - T38 tester-port rollback to unsupported target drops flag in plan, steps, unit and pointer
---
duration_ms: 3250.091753
type: 'test'
...
# Subtest: T39 tester-port explicit unsupported target reads target copy and refuses before stopping either unit
ok 517 - T39 tester-port explicit unsupported target reads target copy and refuses before stopping either unit
---
duration_ms: 716.796118
type: 'test'
...
# Subtest: T40 tester-port invalid values refuse exit 4 before stopping, including tunnel and main ports
ok 518 - T40 tester-port invalid values refuse exit 4 before stopping, including tunnel and main ports
---
duration_ms: 723.785436
type: 'test'
...
# Subtest: T41 tester-port inherited activate to unsupported target drops it and retains drift refusal and failed-run recovery
ok 519 - T41 tester-port inherited activate to unsupported target drops it and retains drift refusal and failed-run recovery
---
duration_ms: 7777.94466
type: 'test'
...
# Subtest: T42 tester-port pm-on preserves pointer Console flags
ok 520 - T42 tester-port pm-on preserves pointer Console flags
---
duration_ms: 2857.36314
type: 'test'
...
# Subtest: T43 row 180 item 1: runs in one second get distinct activation ids, rollback sets and post-attempt stores
# Subtest: activate then pm-on on the same copy
ok 1 - activate then pm-on on the same copy
---
duration_ms: 2910.099675
type: 'test'
...
# Subtest: two restores: an old-form id and a suffixed one, each with its own post-attempt store
ok 2 - two restores: an old-form id and a suffixed one, each with its own post-attempt store
---
duration_ms: 5858.576376
type: 'test'
...
# Subtest: adopt takes the next free id too
ok 3 - adopt takes the next free id too
---
duration_ms: 590.493504
type: 'test'
...
# Subtest: all ten names taken: capture-failed before anything stops, and the log line names no activation
ok 4 - all ten names taken: capture-failed before anything stops, and the log line names no activation
---
duration_ms: 871.899376
type: 'test'
...
# Subtest: --restore takes an id with or without -1 to -9 and nothing else
ok 5 - --restore takes an id with or without -1 to -9 and nothing else
---
duration_ms: 939.201195
type: 'test'
...
1..5
ok 521 - T43 row 180 item 1: runs in one second get distinct activation ids, rollback sets and post-attempt stores
---
duration_ms: 11171.203366
type: 'test'
...
# Subtest: T44 row 180 item 2: --plan lists tester-port-invalid and tester-port-target with its other refusals
# Subtest: a bad tester port
ok 1 - a bad tester port
---
duration_ms: 1914.429646
type: 'test'
...
# Subtest: without --plan a bad port is usage before any pointer read
ok 2 - without --plan a bad port is usage before any pointer read
---
duration_ms: 348.516761
type: 'test'
...
# Subtest: a target Console without --tester-port
ok 3 - a target Console without --tester-port
---
duration_ms: 933.921549
type: 'test'
...
1..3
ok 522 - T44 row 180 item 2: --plan lists tester-port-invalid and tester-port-target with its other refusals
---
duration_ms: 3197.492129
type: 'test'
...
# Subtest: T45 row 181 items 2 and 3: the restore guard counts events and every COUNTED table
# Subtest: both modes count events and each listed table, and a table the store lacks counts 0
ok 1 - both modes count events and each listed table, and a table the store lacks counts 0
---
duration_ms: 843.36262
type: 'test'
...
# Subtest: one instance_names row and no event refuses before any stop; --events 1 restores
ok 2 - one instance_names row and no event refuses before any stop; --events 1 restores
---
duration_ms: 4010.587285
type: 'test'
...
# Subtest: one usage_records row and no event refuses before any stop; --events 1 restores
ok 3 - one usage_records row and no event refuses before any stop; --events 1 restores
---
duration_ms: 4002.514572
type: 'test'
...
# Subtest: a listed table that cannot be read refuses restore-mismatch before any stop
ok 4 - a listed table that cannot be read refuses restore-mismatch before any stop
---
duration_ms: 2243.427627
type: 'test'
...
# Subtest: the in-run recount counts the listed tables too
ok 5 - the in-run recount counts the listed tables too
---
duration_ms: 3076.076335
type: 'test'
...
1..5
ok 523 - T45 row 181 items 2 and 3: the restore guard counts events and every COUNTED table
---
duration_ms: 14176.843137
type: 'test'
...
# Subtest: T46 row 181 item 4: every table in the bus schema is in exactly one of four lists
ok 524 - T46 row 181 item 4: every table in the bus schema is in exactly one of four lists
---
duration_ms: 2.819234
type: 'test'
...
# Subtest: T47 row 185 test 1: a same-schema activate leaves a whole backup and the log line names it
ok 525 - T47 row 185 test 1: a same-schema activate leaves a whole backup and the log line names it
---
duration_ms: 1821.525627
type: 'test'
...
# Subtest: T48 row 185 test 2: a gate failure on a same-schema activate rolls back without a restore
ok 526 - T48 row 185 test 2: a gate failure on a same-schema activate rolls back without a restore
---
duration_ms: 4655.124907
type: 'test'
...
# Subtest: T49 row 185 test 3: a same-schema rollback --restore restores, or refuses rows written after STAMP
# Subtest: no rows after STAMP: restores and goes live
ok 1 - no rows after STAMP: restores and goes live
---
duration_ms: 3240.562514
type: 'test'
...
# Subtest: one instance_names row after STAMP refuses post-backup-events; --events 1 restores
ok 2 - one instance_names row after STAMP refuses post-backup-events; --events 1 restores
---
duration_ms: 3609.767846
type: 'test'
...
1..2
ok 527 - T49 row 185 test 3: a same-schema rollback --restore restores, or refuses rows written after STAMP
---
duration_ms: 6850.95863
type: 'test'
...
# Subtest: T50 row 185 test 4: activate --plan prints the backup line and writes nothing
ok 528 - T50 row 185 test 4: activate --plan prints the backup line and writes nothing
---
duration_ms: 2338.850983
type: 'test'
...
# Subtest: T51 row 185 test 5: an activate with no store file takes no backup
ok 529 - T51 row 185 test 5: an activate with no store file takes no backup
---
duration_ms: 1986.502106
type: 'test'
...
# Subtest: T52 row 186: the activate plan's backup line says what the run will do
# Subtest: same schema
ok 1 - same schema
---
duration_ms: 2117.870459
type: 'test'
...
# Subtest: same schema with --migrate
ok 2 - same schema with --migrate
---
duration_ms: 2040.980734
type: 'test'
...
# Subtest: in chain with --migrate
ok 3 - in chain with --migrate
---
duration_ms: 2054.324506
type: 'test'
...
# Subtest: in chain without --migrate
ok 4 - in chain without --migrate
---
duration_ms: 1940.985389
type: 'test'
...
# Subtest: outside the chain
ok 5 - outside the chain
---
duration_ms: 1955.59548
type: 'test'
...
# Subtest: outside the chain with --migrate
ok 6 - outside the chain with --migrate
---
duration_ms: 1903.901859
type: 'test'
...
1..6
ok 530 - T52 row 186: the activate plan's backup line says what the run will do
---
duration_ms: 12014.707738
type: 'test'
...
# Subtest: T178 proxy proof header and path survive re-pin and rollback unchanged in the pointer and unit
ok 531 - T178 proxy proof header and path survive re-pin and rollback unchanged in the pointer and unit
---
duration_ms: 3052.961839
type: 'test'
...
# Subtest: T178 proxy proof pair survives a tester-port replacement as well
ok 532 - T178 proxy proof pair survives a tester-port replacement as well
---
duration_ms: 1852.736752
type: 'test'
...
# Subtest: T53 row 187: activate sets, carries and drops the proof pair
# Subtest: tests 1 and 9: the pair goes after the preview flags, before --send and the kept --tester-port, as the unit renders it; a new pair replaces it
ok 1 - tests 1 and 9: the pair goes after the preview flags, before --send and the kept --tester-port, as the unit renders it; a new pair replaces it
---
duration_ms: 5137.199451
type: 'test'
...
# Subtest: tests 2 and 3: an activate of the live copy writes the pair; a later activate and a rollback carry it
ok 2 - tests 2 and 3: an activate of the live copy writes the pair; a later activate and a rollback carry it
---
duration_ms: 4787.822132
type: 'test'
...
# Subtest: test 2: only a pair change may name the live copy; the log keeps from and to, and rollback still goes to the earlier copy
ok 3 - test 2: only a pair change may name the live copy; the log keeps from and to, and rollback still goes to the earlier copy
---
duration_ms: 6261.188157
type: 'test'
...
# Subtest: test 2: a live-copy activate says only the Console flags change, and backs up the stopped store before it installs
ok 4 - test 2: a live-copy activate says only the Console flags change, and backs up the stopped store before it installs
---
duration_ms: 3871.338773
type: 'test'
...
# Subtest: test 3: pm-on keeps the pair
ok 5 - test 3: pm-on keeps the pair
---
duration_ms: 2997.817504
type: 'test'
...
# Subtest: test 4: --no-proof drops the pair from the pointer and the unit and says so; with no pair it says so and passes
ok 6 - test 4: --no-proof drops the pair from the pointer and the unit and says so; with no pair it says so and passes
---
duration_ms: 5302.214348
type: 'test'
...
# Subtest: test 5: each refusal exits 3 before anything stops
ok 7 - test 5: each refusal exits 3 before anything stops
---
duration_ms: 3706.786565
type: 'test'
...
# Subtest: tests 5 and 9: --plan lists every proof refusal with the others and writes nothing
ok 8 - tests 5 and 9: --plan lists every proof refusal with the others and writes nothing
---
duration_ms: 829.651031
type: 'test'
...
# Subtest: test 6: usage errors
ok 9 - test 6: usage errors
---
duration_ms: 740.908413
type: 'test'
...
# Subtest: test 7: a rollback to a copy without proof support drops the pair and says so
ok 10 - test 7: a rollback to a copy without proof support drops the pair and says so
---
duration_ms: 3288.997971
type: 'test'
...
# Subtest: test 7: an activate to a copy without proof support refuses proof-target without --no-proof and passes with it
ok 11 - test 7: an activate to a copy without proof support refuses proof-target without --no-proof and passes with it
---
duration_ms: 3682.291821
type: 'test'
...
1..11
ok 533 - T53 row 187: activate sets, carries and drops the proof pair
---
duration_ms: 40608.29307
type: 'test'
...
# Subtest: T54 row 188: a carried pair gets the proof file checks, and a proof file inside the repository refuses
# Subtest: test 1: an activate that carries the pair refuses after chmod 644, in the plan and the run, before anything stops
ok 1 - test 1: an activate that carries the pair refuses after chmod 644, in the plan and the run, before anything stops
---
duration_ms: 2198.70726
type: 'test'
...
# Subtest: test 1: an activate that carries the pair refuses after a symlink to a mode-600 file, in the plan and the run, before anything stops
ok 2 - test 1: an activate that carries the pair refuses after a symlink to a mode-600 file, in the plan and the run, before anything stops
---
duration_ms: 2277.209176
type: 'test'
...
# Subtest: test 1: an activate that carries the pair refuses after removal, in the plan and the run, before anything stops
ok 3 - test 1: an activate that carries the pair refuses after removal, in the plan and the run, before anything stops
---
duration_ms: 2270.001154
type: 'test'
...
# Subtest: test 2: a rollback that carries the pair refuses after chmod 644, in the plan and the run, before anything stops
ok 4 - test 2: a rollback that carries the pair refuses after chmod 644, in the plan and the run, before anything stops
---
duration_ms: 2490.090647
type: 'test'
...
# Subtest: test 3: a proof file inside the repository refuses, in the plan and the run, before anything stops
ok 5 - test 3: a proof file inside the repository refuses, in the plan and the run, before anything stops
---
duration_ms: 998.665087
type: 'test'
...
# Subtest: test 4: a path outside the repository through a directory symlink into it refuses on its realpath
ok 6 - test 4: a path outside the repository through a directory symlink into it refuses on its realpath
---
duration_ms: 969.722456
type: 'test'
...
1..6
ok 534 - T54 row 188: a carried pair gets the proof file checks, and a proof file inside the repository refuses
---
duration_ms: 11205.559866
type: 'test'
...
# Subtest: T55 row 189: activate --no-send drops --send, and rollback and pm-on carry it off
# Subtest: test 1: a live-copy --no-send drops --send from the pointer and the unit, keeps the rest in order, logs the step and backs up the stopped store
ok 1 - test 1: a live-copy --no-send drops --send from the pointer and the unit, keeps the rest in order, logs the step and backs up the stopped store
---
duration_ms: 2097.189269
type: 'test'
...
# Subtest: test 2: a plain live-copy activate still refuses already-active, and so does --no-send once --send is gone
ok 2 - test 2: a plain live-copy activate still refuses already-active, and so does --no-send once --send is gone
---
duration_ms: 3132.535604
type: 'test'
...
# Subtest: test 3: --plan prints one send: line in each case, with the live-copy note on a same-copy run
ok 3 - test 3: --plan prints one send: line in each case, with the live-copy note on a same-copy run
---
duration_ms: 4470.926401
type: 'test'
...
# Subtest: test 4: after --no-send, a rollback to the earlier copy leaves --send out of the pointer and the unit
ok 4 - test 4: after --no-send, a rollback to the earlier copy leaves --send out of the pointer and the unit
---
duration_ms: 3297.308622
type: 'test'
...
# Subtest: test 4: pm-on after --no-send keeps --send off
ok 5 - test 4: pm-on after --no-send keeps --send off
---
duration_ms: 3163.639084
type: 'test'
...
# Subtest: test 5: --no-send on rollback, pm-on, status, adopt or rehearse is a usage error
ok 6 - test 5: --no-send on rollback, pm-on, status, adopt or rehearse is a usage error
---
duration_ms: 663.082806
type: 'test'
...
# Subtest: test 6: with both a pair and --send in the pointer, --no-send and --no-proof each drop what they name and keep the rest
ok 7 - test 6: with both a pair and --send in the pointer, --no-send and --no-proof each drop what they name and keep the rest
---
duration_ms: 10107.458869
type: 'test'
...
1..7
ok 535 - T55 row 189: activate --no-send drops --send, and rollback and pm-on carry it off
---
duration_ms: 26933.516253
type: 'test'
...
# Subtest: T57 row 200: activate --sso, its refusals before any stop, and the rollback to a Console without --sso
# Subtest: item 1: --sso drops the preview set and the pair, puts --sso before --send and the tester port, and the plan names what it drops and carries
ok 1 - item 1: --sso drops the preview set and the pair, puts --sso before --send and the tester port, and the plan names what it drops and carries
---
duration_ms: 3815.29762
type: 'test'
...
# Subtest: item 1: --sso may re-pin the live copy once; later activates carry it; --no-send still drops --send
ok 2 - item 1: --sso may re-pin the live copy once; later activates carry it; --no-send still drops --send
---
duration_ms: 9010.914135
type: 'test'
...
# Subtest: item 1: --sso with a pair or --no-proof, or on any verb but activate, is a usage error
ok 3 - item 1: --sso with a pair or --no-proof, or on any verb but activate, is a usage error
---
duration_ms: 687.017272
type: 'test'
...
# Subtest: item 2: a target without --sso, a missing or bad console.sso, and each slot problem refuse before any stop
ok 4 - item 2: a target without --sso, a missing or bad console.sso, and each slot problem refuse before any stop
---
duration_ms: 5707.041681
type: 'test'
...
# Subtest: item 3: a config whose console key the target loader refuses stops an activate or a rollback before any stop, naming the first step
ok 5 - item 3: a config whose console key the target loader refuses stops an activate or a rollback before any stop, naming the first step
---
duration_ms: 4359.717723
type: 'test'
...
# Subtest: item 3: a rollback from --sso to a Console without it takes the flags from the set of the activation onto the copy, past a same-copy re-pin (sage-1389)
ok 6 - item 3: a rollback from --sso to a Console without it takes the flags from the set of the activation onto the copy, past a same-copy re-pin (sage-1389)
---
duration_ms: 11095.662384
type: 'test'
...
# Subtest: item 3: a rollback set that is missing, fails its sums, holds no argv or already ran --sso refuses sso-rollback-flags
ok 7 - item 3: a rollback set that is missing, fails its sums, holds no argv or already ran --sso refuses sso-rollback-flags
---
duration_ms: 4317.220084
type: 'test'
...
# Subtest: round 2 (webby-0028 N1): run through a symlinked repository path, a slot or a proof file inside the repository still refuses
ok 8 - round 2 (webby-0028 N1): run through a symlinked repository path, a slot or a proof file inside the repository still refuses
---
duration_ms: 2170.819596
type: 'test'
...
# Subtest: round 2 (webby-0028 N2): a config.json that does not parse stops the run before anything is read or stopped
ok 9 - round 2 (webby-0028 N2): a config.json that does not parse stops the run before anything is read or stopped
---
duration_ms: 2010.160964
type: 'test'
...
# Subtest: round 3 (sage-1556): a named instance turns --sso on with its own config, slot and Console unit, and rolls back from its own set
ok 10 - round 3 (sage-1556): a named instance turns --sso on with its own config, slot and Console unit, and rolls back from its own set
---
duration_ms: 4152.339947
type: 'test'
...
# Subtest: row 238 (\#1744): on a named instance the sso-config first step names --instance NAME in both commands
ok 11 - row 238 (\#1744): on a named instance the sso-config first step names --instance NAME in both commands
---
duration_ms: 1032.041002
type: 'test'
...
1..11
ok 536 - T57 row 200: activate --sso, its refusals before any stop, and the rollback to a Console without --sso
---
duration_ms: 48360.195255
type: 'test'
...
# Subtest: T58 row 273: activate --send and --no-sso
# Subtest: T1: --sso --send turns send on after --sso and before the tester port, and the plan says so
ok 1 - T1: --sso --send turns send on after --sso and before the tester port, and the plan says so
---
duration_ms: 2602.79224
type: 'test'
...
# Subtest: T1: --send beside a carried --sso re-pins the live copy once, and the plan names the carried --sso
ok 2 - T1: --send beside a carried --sso re-pins the live copy once, and the plan names the carried --sso
---
duration_ms: 4157.845217
type: 'test'
...
# Subtest: T2: --send without --sso, given or carried, refuses before any stop, and --plan lists it
ok 3 - T2: --send without --sso, given or carried, refuses before any stop, and --plan lists it
---
duration_ms: 1964.532641
type: 'test'
...
# Subtest: T2 (sage-2315 B1): a rollback from an --sso --send pointer to a Console without --sso ends with neither flag
ok 4 - T2 (sage-2315 B1): a rollback from an --sso --send pointer to a Console without --sso ends with neither flag
---
duration_ms: 3693.751358
type: 'test'
...
# Subtest: T2 and T4: --send with --no-send, --no-sso with --sso, --send, a pair or --no-proof, and either flag on another verb, is a usage error
ok 5 - T2 and T4: --send with --no-send, --no-sso with --sso, --send, a pair or --no-proof, and either flag on another verb, is a usage error
---
duration_ms: 2129.454308
type: 'test'
...
# Subtest: T3: --no-sso on the same copy returns the unit and the pointer to the flags from before --sso, without --send
ok 6 - T3: --no-sso on the same copy returns the unit and the pointer to the flags from before --sso, without --send
---
duration_ms: 5215.566707
type: 'test'
...
# Subtest: T3: the set walk passes later re-pins that ran with --sso, and the tester follows the pointer
ok 7 - T3: the set walk passes later re-pins that ran with --sso, and the tester follows the pointer
---
duration_ms: 5080.769546
type: 'test'
...
# Subtest: T3 (sage-2305 a): after --sso, two later re-pins that carry it, then --no-sso restores the flags from before --sso byte for byte
ok 8 - T3 (sage-2305 a): after --sso, two later re-pins that carry it, then --no-sso restores the flags from before --sso byte for byte
---
duration_ms: 7750.587564
type: 'test'
...
# Subtest: T4 (sage-2305 b): a log in which every set holds a Console with --sso refuses before any unit stops
ok 9 - T4 (sage-2305 b): a log in which every set holds a Console with --sso refuses before any unit stops
---
duration_ms: 3656.076359
type: 'test'
...
# Subtest: T4: --no-sso refuses before any stop on a pointer without --sso, a tampered or missing set, a set that ran with --sso, an ok line with no activation, and a log with no set
ok 10 - T4: --no-sso refuses before any stop on a pointer without --sso, a tampered or missing set, a set that ran with --sso, an ok line with no activation, and a log with no set
---
duration_ms: 5610.081419
type: 'test'
...
1..10
ok 537 - T58 row 273: activate --send and --no-sso
---
duration_ms: 41863.251972
type: 'test'
...
# Subtest: R1 rehearse passes on the same schema; the scratch root holds its files and the live files stay byte-identical
ok 538 - R1 rehearse passes on the same schema; the scratch root holds its files and the live files stay byte-identical
---
duration_ms: 2425.116526
type: 'test'
...
# Subtest: R2 rehearse runs the migration checks when the schema differs; the live store stays at 3g
ok 539 - R2 rehearse runs the migration checks when the schema differs; the live store stays at 3g
---
duration_ms: 3550.384697
type: 'test'
...
# Subtest: R3 a failing migration gives REHEARSAL_FAIL migrate and starts nothing
ok 540 - R3 a failing migration gives REHEARSAL_FAIL migrate and starts nothing
---
duration_ms: 374.107041
type: 'test'
...
# Subtest: R4 a host that does not start, does not answer status, reports another pid, launches anyway, makes a launches directory or keeps its lock each fails by name
ok 541 - R4 a host that does not start, does not answer status, reports another pid, launches anyway, makes a launches directory or keeps its lock each fails by name
---
duration_ms: 24492.907843
type: 'test'
...
# Subtest: R5 a host that ignores SIGTERM gets SIGKILL and FAIL host-stopped
ok 542 - R5 a host that ignores SIGTERM gets SIGKILL and FAIL host-stopped
---
duration_ms: 4425.26402
type: 'test'
...
# Subtest: R6 a Console that does not answer /healthz gives REHEARSAL_FAIL healthz
ok 543 - R6 a Console that does not answer /healthz gives REHEARSAL_FAIL healthz
---
duration_ms: 5605.330545
type: 'test'
...
# Subtest: R7 a host on another copy fails copy-match
ok 544 - R7 a host on another copy fails copy-match
---
duration_ms: 5618.577041
type: 'test'
...
# Subtest: R8 a scratch port in use or reserved refuses, and the rehearsal takes no other port
ok 545 - R8 a scratch port in use or reserved refuses, and the rehearsal takes no other port
---
duration_ms: 517.918668
type: 'test'
...
# Subtest: R9 mos-0963: a role reference left outside placeholders/, or left on an env variable, fails credential-ref-live before the host starts
ok 546 - R9 mos-0963: a role reference left outside placeholders/, or left on an env variable, fails credential-ref-live before the host starts
---
duration_ms: 686.786513
type: 'test'
...
# Subtest: R10 mos-0962: a scratch business that still sets a tracker fails tracker-configured
ok 547 - R10 mos-0962: a scratch business that still sets a tracker fails tracker-configured
---
duration_ms: 339.082354
type: 'test'
...
# Subtest: R11 mos-0961: a scratch config on the live data root or on any root but the scratch one, or a sessions.json naming a running pid, refuses by name
ok 548 - R11 mos-0961: a scratch config on the live data root or on any root but the scratch one, or a sessions.json naming a running pid, refuses by name
---
duration_ms: 1340.214655
type: 'test'
...
# Subtest: R12 mos-0962: a notifier config with a binding fails notify-off
ok 549 - R12 mos-0962: a notifier config with a binding fails notify-off
---
duration_ms: 334.027557
type: 'test'
...
# Subtest: R13 the pre-checks: an old copy, a backup that fails its sums, a missing backup or pointer, and usage
ok 550 - R13 the pre-checks: an old copy, a backup that fails its sums, a missing backup or pointer, and usage
---
duration_ms: 480.026701
type: 'test'
...
# Subtest: R14 a host that writes the live config, the live business file or the backup fails the end check by name
ok 551 - R14 a host that writes the live config, the live business file or the backup fails the end check by name
---
duration_ms: 10289.31301
type: 'test'
...
# Subtest: R15 a rehearsal stopped by TERM, INT or HUP fails signal and still stops the host and Console and runs the end checks
ok 552 - R15 a rehearsal stopped by TERM, INT or HUP fails signal and still stops the host and Console and runs the end checks
---
duration_ms: 9953.515043
type: 'test'
...
# Subtest: row 233: --backup last takes the newest backup the log records; a later line with backup null does not hide it, and the store line names it
ok 553 - row 233: --backup last takes the newest backup the log records; a later line with backup null does not hide it, and the store line names it
---
duration_ms: 3456.999739
type: 'test'
...
# Subtest: row 233: --backup last with no backup in the log, or no log, exits 3 with no-backup and makes no rehearsal directory
ok 554 - row 233: --backup last with no backup in the log, or no log, exits 3 with no-backup and makes no rehearsal directory
---
duration_ms: 202.031113
type: 'test'
...
# Subtest: row 233: --backup last refuses a newest backup that is not an activation id, with exit 1
ok 555 - row 233: --backup last refuses a newest backup that is not an activation id, with exit 1
---
duration_ms: 126.865534
type: 'test'
...
# Subtest: T56 row 190: named instances side by side on one unit directory, $BIN and set of stand-ins
# Subtest: T-I3 each instance renders its own config, session env and Description, and nothing of another
ok 1 - T-I3 each instance renders its own config, session env and Description, and nothing of another
---
duration_ms: 1533.969611
type: 'test'
...
# Subtest: T-I4 a Console port another installed Console takes refuses port-claimed, and a named instance keeps off the default ports
ok 2 - T-I4 a Console port another installed Console takes refuses port-claimed, and a named instance keeps off the default ports
---
duration_ms: 1979.435731
type: 'test'
...
# Subtest: T-I6 alpha's activate and rollback reach nothing of beta's
ok 3 - T-I6 alpha's activate and rollback reach nothing of beta's
---
duration_ms: 3803.172796
type: 'test'
...
# Subtest: T-I6 swapped: beta's reach nothing of alpha's
ok 4 - T-I6 swapped: beta's reach nothing of alpha's
---
duration_ms: 3811.595803
type: 'test'
...
# Subtest: T-I7 MOSAIC_CONFIG naming alpha's config with no flag refuses instance-root-mismatch and changes nothing
ok 5 - T-I7 MOSAIC_CONFIG naming alpha's config with no flag refuses instance-root-mismatch and changes nothing
---
duration_ms: 683.28843
type: 'test'
...
# Subtest: T-I9 another instance's bus active refuses nothing; one of this instance's does
ok 6 - T-I9 another instance's bus active refuses nothing; one of this instance's does
---
duration_ms: 5796.544064
type: 'test'
...
1..6
ok 556 - T56 row 190: named instances side by side on one unit directory, $BIN and set of stand-ins
---
duration_ms: 17609.219396
type: 'test'
...
# Subtest: row196 explicit socket conversion refuses inherited TCP before stop and rollback disables socket
ok 557 - row196 explicit socket conversion refuses inherited TCP before stop and rollback disables socket
---
duration_ms: 5617.92663
type: 'test'
...
# Subtest: row196 SSO socket conversion pins pointer and unit argv order without send
ok 558 - row196 SSO socket conversion pins pointer and unit argv order without send
---
duration_ms: 2201.785524
type: 'test'
...
# Subtest: row196 interpreter activation checks receipt, identity, plan and startup log
# Subtest: plan and started log preserve the same interpreter JSON
ok 1 - plan and started log preserve the same interpreter JSON
---
duration_ms: 2110.424885
type: 'test'
...
# Subtest: interpreter-receipt-refuse fails at the gate and restores the pointer
ok 2 - interpreter-receipt-refuse fails at the gate and restores the pointer
---
duration_ms: 3332.204728
type: 'test'
...
# Subtest: interpreter-drift fails at the gate and restores the pointer
ok 3 - interpreter-drift fails at the gate and restores the pointer
---
duration_ms: 3323.365441
type: 'test'
...
# Subtest: missing-verifier refuses before any start or stop
ok 4 - missing-verifier refuses before any start or stop
---
duration_ms: 985.347103
type: 'test'
...
# Subtest: interpreter-unsafe refuses before any start or stop
ok 5 - interpreter-unsafe refuses before any start or stop
---
duration_ms: 1009.493255
type: 'test'
...
1..5
ok 559 - row196 interpreter activation checks receipt, identity, plan and startup log
---
duration_ms: 10762.222001
type: 'test'
...
# Subtest: row196 rehearsal selects socket only for marked copies and uses scratch dataRoot
# Subtest: socket copy
ok 1 - socket copy
---
duration_ms: 3419.243463
type: 'test'
...
# Subtest: legacy copy
ok 2 - legacy copy
---
duration_ms: 3428.024236
type: 'test'
...
1..2
ok 560 - row196 rehearsal selects socket only for marked copies and uses scratch dataRoot
---
duration_ms: 6847.863438
type: 'test'
...
# Subtest: row 233: sequence 1: confirm fails healthz, the driver reverts, renders the old copy and confirm --rollback --cause A5 passes: exit 1
ok 561 - row 233: sequence 1: confirm fails healthz, the driver reverts, renders the old copy and confirm --rollback --cause A5 passes: exit 1
---
duration_ms: 10778.459106
type: 'test'
...
# Subtest: row 233: sequence 2: activate --migrate fails at the wrapper, revert restores the store, confirm --rollback --cause A3: exit 1
ok 562 - row 233: sequence 2: activate --migrate fails at the wrapper, revert restores the store, confirm --rollback --cause A3: exit 1
---
duration_ms: 5665.058615
type: 'test'
...
# Subtest: row 233: sequence 3: root's render of the new copy fails, the driver rolls back with --cause A4, and holds the lock to the end: exit 1
ok 563 - row 233: sequence 3: root's render of the new copy fails, the driver rolls back with --cause A4, and holds the lock to the end: exit 1
---
duration_ms: 4906.648049
type: 'test'
...
# Subtest: row 233: sequence 4: a capture failure is exit 3 from the stage, and A2f restarts the old units and gates them: exit 1
ok 564 - row 233: sequence 4: a capture failure is exit 3 from the stage, and A2f restarts the old units and gates them: exit 1
---
duration_ms: 2703.211143
type: 'test'
...
# Subtest: row 233: N1: a bus that outlives A2's timeout keeps its old start, so A2f's gate fails stale-start: exit 2, both units stopped
ok 565 - row 233: N1: a bus that outlives A2's timeout keeps its old start, so A2f's gate fails stale-start: exit 2, both units stopped
---
duration_ms: 7145.706532
type: 'test'
...
# Subtest: row 233: sequence 5: confirm of the wrong copy is refused, and the driver rolls back with --cause A5: exit 1
ok 566 - row 233: sequence 5: confirm of the wrong copy is refused, and the driver rolls back with --cause A5: exit 1
---
duration_ms: 3618.75453
type: 'test'
...
# Subtest: row 233: sequence 6: a revert that fails stops both units at exit 2, and the next run refuses at its --plan with nothing stopped
ok 567 - row 233: sequence 6: a revert that fails stops both units at exit 2, and the next run refuses at its --plan with nothing stopped
---
duration_ms: 2982.675754
type: 'test'
...
# Subtest: row 233: sequence 7: two upgrades and a rollback --to the previous copy with --restore, the args file following each confirm
ok 568 - row 233: sequence 7: two upgrades and a rollback --to the previous copy with --restore, the args file following each confirm
---
duration_ms: 7449.639348
type: 'test'
...
# Subtest: row 240: I3 N1: a failed args move after A5 exits 5 args-failed, the new copy live and confirmed and both args files kept
ok 569 - row 240: I3 N1: a failed args move after A5 exits 5 args-failed, the new copy live and confirmed and both args files kept
---
duration_ms: 2877.442711
type: 'test'
...
# Subtest: row 233: sequence 8: a migration that writes and fails: the driver reverts to the backup byte for byte, --cause A3: exit 1
ok 570 - row 233: sequence 8: a migration that writes and fails: the driver reverts to the backup byte for byte, --cause A3: exit 1
---
duration_ms: 3215.090057
type: 'test'
...
# Subtest: row 233: a second run while the lock is held refuses upgrade-running with one log line and no call
ok 571 - row 233: a second run while the lock is held refuses upgrade-running with one log line and no call
---
duration_ms: 664.819942
type: 'test'
...
# Subtest: row 233: A1 refuses open-activation on any AWAITING-UNITS file, through the stack's user's --plan, with nothing stopped
ok 572 - row 233: A1 refuses open-activation on any AWAITING-UNITS file, through the stack's user's --plan, with nothing stopped
---
duration_ms: 1095.472976
type: 'test'
...
# Subtest: row 233: a target that migrates refuses migrate-required without --migrate, with nothing stopped
ok 573 - row 233: a target that migrates refuses migrate-required without --migrate, with nothing stopped
---
duration_ms: 1134.299059
type: 'test'
...
# Subtest: row 233: the rehearsal runs after the plan and before A2; a failed one refuses rehearsal-failed with nothing stopped
ok 574 - row 233: the rehearsal runs after the plan and before A2; a failed one refuses rehearsal-failed with nothing stopped
---
duration_ms: 1155.275951
type: 'test'
...
# Subtest: row 233: the rehearsal's BACKUP_STORE line goes to the step log after a match, a malformed one as none, the rest of its output never
ok 575 - row 233: the rehearsal's BACKUP_STORE line goes to the step log after a match, a malformed one as none, the rest of its output never
---
duration_ms: 2943.19283
type: 'test'
...
# Subtest: row 233: a real rehearsal with no backup in the log refuses no-backup, and goes on only with --no-rehearsal, which logs the skip
ok 576 - row 233: a real rehearsal with no backup in the log refuses no-backup, and goes on only with --no-rehearsal, which logs the skip
---
duration_ms: 3468.529731
type: 'test'
...
# Subtest: row 233: a real rehearsal after an upgrade names the log's newest backup; --no-rehearsal with a backup refuses rehearsal-required
ok 577 - row 233: a real rehearsal after an upgrade names the log's newest backup; --no-rehearsal with a backup refuses rehearsal-required
---
duration_ms: 4062.709392
type: 'test'
...
# Subtest: row 233: the args file must be the running user's, with no group or other write, one --copy, and the copy the units run
ok 578 - row 233: the args file must be the running user's, with no group or other write, one --copy, and the copy the units run
---
duration_ms: 845.102842
type: 'test'
...
# Subtest: row 233: hostcheck (row 240): a nonzero --check or a missing file refuses profile-drift before the plan
ok 579 - row 233: hostcheck (row 240): a nonzero --check or a missing file refuses profile-drift before the plan
---
duration_ms: 1049.974003
type: 'test'
...
# Subtest: row 233: the checkout must be at --sha (head-mismatch), and a commit the clone can't fast-forward to refuses fetch-failed
ok 580 - row 233: the checkout must be at --sha (head-mismatch), and a commit the clone can't fast-forward to refuses fetch-failed
---
duration_ms: 1011.841374
type: 'test'
...
# Subtest: row 233: usage exits 4 before any log or lock
ok 581 - row 233: usage exits 4 before any log or lock
---
duration_ms: 733.590038
type: 'test'
...
# Subtest: tester HTTP helper uses instance socket, logical origin and JSON without retrying
ok 582 - tester HTTP helper uses instance socket, logical origin and JSON without retrying
---
duration_ms: 25.244855
type: 'test'
...
# Subtest: tester HTTP timeout closes the socket and does not retry
ok 583 - tester HTTP timeout closes the socket and does not retry
---
duration_ms: 28.357876
type: 'test'
...
# Subtest: row 175: each read with --tester inside an agent prints the human form's output, and refuses without --tester
ok 584 - row 175: each read with --tester inside an agent prints the human form's output, and refuses without --tester
---
duration_ms: 165.051224
type: 'test'
...
# Subtest: row 175: --tester on limits set, reset and migrate and every write form outside W1-W7 exits 4 before any call
ok 585 - row 175: --tester on limits set, reset and migrate and every write form outside W1-W7 exits 4 before any call
---
duration_ms: 77.132172
type: 'test'
...
# Subtest: row 175: scripts/mosaic sends plugins, name, names, follow, threads and thread to packages/cli, not the seat CLI
ok 586 - row 175: scripts/mosaic sends plugins, name, names, follow, threads and thread to packages/cli, not the seat CLI
---
duration_ms: 1030.291856
type: 'test'
...
# Subtest: row 175 W7: project init --tester makes the repository under the project area, committed by tester
ok 587 - row 175 W7: project init --tester makes the repository under the project area, committed by tester
---
duration_ms: 796.725183
type: 'test'
...
# Subtest: row 175 W7: a repo outside the project area refuses tester-project-area before any bus call, and nothing changes
ok 588 - row 175 W7: a repo outside the project area refuses tester-project-area before any bus call, and nothing changes
---
duration_ms: 320.905638
type: 'test'
...
# Subtest: row 175 W7: the tester bind refuses tester-off and tester-required before any directory
ok 589 - row 175 W7: the tester bind refuses tester-off and tester-required before any directory
---
duration_ms: 1989.747519
type: 'test'
...
# Subtest: row 184: with --tester, thread create, threads, open, talk --thread and read run on the tester's own thread
ok 590 - row 184: with --tester, thread create, threads, open, talk --thread and read run on the tester's own thread
---
duration_ms: 91.39255
type: 'test'
...
# Subtest: row 184: talk --thread --follow and follow --thread with --tester print and read only that thread's messages, from message.receive
ok 591 - row 184: talk --thread --follow and follow --thread with --tester print and read only that thread's messages, from message.receive
---
duration_ms: 165.310612
type: 'test'
...
# Subtest: row 184: with --tester a human thread refuses with the bus's code, and nothing is written
ok 592 - row 184: with --tester a human thread refuses with the bus's code, and nothing is written
---
duration_ms: 91.49867
type: 'test'
...
# Subtest: row 184: without --tester the thread verbs stay the human's and never call the tester transport
ok 593 - row 184: without --tester the thread verbs stay the human's and never call the tester transport
---
duration_ms: 68.489732
type: 'test'
...
# Subtest: row 184: scripts/mosaic runs thread create, threads, talk --thread and thread read as the tester through tester-cli.mjs
ok 594 - row 184: scripts/mosaic runs thread create, threads, talk --thread and thread read as the tester through tester-cli.mjs
---
duration_ms: 4214.514917
type: 'test'
...
# Subtest: talk --tester sends a message as tester from inside an agent and prints the role's reply
ok 595 - talk --tester sends a message as tester from inside an agent and prints the role's reply
---
duration_ms: 41.679731
type: 'test'
...
# Subtest: talk --tester sends text with no prefix, and follow --tester reads
ok 596 - talk --tester sends text with no prefix, and follow --tester reads
---
duration_ms: 27.936272
type: 'test'
...
# Subtest: the read verbs take --tester inside an agent, and the trail shows the tester as the sender
ok 597 - the read verbs take --tester inside an agent, and the trail shows the tester as the sender
---
duration_ms: 39.808485
type: 'test'
...
# Subtest: decide, stop and launches take no --tester
ok 598 - decide, stop and launches take no --tester
---
duration_ms: 22.921576
type: 'test'
...
# Subtest: the tester transport runs tester-cli.mjs, and the tester's refusals exit 3
ok 599 - the tester transport runs tester-cli.mjs, and the tester's refusals exit 3
---
duration_ms: 0.718123
type: 'test'
...
# Subtest: with no stand-in transport, --tester runs tester-cli.mjs on the data root's socket
ok 600 - with no stand-in transport, --tester runs tester-cli.mjs on the data root's socket
---
duration_ms: 0.999619
type: 'test'
...
# Subtest: talk --tester to a stopped role exits 3, prints no sent line and stores nothing
ok 601 - talk --tester to a stopped role exits 3, prints no sent line and stores nothing
---
duration_ms: 24.212766
type: 'test'
...
# Subtest: only a --tester send refused tester-target-not-running is rewritten
ok 602 - only a --tester send refused tester-target-not-running is rewritten
---
duration_ms: 19.974423
type: 'test'
...
# Subtest: REQ-CLI-1 project create and list work on the bus record and refuse what the broker refuses
ok 603 - REQ-CLI-1 project create and list work on the bus record and refuse what the broker refuses
---
duration_ms: 59.164401
type: 'test'
...
# Subtest: REQ-CLI-1 thread create, list, open and read
ok 604 - REQ-CLI-1 thread create, list, open and read
---
duration_ms: 88.061341
type: 'test'
...
# Subtest: REQ-CLI-1 thread read pages through every message, oldest first
ok 605 - REQ-CLI-1 thread read pages through every message, oldest first
---
duration_ms: 558.780332
type: 'test'
...
# Subtest: REQ-CLI-1 the business needs exactly one threaded instance to create a thread
ok 606 - REQ-CLI-1 the business needs exactly one threaded instance to create a thread
---
duration_ms: 50.0435
type: 'test'
...
# Subtest: REQ-CLI-1 a thread is its id, an id prefix of 8 characters or more, or <project>/<name>; anything else is refused before any write
ok 607 - REQ-CLI-1 a thread is its id, an id prefix of 8 characters or more, or <project>/<name>; anything else is refused before any write
---
duration_ms: 68.356447
type: 'test'
...
# Subtest: REQ-CLI-2 REQ-THREAD-2 talk --thread sends to the thread and prints only the reply to it; the rest stays unread
ok 608 - REQ-CLI-2 REQ-THREAD-2 talk --thread sends to the thread and prints only the reply to it; the rest stays unread
---
duration_ms: 53.578916
type: 'test'
...
# Subtest: REQ-CLI-2 talk --thread --wait gives up with exit 1 and leaves the thread's messages unread
ok 609 - REQ-CLI-2 talk --thread --wait gives up with exit 1 and leaves the thread's messages unread
---
duration_ms: 1050.557178
type: 'test'
...
# Subtest: REQ-CLI-2 talk --thread --follow and follow --thread print and read only that thread's messages
ok 610 - REQ-CLI-2 talk --thread --follow and follow --thread print and read only that thread's messages
---
duration_ms: 188.219298
type: 'test'
...
# Subtest: REQ-CLI-2 plain talk to the assistant asks for a thread and exits 2 without a write
ok 611 - REQ-CLI-2 plain talk to the assistant asks for a thread and exits 2 without a write
---
duration_ms: 41.381464
type: 'test'
...
# Subtest: REQ-USER-2 a thread of another user is refused for talk, open, read and follow, and nothing is written
ok 612 - REQ-USER-2 a thread of another user is refused for talk, open, read and follow, and nothing is written
---
duration_ms: 75.976595
type: 'test'
...
# Subtest: REQ-CLI-1 the new verbs refuse inside an agent run, as every human verb does
ok 613 - REQ-CLI-1 the new verbs refuse inside an agent run, as every human verb does
---
duration_ms: 21.321797
type: 'test'
...
# usage: {"event":"usage-unknown","business":"acme","run":"rf2cc0fc56e30","instance":"assistant","turn":"c8207cb8-8b92-4616-bb3f-c471b2c960fc","source":"@none","code":"baseline-unknown"}
# usage: {"event":"usage-unknown","business":"acme","run":"r349954f09903","instance":"assistant","turn":"53c42f7e-857a-4503-8838-206e40a2eef7","source":"@none","code":"baseline-unknown"}
# usage: {"event":"usage-unknown","business":"acme","run":"r80fcafe7e062","instance":"assistant","turn":"842587ca-f5e8-4770-a4d4-a97007ca3887","source":"@none","code":"baseline-unknown"}
# usage: {"event":"usage-unknown","business":"acme","run":"rbd860d27d720","instance":"assistant","turn":"7e62ef8d-26d8-45e2-af2a-a9dd96292200","source":"@none","code":"baseline-unknown"}
# Subtest: REQ-THREAD-2 REQ-LAUNCH-1 REQ-MSG-1 a thread message starts the thread's session, which stops when idle; its history survives the stop and a restart and no other thread sees it
ok 614 - REQ-THREAD-2 REQ-LAUNCH-1 REQ-MSG-1 a thread message starts the thread's session, which stops when idle; its history survives the stop and a restart and no other thread sees it
---
duration_ms: 7123.065053
type: 'test'
...
# usage: {"event":"usage-unknown","business":"acme","run":"rf15523f9442a","instance":"assistant","turn":"84b0e81b-6fa2-4ba1-953d-486d6e5a43e5","source":"@none","code":"baseline-unknown"}
# usage: {"event":"usage-unknown","business":"acme","run":"rd81fe8c6d4f4","instance":"assistant","turn":"9df98fdb-8268-4517-9888-c30a386fdf90","source":"@none","code":"baseline-unknown"}
# Subtest: REQ-THREAD-2 REQ-LAUNCH-1 a running thread counts against its model's limit and an idle-stopped one doesn't
ok 615 - REQ-THREAD-2 REQ-LAUNCH-1 a running thread counts against its model's limit and an idle-stopped one doesn't
---
duration_ms: 2116.29366
type: 'test'
...
# usage: {"event":"usage-unknown","business":"acme","run":"r03c014840ce2","instance":"assistant","turn":"372a803e-28ef-4588-b9cb-5e0d8ced15fa","source":"@none","code":"baseline-unknown"}
# Subtest: REQ-THREAD-2 REQ-LAUNCH-1 a turn longer than the idle time isn't stopped, and the thread idles out after it
ok 616 - REQ-THREAD-2 REQ-LAUNCH-1 a turn longer than the idle time isn't stopped, and the thread idles out after it
---
duration_ms: 4578.182574
type: 'test'
...
# usage: {"event":"usage-unknown","business":"acme","run":"rd246ba106160","instance":"assistant","turn":"6ee0c100-50cd-43d3-ae92-2b5e45025860","source":"@none","code":"baseline-unknown"}
# usage: {"event":"usage-unknown","business":"acme","run":"rd246ba106160","instance":"assistant","turn":"9ba723de-a47d-474a-8dc7-cc5a54ec3469","source":"@none","code":"baseline-unknown"}
# Subtest: REQ-THREAD-2 REQ-LAUNCH-1 a message sent after the idle snapshot keeps the session, which answers it
ok 617 - REQ-THREAD-2 REQ-LAUNCH-1 a message sent after the idle snapshot keeps the session, which answers it
---
duration_ms: 3034.0953
type: 'test'
...
# Subtest: REQ-ROLE-2 REQ-LAUNCH-1 a thread held by a run the launcher didn't start gets no second session
ok 618 - REQ-ROLE-2 REQ-LAUNCH-1 a thread held by a run the launcher didn't start gets no second session
---
duration_ms: 105.790335
type: 'test'
...
# usage: {"event":"usage-unknown","business":"acme","run":"r4634cced10e3","instance":"assistant","turn":"dc846069-5198-414b-bafd-6d3fb5e144d4","source":"@none","code":"baseline-unknown"}
# Subtest: REQ-LAUNCH-1 a thread run's session file has no landing, even when landHolders names its instance
ok 619 - REQ-LAUNCH-1 a thread run's session file has no landing, even when landHolders names its instance
---
duration_ms: 403.537988
type: 'test'
...
# Subtest: REQ-LAUNCH-1 a run that ends without taking its thread's message isn't started again for that message
ok 620 - REQ-LAUNCH-1 a run that ends without taking its thread's message isn't started again for that message
---
duration_ms: 235.605434
type: 'test'
...
# Subtest: REQ-THREAD-2 REQ-LAUNCH-1 a thread id that isn't a safe segment, or a thread of a non-thread instance, launches nothing
ok 621 - REQ-THREAD-2 REQ-LAUNCH-1 a thread id that isn't a safe segment, or a thread of a non-thread instance, launches nothing
---
duration_ms: 227.353393
type: 'test'
...
# Subtest: REQ-THREAD-1 REQ-LAUNCH-1 the chief can't launch the assistant outside a thread
ok 622 - REQ-THREAD-1 REQ-LAUNCH-1 the chief can't launch the assistant outside a thread
---
duration_ms: 80.882421
type: 'test'
...
# limits: {"event":"limit-reached","business":"acme","check":"token-limit","export":"mayLaunch","subject":{"instance":"assistant","provider":"zai","model":"claude-sonnet-5-5","account":null},"path":["tokens","instances","assistant"],"limit":0,"count":0,"unknownTurns":0}
# limits: {"event":"limit-reached","business":"acme","check":"token-limit","export":"mayLaunch","subject":{"instance":"assistant","provider":"zai","model":"claude-sonnet-5-5","account":null},"path":["tokens","instances","assistant"],"limit":0,"count":0,"unknownTurns":0}
# Subtest: REQ-LIMIT-3 REQ-LIMIT-4 a thread start whose instance is at its token limit is refused, logged once with the limit and the count
ok 623 - REQ-LIMIT-3 REQ-LIMIT-4 a thread start whose instance is at its token limit is refused, logged once with the limit and the count
---
duration_ms: 198.490945
type: 'test'
...
# usage: {"event":"usage-unknown","business":"acme","run":"r5ec7776cd505","instance":"assistant","turn":"6ca3e344-b011-4c60-a2e8-2d0ee536b015","source":"@none","code":"baseline-unknown"}
# limits: {"event":"limit-reached","business":"acme","check":"token-limit","export":"mustStop","subject":{"instance":"assistant","provider":"zai","model":"claude-sonnet-5-5","account":null},"path":["tokens","instances","assistant"],"limit":0,"count":0,"unknownTurns":1}
# Subtest: REQ-LIMIT-4 a thread run at its token limit stops at the end of its turn: the reply lands, and the end record names the limit
ok 624 - REQ-LIMIT-4 a thread run at its token limit stops at the end of its turn: the reply lands, and the end record names the limit
---
duration_ms: 345.821892
type: 'test'
...
# Subtest: C2-04: a library-only business with tracker.baseUrl boots without a project tracker
ok 625 - C2-04: a library-only business with tracker.baseUrl boots without a project tracker
---
duration_ms: 396.113192
type: 'test'
...
# 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
# Subtest: bootConfig trackers reach the S3 adapter in the real broker child, which goes ready against a fake Vikunja
ok 626 - bootConfig trackers reach the S3 adapter in the real broker child, which goes ready against a fake Vikunja
---
duration_ms: 641.241347
type: 'test'
...
# Subtest: the transport writes {business, verb, args} to the child and reads its JSON
ok 627 - the transport writes {business, verb, args} to the child and reads its JSON
---
duration_ms: 56.669461
type: 'test'
...
# Subtest: a bus code on stderr becomes the exit code; garbage and timeouts are outcome problems
ok 628 - a bus code on stderr becomes the exit code; garbage and timeouts are outcome problems
---
duration_ms: 2230.776735
type: 'test'
...
# Subtest: busExit and refuseInsideAgent
ok 629 - busExit and refuseInsideAgent
---
duration_ms: 1.001096
type: 'test'
...
# Subtest: REQ-LIMIT-4 mosaic usage shows each token kind and unknown turns beside every total
ok 630 - REQ-LIMIT-4 mosaic usage shows each token kind and unknown turns beside every total
---
duration_ms: 109.338225
type: 'test'
...
# Subtest: usage is dispatched by scripts/mosaic and the shared read adapter
ok 631 - usage is dispatched by scripts/mosaic and the shared read adapter
---
duration_ms: 140.192034
type: 'test'
...
# Subtest: talk sends a REQUEST, prints and reads only the reply to it, and leaves other messages unread
ok 632 - talk sends a REQUEST, prints and reads only the reply to it, and leaves other messages unread
---
duration_ms: 72.81377
type: 'test'
...
# Subtest: talk --wait 0 only sends; no reply within --wait exits 1 and says where it will show
ok 633 - talk --wait 0 only sends; no reply within --wait exits 1 and says where it will show
---
duration_ms: 1031.998147
type: 'test'
...
# Subtest: a late reply the Console has listed stays unread for mosaic inbox, and the next talk skips it
ok 634 - a late reply the Console has listed stays unread for mosaic inbox, and the next talk skips it
---
duration_ms: 2067.560588
type: 'test'
...
# Subtest: talk says when the role isn't running, whether launch.by was told, and how to start launch.by
ok 635 - talk says when the role isn't running, whether launch.by was told, and how to start launch.by
---
duration_ms: 77.827589
type: 'test'
...
# Subtest: talk to a role launch.by can't launch says it isn't in the launch block
ok 636 - talk to a role launch.by can't launch says it isn't in the launch block
---
duration_ms: 24.681447
type: 'test'
...
# Subtest: talk to a stopped role prints the waiting line once, skips a non-reply and prints the reply
ok 637 - talk to a stopped role prints the waiting line once, skips a non-reply and prints the reply
---
duration_ms: 62.272979
type: 'test'
...
# Subtest: talk, stop and launches off/on refuse inside an agent run; bad arguments are usage errors
ok 638 - talk, stop and launches off/on refuse inside an agent run; bad arguments are usage errors
---
duration_ms: 40.022617
type: 'test'
...
# Subtest: launches off and on go to the broker and change the business's launch state
ok 639 - launches off and on go to the broker and change the business's launch state
---
duration_ms: 29.865507
type: 'test'
...
# Subtest: launches list reads sessions.json and marks a stale entry; stop reports it and refuses a non-runner
ok 640 - launches list reads sessions.json and marks a stale entry; stop reports it and refuses a non-runner
---
duration_ms: 21.903608
type: 'test'
...
1..640
# tests 794
# suites 0
# pass 794
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 587535.901347