Files

4344 lines
171 KiB
Plaintext

{"grant": "sage-2709", "head": "0604d91fcfc1949810cd5321aea6ec43e9b74b4b", "manifest": "573c51cf72f2398532a6ea768536f04e3c1681997cb8b9a6f14a8aef884870ae"}
{"authority": "sage-2709", "file_limits": {"packages/cli/tests/case1-accept.test.mjs": {"timeout_seconds": 900, "kill_after_seconds": 10, "outer_harness_seconds": 930, "reason": "sage-2709: six CLI whole files use900s; measured durations establish later3x basis."}, "packages/cli/tests/case2-unit.test.mjs": {"timeout_seconds": 900, "kill_after_seconds": 10, "outer_harness_seconds": 930, "reason": "sage-2709: six CLI whole files use900s; measured durations establish later3x basis."}, "packages/bus/tests/account-migration.test.mjs": {"timeout_seconds": 300, "kill_after_seconds": 10, "outer_harness_seconds": 330, "reason": "Whole-file bound under sage-2705; no prior repaired-C4 whole-file timing claimed."}, "packages/bus/tests/chief-of-staff.test.mjs": {"timeout_seconds": 300, "kill_after_seconds": 10, "outer_harness_seconds": 330, "reason": "Whole-file bound under sage-2705; no prior repaired-C4 whole-file timing claimed."}, "packages/bus/tests/comment-migration.test.mjs": {"timeout_seconds": 300, "kill_after_seconds": 10, "outer_harness_seconds": 330, "reason": "Whole-file bound under sage-2705; no prior repaired-C4 whole-file timing claimed."}, "packages/bus/tests/end-launch.test.mjs": {"timeout_seconds": 300, "kill_after_seconds": 10, "outer_harness_seconds": 330, "reason": "Whole-file bound under sage-2705; no prior repaired-C4 whole-file timing claimed."}, "packages/bus/tests/fire-revokes-grants.test.mjs": {"timeout_seconds": 300, "kill_after_seconds": 10, "outer_harness_seconds": 330, "reason": "Whole-file bound under sage-2705; no prior repaired-C4 whole-file timing claimed."}, "packages/bus/tests/gitea-grant.test.mjs": {"timeout_seconds": 300, "kill_after_seconds": 10, "outer_harness_seconds": 330, "reason": "Whole-file bound under sage-2705; no prior repaired-C4 whole-file timing claimed."}, "packages/bus/tests/gitea-migration.test.mjs": {"timeout_seconds": 300, "kill_after_seconds": 10, "outer_harness_seconds": 330, "reason": "Whole-file bound under sage-2705; no prior repaired-C4 whole-file timing claimed."}, "packages/bus/tests/grant-executor.test.mjs": {"timeout_seconds": 300, "kill_after_seconds": 10, "outer_harness_seconds": 330, "reason": "Whole-file bound under sage-2705; no prior repaired-C4 whole-file timing claimed."}, "packages/bus/tests/grant-migration.test.mjs": {"timeout_seconds": 300, "kill_after_seconds": 10, "outer_harness_seconds": 330, "reason": "Whole-file bound under sage-2705; no prior repaired-C4 whole-file timing claimed."}, "packages/bus/tests/lifecycle-revoke.test.mjs": {"timeout_seconds": 300, "kill_after_seconds": 10, "outer_harness_seconds": 330, "reason": "Whole-file bound under sage-2705; no prior repaired-C4 whole-file timing claimed."}, "packages/bus/tests/message-filter.test.mjs": {"timeout_seconds": 300, "kill_after_seconds": 10, "outer_harness_seconds": 330, "reason": "Whole-file bound under sage-2705; no prior repaired-C4 whole-file timing claimed."}, "packages/bus/tests/name-migration.test.mjs": {"timeout_seconds": 300, "kill_after_seconds": 10, "outer_harness_seconds": 330, "reason": "Whole-file bound under sage-2705; no prior repaired-C4 whole-file timing claimed."}, "packages/bus/tests/schema.test.mjs": {"timeout_seconds": 300, "kill_after_seconds": 10, "outer_harness_seconds": 330, "reason": "Whole-file bound under sage-2705; no prior repaired-C4 whole-file timing claimed."}, "packages/bus/tests/sessions.test.mjs": {"timeout_seconds": 300, "kill_after_seconds": 10, "outer_harness_seconds": 330, "reason": "Whole-file bound under sage-2705; no prior repaired-C4 whole-file timing claimed."}, "packages/bus/tests/spec-migration.test.mjs": {"timeout_seconds": 300, "kill_after_seconds": 10, "outer_harness_seconds": 330, "reason": "Whole-file bound under sage-2705; no prior repaired-C4 whole-file timing claimed."}, "packages/bus/tests/tester-writes.test.mjs": {"timeout_seconds": 300, "kill_after_seconds": 10, "outer_harness_seconds": 330, "reason": "Whole-file bound under sage-2705; no prior repaired-C4 whole-file timing claimed."}, "packages/bus/tests/thread-claims.test.mjs": {"timeout_seconds": 300, "kill_after_seconds": 10, "outer_harness_seconds": 330, "reason": "Whole-file bound under sage-2705; no prior repaired-C4 whole-file timing claimed."}, "packages/bus/tests/thread-migration.test.mjs": {"timeout_seconds": 300, "kill_after_seconds": 10, "outer_harness_seconds": 330, "reason": "Whole-file bound under sage-2705; no prior repaired-C4 whole-file timing claimed."}, "packages/bus/tests/threads.test.mjs": {"timeout_seconds": 300, "kill_after_seconds": 10, "outer_harness_seconds": 330, "reason": "Whole-file bound under sage-2705; no prior repaired-C4 whole-file timing claimed."}, "packages/bus/tests/usage-migration.test.mjs": {"timeout_seconds": 300, "kill_after_seconds": 10, "outer_harness_seconds": 330, "reason": "Whole-file bound under sage-2705; no prior repaired-C4 whole-file timing claimed."}, "packages/cli/tests/lifecycle.test.mjs": {"timeout_seconds": 900, "kill_after_seconds": 10, "outer_harness_seconds": 930, "reason": "sage-2709: six CLI whole files use900s; measured durations establish later3x basis."}, "packages/cli/tests/stack-release.test.mjs": {"timeout_seconds": 900, "kill_after_seconds": 10, "outer_harness_seconds": 930, "reason": "sage-2709: six CLI whole files use900s; measured durations establish later3x basis."}, "packages/cli/tests/thread-cli.test.mjs": {"timeout_seconds": 900, "kill_after_seconds": 10, "outer_harness_seconds": 930, "reason": "sage-2709: six CLI whole files use900s; measured durations establish later3x basis."}, "packages/cli/tests/thread-launch.test.mjs": {"timeout_seconds": 900, "kill_after_seconds": 10, "outer_harness_seconds": 930, "reason": "sage-2709: six CLI whole files use900s; measured durations establish later3x basis."}, "packages/webui/tests/chat.test.mjs": {"timeout_seconds": 300, "kill_after_seconds": 10, "outer_harness_seconds": 330, "reason": "Whole-file bound under sage-2705; no prior repaired-C4 whole-file timing claimed."}}}
TAP version 13
# Subtest: row253 socket observation uses configured root, metadata and the Console peer without sending bytes
ok 1 - row253 socket observation uses configured root, metadata and the Console peer without sending bytes
---
duration_ms: 635.08322
type: 'test'
...
# Subtest: row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure
ok 2 - row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure
---
duration_ms: 8910.768359
type: 'test'
...
# Subtest: row253 acceptance rejects bad config and unsupported copies before talk
ok 3 - row253 acceptance rejects bad config and unsupported copies before talk
---
duration_ms: 1287.210524
type: 'test'
...
# Subtest: row253 stalled peer observation ends within its bound without leaving a reader
ok 4 - row253 stalled peer observation ends within its bound without leaving a reader
---
duration_ms: 2759.173042
type: 'test'
...
# Subtest: row253 P8 refuses both retired TCP and board listeners
ok 5 - row253 P8 refuses both retired TCP and board listeners
---
duration_ms: 1495.993888
type: 'test'
...
# Subtest: row253 C4 acceptance query inner reason holds under both sudo models
ok 6 - row253 C4 acceptance query inner reason holds under both sudo models
---
duration_ms: 10714.050013
type: 'test'
...
# Subtest: row253 C4 acceptance query outer reason discards stdout and names residual cleanup
ok 7 - row253 C4 acceptance query outer reason discards stdout and names residual cleanup
---
duration_ms: 14202.380117
type: 'test'
...
# Subtest: row253 C4 acceptance query overflow is output-limit in both models
ok 8 - row253 C4 acceptance query overflow is output-limit in both models
---
duration_ms: 533.74284
type: 'test'
...
# Subtest: row253 C4 P10 inner reason holds under both sudo models
ok 9 - row253 C4 P10 inner reason holds under both sudo models
---
duration_ms: 5977.183052
type: 'test'
...
# Subtest: row253 C4 P10 outer reason holds under both sudo models
ok 10 - row253 C4 P10 outer reason holds under both sudo models
---
duration_ms: 9158.961886
type: 'test'
...
# Subtest: row253 C4 P10 overflow reason holds under both sudo models
ok 11 - row253 C4 P10 overflow reason holds under both sudo models
---
duration_ms: 1068.808446
type: 'test'
...
# Subtest: row 195 accept: every check passing exits 0, with each P mark and counts that match the lines
ok 12 - row 195 accept: every check passing exits 0, with each P mark and counts that match the lines
---
duration_ms: 657.788738
type: 'test'
...
# Subtest: row 195 accept: exits 1 with each F check failing alone, and its line names it
ok 13 - row 195 accept: exits 1 with each F check failing alone, and its line names it
---
duration_ms: 7275.151025
type: 'test'
...
# Subtest: row 195 accept: F3 fails on exit 0 with no reply line, and its evidence takes talk's error
ok 14 - row 195 accept: F3 fails on exit 0 with no reply line, and its evidence takes talk's error
---
duration_ms: 1359.251446
type: 'test'
...
# Subtest: row 195 accept: F1 fails on a unit that isn't active or isn't User=mosaic
ok 15 - row 195 accept: F1 fails on a unit that isn't active or isn't User=mosaic
---
duration_ms: 1214.848264
type: 'test'
...
# Subtest: row 195 accept: F2 fails when healthz doesn't answer and when another pid holds the port
ok 16 - row 195 accept: F2 fails when healthz doesn't answer and when another pid holds the port
---
duration_ms: 1318.107134
type: 'test'
...
# Subtest: row 195 accept: F5 fails on unpriv_bwrap (enforce), on complain and on a trailing space
ok 17 - row 195 accept: F5 fails on unpriv_bwrap (enforce), on complain and on a trailing space
---
duration_ms: 2891.844673
type: 'test'
...
# Subtest: row 195 accept: F5 fails with no bwrap of mosaic's, and passes on comm alone
ok 18 - row 195 accept: F5 fails with no bwrap of mosaic's, and passes on comm alone
---
duration_ms: 1370.822639
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 19 - row 195 accept: F6 fails on a stub that prints nothing, on a path outside claude-<pin> and on a .. segment
---
duration_ms: 2098.024276
type: 'test'
...
# Subtest: row 195 accept: F7 fails on two live PM launches, one for another business, and no launch.by
ok 20 - row 195 accept: F7 fails on two live PM launches, one for another business, and no launch.by
---
duration_ms: 2106.445728
type: 'test'
...
# Subtest: row 195 accept: F8 fails on 0640, on another owner and on a symlink, and never prints the credential
ok 21 - row 195 accept: F8 fails on 0640, on another owner and on a symlink, and never prints the credential
---
duration_ms: 2002.61524
type: 'test'
...
# Subtest: row 195 accept: F9 fails on another owner, a group-writable mode and a number for the flag
ok 22 - row 195 accept: F9 fails on another owner, a group-writable mode and a number for the flag
---
duration_ms: 1861.992457
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 23 - row 195 accept: F9 won't run --node as root off the pin path or with a writable directory above it
---
duration_ms: 1901.812772
type: 'test'
...
# Subtest: row 195 accept: F11 fails on one *.json under discord/ and passes on an empty directory
ok 24 - row 195 accept: F11 fails on one *.json under discord/ and passes on an empty directory
---
duration_ms: 1431.808863
type: 'test'
...
# Subtest: row 195 accept: each P check reports unnamed on its fault, and the exit stays 0
ok 25 - row 195 accept: each P check reports unnamed on its fault, and the exit stays 0
---
duration_ms: 5915.695807
type: 'test'
...
# Subtest: row 195 accept: P2 is unnamed with a supplementary group, and P5 names docker
ok 26 - row 195 accept: P2 is unnamed with a supplementary group, and P5 names docker
---
duration_ms: 1423.353014
type: 'test'
...
# Subtest: row 195 accept: P5 is closed with no jarvis account, and P2 with an empty authorized_keys
ok 27 - row 195 accept: P5 is closed with no jarvis account, and P2 with an empty authorized_keys
---
duration_ms: 616.405224
type: 'test'
...
# Subtest: row 195 accept: P9 is unnamed once for each item missing
ok 28 - row 195 accept: P9 is unnamed once for each item missing
---
duration_ms: 3502.799413
type: 'test'
...
# Subtest: row253 accept: P10 fails its observation with another peer; P11 with the unit disabled
ok 29 - row253 accept: P10 fails its observation with another peer; P11 with the unit disabled
---
duration_ms: 1268.612039
type: 'test'
...
# Subtest: row 195 accept: every P check unnamed together still exits 0
ok 30 - row 195 accept: every P check unnamed together still exits 0
---
duration_ms: 517.656059
type: 'test'
...
# Subtest: row 195 accept: a bad args file refuses with exit 2 before any check, each for its own reason
ok 31 - row 195 accept: a bad args file refuses with exit 2 before any check, each for its own reason
---
duration_ms: 114.130545
type: 'test'
...
# Subtest: row 195 accept: usage errors and a run without --root as a user exit 2
ok 32 - row 195 accept: usage errors and a run without --root as a user exit 2
---
duration_ms: 12.783137
type: 'test'
...
# Subtest: row 195 accept: every in-instance call goes through sudo -u mosaic -H env PATH=<node dir>:...
ok 33 - row 195 accept: every in-instance call goes through sudo -u mosaic -H env PATH=<node dir>:...
---
duration_ms: 719.568395
type: 'test'
...
# Subtest: row 195 accept: the host check runs with --check and never --enforce
ok 34 - row 195 accept: the host check runs with --check and never --enforce
---
duration_ms: 753.65801
type: 'test'
...
1..34
# tests 34
# suites 0
# pass 34
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 99207.214655
TAP version 13
# Subtest: row253 factory socket uses actual config and target-uid query without widening hardening
ok 1 - row253 factory socket uses actual config and target-uid query without widening hardening
---
duration_ms: 262.277524
type: 'test'
...
# Subtest: row253 installer refuses unsafe location and query facts before unit writes
ok 2 - row253 installer refuses unsafe location and query facts before unit writes
---
duration_ms: 2888.737963
type: 'test'
...
# Subtest: row253 query timeout kills its process group and leaves no running child
ok 3 - row253 query timeout kills its process group and leaves no running child
---
duration_ms: 7063.145938
type: 'test'
...
# Subtest: row253 protected homes refuse before any filesystem access
ok 4 - row253 protected homes refuse before any filesystem access
---
duration_ms: 9.095629
type: 'test'
...
# Subtest: row253 C4 sleep query has exact inner reason and cleans all members
ok 5 - row253 C4 sleep query has exact inner reason and cleans all members
---
duration_ms: 10654.435358
type: 'test'
...
# Subtest: row253 C4 signals query has exact inner reason and cleans all members
ok 6 - row253 C4 signals query has exact inner reason and cleans all members
---
duration_ms: 10558.851516
type: 'test'
...
# Subtest: row253 C4 member query has exact inner reason and cleans all members
ok 7 - row253 C4 member query has exact inner reason and cleans all members
---
duration_ms: 10575.034076
type: 'test'
...
# Subtest: row253 C4 overflow is output-limit in both sudo modes
ok 8 - row253 C4 overflow is output-limit in both sudo modes
---
duration_ms: 356.84676
type: 'test'
...
# Subtest: row253 C4 stalled supervisor uses the outer reason and explicit residual cleanup
ok 9 - row253 C4 stalled supervisor uses the outer reason and explicit residual cleanup
---
duration_ms: 14132.115825
type: 'test'
...
# Subtest: row253 C4 inline supervisor is byte-identical in both host scripts
ok 10 - row253 C4 inline supervisor is byte-identical in both host scripts
---
duration_ms: 0.332222
type: 'test'
...
# Subtest: row253 C4 cleanup budget starts after inventory pass one
ok 11 - row253 C4 cleanup budget starts after inventory pass one
---
duration_ms: 27.312099
type: 'test'
...
# Subtest: row253 query reaps its group even when a child closes stdout before the query returns
ok 12 - row253 query reaps its group even when a child closes stdout before the query returns
---
duration_ms: 125.14664
type: 'test'
...
# Subtest: row253 config parser is strict
ok 13 - row253 config parser is strict
---
duration_ms: 8.171201
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 14 - a clean library render writes both units 0644 with the fixed lines, and enables both then starts the bus then the Console
---
duration_ms: 94.172642
type: 'test'
...
# Subtest: PATH starts with the --node directory, for a node outside the default list and for /usr/bin/node
ok 15 - PATH starts with the --node directory, for a node outside the default list and for /usr/bin/node
---
duration_ms: 93.781364
type: 'test'
...
# Subtest: a failed bus start refuses with the Console not started
ok 16 - a failed bus start refuses with the Console not started
---
duration_ms: 91.475307
type: 'test'
...
# Subtest: the script never links a unit file
ok 17 - the script never links a unit file
---
duration_ms: 0.17219
type: 'test'
...
# Subtest: factory renders --pm once and one MOSAIC_CLAUDE_BIN line, and without them both tokens render empty
ok 18 - factory renders --pm once and one MOSAIC_CLAUDE_BIN line, and without them both tokens render empty
---
duration_ms: 533.168317
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 19 - 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: 410.859392
type: 'test'
...
# Subtest: a re-install to another copy re-renders both units, and an edited installed unit refuses
ok 20 - a re-install to another copy re-renders both units, and an edited installed unit refuses
---
duration_ms: 978.008405
type: 'test'
...
# Subtest: a template with a namespace, user or system call restriction refuses
ok 21 - a template with a namespace, user or system call restriction refuses
---
duration_ms: 262.771603
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 22 - the bus template's EnvironmentFile line must be there and point at the session env, and the Console template must have none
---
duration_ms: 178.505576
type: 'test'
...
# Subtest: a template holding an unknown token, PermissionsStartOnly or a privileged Exec prefix refuses
ok 23 - a template holding an unknown token, PermissionsStartOnly or a privileged Exec prefix refuses
---
duration_ms: 135.131551
type: 'test'
...
# Subtest: a symlink at either unit path refuses
ok 24 - a symlink at either unit path refuses
---
duration_ms: 164.772609
type: 'test'
...
# Subtest: a --node that is relative, not root-owned or under <home> refuses
ok 25 - a --node that is relative, not root-owned or under <home> refuses
---
duration_ms: 18.273626
type: 'test'
...
# Subtest: a re-install with a different --node or different serve flags refuses
ok 26 - a re-install with a different --node or different serve flags refuses
---
duration_ms: 454.1624
type: 'test'
...
# Subtest: an installed pair whose units name different copies refuses
ok 27 - an installed pair whose units name different copies refuses
---
duration_ms: 238.147366
type: 'test'
...
# Subtest: a copy id that is short, uppercase, holds / or .., or names no directory refuses
ok 28 - a copy id that is short, uppercase, holds / or .., or names no directory refuses
---
duration_ms: 26.564149
type: 'test'
...
# Subtest: library refuses a privileged-floor miss, a bad proof pair and every flag outside its set
ok 29 - library refuses a privileged-floor miss, a bad proof pair and every flag outside its set
---
duration_ms: 267.048019
type: 'test'
...
# Subtest: library refuses a proof file not owned by <user>'s uid
ok 30 - library refuses a proof file not owned by <user>'s uid
---
duration_ms: 17.16447
type: 'test'
...
# Subtest: factory refuses duplicate socket, a missing --port or --business, and each proxy flag
ok 31 - factory refuses duplicate socket, a missing --port or --business, and each proxy flag
---
duration_ms: 179.834197
type: 'test'
...
# Subtest: row253 factory refuses retired TCP and a value after the socket marker
ok 32 - row253 factory refuses retired TCP and a value after the socket marker
---
duration_ms: 27.35353
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 33 - factory refuses a --claude that is relative, not root-owned or under <home>, and a re-install with another --pm or --claude
---
duration_ms: 1109.424536
type: 'test'
...
# Subtest: the precheck passes on a good host and prints free memory, without the key
ok 34 - the precheck passes on a good host and prints free memory, without the key
---
duration_ms: 105.001864
type: 'test'
...
# Subtest: the precheck refuses each failed host check
ok 35 - the precheck refuses each failed host check
---
duration_ms: 912.086148
type: 'test'
...
# Subtest: the precheck refuses a user missing from passwd, a business file that does not load, and a symlinked run root
ok 36 - the precheck refuses a user missing from passwd, a business file that does not load, and a symlinked run root
---
duration_ms: 468.71868
type: 'test'
...
# Subtest: a bwrap that fails refuses and prints the sysctl and where bwrap is
ok 37 - a bwrap that fails refuses and prints the sysctl and where bwrap is
---
duration_ms: 103.211063
type: 'test'
...
# Subtest: an unprivileged port floor at or below the Console's port refuses, and so does a missing Console unit
ok 38 - an unprivileged port floor at or below the Console's port refuses, and so does a missing Console unit
---
duration_ms: 483.098555
type: 'test'
...
# Subtest: bus.tester: library refuses it on, factory needs it on, and factory refuses a library business
ok 39 - bus.tester: library refuses it on, factory needs it on, and factory refuses a library business
---
duration_ms: 397.641457
type: 'test'
...
# Subtest: the claude check runs only for a claude-code instance, and refuses a claude that appends or answers wrong
ok 40 - the claude check runs only for a claude-code instance, and refuses a claude that appends or answers wrong
---
duration_ms: 856.874242
type: 'test'
...
# Subtest: the claude check runs the bus unit's MOSAIC_CLAUDE_BIN over claude on PATH
ok 41 - the claude check runs the bus unit's MOSAIC_CLAUDE_BIN over claude on PATH
---
duration_ms: 262.683595
type: 'test'
...
# Subtest: the session env file refuses when missing, open to others, a symlink, empty, or emptied by a later line
ok 42 - the session env file refuses when missing, open to others, a symlink, empty, or emptied by a later line
---
duration_ms: 591.944048
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 43 - inside a session's sandbox a bind below 1024 fails with EACCES, and a bind on a free high port succeeds
---
duration_ms: 82.554846
type: 'test'
...
1..43
# tests 43
# suites 0
# pass 43
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 66326.521088
TAP version 13
# Subtest: REQ-LIMIT-4 3h copy migrates to 3i: every row keeps its seq, the sequence carries over, and only the account CHECK changes
ok 1 - REQ-LIMIT-4 3h copy migrates to 3i: every row keeps its seq, the sequence carries over, and only the account CHECK changes
---
duration_ms: 82.597902
type: 'test'
...
# Subtest: REQ-LIMIT-4 a 3h→3i step that fails partway leaves the store at 3h with every row, the sequence and the schema intact
ok 2 - REQ-LIMIT-4 a 3h→3i step that fails partway leaves the store at 3h with every row, the sequence and the schema intact
---
duration_ms: 92.53462
type: 'test'
...
# Subtest: REQ-LIMIT-4 the 3h engine refuses a migrated store, migrating or not, and leaves it as it was
ok 3 - REQ-LIMIT-4 the 3h engine refuses a migrated store, migrating or not, and leaves it as it was
---
duration_ms: 81.102574
type: 'test'
...
1..3
# tests 3
# suites 0
# pass 3
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 340.975929
TAP version 13
# organization: {"event":"reload-needs-restart","business":"demo"}
# organization: {"event":"reload-needs-restart","business":"demo"}
# organization: {"event":"reload-needs-restart","business":"demo"}
# organization: {"event":"reload-needs-restart","business":"demo"}
# organization: {"event":"reload-needs-restart","business":"demo"}
# organization: {"event":"reload-needs-restart","business":"demo"}
# organization: {"event":"reload-needs-restart","business":"demo"}
# organization: {"event":"reload-needs-restart","business":"demo"}
# organization: {"event":"reload-needs-restart","business":"demo"}
# Subtest: REQ-COS-1, REQ-ROLE-2: the chief of staff ends a run with a reason and no decision, and the reason is logged
ok 1 - REQ-COS-1, REQ-ROLE-2: the chief of staff ends a run with a reason and no decision, and the reason is logged
---
duration_ms: 28.331746
type: 'test'
...
# Subtest: REQ-ROLE-2: a role without role.end still needs a resolved decision to revoke
ok 2 - REQ-ROLE-2: a role without role.end still needs a resolved decision to revoke
---
duration_ms: 26.434808
type: 'test'
...
# Subtest: REQ-ROLE-2: storage accepts a revoke with a reason or a decision and aborts one with neither
ok 3 - REQ-ROLE-2: storage accepts a revoke with a reason or a decision and aborts one with neither
---
duration_ms: 17.938787
type: 'test'
...
# Subtest: REQ-ROLE-2: the chief of staff may still cite a decision, and a decision alone is the old path
ok 4 - REQ-ROLE-2: the chief of staff may still cite a decision, and a decision alone is the old path
---
duration_ms: 18.620206
type: 'test'
...
# Subtest: REQ-ROLE-2: a role without role.end still ends a run through a resolved decision, which is recorded and has no reason
ok 5 - REQ-ROLE-2: a role without role.end still ends a run through a resolved decision, which is recorded and has no reason
---
duration_ms: 21.128166
type: 'test'
...
# Subtest: REQ-ROLE-2: a reason is required, bounded, and never sent with a decision
ok 6 - REQ-ROLE-2: a reason is required, bounded, and never sent with a decision
---
duration_ms: 23.298242
type: 'test'
...
# Subtest: REQ-COS-1: the chief of staff cannot end its own run; its end of the assistant stops the assistant's thread run
ok 7 - REQ-COS-1: the chief of staff cannot end its own run; its end of the assistant stops the assistant's thread run
---
duration_ms: 24.376739
type: 'test'
...
# Subtest: REQ-LIMIT-1, REQ-COS-1: organization.set from the chief of staff reaches the shared writer, named as the actor
ok 8 - REQ-LIMIT-1, REQ-COS-1: organization.set from the chief of staff reaches the shared writer, named as the actor
---
duration_ms: 18.346487
type: 'test'
...
# Subtest: REQ-LIMIT-1, REQ-COS-1: a refused organization.set logs action.refused and no action.allowed, like a refused limits.set
ok 9 - REQ-LIMIT-1, REQ-COS-1: a refused organization.set logs action.refused and no action.allowed, like a refused limits.set
---
duration_ms: 23.149091
type: 'test'
...
# Subtest: REQ-LIMIT-1: organization.set is refused for every caller whose role file lacks organization.change
ok 10 - REQ-LIMIT-1: organization.set is refused for every caller whose role file lacks organization.change
---
duration_ms: 26.114851
type: 'test'
...
# Subtest: REQ-LIMIT-1: the chief of staff is logged as allowed, and organization.set takes only the human's keys
ok 11 - REQ-LIMIT-1: the chief of staff is logged as allowed, and organization.set takes only the human's keys
---
duration_ms: 28.913122
type: 'test'
...
# Subtest: REQ-COS-1: organization.revision answers the revision alone to the chief of staff and spends nothing
ok 12 - REQ-COS-1: organization.revision answers the revision alone to the chief of staff and spends nothing
---
duration_ms: 23.086141
type: 'test'
...
# Subtest: REQ-COS-1, REQ-LIMIT-1: organization.revision is refused for every caller whose role file lacks organization.change
ok 13 - REQ-COS-1, REQ-LIMIT-1: organization.revision is refused for every caller whose role file lacks organization.change
---
duration_ms: 24.973528
type: 'test'
...
# Subtest: REQ-ROLE-3, REQ-LIMIT-1: a chief-of-staff change is validated, written and logged like a human's; an invalid one is refused
ok 14 - REQ-ROLE-3, REQ-LIMIT-1: a chief-of-staff change is validated, written and logged like a human's; an invalid one is refused
---
duration_ms: 121.448868
type: 'test'
...
# Subtest: REQ-COS-1: the chief of staff reads the revision, changes the file with it, and reads again after a stale one is refused
ok 15 - REQ-COS-1: the chief of staff reads the revision, changes the file with it, and reads again after a stale one is refused
---
duration_ms: 69.528621
type: 'test'
...
# Subtest: Q169: the chief of staff's change of the assistant is validated, written and logged; a stale or protection-stripping one is refused
ok 16 - Q169: the chief of staff's change of the assistant is validated, written and logged; a stale or protection-stripping one is refused
---
duration_ms: 77.400397
type: 'test'
...
# Subtest: row 65, Q169: the chief's change of the assistant's route runs the routing checks, and a valid one saves as the chief
ok 17 - row 65, Q169: the chief's change of the assistant's route runs the routing checks, and a valid one saves as the chief
---
duration_ms: 52.105961
type: 'test'
...
# Subtest: REQ-ROLE-2, REQ-COS-1: the 3c→3d migration lets the chief of staff end a held role with a reason; neither is still refused
ok 18 - REQ-ROLE-2, REQ-COS-1: the 3c→3d migration lets the chief of staff end a held role with a reason; neither is still refused
---
duration_ms: 75.179142
type: 'test'
...
# Subtest: row 194 T10: the chief's reason end of a kept instance refuses instance-kept, holds the claim and spends nothing
ok 19 - row 194 T10: the chief's reason end of a kept instance refuses instance-kept, holds the claim and spends nothing
---
duration_ms: 18.345149
type: 'test'
...
# Subtest: row 194 T10 (Q2): a role.revoke citing a decision the human resolved still ends a kept run
ok 20 - row 194 T10 (Q2): a role.revoke citing a decision the human resolved still ends a kept run
---
duration_ms: 19.386726
type: 'test'
...
# Subtest: row 194 T10 (B7): the chief's organization.set of a kept instance's model refuses before the writer; the human's limits.set does not
ok 21 - row 194 T10 (B7): the chief's organization.set of a kept instance's model refuses before the writer; the human's limits.set does not
---
duration_ms: 19.01179
type: 'test'
...
# Subtest: row 194 T13: organization.set and limits.set refuse the launch, retired, keep and noHire keys before the writer
ok 22 - row 194 T13: organization.set and limits.set refuse the launch, retired, keep and noHire keys before the writer
---
duration_ms: 23.117738
type: 'test'
...
# Subtest: row 194 T18 (D2.4): from a chief session veto.set and instances.set refuse, and nothing reaches the writer
ok 23 - row 194 T18 (D2.4): from a chief session veto.set and instances.set refuse, and nothing reaches the writer
---
duration_ms: 22.420802
type: 'test'
...
# Subtest: row 194 T8: the chief hires with a reason and no decision, the writer gets the reason as context, and the log names it
ok 24 - row 194 T8: the chief hires with a reason and no decision, the writer gets the reason as context, and the log names it
---
duration_ms: 21.138167
type: 'test'
...
# Subtest: row 194 T11: on a bus with two businesses, the chief of one hires and fires only in its own
ok 25 - row 194 T11: on a bus with two businesses, the chief of one hires and fires only in its own
---
duration_ms: 18.321241
type: 'test'
...
# Subtest: row 194 T8: hire and fire need a reason of 1 to 500 characters and refuse a decision key
ok 26 - row 194 T8: hire and fire need a reason of 1 to 500 characters and refuse a decision key
---
duration_ms: 29.401579
type: 'test'
...
# Subtest: row 194 T8 (sage-1471): only the chief hires or fires; every other role refuses role-not-chief, even one granted the actions
ok 27 - row 194 T8 (sage-1471): only the chief hires or fires; every other role refuses role-not-chief, even one granted the actions
---
duration_ms: 27.890795
type: 'test'
...
# Subtest: row 194 T8 (sage-1471): a chief whose authority lacks role.hire or role.fire refuses decision-required before the writer
ok 28 - row 194 T8 (sage-1471): a chief whose authority lacks role.hire or role.fire refuses decision-required before the writer
---
duration_ms: 39.940767
type: 'test'
...
# Subtest: row 194 T8a: a re-hire of a fired name goes to the writer like a hire, and the writer's refusals pass through by name
ok 29 - row 194 T8a: a re-hire of a fired name goes to the writer like a hire, and the writer's refusals pass through by name
---
duration_ms: 23.456981
type: 'test'
...
# Subtest: row 194 T8b: a definition is hireable only when every action is on HIRE_ALLOWED, it is version 2, the chief lists it and noHire doesn't
ok 30 - row 194 T8b: a definition is hireable only when every action is on HIRE_ALLOWED, it is version 2, the chief lists it and noHire doesn't
---
duration_ms: 664.437436
type: 'test'
...
# Subtest: row 194 T8b: a hire without the role files configured refuses not-configured
ok 31 - row 194 T8b: a hire without the role files configured refuses not-configured
---
duration_ms: 18.714128
type: 'test'
...
# Subtest: row 194 T9: a fire revokes the claim, cancels open requests, asks the launcher to kill the runs, then delists and logs
ok 32 - row 194 T9: a fire revokes the claim, cancels open requests, asks the launcher to kill the runs, then delists and logs
---
duration_ms: 21.402072
type: 'test'
...
# Subtest: row 194 T9a (bus): a fire end's done writes lifecycle.end.killed and lifecycle.end.alive with run and pid, and an unknown stop's reason; a terminate's done or a bad stop refuses
ok 33 - row 194 T9a (bus): a fire end's done writes lifecycle.end.killed and lifecycle.end.alive with run and pid, and an unknown stop's reason; a terminate's done or a bad stop refuses
---
duration_ms: 25.798012
type: 'test'
...
# Subtest: row 194 T9: fire refusals come before step A and leave the claim, the requests and the file alone
ok 34 - row 194 T9: fire refusals come before step A and leave the claim, the requests and the file alone
---
duration_ms: 22.191888
type: 'test'
...
# Subtest: row 194 T9c: a writer failure at B leaves the instance firing, and the repeat delists and logs once
ok 35 - row 194 T9c: a writer failure at B leaves the instance firing, and the repeat delists and logs once
---
duration_ms: 23.500086
type: 'test'
...
# Subtest: row 194 T9c: a failure at C leaves the fire unlogged and the instance firing, and the repeat logs it
ok 36 - row 194 T9c: a failure at C leaves the fire unlogged and the instance firing, and the repeat logs it
---
duration_ms: 24.322177
type: 'test'
...
# Subtest: row 194 W-N1: a fire.done before a later fire.stopped of the same instance leaves it firing; another instance's done does not end it
ok 37 - row 194 W-N1: a fire.done before a later fire.stopped of the same instance leaves it firing; another instance's done does not end it
---
duration_ms: 21.989082
type: 'test'
...
# Subtest: row 194 T10: a hire or fire of a kept name refuses instance-kept before the writer
ok 38 - row 194 T10: a hire or fire of a kept name refuses instance-kept before the writer
---
duration_ms: 18.687603
type: 'test'
...
# Subtest: row 194 T10: a fire the writer's check refuses from the file stops nothing and leaves the instance launchable
ok 39 - row 194 T10: a fire the writer's check refuses from the file stops nothing and leaves the instance launchable
---
duration_ms: 18.529568
type: 'test'
...
# Subtest: row 194 T18: hire and fire take only their own keys, and a refused call writes nothing
ok 40 - row 194 T18: hire and fire take only their own keys, and a refused call writes nothing
---
duration_ms: 24.530376
type: 'test'
...
# Subtest: row 194 T8, T9, T18: through the runtime the chief hires and fires with the real writer, the receipt carries the reason, and a refusal leaves the file alone
ok 41 - row 194 T8, T9, T18: through the runtime the chief hires and fires with the real writer, the receipt carries the reason, and a refusal leaves the file alone
---
duration_ms: 67.04966
type: 'test'
...
# Subtest: row 194 W-N1: the launcher's take of a launch or regenerate of a firing instance closes it as instance-firing
ok 42 - row 194 W-N1: the launcher's take of a launch or regenerate of a firing instance closes it as instance-firing
---
duration_ms: 24.174855
type: 'test'
...
1..42
# tests 42
# suites 0
# pass 42
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 2069.126162
TAP version 13
# Subtest: explicit 3b copy migration preserves evidence and opens as 3g; normal startup never migrates
ok 1 - explicit 3b copy migration preserves evidence and opens as 3g; normal startup never migrates
---
duration_ms: 66.915434
type: 'test'
...
# Subtest: migration refuses active writers and drifted legacy schemas, with no partial upgrade
ok 2 - migration refuses active writers and drifted legacy schemas, with no partial upgrade
---
duration_ms: 87.090397
type: 'test'
...
# Subtest: named migration registry chains 3b through 3g to a fixture-only future version in order
ok 3 - named migration registry chains 3b through 3g to a fixture-only future version in order
---
duration_ms: 92.896241
type: 'test'
...
# Subtest: migration refuses mismatched source metadata without changing schema or evidence
ok 4 - migration refuses mismatched source metadata without changing schema or evidence
---
duration_ms: 36.477831
type: 'test'
...
# Subtest: offline command migrates only the supplied fixture root and reports usage errors
ok 5 - offline command migrates only the supplied fixture root and reports usage errors
---
duration_ms: 168.952237
type: 'test'
...
1..5
# tests 5
# suites 0
# pass 5
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 517.394008
TAP version 13
# Subtest: endLaunch writes session.ended, releases the run claim and kills its capabilities
ok 1 - endLaunch writes session.ended, releases the run claim and kills its capabilities
---
duration_ms: 19.923626
type: 'test'
...
# Subtest: endLaunch refuses an unknown run, a second end and a rebind of the ended run
ok 2 - endLaunch refuses an unknown run, a second end and a rebind of the ended run
---
duration_ms: 11.57898
type: 'test'
...
# Subtest: a restarted broker refuses to rebind an ended run; a refused rebind leaves the run unbound
ok 3 - a restarted broker refuses to rebind an ended run; a refused rebind leaves the run unbound
---
duration_ms: 13.959669
type: 'test'
...
# Subtest: endLaunch leaves a claim another run took alone
ok 4 - endLaunch leaves a claim another run took alone
---
duration_ms: 15.607261
type: 'test'
...
# Subtest: refuse records action.refused against the caller with the code only
ok 5 - refuse records action.refused against the caller with the code only
---
duration_ms: 11.34653
type: 'test'
...
# Subtest: launches off refuses role.launch with launch-revoked until launches on
ok 6 - launches off refuses role.launch with launch-revoked until launches on
---
duration_ms: 15.612767
type: 'test'
...
# Subtest: broker process: launch ops authorize role.launch, record refusals and end runs
ok 7 - broker process: launch ops authorize role.launch, record refusals and end runs
---
duration_ms: 162.081295
type: 'test'
...
1..7
# tests 7
# suites 0
# pass 7
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 323.68804
TAP version 13
# Subtest: row 281 T2: a fire with host grants on two hosts and a Gitea grant answers with a job, then revokes all three
ok 1 - row 281 T2: a fire with host grants on two hosts and a Gitea grant answers with a job, then revokes all three
---
duration_ms: 232.783752
type: 'test'
...
# Subtest: row 281 T3 (sage-2575): a delete with grants takes two requests: the first starts the job, the next completes
ok 2 - row 281 T3 (sage-2575): a delete with grants takes two requests: the first starts the job, the next completes
---
duration_ms: 223.116777
type: 'test'
...
# Subtest: row 281 T3b (Q2): a delete whose job refuses on host B; the retry refuses grant-revoke-failed and revokes only B and Gitea
ok 3 - row 281 T3b (Q2): a delete whose job refuses on host B; the retry refuses grant-revoke-failed and revokes only B and Gitea
---
duration_ms: 211.879543
type: 'test'
...
# Subtest: row 281 T3b: B cleared by hand with hosts.revoke; the next delete starts a job for Gitea and the leftover line only
ok 4 - row 281 T3b: B cleared by hand with hosts.revoke; the next delete starts a job for Gitea and the leftover line only
---
duration_ms: 208.941116
type: 'test'
...
# Subtest: row 281 T3c (sage-2575 condition 4): a delete of an instance with no grant completes in one request
ok 5 - row 281 T3c (sage-2575 condition 4): a delete of an instance with no grant completes in one request
---
duration_ms: 52.070752
type: 'test'
...
# Subtest: row 281 T4: host B unreachable in a fire: the job refuses, A stays revoked, B and Gitea untouched; a repeat completes
ok 6 - row 281 T4: host B unreachable in a fire: the job refuses, A stays revoked, B and Gitea untouched; a repeat completes
---
duration_ms: 193.713805
type: 'test'
...
# Subtest: row 281 T4b (Q1): a line a manual hosts.revoke left on C is removed by the fire, with its close
ok 7 - row 281 T4b (Q1): a line a manual hosts.revoke left on C is removed by the fire, with its close
---
duration_ms: 100.196392
type: 'test'
...
# Subtest: row 281 T4b (Q1): with C unreachable, the fire completes and names the line in grantsLeft
ok 8 - row 281 T4b (Q1): with C unreachable, the fire completes and names the line in grantsLeft
---
duration_ms: 82.925658
type: 'test'
...
# Subtest: row 281 T5: Gitea's admin token can't be checked: the job refuses with the Gitea grant intact
ok 9 - row 281 T5: Gitea's admin token can't be checked: the job refuses with the Gitea grant intact
---
duration_ms: 112.342135
type: 'test'
...
# Subtest: row 281 T5b (N1): a failed token DELETE refuses gitea-left; the repeat retries only this agent's entries
ok 10 - row 281 T5b (N1): a failed token DELETE refuses gitea-left; the repeat retries only this agent's entries
---
duration_ms: 295.497967
type: 'test'
...
# Subtest: row 281 T6 (sage-2574): a host decision approved before the fire and run after it ends revoked, with nothing applied
ok 11 - row 281 T6 (sage-2574): a host decision approved before the fire and run after it ends revoked, with nothing applied
---
duration_ms: 64.894992
type: 'test'
...
# Subtest: row 281 T6b (sage-2574): a Gitea decision approved before the fire and run after it ends revoked before any Gitea write
ok 12 - row 281 T6b (sage-2574): a Gitea decision approved before the fire and run after it ends revoked before any Gitea write
---
duration_ms: 86.54008
type: 'test'
...
# Subtest: row 281 T6c: a host executor in flight aborts and ends revoked; a Gitea executor in flight is awaited and leaves no token
ok 13 - row 281 T6c: a host executor in flight aborts and ends revoked; a Gitea executor in flight is awaited and leaves no token
---
duration_ms: 237.49431
type: 'test'
...
# Subtest: row 281 T6d (B1): undecided host and Gitea decisions are in the set, and approved after the fire both end revoked
ok 14 - row 281 T6d (B1): undecided host and Gitea decisions are in the set, and approved after the fire both end revoked
---
duration_ms: 92.642809
type: 'test'
...
# Subtest: row 281 T6e (B1): a grant raise refuses instance-fired while firing and after the fire, goes through after a rehire, and refuses grant-revoke-running during a delete job
ok 15 - row 281 T6e (B1): a grant raise refuses instance-fired while firing and after the fire, goes through after a rehire, and refuses grant-revoke-running during a delete job
---
duration_ms: 104.408759
type: 'test'
...
# Subtest: row 281 T7: an instance with no grant fires as today, synchronously, with the same events
ok 16 - row 281 T7: an instance with no grant fires as today, synchronously, with the same events
---
duration_ms: 52.79141
type: 'test'
...
# Subtest: row 281 T9 (B3): one step G per agent; the manual verbs refuse while it runs, and sweep names it running
ok 17 - row 281 T9 (B3): one step G per agent; the manual verbs refuse while it runs, and sweep names it running
---
duration_ms: 223.695847
type: 'test'
...
# Subtest: row 281 T10 (B2): the fire and the delete answer while their jobs are held, and the broker answers other verbs
ok 18 - row 281 T10 (B2): the fire and the delete answer while their jobs are held, and the broker answers other verbs
---
duration_ms: 196.138967
type: 'test'
...
# Subtest: row 281 T11 (C1): a fire's job completes after the chief's run ends and processing halts
ok 19 - row 281 T11 (C1): a fire's job completes after the chief's run ends and processing halts
---
duration_ms: 81.192633
type: 'test'
...
# Subtest: row 281 T12 (C1, N7): a step B refusal in the job is fire.failed, and the repeat runs B and C synchronously
ok 20 - row 281 T12 (C1, N7): a step B refusal in the job is fire.failed, and the repeat runs B and C synchronously
---
duration_ms: 76.945309
type: 'test'
...
# Subtest: row 281 T13 (N4): a restart records each held job interrupted once, with one message each; an ended job gets none
ok 21 - row 281 T13 (N4): a restart records each held job interrupted once, with one message each; an ended job gets none
---
duration_ms: 129.403455
type: 'test'
...
# Subtest: row 281 T14 (N1, sage-2653): a host removed under an undecided decision stops the fire on host-unknown; the human's no closes it, and the repeat fire has no job
ok 22 - row 281 T14 (N1, sage-2653): a host removed under an undecided decision stops the fire on host-unknown; the human's no closes it, and the repeat fire has no job
---
duration_ms: 61.78992
type: 'test'
...
1..22
# tests 22
# suites 0
# pass 22
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 3217.339801
TAP version 13
# Subtest: versionAtLeast compares numbers and refuses a prerelease of 1.27.0
ok 1 - versionAtLeast compares numbers and refuses a prerelease of 1.27.0
---
duration_ms: 1.237036
type: 'test'
...
# Subtest: X-G1: a raise that fails a check refuses and stores nothing
ok 2 - X-G1: a raise that fails a check refuses and stores nothing
---
duration_ms: 62.068324
type: 'test'
...
# Subtest: X-G1: a creative role, a role without identity and a missing or due slot refuse at raise
ok 3 - X-G1: a creative role, a role without identity and a missing or due slot refuse at raise
---
duration_ms: 180.218463
type: 'test'
...
# Subtest: X-G2: admin set refuses each failed check and writes nothing, then writes the slot once
ok 4 - X-G2: admin set refuses each failed check and writes nothing, then writes the slot once
---
duration_ms: 143.52952
type: 'test'
...
# Subtest: X-G3 to X-G8: an approve makes the user, mints the token, forks, checks reach and writes the file, record and grant.applied
ok 5 - X-G3 to X-G8: an approve makes the user, mints the token, forks, checks reach and writes the file, record and grant.applied
---
duration_ms: 102.221906
type: 'test'
...
# Subtest: X-G4: a user this stack did not make, an admin, a disabled user and a remade user each refuse
ok 6 - X-G4: a user this stack did not make, an admin, a disabled user and a remade user each refuse
---
duration_ms: 306.504597
type: 'test'
...
# Subtest: X-G6 and X-G8: the user and mint steps are written before their calls, and each result after its call
ok 7 - X-G6 and X-G8: the user and mint steps are written before their calls, and each result after its call
---
duration_ms: 100.565961
type: 'test'
...
# Subtest: X-G4: a fork by the seat user of another repository than the project refuses fork-foreign
ok 8 - X-G4: a fork by the seat user of another repository than the project refuses fork-foreign
---
duration_ms: 79.418473
type: 'test'
...
# Subtest: X-G5: a failure after the mint deletes the token, unloads nothing it did not load and leaves no file
ok 9 - X-G5: a failure after the mint deletes the token, unloads nothing it did not load and leaves no file
---
duration_ms: 124.149748
type: 'test'
...
# Subtest: X-G5: a token delete that fails is left at Gitea, shown by status and taken by sweep
ok 10 - X-G5: a token delete that fails is left at Gitea, shown by status and taken by sweep
---
duration_ms: 128.702874
type: 'test'
...
# Subtest: X-G5: a mint that fails deletes by name, and a refusal at step 0 leaves the decision unspent
ok 11 - X-G5: a mint that fails deletes by name, and a refusal at step 0 leaves the decision unspent
---
duration_ms: 145.353601
type: 'test'
...
# Subtest: X-G5: an agent held for an unknown token is refused at step 0 with no Gitea call
ok 12 - X-G5: an agent held for an unknown token is refused at step 0 with no Gitea call
---
duration_ms: 65.829336
type: 'test'
...
# Subtest: X-G5 and X-G9 (step 7): a rotation whose old-token delete fails stays applied with the old id left
ok 13 - X-G5 and X-G9 (step 7): a rotation whose old-token delete fails stays applied with the old id left
---
duration_ms: 170.790626
type: 'test'
...
# Subtest: X-G10: in a rotation the store file holds the new token before the old one is deleted
ok 14 - X-G10: in a rotation the store file holds the new token before the old one is deleted
---
duration_ms: 145.852525
type: 'test'
...
# Subtest: X-G6: a rotation cut before the rename settles back at once, and the old token stays live
ok 15 - X-G6: a rotation cut before the rename settles back at once, and the old token stays live
---
duration_ms: 167.483708
type: 'test'
...
# Subtest: X-G6: a rotation whose step 8 write fails is settle-pending, and a restart settles it forward
ok 16 - X-G6: a rotation whose step 8 write fails is settle-pending, and a restart settles it forward
---
duration_ms: 178.569723
type: 'test'
...
# Subtest: X-G6: a restart settles an open rotation back when the file still holds the old token
ok 17 - X-G6: a restart settles an open rotation back when the file still holds the old token
---
duration_ms: 134.9967
type: 'test'
...
# Subtest: X-G6: a restart settles an open rotation forward when the file holds the new token
ok 18 - X-G6: a restart settles an open rotation forward when the file holds the new token
---
duration_ms: 113.009774
type: 'test'
...
# Subtest: X-G6: a 401 on the file token loses the grant: both tokens go, the record goes and memory unloads
ok 19 - X-G6: a 401 on the file token loses the grant: both tokens go, the record goes and memory unloads
---
duration_ms: 136.104972
type: 'test'
...
# Subtest: X-G6: a 403, 404, 500, a hang and a dropped socket each leave the rotation settle-pending with nothing deleted
ok 20 - X-G6: a 403, 404, 500, a hang and a dropped socket each leave the rotation settle-pending with nothing deleted
---
duration_ms: 996.868783
type: 'test'
...
# Subtest: X-G6: a file token no grant minted is held; the next restart says so again; a revoke clears it and takes both ids
ok 21 - X-G6: a file token no grant minted is held; the next restart says so again; a revoke clears it and takes both ids
---
duration_ms: 155.766188
type: 'test'
...
# Subtest: N9: a revoke of an open rotation, then a restart: no settle, no Gitea call and no message
ok 22 - N9: a revoke of an open rotation, then a restart: no settle, no Gitea call and no message
---
duration_ms: 113.207925
type: 'test'
...
# Subtest: N9: a 404 on a delete by id counts as done
ok 23 - N9: a 404 on a delete by id counts as done
---
duration_ms: 128.801734
type: 'test'
...
# Subtest: X-G6: a restart undoes each step a killed child left, and spends an approved unspent decision
ok 24 - X-G6: a restart undoes each step a killed child left, and spends an approved unspent decision
---
duration_ms: 416.149926
type: 'test'
...
# Subtest: X-G6: a restart with no admin slot leaves the user an orphan and the token left
ok 25 - X-G6: a restart with no admin slot leaves the user an orphan and the token left
---
duration_ms: 53.694027
type: 'test'
...
# Subtest: X-G7: a change to the definition, identity, publish remotes or admin slot after the raise ends decision-mismatch
ok 26 - X-G7: a change to the definition, identity, publish remotes or admin slot after the raise ends decision-mismatch
---
duration_ms: 140.801435
type: 'test'
...
# Subtest: X-G7 and X-G9: an admin rotate voids open decisions, and rotate --finish deletes what was left
ok 27 - X-G7 and X-G9: an admin rotate voids open decisions, and rotate --finish deletes what was left
---
duration_ms: 123.822535
type: 'test'
...
# Subtest: X-G9: a rotate whose name is taken refuses and writes nothing; remove takes the slot away
ok 28 - X-G9: a rotate whose name is taken refuses and writes nothing; remove takes the slot away
---
duration_ms: 73.422448
type: 'test'
...
# Subtest: X-G9: a slot past its rotate-by date refuses a run at step 0, leaving the decision unspent
ok 29 - X-G9: a slot past its rotate-by date refuses a run at step 0, leaving the decision unspent
---
duration_ms: 50.180389
type: 'test'
...
# Subtest: X-G11: run refuses every caller but the human, an unapproved, a spent and a busy decision
ok 30 - X-G11: run refuses every caller but the human, an unapproved, a spent and a busy decision
---
duration_ms: 105.874572
type: 'test'
...
# Subtest: kill switch (plan :16): while halted the chief still reads grants.status, and an agent grants.revoke refuses
ok 31 - kill switch (plan :16): while halted the chief still reads grants.status, and an agent grants.revoke refuses
---
duration_ms: 106.333602
type: 'test'
...
# Subtest: X-G11: a revoke while the executor runs aborts it and the grant ends revoked
ok 32 - X-G11: a revoke while the executor runs aborts it and the grant ends revoked
---
duration_ms: 110.333063
type: 'test'
...
# Subtest: X-G11: a revoke unloads memory and removes the file before its Gitea delete
ok 33 - X-G11: a revoke unloads memory and removes the file before its Gitea delete
---
duration_ms: 132.61075
type: 'test'
...
# Subtest: X-G11: a revoke during a rotation step 7 ends it revoked, and step 8 writes no record back
ok 34 - X-G11: a revoke during a rotation step 7 ends it revoked, and step 8 writes no record back
---
duration_ms: 217.837803
type: 'test'
...
# Subtest: X-G11: a revoke while a sweep settles a rotation, forward or back, ends it revoked with no record
ok 35 - X-G11: a revoke while a sweep settles a rotation, forward or back, ends it revoked with no record
---
duration_ms: 373.129907
type: 'test'
...
# Subtest: X-G11: a revoke during a settle whoami that finds a foreign token ends it revoked, not held
ok 36 - X-G11: a revoke during a settle whoami that finds a foreign token ends it revoked, not held
---
duration_ms: 159.428511
type: 'test'
...
# Subtest: X-G11: a revoke during a settle whoami that gets a 401 ends it revoked, not lost
ok 37 - X-G11: a revoke during a settle whoami that gets a 401 ends it revoked, not lost
---
duration_ms: 190.121277
type: 'test'
...
# Subtest: X-G12: a token that reaches wider than its forks fails with the repository named
ok 38 - X-G12: a token that reaches wider than its forks fails with the repository named
---
duration_ms: 422.103379
type: 'test'
...
# Subtest: X-G12: reach is paged by X-Total-Count and a count that does not add up refuses
ok 39 - X-G12: reach is paged by X-Total-Count and a count that does not add up refuses
---
duration_ms: 268.091756
type: 'test'
...
# Subtest: X-G13: an agent cannot record a grant event, and the trigger refuses one from any writer but the grant writer
ok 40 - X-G13: an agent cannot record a grant event, and the trigger refuses one from any writer but the grant writer
---
duration_ms: 41.808143
type: 'test'
...
# Subtest: X-G14: credentials delete fires the user: tokens go, login is prohibited, and grant.revoke.closed records it
ok 41 - X-G14: credentials delete fires the user: tokens go, login is prohibited, and grant.revoke.closed records it
---
duration_ms: 293.964549
type: 'test'
...
# Subtest: X-G14: a fire whose token delete or login PATCH fails lands it in serviceLeft
ok 42 - X-G14: a fire whose token delete or login PATCH fails lands it in serviceLeft
---
duration_ms: 155.089131
type: 'test'
...
# Subtest: X-G14: a fire whose user is gone or remade skips the fire steps and says why
ok 43 - X-G14: a fire whose user is gone or remade skips the fire steps and says why
---
duration_ms: 259.152973
type: 'test'
...
# Subtest: X-G14: a sweep retries a fire only for the user it fired: a remade or gone user is skipped and named
ok 44 - X-G14: a sweep retries a fire only for the user it fired: a remade or gone user is skipped and named
---
duration_ms: 347.428274
type: 'test'
...
# Subtest: X-G14: a revoke Gitea cannot reach stays open, and a restart closes it
ok 45 - X-G14: a revoke Gitea cannot reach stays open, and a restart closes it
---
duration_ms: 116.580427
type: 'test'
...
# Subtest: row 281 T8: a tester grants.revoke refuses tester-dev-only once bus.tester is off; the human revoke keeps its records and starts no job
ok 46 - row 281 T8: a tester grants.revoke refuses tester-dev-only once bus.tester is off; the human revoke keeps its records and starts no job
---
duration_ms: 132.268866
type: 'test'
...
# Subtest: X-G15: look-alike commit steps outside the grant writer are ignored at start, by revoke and by status
ok 47 - X-G15: look-alike commit steps outside the grant writer are ignored at start, by revoke and by status
---
duration_ms: 127.609667
type: 'test'
...
# Subtest: X-G15: a look-alike spend under another kind with the grant writer pair is not an open grant
ok 48 - X-G15: a look-alike spend under another kind with the grant writer pair is not an open grant
---
duration_ms: 43.046865
type: 'test'
...
# Subtest: status lists the slot, users, grants and nothing secret, and every grants verb needs service gitea
ok 49 - status lists the slot, users, grants and nothing secret, and every grants verb needs service gitea
---
duration_ms: 109.158689
type: 'test'
...
1..49
# tests 49
# suites 0
# pass 49
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 8542.307737
TAP version 13
# Subtest: 3j copy migrates to 3k: every row kept, and sqlite_master gains only the two tables and their keys
ok 1 - 3j copy migrates to 3k: every row kept, and sqlite_master gains only the two tables and their keys
---
duration_ms: 81.838559
type: 'test'
...
# Subtest: a 3j→3k step that fails partway leaves the store at 3j with every row and the schema intact
ok 2 - a 3j→3k step that fails partway leaves the store at 3j with every row and the schema intact
---
duration_ms: 89.482209
type: 'test'
...
# Subtest: the 3j engine refuses a migrated store, migrating or not, and leaves it as it was
ok 3 - the 3j engine refuses a migrated store, migrating or not, and leaves it as it was
---
duration_ms: 82.697499
type: 'test'
...
# Subtest: gitea_users: one user per business and agent, an id above 0, a 16-hex nonce and a real decision
ok 4 - gitea_users: one user per business and agent, an id above 0, a 16-hex nonce and a real decision
---
duration_ms: 10.237684
type: 'test'
...
# Subtest: gitea_grants: one grant per agent, a projects array, a token id above 0, and only for a recorded user
ok 5 - gitea_grants: one grant per agent, a projects array, a token id above 0, and only for a recorded user
---
duration_ms: 11.403049
type: 'test'
...
1..5
# tests 5
# suites 0
# pass 5
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 356.386753
TAP version 13
# Subtest: row 280: an occupied TCP port is attempted, refused, and retried with our sshd
ok 1 - row 280: an occupied TCP port is attempted, refused, and retried with our sshd
---
duration_ms: 83.960769
type: 'test'
...
# Subtest: row 280: every injected picker sample is unprivileged and outside the ephemeral range
ok 2 - row 280: every injected picker sample is unprivileged and outside the ephemeral range
---
duration_ms: 0.361575
type: 'test'
...
# Subtest: G7: an Approve installs the tagged line, logs in with the new key, and writes the key file, record and grant.applied
ok 3 - G7: an Approve installs the tagged line, logs in with the new key, and writes the key file, record and grant.applied
---
duration_ms: 657.627333
type: 'test'
...
# Subtest: G7: a commands change on a live grant updates the record in one transaction and keeps the key and line
ok 4 - G7: a commands change on a live grant updates the record in one transaction and keeps the key and line
---
duration_ms: 531.338182
type: 'test'
...
# Subtest: G8: a failure at install or verify removes the line and leaves no record, key file or reference
ok 5 - G8: a failure at install or verify removes the line and leaves no record, key file or reference
---
duration_ms: 1517.262253
type: 'test'
...
# Subtest: G8: a failed remove adds hostLineLeft and tells the human to sweep
ok 6 - G8: a failed remove adds hostLineLeft and tells the human to sweep
---
duration_ms: 651.737964
type: 'test'
...
# Subtest: G8: a failure in step 5 before commit unlinks the key file, drops the reference and removes the line
ok 7 - G8: a failure in step 5 before commit unlinks the key file, drops the reference and removes the line
---
duration_ms: 649.340641
type: 'test'
...
# Subtest: G8: a store fault in the commit transaction ends host-failed with no record, key file, reference or line
ok 8 - G8: a store fault in the commit transaction ends host-failed with no record, key file, reference or line
---
duration_ms: 671.126429
type: 'test'
...
# Subtest: G8: a failed step 1 check spends the decision and runs nothing remote
ok 9 - G8: a failed step 1 check spends the decision and runs nothing remote
---
duration_ms: 81.673932
type: 'test'
...
# Subtest: G9: a registry, definition or commands change between raise and Approve ends decision-mismatch before any remote step
ok 10 - G9: a registry, definition or commands change between raise and Approve ends decision-mismatch before any remote step
---
duration_ms: 521.508803
type: 'test'
...
# Subtest: G9: an agent no longer a role or no longer declaring host ends with its code, spent
ok 11 - G9: an agent no longer a role or no longer declaring host ends with its code, spent
---
duration_ms: 68.84932
type: 'test'
...
# Subtest: G10: a second start refuses decision-consumed, and an unresolved or agent-resolved decision not-authorized, writing nothing
ok 12 - G10: a second start refuses decision-consumed, and an unresolved or agent-resolved decision not-authorized, writing nothing
---
duration_ms: 513.85868
type: 'test'
...
# Subtest: G15: no event, message or decision holds the private key
ok 13 - G15: no event, message or decision holds the private key
---
duration_ms: 490.733182
type: 'test'
...
# Subtest: G23: a revoke during install ends grant.failed revoked with no key file, no grant and no line
ok 14 - G23: a revoke during install ends grant.failed revoked with no key file, no grant and no line
---
duration_ms: 525.579468
type: 'test'
...
# Subtest: G23 (row 249): an add that writes after an abort's remove leaves hostLineLeft until the sweep
ok 15 - G23 (row 249): an add that writes after an abort's remove leaves hostLineLeft until the sweep
---
duration_ms: 794.760968
type: 'test'
...
# Subtest: G23 (row 249): an add that writes after a timed-out install's remove leaves hostLineLeft until the sweep
ok 16 - G23 (row 249): an add that writes after a timed-out install's remove leaves hostLineLeft until the sweep
---
duration_ms: 855.43114
type: 'test'
...
# Subtest: G23: a revoke recorded after the raise and before the start ends step 1 revoked, and a held slot ends host-busy
ok 17 - G23: a revoke recorded after the raise and before the start ends step 1 revoked, and a held slot ends host-busy
---
duration_ms: 512.62141
type: 'test'
...
# Subtest: G24: names at 64 characters with . and _ give distinct tags of the fixed length
ok 18 - G24: names at 64 characters with . and _ give distinct tags of the fixed length
---
duration_ms: 0.409892
type: 'test'
...
# Subtest: G11: a restart after install removes the line, then ends interrupted with the tag, holding the slot until then
ok 19 - G11: a restart after install removes the line, then ends interrupted with the tag, holding the slot until then
---
duration_ms: 216.10008
type: 'test'
...
# Subtest: G11: a restart after a new key's commit, with the key file written, ends with no key file, record, reference or line
ok 20 - G11: a restart after a new key's commit, with the key file written, ends with no key file, record, reference or line
---
duration_ms: 220.396391
type: 'test'
...
# Subtest: G11: a restart after a commands change's commit leaves the record as it was and asks nothing of the host
ok 21 - G11: a restart after a commands change's commit leaves the record as it was and asks nothing of the host
---
duration_ms: 560.5996
type: 'test'
...
# Subtest: G11 (B2): a restart before step 1, spent or not yet spent, ends interrupted and nothing runs later
ok 22 - G11 (B2): a restart before step 1, spent or not yet spent, ends interrupted and nothing runs later
---
duration_ms: 68.008875
type: 'test'
...
# Subtest: G11: a remote undo that fails ends interrupted with hostLineLeft and the sweep hint
ok 23 - G11: a remote undo that fails ends interrupted with hostLineLeft and the sweep hint
---
duration_ms: 294.19336
type: 'test'
...
# Subtest: G11: a restart leaves a finished grant alone, and the reconcile adds nothing for it
ok 24 - G11: a restart leaves a finished grant alone, and the reconcile adds nothing for it
---
duration_ms: 492.228554
type: 'test'
...
# Subtest: N1 (G27): the start sweep unlinks host.<id> files with no record in loaded businesses only, and refuses a store dir that is not private
ok 25 - N1 (G27): the start sweep unlinks host.<id> files with no record in loaded businesses only, and refuses a store dir that is not private
---
duration_ms: 6.558346
type: 'test'
...
# Subtest: G12: the human's hosts.revoke deletes the record, the key file, the reference and the line, with a closed marker
ok 26 - G12: the human's hosts.revoke deletes the record, the key file, the reference and the line, with a closed marker
---
duration_ms: 637.696071
type: 'test'
...
# Subtest: G12 (N4): a revoke with no record still removes the computed tag's line, with granted false; bad args refuse
ok 27 - G12 (N4): a revoke with no record still removes the computed tag's line, with granted false; bad args refuse
---
duration_ms: 217.392809
type: 'test'
...
# Subtest: G13: a revoke during install aborts the executor, which ends revoked, and the line goes
ok 28 - G13: a revoke during install aborts the executor, which ends revoked, and the line goes
---
duration_ms: 560.229976
type: 'test'
...
# Subtest: G26: the human, the assistant and the tester revoke; the chief and a pm refuse; sweep is the human's or the tester's
ok 29 - G26: the human, the assistant and the tester revoke; the chief and a pm refuse; sweep is the human's or the tester's
---
duration_ms: 508.929241
type: 'test'
...
# Subtest: row 281 T8: a tester hosts.revoke refuses tester-dev-only once bus.tester is off, and a human revoke writes no job records
ok 30 - row 281 T8: a tester hosts.revoke refuses tester-dev-only once bus.tester is off, and a human revoke writes no job records
---
duration_ms: 641.807226
type: 'test'
...
# Subtest: G27: a restart after step 1 sweeps the key file and runs step 3 once the bus is up; status shows the revoke until then
ok 31 - G27: a restart after step 1 sweeps the key file and runs step 3 once the bus is up; status shows the revoke until then
---
duration_ms: 659.52398
type: 'test'
...
# Subtest: G27: after step 2 with the host down, the restart closes the marker with hostLineLeft; a marker without a revoke id is not reopened
ok 32 - G27: after step 2 with the host down, the restart closes the marker with hostLineLeft; a marker without a revoke id is not reopened
---
duration_ms: 936.59984
type: 'test'
...
# Subtest: G27: a key file a revoke could not unlink is reported left and goes at the next start
ok 33 - G27: a key file a revoke could not unlink is reported left and goes at the next start
---
duration_ms: 632.639641
type: 'test'
...
# Subtest: G28: a commands change, then a revoke, then a restart leave no record, key, reference or line
ok 34 - G28: a commands change, then a revoke, then a restart leave no record, key, reference or line
---
duration_ms: 653.467997
type: 'test'
...
# Subtest: G24 (B4): hosts.sweep removes only this business's recorded tags no live grant holds, and records what it left
ok 35 - G24 (B4): hosts.sweep removes only this business's recorded tags no live grant holds, and records what it left
---
duration_ms: 962.241764
type: 'test'
...
# Subtest: G12: the local steps finish before the host step, so a host that hangs leaves the agent no access
ok 36 - G12: the local steps finish before the host step, so a host that hangs leaves the agent no access
---
duration_ms: 714.365535
type: 'test'
...
# Subtest: G23 (X5): a revoke right after the spend reaches the executor's claim, so the grant ends revoked
ok 37 - G23 (X5): a revoke right after the spend reaches the executor's claim, so the grant ends revoked
---
duration_ms: 207.206499
type: 'test'
...
# Subtest: G23 (X5): a revoke that lands as verify returns ends revoked with no record, key file or line
ok 38 - G23 (X5): a revoke that lands as verify returns ends revoked with no record, key file or line
---
duration_ms: 664.698225
type: 'test'
...
# Subtest: G13: a revoke whose host remove fails still drops the record and key, and reports the line left for a sweep
ok 39 - G13: a revoke whose host remove fails still drops the record and key, and reports the line left for a sweep
---
duration_ms: 653.766611
type: 'test'
...
# Subtest: G22: enroll, check, grant, host.run, a commands change the next host.run uses, and a revoke that kills a run in flight
ok 40 - G22: enroll, check, grant, host.run, a commands change the next host.run uses, and a revoke that kills a run in flight
---
duration_ms: 1172.54697
type: 'test'
...
# Subtest: mos-1163: a grant whose agent became a creative role after the raise ends host-creative-role at step 1, spent, with nothing remote
ok 41 - mos-1163: a grant whose agent became a creative role after the raise ends host-creative-role at step 1, spent, with nothing remote
---
duration_ms: 61.460666
type: 'test'
...
# Subtest: sage-1908: once the agent of an applied grant is a creative role, host.run refuses host-creative-role, runs nothing remote and keeps the record
ok 42 - sage-1908: once the agent of an applied grant is a creative role, host.run refuses host-creative-role, runs nothing remote and keeps the record
---
duration_ms: 510.214713
type: 'test'
...
1..42
# tests 42
# suites 0
# pass 42
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 21467.137575
TAP version 13
# Subtest: 3i copy migrates to 3j: every row kept, and sqlite_master gains only the two tables, their keys and the guard
ok 1 - 3i copy migrates to 3j: every row kept, and sqlite_master gains only the two tables, their keys and the guard
---
duration_ms: 73.964009
type: 'test'
...
# Subtest: a 3i→3j step that fails partway leaves the store at 3i with every row and the schema intact
ok 2 - a 3i→3j step that fails partway leaves the store at 3i with every row and the schema intact
---
duration_ms: 84.711984
type: 'test'
...
# Subtest: the 3i engine refuses a migrated store, migrating or not, and leaves it as it was
ok 3 - the 3i engine refuses a migrated store, migrating or not, and leaves it as it was
---
duration_ms: 82.795225
type: 'test'
...
# Subtest: A22b, sage-1703: a session-written grant.* row from before the step survives it, and the grant readers ignore it
ok 4 - A22b, sage-1703: a session-written grant.* row from before the step survives it, and the grant readers ignore it
---
duration_ms: 69.813637
type: 'test'
...
# Subtest: the guard: a grant.* action or operation on action.allowed needs the (NULL, grant) actor
ok 5 - the guard: a grant.* action or operation on action.allowed needs the (NULL, grant) actor
---
duration_ms: 13.398811
type: 'test'
...
# Subtest: hosts: one record per business and host, a ready host has its installer and check, grants need the host
ok 6 - hosts: one record per business and host, a ready host has its installer and check, grants need the host
---
duration_ms: 10.836824
type: 'test'
...
1..6
# tests 6
# suites 0
# pass 6
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 412.883239
TAP version 13
# organization: {"event":"reload-needs-restart","business":"demo"}
# Subtest: T20 fire: a revoke that fails stops the fire with the file unchanged; one that succeeds revokes, keeps the directory and names the services outside the store
ok 1 - T20 fire: a revoke that fails stops the fire with the file unchanged; one that succeeds revokes, keeps the directory and names the services outside the store
---
duration_ms: 91.565281
type: 'test'
...
# Subtest: T20 fire: an instance already delisted still has its tokens revoked and the file is left alone
ok 2 - T20 fire: an instance already delisted still has its tokens revoked and the file is left alone
---
duration_ms: 49.803348
type: 'test'
...
# Subtest: T20 fire: with no entry in the running bus, a token on disk refuses and an empty store goes on
ok 3 - T20 fire: with no entry in the running bus, a token on disk refuses and an empty store goes on
---
duration_ms: 52.945145
type: 'test'
...
# Subtest: T20 delete: a revoke that fails keeps the file; one that succeeds clears the store, deletes, and names the tracker bot
ok 4 - T20 delete: a revoke that fails keeps the file; one that succeeds clears the store, deletes, and names the tracker bot
---
duration_ms: 67.222042
type: 'test'
...
# Subtest: T20 delete: with no entry in the running bus, a token file is cleared and the delete goes on; a file reference refuses
ok 5 - T20 delete: with no entry in the running bus, a token file is cleared and the delete goes on; a file reference refuses
---
duration_ms: 55.353852
type: 'test'
...
# Subtest: T21 delete: a write between the raise and the take makes the delete refuse revision-conflict before it revokes anything
ok 6 - T21 delete: a write between the raise and the take makes the delete refuse revision-conflict before it revokes anything
---
duration_ms: 55.857643
type: 'test'
...
# Subtest: row 281 T1 fire: a host.<id> or granted gitea file in the store refuses step B credential-revoke-failed, file unchanged
ok 7 - row 281 T1 fire: a host.<id> or granted gitea file in the store refuses step B credential-revoke-failed, file unchanged
---
duration_ms: 52.390335
type: 'test'
...
# Subtest: row 281 T1 start: a host grant record whose key file is gone starts and reads not-issued
ok 8 - row 281 T1 start: a host grant record whose key file is gone starts and reads not-issued
---
duration_ms: 49.199992
type: 'test'
...
1..8
# tests 8
# suites 0
# pass 8
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 581.917366
TAP version 13
# Subtest: trail on a hidden message id answers exactly as on an unknown id, for the owner, a reader and the tester
ok 1 - trail on a hidden message id answers exactly as on an unknown id, for the owner, a reader and the tester
---
duration_ms: 23.582065
type: 'test'
...
# Subtest: replies on a hidden message id answers exactly as on an unknown id, for the owner, a reader and the tester
ok 2 - replies on a hidden message id answers exactly as on an unknown id, for the owner, a reader and the tester
---
duration_ms: 23.016106
type: 'test'
...
# Subtest: trail on a decision keeps the decision and drops the user thread messages, their deliveries and their events
ok 3 - trail on a decision keeps the decision and drops the user thread messages, their deliveries and their events
---
duration_ms: 27.394648
type: 'test'
...
# Subtest: replies leaves out other users thread messages and still fills a page
ok 4 - replies leaves out other users thread messages and still fills a page
---
duration_ms: 168.512501
type: 'test'
...
# Subtest: messages in the business human and tester threads are not hidden (row 177 unchanged)
ok 5 - messages in the business human and tester threads are not hidden (row 177 unchanged)
---
duration_ms: 31.043561
type: 'test'
...
# Subtest: governance pin: the owner sees decisions, inbox entries, claims, tasks and project files, but not the user messages
ok 6 - governance pin: the owner sees decisions, inbox entries, claims, tasks and project files, but not the user messages
---
duration_ms: 97.561497
type: 'test'
...
1..6
# tests 6
# suites 0
# pass 6
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 441.717371
TAP version 13
# Subtest: 3f copy migrates to 3g preserving every old column/row, with an empty instance_names and null to_name
ok 1 - 3f copy migrates to 3g preserving every old column/row, with an empty instance_names and null to_name
---
duration_ms: 83.476176
type: 'test'
...
1..1
# tests 1
# suites 0
# pass 1
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 148.867035
TAP version 13
# Subtest: v3b prototype refusals, views and append-only mutations
ok 1 - v3b prototype refusals, views and append-only mutations
---
duration_ms: 81.916017
type: 'test'
...
1..1
# tests 1
# suites 0
# pass 1
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 127.351705
TAP version 13
# Subtest: T1 REQ-ROLE-2: two sessions of one thread keep their own history, delivery and replies
ok 1 - T1 REQ-ROLE-2: two sessions of one thread keep their own history, delivery and replies
---
duration_ms: 40.706821
type: 'test'
...
# Subtest: T2 REQ-ROLE-2: one holder per session, generations count its claims, and a sibling session's message never reaches the other holder
ok 2 - T2 REQ-ROLE-2: one holder per session, generations count its claims, and a sibling session's message never reaches the other holder
---
duration_ms: 31.91851
type: 'test'
...
# Subtest: T2 sage-2257: a released or revoked run's retired generation refuses its approval, delivery and read, and writes nothing
ok 3 - T2 sage-2257: a released or revoked run's retired generation refuses its approval, delivery and read, and writes nothing
---
duration_ms: 42.685057
type: 'test'
...
# Subtest: session.create is idempotent on its op, refuses a reused op or a taken name, and reaches only the owner's threads
ok 4 - session.create is idempotent on its op, refuses a reused op or a taken name, and reaches only the owner's threads
---
duration_ms: 29.35201
type: 'test'
...
# Subtest: the 3l triggers keep sessions in their thread and session ids apart from thread ids
ok 5 - the 3l triggers keep sessions in their thread and session ids apart from thread ids
---
duration_ms: 61.867285
type: 'test'
...
# Subtest: T7: a 3k store migrates to 3l, each thread's default session has the thread's id, and old rows keep their seqs
ok 6 - T7: a 3k store migrates to 3l, each thread's default session has the thread's id, and old rows keep their seqs
---
duration_ms: 91.694237
type: 'test'
...
# Subtest: T7 D9: the 3k engine refuses a 3l store, migrating or not, and leaves it as it was
ok 7 - T7 D9: the 3k engine refuses a 3l store, migrating or not, and leaves it as it was
---
duration_ms: 148.41378
type: 'test'
...
1..7
# tests 7
# suites 0
# pass 7
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 518.953205
TAP version 13
# Subtest: 3e copy migrates through 3f to 3g preserving every old column/row and adding null spec citations
ok 1 - 3e copy migrates through 3f to 3g preserving every old column/row and adding null spec citations
---
duration_ms: 85.093606
type: 'test'
...
1..1
# tests 1
# suites 0
# pass 1
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 149.197988
TAP version 13
# organization: {"event":"reload-needs-restart","business":"demo"}
# organization: {"event":"reload-needs-restart","business":"demo"}
# organization: {"event":"reload-needs-restart","business":"demo"}
# organization: {"event":"reload-needs-restart","business":"demo"}
# organization: {"event":"reload-needs-restart","business":"demo"}
# Subtest: row 175: TESTER_VERBS and the organization branch tester set are pinned
ok 1 - row 175: TESTER_VERBS and the organization branch tester set are pinned
---
duration_ms: 1.224975
type: 'test'
...
# Subtest: row 175: each of the six reads as the tester deep-equals the human read
ok 2 - row 175: each of the six reads as the tester deep-equals the human read
---
duration_ms: 70.208706
type: 'test'
...
# Subtest: row 175: W1-W3 as the tester land with receipt actor tester; the human still logs the human
ok 3 - row 175: W1-W3 as the tester land with receipt actor tester; the human still logs the human
---
duration_ms: 71.053044
type: 'test'
...
# Subtest: row 175: W2 as the tester refuses credentials, protected definitions, human, tester and bus.tester, and changes nothing
ok 4 - row 175: W2 as the tester refuses credentials, protected definitions, human, tester and bus.tester, and changes nothing
---
duration_ms: 70.377914
type: 'test'
...
# Subtest: row 175: the human-only actions refuse a tester tester-refused, and the file and store stay as they were
ok 5 - row 175: the human-only actions refuse a tester tester-refused, and the file and store stay as they were
---
duration_ms: 64.353653
type: 'test'
...
# Subtest: row 175: W4 as the tester writes by tester and keeps every name check
ok 6 - row 175: W4 as the tester writes by tester and keeps every name check
---
duration_ms: 17.315774
type: 'test'
...
# Subtest: row 175: W6 as the tester records created_by tester; the human records the human
ok 7 - row 175: W6 as the tester records created_by tester; the human records the human
---
duration_ms: 12.393188
type: 'test'
...
# Subtest: row 175: with bus.tester unset or not exactly true no tester binds, so no read or write runs
ok 8 - row 175: with bus.tester unset or not exactly true no tester binds, so no read or write runs
---
duration_ms: 47.667854
type: 'test'
...
1..8
# tests 8
# suites 0
# pass 8
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 472.183847
TAP version 13
# Subtest: T1: the human and the reader see a held thread claim; agents still lists the role only
ok 1 - T1: the human and the reader see a held thread claim; agents still lists the role only
---
duration_ms: 27.73167
type: 'test'
...
# Subtest: T2: a released or revoked thread claim is not listed, though its thread has an earlier claim row
ok 2 - T2: a released or revoked thread claim is not listed, though its thread has an earlier claim row
---
duration_ms: 22.109132
type: 'test'
...
# Subtest: T3: a role session refuses human-required and the tester refuses tester-refused
ok 3 - T3: a role session refuses human-required and the tester refuses tester-refused
---
duration_ms: 20.683145
type: 'test'
...
# Subtest: T4: agents answers each session the same before and after a thread run claims
ok 4 - T4: agents answers each session the same before and after a thread run claims
---
duration_ms: 20.849476
type: 'test'
...
# Subtest: T5: the result carries neither the thread name a user wrote nor a message body
ok 5 - T5: the result carries neither the thread name a user wrote nor a message body
---
duration_ms: 21.572027
type: 'test'
...
# Subtest: T6: two held sessions of one thread list as two rows, each its session's latest claim
ok 6 - T6: two held sessions of one thread list as two rows, each its session's latest claim
---
duration_ms: 22.023845
type: 'test'
...
1..6
# tests 6
# suites 0
# pass 6
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 213.478425
TAP version 13
# Subtest: REQ-THREAD-1 REQ-ORG-2: the 3d→3e migration adds the thread tables and leaves messages from before threads as written
ok 1 - REQ-THREAD-1 REQ-ORG-2: the 3d→3e migration adds the thread tables and leaves messages from before threads as written
---
duration_ms: 93.461019
type: 'test'
...
# Subtest: REQ-THREAD-1: a 3d bus with a changed schema is refused and keeps its version and tables
ok 2 - REQ-THREAD-1: a 3d bus with a changed schema is refused and keeps its version and tables
---
duration_ms: 39.774352
type: 'test'
...
# Subtest: REQ-THREAD-1: the offline command prints the kept-message counts before the ready line
ok 3 - REQ-THREAD-1: the offline command prints the kept-message counts before the ready line
---
duration_ms: 112.069661
type: 'test'
...
1..3
# tests 3
# suites 0
# pass 3
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 313.065794
TAP version 13
# Subtest: REQ-ROLE-2 REQ-THREAD-1: one holder per thread, through the broker and the trigger
ok 1 - REQ-ROLE-2 REQ-THREAD-1: one holder per thread, through the broker and the trigger
---
duration_ms: 35.368018
type: 'test'
...
# Subtest: REQ-ROLE-2 REQ-THREAD-1: the 3e triggers refuse writes that skip the broker
ok 2 - REQ-ROLE-2 REQ-THREAD-1: the 3e triggers refuse writes that skip the broker
---
duration_ms: 62.531658
type: 'test'
...
# Subtest: REQ-MSG-1: a message to or from the assistant names its thread, or is refused
ok 3 - REQ-MSG-1: a message to or from the assistant names its thread, or is refused
---
duration_ms: 30.552241
type: 'test'
...
# Subtest: REQ-MSG-1: the chief of staff's reply comes back to the thread that sent the work
ok 4 - REQ-MSG-1: the chief of staff's reply comes back to the thread that sent the work
---
duration_ms: 565.000553
type: 'test'
...
# Subtest: REQ-MSG-1: a reply can't carry one thread instance's thread to another thread instance
ok 5 - REQ-MSG-1: a reply can't carry one thread instance's thread to another thread instance
---
duration_ms: 21.500353
type: 'test'
...
# Subtest: REQ-THREAD-1 REQ-USER-2: one thread's messages never reach another thread's holder
ok 6 - REQ-THREAD-1 REQ-USER-2: one thread's messages never reach another thread's holder
---
duration_ms: 26.695901
type: 'test'
...
# Subtest: REQ-LAUNCH-1: a message to a thread with no holder waits, and the next holder gets it
ok 7 - REQ-LAUNCH-1: a message to a thread with no holder waits, and the next holder gets it
---
duration_ms: 27.432301
type: 'test'
...
# Subtest: REQ-THREAD-2 REQ-LAUNCH-1: threadIdle releases only a thread with nothing waiting, and only for its holder
ok 8 - REQ-THREAD-2 REQ-LAUNCH-1: threadIdle releases only a thread with nothing waiting, and only for its holder
---
duration_ms: 31.260651
type: 'test'
...
# Subtest: REQ-THREAD-2 REQ-LAUNCH-1: a message delivered to a run that ended unread doesn't hold up the next holder
ok 9 - REQ-THREAD-2 REQ-LAUNCH-1: a message delivered to a run that ended unread doesn't hold up the next holder
---
duration_ms: 26.185036
type: 'test'
...
# Subtest: REQ-ROLE-2 REQ-THREAD-1 Q169: a role.revoke the human approved ends every thread run of the assistant
ok 10 - REQ-ROLE-2 REQ-THREAD-1 Q169: a role.revoke the human approved ends every thread run of the assistant
---
duration_ms: 24.095062
type: 'test'
...
# Subtest: Q169 REQ-USER-2: assistant.stop ends the human's own assistant thread runs, and only the human's
ok 11 - Q169 REQ-USER-2: assistant.stop ends the human's own assistant thread runs, and only the human's
---
duration_ms: 36.251131
type: 'test'
...
# Subtest: REQ-USER-2: the human verbs refuse another owner's thread
ok 12 - REQ-USER-2: the human verbs refuse another owner's thread
---
duration_ms: 25.603294
type: 'test'
...
# Subtest: REQ-THREAD-1: thread.create refuses when the business has no thread instance or more than one
ok 13 - REQ-THREAD-1: thread.create refuses when the business has no thread instance or more than one
---
duration_ms: 20.346426
type: 'test'
...
# Subtest: REQ-ORG-2: projects and threads are named once, and the repo names a business project
ok 14 - REQ-ORG-2: projects and threads are named once, and the repo names a business project
---
duration_ms: 25.607994
type: 'test'
...
# Subtest: REQ-THREAD-2: thread.messages returns the thread's history in pages and writes nothing
ok 15 - REQ-THREAD-2: thread.messages returns the thread's history in pages and writes nothing
---
duration_ms: 78.720869
type: 'test'
...
# Subtest: project.create refuses a repository name without its matching repo before any write
ok 16 - project.create refuses a repository name without its matching repo before any write
---
duration_ms: 14.676439
type: 'test'
...
# Subtest: project.create keeps unrelated names with and without a repository
ok 17 - project.create keeps unrelated names with and without a repository
---
duration_ms: 10.228522
type: 'test'
...
1..17
# tests 17
# suites 0
# pass 17
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 1141.505018
TAP version 13
# Subtest: REQ-LIMIT-4 3g copy migrates through 3h, 3i, 3j and 3k to 3l preserving every old column, row and sequence; new usage table is empty
ok 1 - REQ-LIMIT-4 3g copy migrates through 3h, 3i, 3j and 3k to 3l preserving every old column, row and sequence; new usage table is empty
---
duration_ms: 85.600888
type: 'test'
...
1..1
# tests 1
# suites 0
# pass 1
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 151.46092
TAP version 13
# Subtest: row 194 T2: the human's launch runs an unlisted instance and launch.by through the pm branch, and closes with the run
ok 1 - row 194 T2: the human's launch runs an unlisted instance and launch.by through the pm branch, and closes with the run
---
duration_ms: 387.952455
type: 'test'
...
# Subtest: row 194 T2: a request past its 60 s never launches, and a refused check closes the request with its code
ok 2 - row 194 T2: a request past its 60 s never launches, and a refused check closes the request with its code
---
duration_ms: 80.244644
type: 'test'
...
# Subtest: row 194 T3: a --no-launch host closes each request launches-disabled and starts nothing
ok 3 - row 194 T3: a --no-launch host closes each request launches-disabled and starts nothing
---
duration_ms: 77.542422
type: 'test'
...
# Subtest: row 194 T3: a limit refusal closes the request with its code and the limit in the launch log
ok 4 - row 194 T3: a limit refusal closes the request with its code and the limit in the launch log
---
duration_ms: 204.384901
type: 'test'
...
# Subtest: row 194 T4: terminate revokes and cancels at the verb, then the pass signals the run, which ends once
ok 5 - row 194 T4: terminate revokes and cancels at the verb, then the pass signals the run, which ends once
---
duration_ms: 273.116636
type: 'test'
...
# Subtest: row 194 T5: regenerate ends the run in the registry and starts a new run on the same workspace
ok 6 - row 194 T5: regenerate ends the run in the registry and starts a new run on the same workspace
---
duration_ms: 472.04789
type: 'test'
...
# Subtest: row 194 T5: a run that outlasts the request's mark closes the regenerate regenerate-timeout and starts nothing
ok 7 - row 194 T5: a run that outlasts the request's mark closes the regenerate regenerate-timeout and starts nothing
---
duration_ms: 2750.446694
type: 'test'
...
# Subtest: row 194 V5: delete retires the name, renames the workspace to .retired/I-<transaction> at 0700, and a retry renames after workspace-rename-failed
ok 8 - row 194 V5: delete retires the name, renames the workspace to .retired/I-<transaction> at 0700, and a retry renames after workspace-rename-failed
---
duration_ms: 97.398807
type: 'test'
...
# Subtest: row 194 V5: a delete with no workspace commits and closes with the transaction
ok 9 - row 194 V5: a delete with no workspace commits and closes with the transaction
---
duration_ms: 85.452376
type: 'test'
...
# Subtest: row 281 T10: the delete pass closes a granted instance's first request grants-revoking and the host channel stays up
ok 10 - row 281 T10: the delete pass closes a granted instance's first request grants-revoking and the host channel stays up
---
duration_ms: 98.396833
type: 'test'
...
# Subtest: row 194 D1.1 item 5: the CLI's launch, regenerate, terminate and delete end to end through the pass, and a closed refusal exits 3 with the request id
ok 11 - row 194 D1.1 item 5: the CLI's launch, regenerate, terminate and delete end to end through the pass, and a closed refusal exits 3 with the request id
---
duration_ms: 567.881776
type: 'test'
...
# Subtest: row 194 T20: a store-only delete with a tracker bot closes naming the bot, and the CLI says to remove it in Vikunja
ok 12 - row 194 T20: a store-only delete with a tracker bot closes naming the bot, and the CLI says to remove it in Vikunja
---
duration_ms: 99.557568
type: 'test'
...
# Subtest: row 194 T2a: a launch.revoke between the request and the pass closes it launch-revoked with no process; a done that fails once leaves the request taken and the next pass starts nothing
ok 13 - row 194 T2a: a launch.revoke between the request and the pass closes it launch-revoked with no process; a done that fails once leaves the request taken and the next pass starts nothing
---
duration_ms: 216.950371
type: 'test'
...
# Subtest: row 194 T4: terminate signals a spawned run in the registry that the bus never bound, and not a run whose start time differs
ok 14 - row 194 T4: terminate signals a spawned run in the registry that the bus never bound, and not a run whose start time differs
---
duration_ms: 384.655751
type: 'test'
...
# Subtest: row 194 T9a: fire signals its bound run and a spawned but unbound registry run; a SIGTERM-ignoring runner gets SIGKILL and lifecycle.end.killed, and one whose kill fails gets lifecycle.end.alive
ok 15 - row 194 T9a: fire signals its bound run and a spawned but unbound registry run; a SIGTERM-ignoring runner gets SIGKILL and lifecycle.end.killed, and one whose kill fails gets lifecycle.end.alive
---
duration_ms: 1067.735579
type: 'test'
...
# Subtest: row 194 T9a: fire of a registry run with no runtime record reads lifecycle.end.alive with reason unknown, never killed
ok 16 - row 194 T9a: fire of a registry run with no runtime record reads lifecycle.end.alive with reason unknown, never killed
---
duration_ms: 525.631573
type: 'test'
...
# Subtest: row 194 T9a: a runner whose identity changed before the SIGTERM gets no signal, and one whose identity changed between the SIGTERM and the SIGKILL gets no SIGKILL
ok 17 - row 194 T9a: a runner whose identity changed before the SIGTERM gets no signal, and one whose identity changed between the SIGTERM and the SIGKILL gets no SIGKILL
---
duration_ms: 210.505397
type: 'test'
...
# Subtest: row 194 T9a: V3 terminate of a SIGTERM-ignoring runner sends no SIGKILL
ok 18 - row 194 T9a: V3 terminate of a SIGTERM-ignoring runner sends no SIGKILL
---
duration_ms: 982.216716
type: 'test'
...
# Subtest: row 194 T9b: a halt during a fire's stop sends no second SIGTERM, keeps the fire's deadline, writes one stop receipt with reason fire and the request, and counts the run; a fire while halted refuses
ok 19 - row 194 T9b: a halt during a fire's stop sends no second SIGTERM, keeps the fire's deadline, writes one stop receipt with reason fire and the request, and counts the run; a fire while halted refuses
---
duration_ms: 1690.42137
type: 'test'
...
# Subtest: row 194 T15: while halted the pass closes a launch and a regenerate processing-halted and runs no thread pass, terminate signals, and after a resume a launch starts
ok 20 - row 194 T15: while halted the pass closes a launch and a regenerate processing-halted and runs no thread pass, terminate signals, and after a resume a launch starts
---
duration_ms: 277.574644
type: 'test'
...
# Subtest: row 194 N6: a run spawned after a terminate's verb survives its pass, and the next terminate ends it
ok 21 - row 194 N6: a run spawned after a terminate's verb survives its pass, and the next terminate ends it
---
duration_ms: 517.235834
type: 'test'
...
# Subtest: row 194 T6: a delete leaves the run evidence bytes unchanged, and the retired name refuses a create and a launch
ok 22 - row 194 T6: a delete leaves the run evidence bytes unchanged, and the retired name refuses a create and a launch
---
duration_ms: 298.352196
type: 'test'
...
# Subtest: row 194 T11: two stack roots with the same business id; a launch, a terminate and a delete in one leave the other byte-identical
ok 23 - row 194 T11: two stack roots with the same business id; a launch, a terminate and a delete in one leave the other byte-identical
---
duration_ms: 360.459796
type: 'test'
...
# usage: {"event":"usage-unknown","business":"acme","run":"rb800d18639ac","instance":"chief","turn":"52f92469-bdcc-4062-b60c-ea5f05f513a6","source":"@none","code":"baseline-unknown"}
# usage: {"event":"usage-unknown","business":"acme","run":"rb800d18639ac","instance":"chief","turn":"b02ab9f7-2aa6-4c31-80ab-2716cbedfdda","source":"@none","code":"baseline-unknown"}
# usage: {"event":"usage-unknown","business":"acme","run":"rb800d18639ac","instance":"chief","turn":"c9ef219d-3af5-4ccd-a612-62b3df700dbf","source":"@none","code":"baseline-unknown"}
# usage: {"event":"usage-unknown","business":"acme","run":"rb800d18639ac","instance":"chief","turn":"9827408b-6a47-4671-bb47-611a17aa6e2e","source":"@none","code":"baseline-unknown"}
# usage: {"event":"usage-unknown","business":"acme","run":"rb800d18639ac","instance":"chief","turn":"cd45f590-2a8c-498c-99c7-23b19358cfa1","source":"@none","code":"baseline-unknown"}
# usage: {"event":"usage-unknown","business":"acme","run":"rb800d18639ac","instance":"chief","turn":"09e3ce2f-553e-419b-b437-8f0577401044","source":"@none","code":"baseline-unknown"}
# usage: {"event":"usage-unknown","business":"acme","run":"rb800d18639ac","instance":"chief","turn":"eeb1210a-96af-4c5f-8b9d-f952048e0ab2","source":"@none","code":"baseline-unknown"}
# Subtest: row 194 D3 item 5: the chief's session hires with its tool and launches its hire in the same session, then fires it
ok 24 - row 194 D3 item 5: the chief's session hires with its tool and launches its hire in the same session, then fires it
---
duration_ms: 1337.408893
type: 'test'
...
1..24
# tests 24
# suites 0
# pass 24
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 13228.183722
TAP version 13
# Subtest: T1 adopt writes the pointer from the units once; a failing check refuses check-failed
ok 1 - T1 adopt writes the pointer from the units once; a failing check refuses check-failed
---
duration_ms: 1242.751527
type: 'test'
...
# Subtest: T2 activate installs exactly the pointer's pm, claude and Console flags
ok 2 - T2 activate installs exactly the pointer's pm, claude and Console flags
---
duration_ms: 1856.314699
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: 833.536964
type: 'test'
...
# Subtest: claude
ok 2 - claude
---
duration_ms: 810.903689
type: 'test'
...
# Subtest: console
ok 3 - console
---
duration_ms: 837.704026
type: 'test'
...
1..3
ok 3 - T3 a hand-edited unit refuses unit-flags-drift, names the difference and changes nothing
---
duration_ms: 2482.968968
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: 775.72778
type: 'test'
...
# Subtest: copy-unreachable
ok 2 - copy-unreachable
---
duration_ms: 749.002436
type: 'test'
...
# Subtest: copy-schema-unknown
ok 3 - copy-schema-unknown
---
duration_ms: 751.560761
type: 'test'
...
# Subtest: already-active
ok 4 - already-active
---
duration_ms: 731.195539
type: 'test'
...
# Subtest: instance-busy (another business active)
ok 5 - instance-busy (another business active)
---
duration_ms: 769.354898
type: 'test'
...
# Subtest: instance-busy (this business activating)
ok 6 - instance-busy (this business activating)
---
duration_ms: 742.563759
type: 'test'
...
# Subtest: drop-in-override
ok 7 - drop-in-override
---
duration_ms: 799.209466
type: 'test'
...
# Subtest: no-pointer
ok 8 - no-pointer
---
duration_ms: 424.229158
type: 'test'
...
1..8
ok 4 - T4 each item 3 refusal changes nothing and logs one line with its code
---
duration_ms: 5744.28738
type: 'test'
...
# Subtest: T5 an activate with no migration stops the Console then the bus, installs, starts the bus then the Console
ok 5 - T5 an activate with no migration stops the Console then the bus, installs, starts the bus then the Console
---
duration_ms: 1872.78395
type: 'test'
...
# Subtest: T6 a migration without --migrate rolls back with migration-needs-flag
ok 6 - T6 a migration without --migrate rolls back with migration-needs-flag
---
duration_ms: 1781.050168
type: 'test'
...
# Subtest: T7 --migrate takes the backup before the migration runs
ok 7 - T7 --migrate takes the backup before the migration runs
---
duration_ms: 1950.387471
type: 'test'
...
# Subtest: T8 a failed migration restores the backup and keeps the store it replaced
ok 8 - T8 a failed migration restores the backup and keeps the store it replaced
---
duration_ms: 2043.616201
type: 'test'
...
# Subtest: T9 a store outside the target's chain rolls back with store-newer
ok 9 - T9 a store outside the target's chain rolls back with store-newer
---
duration_ms: 1791.350335
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: 5195.317667
type: 'test'
...
# Subtest: bus-status
ok 2 - bus-status
---
duration_ms: 4459.490388
type: 'test'
...
# Subtest: healthz
ok 3 - healthz
---
duration_ms: 4883.570412
type: 'test'
...
# Subtest: copy-check
ok 4 - copy-check
---
duration_ms: 4902.564304
type: 'test'
...
# Subtest: pm-launch-unconfirmed
ok 5 - pm-launch-unconfirmed
---
duration_ms: 5126.024027
type: 'test'
...
1..5
ok 10 - T10 each gate check failing alone rolls back and puts every file back
---
duration_ms: 24567.966092
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: 5191.029202
type: 'test'
...
# Subtest: two lines
ok 2 - two lines
---
duration_ms: 5068.160424
type: 'test'
...
# Subtest: a changed word
ok 3 - a changed word
---
duration_ms: 5026.418359
type: 'test'
...
# Subtest: run not in launches list
ok 4 - run not in launches list
---
duration_ms: 5176.196845
type: 'test'
...
# Subtest: run started before the start
ok 5 - run started before the start
---
duration_ms: 5144.977099
type: 'test'
...
# Subtest: a human launch with no journal line
ok 6 - a human launch with no journal line
---
duration_ms: 5117.206683
type: 'test'
...
# Subtest: run for another business
ok 7 - run for another business
---
duration_ms: 5206.247261
type: 'test'
...
# Subtest: run not live
ok 8 - run not live
---
duration_ms: 5286.958005
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: 1962.18015
type: 'test'
...
1..9
ok 11 - T10b the PM check needs exactly one launched line for a live run of this start
---
duration_ms: 43180.871722
type: 'test'
...
# Subtest: T11 a rollback whose gate fails too: rollback-failed, exit 2, both units stopped, no retry
ok 12 - T11 a rollback whose gate fails too: rollback-failed, exit 2, both units stopped, no retry
---
duration_ms: 8340.9229
type: 'test'
...
# Subtest: T12 rollback takes the previous copy from the log
ok 13 - T12 rollback takes the previous copy from the log
---
duration_ms: 3239.553794
type: 'test'
...
# Subtest: T13 a rollback across a migration needs --restore, then restores and goes live
ok 14 - T13 a rollback across a migration needs --restore, then restores and goes live
---
duration_ms: 3672.412171
type: 'test'
...
# Subtest: T14 events written after the backup need --events N with the right N
ok 15 - T14 events written after the backup need --events N with the right N
---
duration_ms: 4084.589499
type: 'test'
...
# Subtest: T14b a rollback --restore whose gate fails stops both units and skips item 6
ok 16 - T14b a rollback --restore whose gate fails stops both units and skips item 6
---
duration_ms: 6830.232359
type: 'test'
...
# Subtest: T14c a rollback without --restore whose gate fails runs item 6
ok 17 - T14c a rollback without --restore whose gate fails runs item 6
---
duration_ms: 5868.328915
type: 'test'
...
# Subtest: T15 --plan names the migration and the restore and changes nothing
ok 18 - T15 --plan names the migration and the restore and changes nothing
---
duration_ms: 2762.136329
type: 'test'
...
# Subtest: T26 --plan lists the commits an activate adds, after the migration lines
ok 19 - T26 --plan lists the commits an activate adds, after the migration lines
---
duration_ms: 1240.027498
type: 'test'
...
# Subtest: T27 --plan names each migration step, or says the steps cannot be read
ok 20 - T27 --plan names each migration step, or says the steps cannot be read
---
duration_ms: 1037.016218
type: 'test'
...
# Subtest: T25 --plan refuses copies-unrelated when neither copy is an ancestor of the other
ok 21 - T25 --plan refuses copies-unrelated when neither copy is an ancestor of the other
---
duration_ms: 491.25108
type: 'test'
...
# Subtest: T23 --plan reads the store without changing a file, stopped or held
# Subtest: stopped store
ok 1 - stopped store
---
duration_ms: 635.668545
type: 'test'
...
# Subtest: held store
ok 2 - held store
---
duration_ms: 564.942985
type: 'test'
...
1..2
ok 22 - T23 --plan reads the store without changing a file, stopped or held
---
duration_ms: 1201.383895
type: 'test'
...
# Subtest: T24 business-mismatch and capture-failed refuse with exit 3; a short id is a usage error
ok 23 - T24 business-mismatch and capture-failed refuse with exit 3; a short id is a usage error
---
duration_ms: 1371.714438
type: 'test'
...
# Subtest: T16 status prints the pointer, the log, the check, bus status and drift, and writes nothing
ok 24 - T16 status prints the pointer, the log, the check, bus status and drift, and writes nothing
---
duration_ms: 849.685893
type: 'test'
...
# Subtest: T19 a started line with no final line: status shows it and every changing verb refuses
ok 25 - T19 a started line with no final line: status shows it and every changing verb refuses
---
duration_ms: 1158.13933
type: 'test'
...
# Subtest: T20 a held run lock refuses run-locked without a log line; status and --plan still run
ok 26 - T20 a held run lock refuses run-locked without a log line; status and --plan still run
---
duration_ms: 1260.055595
type: 'test'
...
# Subtest: T21 a bus unit with no MOSAIC_CLAUDE_BIN: adopt and activate refuse no-claude-pin
ok 27 - T21 a bus unit with no MOSAIC_CLAUDE_BIN: adopt and activate refuse no-claude-pin
---
duration_ms: 1403.941724
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: 1711.087836
type: 'test'
...
# Subtest: bus.sqlite-shm
ok 2 - bus.sqlite-shm
---
duration_ms: 1703.501397
type: 'test'
...
# Subtest: clean
ok 3 - clean
---
duration_ms: 2058.01773
type: 'test'
...
1..3
ok 28 - T22 the stopped store read: a -wal or -shm refuses store-unclean and is left alone; a clean read adds no file
---
duration_ms: 5473.264366
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: 805.360794
type: 'test'
...
# Subtest: drop-in directory
ok 2 - drop-in directory
---
duration_ms: 795.828129
type: 'test'
...
# Subtest: drop-in file
ok 3 - drop-in file
---
duration_ms: 769.438874
type: 'test'
...
# Subtest: relative unit path
ok 4 - relative unit path
---
duration_ms: 797.331235
type: 'test'
...
1..4
ok 29 - 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: 3168.731158
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: 837.001059
type: 'test'
...
# Subtest: rollback --restore
ok 2 - rollback --restore
---
duration_ms: 2297.674748
type: 'test'
...
1..2
ok 30 - T29 a bus that stops during the held-store read: --plan says so, rollback --restore refuses restore-mismatch
---
duration_ms: 3135.203045
type: 'test'
...
# Subtest: T30 a copy check that agrees on another copy fails the gate with copy-check and rolls back
ok 31 - T30 a copy check that agrees on another copy fails the gate with copy-check and rolls back
---
duration_ms: 5794.923159
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: 1676.364002
type: 'test'
...
# Subtest: Environment single quotes
ok 2 - Environment single quotes
---
duration_ms: 1634.844427
type: 'test'
...
# Subtest: Environment backslash
ok 3 - Environment backslash
---
duration_ms: 1609.011562
type: 'test'
...
# Subtest: ExecStart quotes
ok 4 - ExecStart quotes
---
duration_ms: 1673.599117
type: 'test'
...
# Subtest: Console ExecStart quotes
ok 5 - Console ExecStart quotes
---
duration_ms: 1623.302433
type: 'test'
...
1..5
ok 32 - T31 a quoted or escaped Environment= or ExecStart= is unreadable: refusals by name, nothing read from /a
---
duration_ms: 8218.072526
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: 658.759481
type: 'test'
...
# Subtest: pm-after-harness-target
ok 2 - pm-after-harness-target
---
duration_ms: 904.791751
type: 'test'
...
# Subtest: pm-after-harness-set
ok 3 - pm-after-harness-set
---
duration_ms: 1214.702636
type: 'test'
...
# Subtest: a pointer without pm
ok 4 - a pointer without pm
---
duration_ms: 835.556099
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: 1894.710551
type: 'test'
...
1..5
ok 33 - T32 item 1: --pm-after-harness refuses a target without harness or a file that sets it, and passes without the PM
---
duration_ms: 5509.432292
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: 1479.30608
type: 'test'
...
# Subtest: pm-pending, already-adopted and the status line
ok 2 - pm-pending, already-adopted and the status line
---
duration_ms: 2703.206552
type: 'test'
...
1..2
ok 34 - T33 item 2: read_pointer takes pmPending only as true beside pm false; a pending pointer refuses activate and shows in status
---
duration_ms: 4183.024556
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: 702.269983
type: 'test'
...
# Subtest: harness-unset
ok 2 - harness-unset
---
duration_ms: 2190.622952
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: 3190.604242
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: 5843.24067
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: 9014.537395
type: 'test'
...
1..5
ok 35 - T34 item 3: pm-on refuses before any stop, passes with the PM, or puts the phase-1 bus back
---
duration_ms: 20942.239224
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: 3221.79123
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: 4504.859375
type: 'test'
...
# Subtest: activate names every kind the target lacks
ok 3 - activate names every kind the target lacks
---
duration_ms: 1144.695676
type: 'test'
...
1..3
ok 36 - T35 item 4: rollback from pending installs --pm; a plug-in kind the target lacks refuses by name
---
duration_ms: 8871.96394
type: 'test'
...
# Subtest: T36 --plan shows the pending state and lists the row 169 refusals it can see
ok 37 - T36 --plan shows the pending state and lists the row 169 refusals it can see
---
duration_ms: 3182.231879
type: 'test'
...
# Subtest: T37 tester-port activate writes pointer and unit, replaces the port, and supported re-pin and rollback keep it
ok 38 - T37 tester-port activate writes pointer and unit, replaces the port, and supported re-pin and rollback keep it
---
duration_ms: 6246.253973
type: 'test'
...
# Subtest: T38 tester-port rollback to unsupported target drops flag in plan, steps, unit and pointer
ok 39 - T38 tester-port rollback to unsupported target drops flag in plan, steps, unit and pointer
---
duration_ms: 3309.58997
type: 'test'
...
# Subtest: T39 tester-port explicit unsupported target reads target copy and refuses before stopping either unit
ok 40 - T39 tester-port explicit unsupported target reads target copy and refuses before stopping either unit
---
duration_ms: 747.97613
type: 'test'
...
# Subtest: T40 tester-port invalid values refuse exit 4 before stopping, including tunnel and main ports
ok 41 - T40 tester-port invalid values refuse exit 4 before stopping, including tunnel and main ports
---
duration_ms: 761.981093
type: 'test'
...
# Subtest: T41 tester-port inherited activate to unsupported target drops it and retains drift refusal and failed-run recovery
ok 42 - T41 tester-port inherited activate to unsupported target drops it and retains drift refusal and failed-run recovery
---
duration_ms: 7981.466465
type: 'test'
...
# Subtest: T42 tester-port pm-on preserves pointer Console flags
ok 43 - T42 tester-port pm-on preserves pointer Console flags
---
duration_ms: 2984.549535
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: 3004.511323
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: 6119.277306
type: 'test'
...
# Subtest: adopt takes the next free id too
ok 3 - adopt takes the next free id too
---
duration_ms: 592.725713
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: 855.760734
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: 1002.395422
type: 'test'
...
1..5
ok 44 - T43 row 180 item 1: runs in one second get distinct activation ids, rollback sets and post-attempt stores
---
duration_ms: 11575.696565
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: 1896.905737
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: 378.108602
type: 'test'
...
# Subtest: a target Console without --tester-port
ok 3 - a target Console without --tester-port
---
duration_ms: 948.064791
type: 'test'
...
1..3
ok 45 - T44 row 180 item 2: --plan lists tester-port-invalid and tester-port-target with its other refusals
---
duration_ms: 3223.761622
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: 916.967339
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: 4118.648598
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: 4072.291901
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: 2268.285054
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: 3182.659051
type: 'test'
...
1..5
ok 46 - T45 row 181 items 2 and 3: the restore guard counts events and every COUNTED table
---
duration_ms: 14559.818308
type: 'test'
...
# Subtest: T46 row 181 item 4: every table in the bus schema is in exactly one of four lists
ok 47 - T46 row 181 item 4: every table in the bus schema is in exactly one of four lists
---
duration_ms: 3.300144
type: 'test'
...
# Subtest: T47 row 185 test 1: a same-schema activate leaves a whole backup and the log line names it
ok 48 - T47 row 185 test 1: a same-schema activate leaves a whole backup and the log line names it
---
duration_ms: 1939.750905
type: 'test'
...
# Subtest: T48 row 185 test 2: a gate failure on a same-schema activate rolls back without a restore
ok 49 - T48 row 185 test 2: a gate failure on a same-schema activate rolls back without a restore
---
duration_ms: 5814.408431
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: 3251.800105
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: 3720.794663
type: 'test'
...
1..2
ok 50 - T49 row 185 test 3: a same-schema rollback --restore restores, or refuses rows written after STAMP
---
duration_ms: 6973.167089
type: 'test'
...
# Subtest: T50 row 185 test 4: activate --plan prints the backup line and writes nothing
ok 51 - T50 row 185 test 4: activate --plan prints the backup line and writes nothing
---
duration_ms: 2441.987944
type: 'test'
...
# Subtest: T51 row 185 test 5: an activate with no store file takes no backup
ok 52 - T51 row 185 test 5: an activate with no store file takes no backup
---
duration_ms: 2063.231024
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: 2083.048733
type: 'test'
...
# Subtest: same schema with --migrate
ok 2 - same schema with --migrate
---
duration_ms: 2077.834349
type: 'test'
...
# Subtest: in chain with --migrate
ok 3 - in chain with --migrate
---
duration_ms: 2164.160879
type: 'test'
...
# Subtest: in chain without --migrate
ok 4 - in chain without --migrate
---
duration_ms: 1985.165043
type: 'test'
...
# Subtest: outside the chain
ok 5 - outside the chain
---
duration_ms: 1972.836771
type: 'test'
...
# Subtest: outside the chain with --migrate
ok 6 - outside the chain with --migrate
---
duration_ms: 1952.353545
type: 'test'
...
1..6
ok 53 - T52 row 186: the activate plan's backup line says what the run will do
---
duration_ms: 12236.451942
type: 'test'
...
# Subtest: T178 proxy proof header and path survive re-pin and rollback unchanged in the pointer and unit
ok 54 - T178 proxy proof header and path survive re-pin and rollback unchanged in the pointer and unit
---
duration_ms: 3174.401088
type: 'test'
...
# Subtest: T178 proxy proof pair survives a tester-port replacement as well
ok 55 - T178 proxy proof pair survives a tester-port replacement as well
---
duration_ms: 1888.40885
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: 5374.384402
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: 4928.060021
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: 6843.697325
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: 3994.747765
type: 'test'
...
# Subtest: test 3: pm-on keeps the pair
ok 5 - test 3: pm-on keeps the pair
---
duration_ms: 2972.834261
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: 5496.865534
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: 3775.43926
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: 831.299234
type: 'test'
...
# Subtest: test 6: usage errors
ok 9 - test 6: usage errors
---
duration_ms: 754.863145
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: 3413.586908
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: 3852.605834
type: 'test'
...
1..11
ok 56 - T53 row 187: activate sets, carries and drops the proof pair
---
duration_ms: 42240.482678
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: 2315.796755
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: 2380.687989
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: 2314.732855
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: 2337.01789
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: 981.616704
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: 995.425045
type: 'test'
...
1..6
ok 57 - T54 row 188: a carried pair gets the proof file checks, and a proof file inside the repository refuses
---
duration_ms: 11326.564056
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: 2220.448913
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: 3216.048736
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.243781
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: 3424.640027
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: 3388.87962
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: 664.055801
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: 10520.262861
type: 'test'
...
1..7
ok 58 - T55 row 189: activate --no-send drops --send, and rollback and pm-on carry it off
---
duration_ms: 27906.010182
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: 4085.854813
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: 9392.865315
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: 725.170695
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: 5964.133927
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: 4366.352745
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: 11328.719523
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: 4632.637455
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: 2250.595988
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: 2118.934995
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: 4301.440309
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: 1111.276898
type: 'test'
...
1..11
ok 59 - T57 row 200: activate --sso, its refusals before any stop, and the rollback to a Console without --sso
---
duration_ms: 50281.435973
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: 2703.797798
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: 4235.116087
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: 1963.544758
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: 3907.988883
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: 2122.443004
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: 5334.548371
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: 5153.598673
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: 7875.376602
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: 3856.759772
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: 5688.970303
type: 'test'
...
1..10
ok 60 - T58 row 273: activate --send and --no-sso
---
duration_ms: 42844.307325
type: 'test'
...
# Subtest: R1 rehearse passes on the same schema; the scratch root holds its files and the live files stay byte-identical
ok 61 - R1 rehearse passes on the same schema; the scratch root holds its files and the live files stay byte-identical
---
duration_ms: 3453.01069
type: 'test'
...
# Subtest: R2 rehearse runs the migration checks when the schema differs; the live store stays at 3g
ok 62 - R2 rehearse runs the migration checks when the schema differs; the live store stays at 3g
---
duration_ms: 3600.889357
type: 'test'
...
# Subtest: R3 a failing migration gives REHEARSAL_FAIL migrate and starts nothing
ok 63 - R3 a failing migration gives REHEARSAL_FAIL migrate and starts nothing
---
duration_ms: 357.009839
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 64 - 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: 23543.764512
type: 'test'
...
# Subtest: R5 a host that ignores SIGTERM gets SIGKILL and FAIL host-stopped
ok 65 - R5 a host that ignores SIGTERM gets SIGKILL and FAIL host-stopped
---
duration_ms: 4463.851424
type: 'test'
...
# Subtest: R6 a Console that does not answer /healthz gives REHEARSAL_FAIL healthz
ok 66 - R6 a Console that does not answer /healthz gives REHEARSAL_FAIL healthz
---
duration_ms: 5677.09705
type: 'test'
...
# Subtest: R7 a host on another copy fails copy-match
ok 67 - R7 a host on another copy fails copy-match
---
duration_ms: 5669.936491
type: 'test'
...
# Subtest: R8 a scratch port in use or reserved refuses, and the rehearsal takes no other port
ok 68 - R8 a scratch port in use or reserved refuses, and the rehearsal takes no other port
---
duration_ms: 549.883629
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 69 - 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: 758.13163
type: 'test'
...
# Subtest: R10 mos-0962: a scratch business that still sets a tracker fails tracker-configured
ok 70 - R10 mos-0962: a scratch business that still sets a tracker fails tracker-configured
---
duration_ms: 361.123654
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 71 - 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: 1514.57317
type: 'test'
...
# Subtest: R12 mos-0962: a notifier config with a binding fails notify-off
ok 72 - R12 mos-0962: a notifier config with a binding fails notify-off
---
duration_ms: 362.902054
type: 'test'
...
# Subtest: R13 the pre-checks: an old copy, a backup that fails its sums, a missing backup or pointer, and usage
ok 73 - R13 the pre-checks: an old copy, a backup that fails its sums, a missing backup or pointer, and usage
---
duration_ms: 514.352661
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 74 - R14 a host that writes the live config, the live business file or the backup fails the end check by name
---
duration_ms: 9400.788962
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 75 - 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: 10050.584087
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 76 - 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: 3451.07307
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 77 - 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: 201.662397
type: 'test'
...
# Subtest: row 233: --backup last refuses a newest backup that is not an activation id, with exit 1
ok 78 - row 233: --backup last refuses a newest backup that is not an activation id, with exit 1
---
duration_ms: 124.888682
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: 1652.496926
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: 2026.672853
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: 3800.655759
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: 3958.823507
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: 684.070102
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: 5979.80565
type: 'test'
...
1..6
ok 79 - T56 row 190: named instances side by side on one unit directory, $BIN and set of stand-ins
---
duration_ms: 18103.993171
type: 'test'
...
# Subtest: row196 explicit socket conversion refuses inherited TCP before stop and rollback disables socket
ok 80 - row196 explicit socket conversion refuses inherited TCP before stop and rollback disables socket
---
duration_ms: 5782.749975
type: 'test'
...
# Subtest: row196 SSO socket conversion pins pointer and unit argv order without send
ok 81 - row196 SSO socket conversion pins pointer and unit argv order without send
---
duration_ms: 2324.47322
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: 2309.380406
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: 3406.462329
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: 3391.500943
type: 'test'
...
# Subtest: missing-verifier refuses before any start or stop
ok 4 - missing-verifier refuses before any start or stop
---
duration_ms: 1074.55124
type: 'test'
...
# Subtest: interpreter-unsafe refuses before any start or stop
ok 5 - interpreter-unsafe refuses before any start or stop
---
duration_ms: 1062.090607
type: 'test'
...
1..5
ok 82 - row196 interpreter activation checks receipt, identity, plan and startup log
---
duration_ms: 11245.413785
type: 'test'
...
# Subtest: row196 rehearsal selects socket only for marked copies and uses scratch dataRoot
# Subtest: socket copy
ok 1 - socket copy
---
duration_ms: 3438.163664
type: 'test'
...
# Subtest: legacy copy
ok 2 - legacy copy
---
duration_ms: 3422.896215
type: 'test'
...
1..2
ok 83 - row196 rehearsal selects socket only for marked copies and uses scratch dataRoot
---
duration_ms: 6861.670952
type: 'test'
...
1..83
# tests 218
# suites 0
# pass 218
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 583363.639573
TAP version 13
# Subtest: REQ-CLI-1 project create and list work on the bus record and refuse what the broker refuses
ok 1 - REQ-CLI-1 project create and list work on the bus record and refuse what the broker refuses
---
duration_ms: 62.377749
type: 'test'
...
# Subtest: REQ-CLI-1 thread create, list, open and read
ok 2 - REQ-CLI-1 thread create, list, open and read
---
duration_ms: 51.588757
type: 'test'
...
# Subtest: REQ-CLI-1 thread read pages through every message, oldest first
ok 3 - REQ-CLI-1 thread read pages through every message, oldest first
---
duration_ms: 259.255194
type: 'test'
...
# Subtest: REQ-CLI-1 the business needs exactly one threaded instance to create a thread
ok 4 - REQ-CLI-1 the business needs exactly one threaded instance to create a thread
---
duration_ms: 25.937393
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 5 - 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: 41.582366
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 6 - 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: 30.979841
type: 'test'
...
# Subtest: REQ-CLI-2 talk --thread --wait gives up with exit 1 and leaves the thread's messages unread
ok 7 - REQ-CLI-2 talk --thread --wait gives up with exit 1 and leaves the thread's messages unread
---
duration_ms: 1030.531062
type: 'test'
...
# Subtest: REQ-CLI-2 talk --thread --follow and follow --thread print and read only that thread's messages
ok 8 - REQ-CLI-2 talk --thread --follow and follow --thread print and read only that thread's messages
---
duration_ms: 75.583468
type: 'test'
...
# Subtest: REQ-CLI-2 plain talk to the assistant asks for a thread and exits 2 without a write
ok 9 - REQ-CLI-2 plain talk to the assistant asks for a thread and exits 2 without a write
---
duration_ms: 18.870123
type: 'test'
...
# Subtest: REQ-USER-2 a thread of another user is refused for talk, open, read and follow, and nothing is written
ok 10 - REQ-USER-2 a thread of another user is refused for talk, open, read and follow, and nothing is written
---
duration_ms: 35.368799
type: 'test'
...
# Subtest: REQ-CLI-1 the new verbs refuse inside an agent run, as every human verb does
ok 11 - REQ-CLI-1 the new verbs refuse inside an agent run, as every human verb does
---
duration_ms: 10.342626
type: 'test'
...
1..11
# tests 11
# suites 0
# pass 11
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 1774.007884
TAP version 13
# usage: {"event":"usage-unknown","business":"acme","run":"rb6ad1f5b21bb","instance":"assistant","turn":"0a2efbe4-6a2f-44e5-af9c-c6d60314afa6","source":"@none","code":"baseline-unknown"}
# usage: {"event":"usage-unknown","business":"acme","run":"r0eb35d40b86a","instance":"assistant","turn":"a496b5ab-090e-493b-a03d-05c06bf5e50c","source":"@none","code":"baseline-unknown"}
# usage: {"event":"usage-unknown","business":"acme","run":"re77ee664419c","instance":"assistant","turn":"9a0eefd5-9a2c-40d9-8c93-fff7383f7fcc","source":"@none","code":"baseline-unknown"}
# usage: {"event":"usage-unknown","business":"acme","run":"r180c2c6ed593","instance":"assistant","turn":"a9aae14a-5e0c-42e8-90be-46e44fc65979","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 1 - 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: 5830.838516
type: 'test'
...
# usage: {"event":"usage-unknown","business":"acme","run":"r5ade9c5abb73","instance":"assistant","turn":"8c1459a9-e7f2-445a-b427-06157fa83852","source":"@none","code":"baseline-unknown"}
# usage: {"event":"usage-unknown","business":"acme","run":"r5ede1873b667","instance":"assistant","turn":"6bde4bc4-f2d1-4765-92b0-c09b7f434390","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 2 - REQ-THREAD-2 REQ-LAUNCH-1 a running thread counts against its model's limit and an idle-stopped one doesn't
---
duration_ms: 1744.655482
type: 'test'
...
# usage: {"event":"usage-unknown","business":"acme","run":"rbc96143c0955","instance":"assistant","turn":"1db7fc2f-d26b-4ed0-9813-f84604422fcb","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 3 - 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: 4435.982598
type: 'test'
...
# usage: {"event":"usage-unknown","business":"acme","run":"rdae872029c54","instance":"assistant","turn":"ab9209ff-ef36-44ad-9108-05e7f7af1f4d","source":"@none","code":"baseline-unknown"}
# usage: {"event":"usage-unknown","business":"acme","run":"rdae872029c54","instance":"assistant","turn":"42586325-b659-4e4a-9a4d-1f39be95740e","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 4 - REQ-THREAD-2 REQ-LAUNCH-1 a message sent after the idle snapshot keeps the session, which answers it
---
duration_ms: 2881.533996
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 5 - REQ-ROLE-2 REQ-LAUNCH-1 a thread held by a run the launcher didn't start gets no second session
---
duration_ms: 76.274489
type: 'test'
...
# usage: {"event":"usage-unknown","business":"acme","run":"ra70ea4a5dde4","instance":"assistant","turn":"0a70c13f-656d-4af6-b3f6-4e8f83378394","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 6 - REQ-LAUNCH-1 a thread run's session file has no landing, even when landHolders names its instance
---
duration_ms: 371.707935
type: 'test'
...
# Subtest: REQ-LAUNCH-1 a run that ends without taking its thread's message isn't started again for that message
ok 7 - REQ-LAUNCH-1 a run that ends without taking its thread's message isn't started again for that message
---
duration_ms: 228.026468
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 8 - 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: 220.298182
type: 'test'
...
# Subtest: REQ-THREAD-1 REQ-LAUNCH-1 the chief can't launch the assistant outside a thread
ok 9 - REQ-THREAD-1 REQ-LAUNCH-1 the chief can't launch the assistant outside a thread
---
duration_ms: 75.436755
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 10 - 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: 189.035089
type: 'test'
...
# usage: {"event":"usage-unknown","business":"acme","run":"r8fe913dfa11a","instance":"assistant","turn":"9c6d8e34-432d-4e98-9c84-597e9851c30a","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 11 - 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: 337.389868
type: 'test'
...
1..11
# tests 11
# suites 0
# pass 11
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 16519.142963
TAP version 13
# Subtest: chat reads map only fixed verbs, strict forward paging and pure GET
ok 1 - chat reads map only fixed verbs, strict forward paging and pure GET
---
duration_ms: 22.861132
type: 'test'
...
# Subtest: chat refuses malformed and repeated query/id values before transport
ok 2 - chat refuses malformed and repeated query/id values before transport
---
duration_ms: 4.841651
type: 'test'
...
# Subtest: chat project.create: one verified write, fixed identity/class and private log
ok 3 - chat project.create: one verified write, fixed identity/class and private log
---
duration_ms: 2.794084
type: 'test'
...
# Subtest: chat project.create: each existing Console write fence makes zero bus calls
ok 4 - chat project.create: each existing Console write fence makes zero bus calls
---
duration_ms: 6.764949
type: 'test'
...
# Subtest: chat project.create: refusal or lost/malformed receipt never retries or invents success
ok 5 - chat project.create: refusal or lost/malformed receipt never retries or invents success
---
duration_ms: 3.587143
type: 'test'
...
# Subtest: chat thread.create: one verified write, fixed identity/class and private log
ok 6 - chat thread.create: one verified write, fixed identity/class and private log
---
duration_ms: 1.174827
type: 'test'
...
# Subtest: chat thread.create: each existing Console write fence makes zero bus calls
ok 7 - chat thread.create: each existing Console write fence makes zero bus calls
---
duration_ms: 5.516326
type: 'test'
...
# Subtest: chat thread.create: refusal or lost/malformed receipt never retries or invents success
ok 8 - chat thread.create: refusal or lost/malformed receipt never retries or invents success
---
duration_ms: 3.939116
type: 'test'
...
# Subtest: chat thread.send: one verified write, fixed identity/class and private log
ok 9 - chat thread.send: one verified write, fixed identity/class and private log
---
duration_ms: 1.108563
type: 'test'
...
# Subtest: chat thread.send: each existing Console write fence makes zero bus calls
ok 10 - chat thread.send: each existing Console write fence makes zero bus calls
---
duration_ms: 4.964503
type: 'test'
...
# Subtest: chat thread.send: refusal or lost/malformed receipt never retries or invents success
ok 11 - chat thread.send: refusal or lost/malformed receipt never retries or invents success
---
duration_ms: 2.823311
type: 'test'
...
# Subtest: chat thread.open: one verified write, fixed identity/class and private log
ok 12 - chat thread.open: one verified write, fixed identity/class and private log
---
duration_ms: 0.975249
type: 'test'
...
# Subtest: chat thread.open: each existing Console write fence makes zero bus calls
ok 13 - chat thread.open: each existing Console write fence makes zero bus calls
---
duration_ms: 6.197542
type: 'test'
...
# Subtest: chat thread.open: refusal or lost/malformed receipt never retries or invents success
ok 14 - chat thread.open: refusal or lost/malformed receipt never retries or invents success
---
duration_ms: 4.447509
type: 'test'
...
# Subtest: chat createThread receipt requires an instance even when its id is valid
ok 15 - chat createThread receipt requires an instance even when its id is valid
---
duration_ms: 2.034364
type: 'test'
...
# Subtest: chat write receipts expose only the fields belonging to their operation
ok 16 - chat write receipts expose only the fields belonging to their operation
---
duration_ms: 3.200614
type: 'test'
...
# Subtest: chat validates names, body, project and strict empty open payload
ok 17 - chat validates names, body, project and strict empty open payload
---
duration_ms: 3.333389
type: 'test'
...
# Subtest: chat read failures redact ownership and refuse invalid transport arrays
ok 18 - chat read failures redact ownership and refuse invalid transport arrays
---
duration_ms: 3.34412
type: 'test'
...
# Subtest: REQ-USER-2 real broker: owned catalog, create/name/filter, isolated history and 403/404 without mutations
ok 19 - REQ-USER-2 real broker: owned catalog, create/name/filter, isolated history and 403/404 without mutations
---
duration_ms: 79.076193
type: 'test'
...
# Subtest: chat repeats every POST boundary even when called behind an admitted request
ok 20 - chat repeats every POST boundary even when called behind an admitted request
---
duration_ms: 0.885504
type: 'test'
...
# Subtest: configured Console process injects chat through its existing human transport
ok 21 - configured Console process injects chat through its existing human transport
---
duration_ms: 125.514296
type: 'test'
...
# Subtest: chat assets, GET purity, method and unknown-route refusals are explicit
ok 22 - chat assets, GET purity, method and unknown-route refusals are explicit
---
duration_ms: 11.747057
type: 'test'
...
# Subtest: the chat seam names the transport it is given: the human one and the tester one both pass, anything else is a TypeError
ok 23 - the chat seam names the transport it is given: the human one and the tester one both pass, anything else is a TypeError
---
duration_ms: 0.438052
type: 'test'
...
1..23
# tests 23
# suites 0
# pass 23
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 418.941921
{
"grant": "sage-2709",
"head": "0604d91fcfc1949810cd5321aea6ec43e9b74b4b",
"manifest": "573c51cf72f2398532a6ea768536f04e3c1681997cb8b9a6f14a8aef884870ae",
"steps": [
{
"code": 0,
"timeout": false,
"seconds": 99.281,
"log": "agents/gander/work/queue-253/run3-focused/files/01.log",
"file": "packages/cli/tests/case1-accept.test.mjs",
"counts": {
"tests": 34,
"pass": 34,
"fail": 0,
"skipped": 0
},
"named_skips": []
},
{
"code": 0,
"timeout": false,
"seconds": 66.418,
"log": "agents/gander/work/queue-253/run3-focused/files/02.log",
"file": "packages/cli/tests/case2-unit.test.mjs",
"counts": {
"tests": 43,
"pass": 43,
"fail": 0,
"skipped": 0
},
"named_skips": []
},
{
"code": 0,
"timeout": false,
"seconds": 0.415,
"log": "agents/gander/work/queue-253/run3-focused/files/03.log",
"file": "packages/bus/tests/account-migration.test.mjs",
"counts": {
"tests": 3,
"pass": 3,
"fail": 0,
"skipped": 0
},
"named_skips": []
},
{
"code": 0,
"timeout": false,
"seconds": 2.168,
"log": "agents/gander/work/queue-253/run3-focused/files/04.log",
"file": "packages/bus/tests/chief-of-staff.test.mjs",
"counts": {
"tests": 42,
"pass": 42,
"fail": 0,
"skipped": 0
},
"named_skips": []
},
{
"code": 0,
"timeout": false,
"seconds": 0.565,
"log": "agents/gander/work/queue-253/run3-focused/files/05.log",
"file": "packages/bus/tests/comment-migration.test.mjs",
"counts": {
"tests": 5,
"pass": 5,
"fail": 0,
"skipped": 0
},
"named_skips": []
},
{
"code": 0,
"timeout": false,
"seconds": 0.415,
"log": "agents/gander/work/queue-253/run3-focused/files/06.log",
"file": "packages/bus/tests/end-launch.test.mjs",
"counts": {
"tests": 7,
"pass": 7,
"fail": 0,
"skipped": 0
},
"named_skips": []
},
{
"code": 0,
"timeout": false,
"seconds": 3.271,
"log": "agents/gander/work/queue-253/run3-focused/files/07.log",
"file": "packages/bus/tests/fire-revokes-grants.test.mjs",
"counts": {
"tests": 22,
"pass": 22,
"fail": 0,
"skipped": 0
},
"named_skips": []
},
{
"code": 0,
"timeout": false,
"seconds": 8.634,
"log": "agents/gander/work/queue-253/run3-focused/files/08.log",
"file": "packages/bus/tests/gitea-grant.test.mjs",
"counts": {
"tests": 49,
"pass": 49,
"fail": 0,
"skipped": 0
},
"named_skips": []
},
{
"code": 0,
"timeout": false,
"seconds": 0.415,
"log": "agents/gander/work/queue-253/run3-focused/files/09.log",
"file": "packages/bus/tests/gitea-migration.test.mjs",
"counts": {
"tests": 5,
"pass": 5,
"fail": 0,
"skipped": 0
},
"named_skips": []
},
{
"code": 0,
"timeout": false,
"seconds": 21.562,
"log": "agents/gander/work/queue-253/run3-focused/files/10.log",
"file": "packages/bus/tests/grant-executor.test.mjs",
"counts": {
"tests": 42,
"pass": 42,
"fail": 0,
"skipped": 0
},
"named_skips": []
},
{
"code": 0,
"timeout": false,
"seconds": 0.465,
"log": "agents/gander/work/queue-253/run3-focused/files/11.log",
"file": "packages/bus/tests/grant-migration.test.mjs",
"counts": {
"tests": 6,
"pass": 6,
"fail": 0,
"skipped": 0
},
"named_skips": []
},
{
"code": 0,
"timeout": false,
"seconds": 0.665,
"log": "agents/gander/work/queue-253/run3-focused/files/12.log",
"file": "packages/bus/tests/lifecycle-revoke.test.mjs",
"counts": {
"tests": 8,
"pass": 8,
"fail": 0,
"skipped": 0
},
"named_skips": []
},
{
"code": 0,
"timeout": false,
"seconds": 0.515,
"log": "agents/gander/work/queue-253/run3-focused/files/13.log",
"file": "packages/bus/tests/message-filter.test.mjs",
"counts": {
"tests": 6,
"pass": 6,
"fail": 0,
"skipped": 0
},
"named_skips": []
},
{
"code": 0,
"timeout": false,
"seconds": 0.214,
"log": "agents/gander/work/queue-253/run3-focused/files/14.log",
"file": "packages/bus/tests/name-migration.test.mjs",
"counts": {
"tests": 1,
"pass": 1,
"fail": 0,
"skipped": 0
},
"named_skips": []
},
{
"code": 0,
"timeout": false,
"seconds": 0.214,
"log": "agents/gander/work/queue-253/run3-focused/files/15.log",
"file": "packages/bus/tests/schema.test.mjs",
"counts": {
"tests": 1,
"pass": 1,
"fail": 0,
"skipped": 0
},
"named_skips": []
},
{
"code": 0,
"timeout": false,
"seconds": 0.615,
"log": "agents/gander/work/queue-253/run3-focused/files/16.log",
"file": "packages/bus/tests/sessions.test.mjs",
"counts": {
"tests": 7,
"pass": 7,
"fail": 0,
"skipped": 0
},
"named_skips": []
},
{
"code": 0,
"timeout": false,
"seconds": 0.214,
"log": "agents/gander/work/queue-253/run3-focused/files/17.log",
"file": "packages/bus/tests/spec-migration.test.mjs",
"counts": {
"tests": 1,
"pass": 1,
"fail": 0,
"skipped": 0
},
"named_skips": []
},
{
"code": 0,
"timeout": false,
"seconds": 0.565,
"log": "agents/gander/work/queue-253/run3-focused/files/18.log",
"file": "packages/bus/tests/tester-writes.test.mjs",
"counts": {
"tests": 8,
"pass": 8,
"fail": 0,
"skipped": 0
},
"named_skips": []
},
{
"code": 0,
"timeout": false,
"seconds": 0.264,
"log": "agents/gander/work/queue-253/run3-focused/files/19.log",
"file": "packages/bus/tests/thread-claims.test.mjs",
"counts": {
"tests": 6,
"pass": 6,
"fail": 0,
"skipped": 0
},
"named_skips": []
},
{
"code": 0,
"timeout": false,
"seconds": 0.365,
"log": "agents/gander/work/queue-253/run3-focused/files/20.log",
"file": "packages/bus/tests/thread-migration.test.mjs",
"counts": {
"tests": 3,
"pass": 3,
"fail": 0,
"skipped": 0
},
"named_skips": []
},
{
"code": 0,
"timeout": false,
"seconds": 1.216,
"log": "agents/gander/work/queue-253/run3-focused/files/21.log",
"file": "packages/bus/tests/threads.test.mjs",
"counts": {
"tests": 17,
"pass": 17,
"fail": 0,
"skipped": 0
},
"named_skips": []
},
{
"code": 0,
"timeout": false,
"seconds": 0.214,
"log": "agents/gander/work/queue-253/run3-focused/files/22.log",
"file": "packages/bus/tests/usage-migration.test.mjs",
"counts": {
"tests": 1,
"pass": 1,
"fail": 0,
"skipped": 0
},
"named_skips": []
},
{
"code": 0,
"timeout": false,
"seconds": 13.296,
"log": "agents/gander/work/queue-253/run3-focused/files/23.log",
"file": "packages/cli/tests/lifecycle.test.mjs",
"counts": {
"tests": 24,
"pass": 24,
"fail": 0,
"skipped": 0
},
"named_skips": []
},
{
"code": 0,
"timeout": false,
"seconds": 583.453,
"log": "agents/gander/work/queue-253/run3-focused/files/24.log",
"file": "packages/cli/tests/stack-release.test.mjs",
"counts": {
"tests": 218,
"pass": 218,
"fail": 0,
"skipped": 0
},
"named_skips": []
},
{
"code": 0,
"timeout": false,
"seconds": 1.876,
"log": "agents/gander/work/queue-253/run3-focused/files/25.log",
"file": "packages/cli/tests/thread-cli.test.mjs",
"counts": {
"tests": 11,
"pass": 11,
"fail": 0,
"skipped": 0
},
"named_skips": []
},
{
"code": 0,
"timeout": false,
"seconds": 16.603,
"log": "agents/gander/work/queue-253/run3-focused/files/26.log",
"file": "packages/cli/tests/thread-launch.test.mjs",
"counts": {
"tests": 11,
"pass": 11,
"fail": 0,
"skipped": 0
},
"named_skips": []
},
{
"code": 0,
"timeout": false,
"seconds": 0.515,
"log": "agents/gander/work/queue-253/run3-focused/files/27.log",
"file": "packages/webui/tests/chat.test.mjs",
"counts": {
"tests": 23,
"pass": 23,
"fail": 0,
"skipped": 0
},
"named_skips": []
}
]
}