{"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- and on a .. segment ok 19 - row 195 accept: F6 fails on a stub that prints nothing, on a path outside claude- 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=:... ok 33 - row 195 accept: every in-instance call goes through sudo -u mosaic -H env PATH=:... --- 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 refuses ok 25 - a --node that is relative, not root-owned or under 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 's uid ok 30 - library refuses a proof file not owned by '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 , and a re-install with another --pm or --claude ok 33 - factory refuses a --claude that is relative, not root-owned or under , 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. 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. 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. or granted gitea file in the store refuses step B credential-revoke-failed, file unchanged ok 7 - row 281 T1 fire: a host. 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- 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- 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 /; 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 /; 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": [] } ] }