{ "grant": "sage-2768", "head": "e1bc766d87a0c6b8894aff93a221315a044cb36a", "product": "362ec674c9e7aa8cef0c26f4d7448f459171dbd4", "manifest": "a2ac57342d9c59ddaebddade0fa475a9568719fed50c132bd7bb141167c7e72e", "packages": { "cli_whole": { "count": 55, "files": [ "packages/cli/tests/access.test.mjs", "packages/cli/tests/app.test.mjs", "packages/cli/tests/boot-status.test.mjs", "packages/cli/tests/case1-accept.test.mjs", "packages/cli/tests/case1-hostcheck.test.mjs", "packages/cli/tests/case2-persona-import.test.mjs", "packages/cli/tests/case2-unit.test.mjs", "packages/cli/tests/channel-cli.test.mjs", "packages/cli/tests/channel-recovery.test.mjs", "packages/cli/tests/cli.test.mjs", "packages/cli/tests/config.test.mjs", "packages/cli/tests/credentials.test.mjs", "packages/cli/tests/follow.test.mjs", "packages/cli/tests/format.test.mjs", "packages/cli/tests/gate-lane-auth.test.mjs", "packages/cli/tests/gate-lane-fixtures.test.mjs", "packages/cli/tests/gate-lane-image.test.mjs", "packages/cli/tests/gate-lane-state.test.mjs", "packages/cli/tests/gate-lane.test.mjs", "packages/cli/tests/git-socket.test.mjs", "packages/cli/tests/grants.test.mjs", "packages/cli/tests/host.test.mjs", "packages/cli/tests/hosts.test.mjs", "packages/cli/tests/instances.test.mjs", "packages/cli/tests/launch-account.test.mjs", "packages/cli/tests/launch-limit-checks.test.mjs", "packages/cli/tests/launch-limits.test.mjs", "packages/cli/tests/launch-routes.test.mjs", "packages/cli/tests/launcher.test.mjs", "packages/cli/tests/lifecycle.test.mjs", "packages/cli/tests/limits-tokens.test.mjs", "packages/cli/tests/limits.test.mjs", "packages/cli/tests/mark-read.test.mjs", "packages/cli/tests/names.test.mjs", "packages/cli/tests/notifier.test.mjs", "packages/cli/tests/other-tree.test.mjs", "packages/cli/tests/processing-cli.test.mjs", "packages/cli/tests/project-name-repo.test.mjs", "packages/cli/tests/project.test.mjs", "packages/cli/tests/publish-socket.test.mjs", "packages/cli/tests/stack-copy.test.mjs", "packages/cli/tests/stack-instances.test.mjs", "packages/cli/tests/stack-release-external.test.mjs", "packages/cli/tests/stack-release.test.mjs", "packages/cli/tests/stack-upgrade.test.mjs", "packages/cli/tests/tester-http.test.mjs", "packages/cli/tests/tester-reads.test.mjs", "packages/cli/tests/tester-threads.test.mjs", "packages/cli/tests/tester.test.mjs", "packages/cli/tests/thread-cli.test.mjs", "packages/cli/tests/thread-launch.test.mjs", "packages/cli/tests/trackers-boot.test.mjs", "packages/cli/tests/transport.test.mjs", "packages/cli/tests/usage.test.mjs", "packages/cli/tests/verbs.test.mjs" ] }, "webui_whole": { "count": 58, "files": [ "packages/webui/tests/agents-browser.test.mjs", "packages/webui/tests/agents.test.mjs", "packages/webui/tests/assistant.test.mjs", "packages/webui/tests/board-held.test.mjs", "packages/webui/tests/browser-edge.test.mjs", "packages/webui/tests/browser.test.mjs", "packages/webui/tests/bus-browser.test.mjs", "packages/webui/tests/bus.test.mjs", "packages/webui/tests/channel-chat.test.mjs", "packages/webui/tests/chat-browser.test.mjs", "packages/webui/tests/chat.test.mjs", "packages/webui/tests/conversation.test.mjs", "packages/webui/tests/discord.test.mjs", "packages/webui/tests/docs-browser.test.mjs", "packages/webui/tests/editor-browser.test.mjs", "packages/webui/tests/editor-provenance.test.mjs", "packages/webui/tests/editor.test.mjs", "packages/webui/tests/history-return-flow.test.mjs", "packages/webui/tests/instances-browser.test.mjs", "packages/webui/tests/instances.test.mjs", "packages/webui/tests/library-cli.test.mjs", "packages/webui/tests/library-status.test.mjs", "packages/webui/tests/limits-browser.test.mjs", "packages/webui/tests/limits-route.test.mjs", "packages/webui/tests/markdown-preview.test.mjs", "packages/webui/tests/messages.test.mjs", "packages/webui/tests/pinned-copy.test.mjs", "packages/webui/tests/preview.test.mjs", "packages/webui/tests/processing-browser.test.mjs", "packages/webui/tests/processing-ui.test.mjs", "packages/webui/tests/processing.test.mjs", "packages/webui/tests/project-file.test.mjs", "packages/webui/tests/project-name-repo.test.mjs", "packages/webui/tests/proof-cli.test.mjs", "packages/webui/tests/proof.test.mjs", "packages/webui/tests/reads.test.mjs", "packages/webui/tests/relaunch.test.mjs", "packages/webui/tests/return-flow.test.mjs", "packages/webui/tests/routes-browser.test.mjs", "packages/webui/tests/routes.test.mjs", "packages/webui/tests/send-browser.test.mjs", "packages/webui/tests/send.test.mjs", "packages/webui/tests/serve.test.mjs", "packages/webui/tests/service.test.mjs", "packages/webui/tests/settings-form.test.mjs", "packages/webui/tests/settings-write.test.mjs", "packages/webui/tests/shell.test.mjs", "packages/webui/tests/sso-browser.test.mjs", "packages/webui/tests/sso.test.mjs", "packages/webui/tests/tester-browser.test.mjs", "packages/webui/tests/tester-cli.test.mjs", "packages/webui/tests/tester-listener.test.mjs", "packages/webui/tests/tester-socket.test.mjs", "packages/webui/tests/thread-claims-browser.test.mjs", "packages/webui/tests/thread-claims.test.mjs", "packages/webui/tests/usage-browser.test.mjs", "packages/webui/tests/usage.test.mjs", "packages/webui/tests/views.test.mjs" ] }, "bus_rebase_union": { "count": 20, "files": [ "packages/bus/tests/account-migration.test.mjs", "packages/bus/tests/chief-of-staff.test.mjs", "packages/bus/tests/comment-migration.test.mjs", "packages/bus/tests/end-launch.test.mjs", "packages/bus/tests/fire-revokes-grants.test.mjs", "packages/bus/tests/gitea-grant.test.mjs", "packages/bus/tests/gitea-migration.test.mjs", "packages/bus/tests/grant-executor.test.mjs", "packages/bus/tests/grant-migration.test.mjs", "packages/bus/tests/lifecycle-revoke.test.mjs", "packages/bus/tests/message-filter.test.mjs", "packages/bus/tests/name-migration.test.mjs", "packages/bus/tests/schema.test.mjs", "packages/bus/tests/sessions.test.mjs", "packages/bus/tests/spec-migration.test.mjs", "packages/bus/tests/tester-writes.test.mjs", "packages/bus/tests/thread-claims.test.mjs", "packages/bus/tests/thread-migration.test.mjs", "packages/bus/tests/threads.test.mjs", "packages/bus/tests/usage-migration.test.mjs" ] } }, "node_limits": { "packages/cli/tests/access.test.mjs": 900, "packages/cli/tests/app.test.mjs": 900, "packages/cli/tests/boot-status.test.mjs": 900, "packages/cli/tests/case1-accept.test.mjs": 418, "packages/cli/tests/case1-hostcheck.test.mjs": 900, "packages/cli/tests/case2-persona-import.test.mjs": 900, "packages/cli/tests/case2-unit.test.mjs": 320, "packages/cli/tests/channel-cli.test.mjs": 900, "packages/cli/tests/channel-recovery.test.mjs": 900, "packages/cli/tests/cli.test.mjs": 900, "packages/cli/tests/config.test.mjs": 900, "packages/cli/tests/credentials.test.mjs": 900, "packages/cli/tests/follow.test.mjs": 900, "packages/cli/tests/format.test.mjs": 900, "packages/cli/tests/gate-lane-auth.test.mjs": 900, "packages/cli/tests/gate-lane-fixtures.test.mjs": 900, "packages/cli/tests/gate-lane-image.test.mjs": 900, "packages/cli/tests/gate-lane-state.test.mjs": 900, "packages/cli/tests/gate-lane.test.mjs": 900, "packages/cli/tests/git-socket.test.mjs": 900, "packages/cli/tests/grants.test.mjs": 900, "packages/cli/tests/host.test.mjs": 900, "packages/cli/tests/hosts.test.mjs": 900, "packages/cli/tests/instances.test.mjs": 900, "packages/cli/tests/launch-account.test.mjs": 900, "packages/cli/tests/launch-limit-checks.test.mjs": 900, "packages/cli/tests/launch-limits.test.mjs": 900, "packages/cli/tests/launch-routes.test.mjs": 900, "packages/cli/tests/launcher.test.mjs": 900, "packages/cli/tests/lifecycle.test.mjs": 160, "packages/cli/tests/limits-tokens.test.mjs": 900, "packages/cli/tests/limits.test.mjs": 900, "packages/cli/tests/mark-read.test.mjs": 900, "packages/cli/tests/names.test.mjs": 900, "packages/cli/tests/notifier.test.mjs": 900, "packages/cli/tests/other-tree.test.mjs": 900, "packages/cli/tests/processing-cli.test.mjs": 900, "packages/cli/tests/project-name-repo.test.mjs": 900, "packages/cli/tests/project.test.mjs": 900, "packages/cli/tests/publish-socket.test.mjs": 900, "packages/cli/tests/stack-copy.test.mjs": 900, "packages/cli/tests/stack-instances.test.mjs": 900, "packages/cli/tests/stack-release-external.test.mjs": 900, "packages/cli/tests/stack-release.test.mjs": 1871, "packages/cli/tests/stack-upgrade.test.mjs": 900, "packages/cli/tests/tester-http.test.mjs": 900, "packages/cli/tests/tester-reads.test.mjs": 900, "packages/cli/tests/tester-threads.test.mjs": 900, "packages/cli/tests/tester.test.mjs": 900, "packages/cli/tests/thread-cli.test.mjs": 126, "packages/cli/tests/thread-launch.test.mjs": 170, "packages/cli/tests/trackers-boot.test.mjs": 900, "packages/cli/tests/transport.test.mjs": 900, "packages/cli/tests/usage.test.mjs": 900, "packages/cli/tests/verbs.test.mjs": 900, "packages/webui/tests/agents-browser.test.mjs": 900, "packages/webui/tests/agents.test.mjs": 900, "packages/webui/tests/assistant.test.mjs": 900, "packages/webui/tests/board-held.test.mjs": 900, "packages/webui/tests/browser-edge.test.mjs": 900, "packages/webui/tests/browser.test.mjs": 900, "packages/webui/tests/bus-browser.test.mjs": 900, "packages/webui/tests/bus.test.mjs": 900, "packages/webui/tests/channel-chat.test.mjs": 900, "packages/webui/tests/chat-browser.test.mjs": 900, "packages/webui/tests/chat.test.mjs": 122, "packages/webui/tests/conversation.test.mjs": 900, "packages/webui/tests/discord.test.mjs": 900, "packages/webui/tests/docs-browser.test.mjs": 900, "packages/webui/tests/editor-browser.test.mjs": 900, "packages/webui/tests/editor-provenance.test.mjs": 900, "packages/webui/tests/editor.test.mjs": 900, "packages/webui/tests/history-return-flow.test.mjs": 900, "packages/webui/tests/instances-browser.test.mjs": 900, "packages/webui/tests/instances.test.mjs": 900, "packages/webui/tests/library-cli.test.mjs": 900, "packages/webui/tests/library-status.test.mjs": 900, "packages/webui/tests/limits-browser.test.mjs": 900, "packages/webui/tests/limits-route.test.mjs": 900, "packages/webui/tests/markdown-preview.test.mjs": 900, "packages/webui/tests/messages.test.mjs": 900, "packages/webui/tests/pinned-copy.test.mjs": 900, "packages/webui/tests/preview.test.mjs": 900, "packages/webui/tests/processing-browser.test.mjs": 900, "packages/webui/tests/processing-ui.test.mjs": 900, "packages/webui/tests/processing.test.mjs": 900, "packages/webui/tests/project-file.test.mjs": 900, "packages/webui/tests/project-name-repo.test.mjs": 900, "packages/webui/tests/proof-cli.test.mjs": 900, "packages/webui/tests/proof.test.mjs": 900, "packages/webui/tests/reads.test.mjs": 900, "packages/webui/tests/relaunch.test.mjs": 900, "packages/webui/tests/return-flow.test.mjs": 900, "packages/webui/tests/routes-browser.test.mjs": 900, "packages/webui/tests/routes.test.mjs": 900, "packages/webui/tests/send-browser.test.mjs": 900, "packages/webui/tests/send.test.mjs": 900, "packages/webui/tests/serve.test.mjs": 900, "packages/webui/tests/service.test.mjs": 900, "packages/webui/tests/settings-form.test.mjs": 900, "packages/webui/tests/settings-write.test.mjs": 900, "packages/webui/tests/shell.test.mjs": 900, "packages/webui/tests/sso-browser.test.mjs": 900, "packages/webui/tests/sso.test.mjs": 900, "packages/webui/tests/tester-browser.test.mjs": 900, "packages/webui/tests/tester-cli.test.mjs": 900, "packages/webui/tests/tester-listener.test.mjs": 900, "packages/webui/tests/tester-socket.test.mjs": 900, "packages/webui/tests/thread-claims-browser.test.mjs": 900, "packages/webui/tests/thread-claims.test.mjs": 900, "packages/webui/tests/usage-browser.test.mjs": 900, "packages/webui/tests/usage.test.mjs": 900, "packages/webui/tests/views.test.mjs": 900, "packages/bus/tests/account-migration.test.mjs": 122, "packages/bus/tests/chief-of-staff.test.mjs": 127, "packages/bus/tests/comment-migration.test.mjs": 122, "packages/bus/tests/end-launch.test.mjs": 122, "packages/bus/tests/fire-revokes-grants.test.mjs": 130, "packages/bus/tests/gitea-grant.test.mjs": 146, "packages/bus/tests/gitea-migration.test.mjs": 122, "packages/bus/tests/grant-executor.test.mjs": 185, "packages/bus/tests/grant-migration.test.mjs": 122, "packages/bus/tests/lifecycle-revoke.test.mjs": 122, "packages/bus/tests/message-filter.test.mjs": 122, "packages/bus/tests/name-migration.test.mjs": 121, "packages/bus/tests/schema.test.mjs": 121, "packages/bus/tests/sessions.test.mjs": 122, "packages/bus/tests/spec-migration.test.mjs": 121, "packages/bus/tests/tester-writes.test.mjs": 122, "packages/bus/tests/thread-claims.test.mjs": 121, "packages/bus/tests/thread-migration.test.mjs": 122, "packages/bus/tests/threads.test.mjs": 124, "packages/bus/tests/usage-migration.test.mjs": 121 }, "shell_limits": { "scripts/test-auth.sh": { "recorded_duration_seconds": 1.9081228229999543, "receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json", "limit_seconds": 126, "derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom", "script_sha256": "dd4720cb0cbecd2fc523a318f2222d21d257c8c5889996a3d69e522ee971a707", "previous_maximum_seconds": 1.9081228229999543, "previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json", "row278_run3_seconds": 0.816 }, "scripts/test-conductor.sh": { "recorded_duration_seconds": 8.057173820000026, "receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json", "limit_seconds": 145, "derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom", "script_sha256": "da84150467494a4c979759f400854411bd93a7efce981139757bf526d688a23b", "previous_maximum_seconds": 8.057173820000026, "previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json", "row278_run3_seconds": 6.078 }, "scripts/test-config.sh": { "recorded_duration_seconds": 3.1678915339999367, "receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json", "limit_seconds": 130, "derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom", "script_sha256": "3301c1fabf616bb961d62f6decd0a46dadb0f399b8ba7f3c2ca60023d2b24c78", "previous_maximum_seconds": 3.1678915339999367, "previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json", "row278_run3_seconds": 1.868 }, "scripts/test-discord.sh": { "recorded_duration_seconds": 8.776727847000002, "receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json", "limit_seconds": 147, "derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom", "script_sha256": "a5dcf783c51a5d5d184a357f91ebf9fa1c4e054f0cb84a3d1d7668f6156e025e", "previous_maximum_seconds": 8.776727847000002, "previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json", "row278_run3_seconds": 7.431 }, "scripts/test-extension-package.sh": { "recorded_duration_seconds": 3.01285702399991, "receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json", "limit_seconds": 130, "derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom", "script_sha256": "5d7b687f16fd1a9414b229501177d530ba3af4eadd3cac319b33f38fdba9bf99", "previous_maximum_seconds": 3.01285702399991, "previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json", "row278_run3_seconds": 1.366 }, "scripts/test-foundation.sh": { "recorded_duration_seconds": 39.901, "receipt": "385a7194c:agents/gander/work/queue-278/run3/whole/results.json", "limit_seconds": 240, "derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom", "script_sha256": "2e11038e7f784ec4f539eb768f63bab0fab9c9940334388a1fe2d47ab9e2b008", "previous_maximum_seconds": 39.70872647900006, "previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json", "row278_run3_seconds": 39.901 }, "scripts/test-land-work.sh": { "recorded_duration_seconds": 12.623263413000037, "receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json", "limit_seconds": 158, "derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom", "script_sha256": "c9d1d5c9b006d5c12e5f796a9828361059f8e0410846fc55c070c0148b15cef4", "previous_maximum_seconds": 12.623263413000037, "previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json", "row278_run3_seconds": 11.338 }, "scripts/test-queue.sh": { "recorded_duration_seconds": 23.443742031000088, "receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json", "limit_seconds": 191, "derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom", "script_sha256": "c270f181d1fa8b6d42ff4131c339beba786a8fd620bb66f8afdcec05e8b10868", "previous_maximum_seconds": 23.443742031000088, "previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json", "row278_run3_seconds": 21.158 }, "scripts/test-release.sh": { "recorded_duration_seconds": 12.168674453999964, "receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json", "limit_seconds": 157, "derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom", "script_sha256": "be706dff832257bd4781abeabd19faa4ac16edf9a4af0c96457e33cf3bb6deb3", "previous_maximum_seconds": 12.168674453999964, "previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json", "row278_run3_seconds": 2.67 }, "scripts/test-task.sh": { "recorded_duration_seconds": 36.783798266, "receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json", "limit_seconds": 231, "derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom", "script_sha256": "10c4abb70bf9b83e617089b06a5436cc7fa6b866a176458b22128c3a15163f94", "previous_maximum_seconds": 36.783798266, "previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json", "row278_run3_seconds": 13.843 } }, "carry": "NONE; mos-1297 fresh whole gate", "review": "duckworth-0162; static no blockers" } START focused TAP version 13 # Subtest: row253 factory socket uses actual config and target-uid query without widening hardening not ok 1 - row253 factory socket uses actual config and target-uid query without widening hardening --- duration_ms: 16.467181 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:127:1' failureType: 'testCodeFailure' error: |- case2-unit: unknown serve flag: --tester-socket 1 !== 0 code: 'ERR_ASSERTION' name: 'AssertionError' expected: 0 actual: 1 operator: 'strictEqual' stack: |- TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:129:45) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 136.651561 TAP version 13 # Subtest: row253 socket observation uses configured root, metadata and the Console peer without sending bytes not ok 1 - row253 socket observation uses configured root, metadata and the Console peer without sending bytes --- duration_ms: 20.851174 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:230:1' failureType: 'testCodeFailure' error: |- case1-accept: refusing: /etc/mosaic-stack/dev.args lacks a numeric --port or --tester-port after -- 2 !== 0 code: 'ERR_ASSERTION' name: 'AssertionError' expected: 0 actual: 2 operator: 'strictEqual' stack: |- TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:235:10) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 161.493599 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: 286.016923 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: 2762.168304 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: 7043.487197 type: 'test' ... # Subtest: row253 protected homes refuse before any filesystem access ok 4 - row253 protected homes refuse before any filesystem access --- duration_ms: 9.294622 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: 10636.271728 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: 10582.732758 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: 10572.592736 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: 390.706596 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: 14126.711569 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.545662 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: 29.216807 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: 121.472414 type: 'test' ... # Subtest: row253 config parser is strict ok 13 - row253 config parser is strict --- duration_ms: 8.365077 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: 91.07508 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: 97.032088 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: 100.601443 type: 'test' ... # Subtest: the script never links a unit file ok 17 - the script never links a unit file --- duration_ms: 0.193723 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: 527.407101 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: 434.46807 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: 964.436931 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: 260.46183 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: 176.004237 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: 133.20959 type: 'test' ... # Subtest: a symlink at either unit path refuses ok 24 - a symlink at either unit path refuses --- duration_ms: 162.430731 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.076478 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: 448.844712 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: 237.934334 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: 28.280266 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: 262.25365 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: 15.616093 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: 171.252306 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: 25.206254 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: 1103.150582 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: 102.931255 type: 'test' ... # Subtest: the precheck refuses each failed host check ok 35 - the precheck refuses each failed host check --- duration_ms: 860.626736 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: 452.412416 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: 99.594659 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: 481.244369 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: 392.370172 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: 839.41839 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.347026 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: 568.551098 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: 84.806897 type: 'test' ... 1..43 # tests 43 # suites 0 # pass 43 # fail 0 # cancelled 0 # skipped 0 # todo 0 # duration_ms 66086.301607 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: 630.554431 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: 8260.291196 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: 1200.210338 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: 2699.727477 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: 1247.085015 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: 10614.895346 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: 14172.418511 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: 406.864703 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: 5469.644563 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: 9045.217878 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: 1251.809682 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: 611.28645 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: 6835.085258 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: 1385.8959 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: 1818.943194 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: 1319.016026 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: 2547.749764 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: 1226.182565 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: 1836.628031 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: 1851.14424 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: 1874.285448 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: 1780.260138 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: 1706.273652 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: 1226.020563 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: 5558.724352 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: 1278.417037 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: 636.575451 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: 3749.648735 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: 1288.359305 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: 455.618993 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: 99.516467 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: 10.925972 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: 635.502841 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: 628.63195 type: 'test' ... 1..34 # tests 34 # suites 0 # pass 34 # fail 0 # cancelled 0 # skipped 0 # todo 0 # duration_ms 95455.674289 { "grant": "sage-2768", "stage": "focused", "steps": [ { "code": 1, "timeout": false, "seconds": 0.214, "log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-253/run4-gate/focused/installer-red.log", "name": "installer-red", "expected_red": true, "counts": { "tests": 1, "pass": 0, "fail": 1, "skipped": 0 } }, { "code": 1, "timeout": false, "seconds": 0.265, "log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-253/run4-gate/focused/acceptance-red.log", "name": "acceptance-red", "expected_red": true, "counts": { "tests": 1, "pass": 0, "fail": 1, "skipped": 0 } }, { "code": 0, "timeout": false, "seconds": 66.16, "log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-253/run4-gate/focused/focused-1.log", "name": "focused-1", "expected_red": false, "counts": { "tests": 43, "pass": 43, "fail": 0, "skipped": 0 } }, { "code": 0, "timeout": false, "seconds": 95.523, "log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-253/run4-gate/focused/focused-2.log", "name": "focused-2", "expected_red": false, "counts": { "tests": 34, "pass": 34, "fail": 0, "skipped": 0 } } ] } END focused START changes TAP version 13 # Subtest: row253 factory refuses retired TCP and a value after the socket marker ok 1 - row253 factory refuses retired TCP and a value after the socket marker --- duration_ms: 35.086166 type: 'test' ... 1..1 # tests 1 # suites 0 # pass 1 # fail 0 # cancelled 0 # skipped 0 # todo 0 # duration_ms 146.409792 TAP version 13 # Subtest: row253 factory refuses retired TCP and a value after the socket marker not ok 1 - row253 factory refuses retired TCP and a value after the socket marker --- duration_ms: 17.243202 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:566:1' failureType: 'testCodeFailure' error: |- The input did not match the regular expression /case2-unit.sh retires tester TCP; use --tester-socket/. Input: 'case2-unit: unknown serve flag: --tester-port\n' code: 'ERR_ASSERTION' name: 'AssertionError' expected: actual: |- case2-unit: unknown serve flag: --tester-port operator: 'match' stack: |- refuses (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:291:10) TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:568:3) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 124.785495 TAP version 13 # Subtest: library refuses a privileged-floor miss, a bad proof pair and every flag outside its set ok 1 - library refuses a privileged-floor miss, a bad proof pair and every flag outside its set --- duration_ms: 293.688814 type: 'test' ... 1..1 # tests 1 # suites 0 # pass 1 # fail 0 # cancelled 0 # skipped 0 # todo 0 # duration_ms 400.834229 TAP version 13 # Subtest: library refuses a privileged-floor miss, a bad proof pair and every flag outside its set not ok 1 - library refuses a privileged-floor miss, a bad proof pair and every flag outside its set --- duration_ms: 254.168276 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:499:1' failureType: 'testCodeFailure' error: |- expected a refusal, got 0: case2-unit: wrote /mnt/storage/scratch/tmp/ggIX/case2-unit-nwo6bR/units/mosaic-bus@.service and /mnt/storage/scratch/tmp/ggIX/case2-unit-nwo6bR/units/mosaic-webui.service from copy aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; enabled and started mosaic-bus@acme.service, then mosaic-webui.service 0 !== 1 code: 'ERR_ASSERTION' name: 'AssertionError' expected: 1 actual: 0 operator: 'strictEqual' stack: |- refuses (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:290:10) TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:524:5) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 359.764248 TAP version 13 # Subtest: factory refuses duplicate socket, a missing --port or --business, and each proxy flag ok 1 - factory refuses duplicate socket, a missing --port or --business, and each proxy flag --- duration_ms: 189.928409 type: 'test' ... 1..1 # tests 1 # suites 0 # pass 1 # fail 0 # cancelled 0 # skipped 0 # todo 0 # duration_ms 301.818116 TAP version 13 # Subtest: factory refuses duplicate socket, a missing --port or --business, and each proxy flag not ok 1 - factory refuses duplicate socket, a missing --port or --business, and each proxy flag --- duration_ms: 283.734781 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:552:1' failureType: 'testCodeFailure' error: |- expected a refusal, got 0: case2-unit: wrote /mnt/storage/scratch/tmp/ggIX/case2-unit-vpy8CM/units/mosaic-bus@.service and /mnt/storage/scratch/tmp/ggIX/case2-unit-vpy8CM/units/mosaic-webui.service from copy aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; enabled and started mosaic-bus@acme.service, then mosaic-webui.service 0 !== 1 code: 'ERR_ASSERTION' name: 'AssertionError' expected: 1 actual: 0 operator: 'strictEqual' stack: |- refuses (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:290:10) TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:554:3) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 395.993578 TAP version 13 # Subtest: row253 installer refuses unsafe location and query facts before unit writes ok 1 - row253 installer refuses unsafe location and query facts before unit writes --- duration_ms: 2743.397122 type: 'test' ... 1..1 # tests 1 # suites 0 # pass 1 # fail 0 # cancelled 0 # skipped 0 # todo 0 # duration_ms 2849.169479 TAP version 13 # Subtest: row253 installer refuses unsafe location and query facts before unit writes not ok 1 - row253 installer refuses unsafe location and query facts before unit writes --- duration_ms: 2956.423884 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:136:1' failureType: 'testCodeFailure' error: |- expected a refusal, got 0: case2-unit: wrote /mnt/storage/scratch/tmp/ggIX/case2-unit-fGJ9Nn/units/mosaic-bus@.service and /mnt/storage/scratch/tmp/ggIX/case2-unit-fGJ9Nn/units/mosaic-webui.service from copy aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; enabled and started mosaic-bus@acme.service, then mosaic-webui.service 0 !== 1 code: 'ERR_ASSERTION' name: 'AssertionError' expected: 1 actual: 0 operator: 'strictEqual' stack: |- refuses (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:290:10) TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:159:39) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 3061.853817 TAP version 13 # Subtest: row253 installer refuses unsafe location and query facts before unit writes not ok 1 - row253 installer refuses unsafe location and query facts before unit writes --- duration_ms: 2658.240578 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:136:1' failureType: 'testCodeFailure' error: |- expected a refusal, got 0: case2-unit: wrote /mnt/storage/scratch/tmp/ggIX/case2-unit-Kuo8Hb/units/mosaic-bus@.service and /mnt/storage/scratch/tmp/ggIX/case2-unit-Kuo8Hb/units/mosaic-webui.service from copy aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; enabled and started mosaic-bus@acme.service, then mosaic-webui.service 0 !== 1 code: 'ERR_ASSERTION' name: 'AssertionError' expected: 1 actual: 0 operator: 'strictEqual' stack: |- refuses (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:290:10) TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:159:39) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 2773.294271 TAP version 13 # Subtest: row253 installer refuses unsafe location and query facts before unit writes not ok 1 - row253 installer refuses unsafe location and query facts before unit writes --- duration_ms: 282.202463 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:136:1' failureType: 'testCodeFailure' error: |- expected a refusal, got 0: case2-unit: wrote /mnt/storage/scratch/tmp/ggIX/case2-unit-dBMef6/units/mosaic-bus@.service and /mnt/storage/scratch/tmp/ggIX/case2-unit-dBMef6/units/mosaic-webui.service from copy aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; enabled and started mosaic-bus@acme.service, then mosaic-webui.service 0 !== 1 code: 'ERR_ASSERTION' name: 'AssertionError' expected: 1 actual: 0 operator: 'strictEqual' stack: |- refuses (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:290:10) TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:159:39) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 385.658523 TAP version 13 # Subtest: row253 protected homes refuse before any filesystem access ok 1 - row253 protected homes refuse before any filesystem access --- duration_ms: 10.57936 type: 'test' ... 1..1 # tests 1 # suites 0 # pass 1 # fail 0 # cancelled 0 # skipped 0 # todo 0 # duration_ms 119.117378 TAP version 13 # Subtest: row253 protected homes refuse before any filesystem access not ok 1 - row253 protected homes refuse before any filesystem access --- duration_ms: 4.394279 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:181:1' failureType: 'testCodeFailure' error: |- Expected values to be strictly equal: 99 !== 0 code: 'ERR_ASSERTION' name: 'AssertionError' expected: 0 actual: 99 operator: 'strictEqual' stack: |- TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:185:10) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 111.508007 TAP version 13 # Subtest: row253 installer refuses unsafe location and query facts before unit writes not ok 1 - row253 installer refuses unsafe location and query facts before unit writes --- duration_ms: 1775.758209 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:136:1' failureType: 'testCodeFailure' error: |- expected a refusal, got 0: case2-unit: wrote /mnt/storage/scratch/tmp/ggIX/case2-unit-NXsGZD/units/mosaic-bus@.service and /mnt/storage/scratch/tmp/ggIX/case2-unit-NXsGZD/units/mosaic-webui.service from copy aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; enabled and started mosaic-bus@acme.service, then mosaic-webui.service 0 !== 1 code: 'ERR_ASSERTION' name: 'AssertionError' expected: 1 actual: 0 operator: 'strictEqual' stack: |- refuses (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:290:10) TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:159:39) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 1885.508171 TAP version 13 # Subtest: row253 installer refuses unsafe location and query facts before unit writes not ok 1 - row253 installer refuses unsafe location and query facts before unit writes --- duration_ms: 2018.174562 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:136:1' failureType: 'testCodeFailure' error: |- expected a refusal, got 0: case2-unit: wrote /mnt/storage/scratch/tmp/ggIX/case2-unit-WEOSIG/units/mosaic-bus@.service and /mnt/storage/scratch/tmp/ggIX/case2-unit-WEOSIG/units/mosaic-webui.service from copy aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; enabled and started mosaic-bus@acme.service, then mosaic-webui.service 0 !== 1 code: 'ERR_ASSERTION' name: 'AssertionError' expected: 1 actual: 0 operator: 'strictEqual' stack: |- refuses (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:290:10) TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:159:39) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 2128.063611 TAP version 13 # Subtest: row253 installer refuses unsafe location and query facts before unit writes not ok 1 - row253 installer refuses unsafe location and query facts before unit writes --- duration_ms: 2652.140852 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:136:1' failureType: 'testCodeFailure' error: |- expected a refusal, got 0: case2-unit: wrote /mnt/storage/scratch/tmp/ggIX/case2-unit-SmbVaO/units/mosaic-bus@.service and /mnt/storage/scratch/tmp/ggIX/case2-unit-SmbVaO/units/mosaic-webui.service from copy aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; enabled and started mosaic-bus@acme.service, then mosaic-webui.service 0 !== 1 code: 'ERR_ASSERTION' name: 'AssertionError' expected: 1 actual: 0 operator: 'strictEqual' stack: |- refuses (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:290:10) TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:159:39) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 2769.250592 TAP version 13 # Subtest: row253 installer refuses unsafe location and query facts before unit writes not ok 1 - row253 installer refuses unsafe location and query facts before unit writes --- duration_ms: 2337.660935 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:136:1' failureType: 'testCodeFailure' error: |- expected a refusal, got 0: case2-unit: wrote /mnt/storage/scratch/tmp/ggIX/case2-unit-R63eKO/units/mosaic-bus@.service and /mnt/storage/scratch/tmp/ggIX/case2-unit-R63eKO/units/mosaic-webui.service from copy aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; enabled and started mosaic-bus@acme.service, then mosaic-webui.service 0 !== 1 code: 'ERR_ASSERTION' name: 'AssertionError' expected: 1 actual: 0 operator: 'strictEqual' stack: |- refuses (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:290:10) TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:159:39) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 2457.79516 TAP version 13 # Subtest: row 195 accept: a bad args file refuses with exit 2 before any check, each for its own reason ok 1 - row 195 accept: a bad args file refuses with exit 2 before any check, each for its own reason --- duration_ms: 118.628333 type: 'test' ... 1..1 # tests 1 # suites 0 # pass 1 # fail 0 # cancelled 0 # skipped 0 # todo 0 # duration_ms 238.757052 TAP version 13 # Subtest: row 195 accept: a bad args file refuses with exit 2 before any check, each for its own reason not ok 1 - row 195 accept: a bad args file refuses with exit 2 before any check, each for its own reason --- duration_ms: 83.396319 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:673:1' failureType: 'testCodeFailure' error: 'retired TCP' code: 'ERR_ASSERTION' name: 'AssertionError' expected: actual: 'case1-accept: refusing: unknown serve flag --tester-port' operator: 'match' stack: |- TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:694:12) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 187.449787 TAP version 13 # Subtest: row 195 accept: a bad args file refuses with exit 2 before any check, each for its own reason not ok 1 - row 195 accept: a bad args file refuses with exit 2 before any check, each for its own reason --- duration_ms: 722.294075 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:673:1' failureType: 'testCodeFailure' error: |- no tester socket: F1 units-user pass mosaic-bus@mosaic-stack.service and mosaic-webui.service are active as mosaic (uid 997) F2 console-loopback pass healthz answers, and 732 is bound to 127.0.0.1 only, by MainPID 200 F3 tester-reply pass chief replied to case1-accept-07483424a183 F4 precheck pass case2-precheck.sh --profile factory exits 0 F5 bwrap-label pass bwrap 300 reads 'bwrap (enforce)' and its claude descendant 302 reads 'bwrap//&unpriv_bwrap (enforce)' F6 claude-pin pass /opt/mosaic-stack/claude-2.1.0/node_modules/@anthropic-ai/claude-code/bin/claude.exe prints '2.1.0 (Claude Code)' F7 pm-live pass one live launch: pm run r-0002 F8 credential-file pass /srv/mosaic/.config/mosaic-dev/secrets/claude-session.env is 'mosaic 600 regular file' F9 autoupdater-off pass /etc/claude-code/managed-settings.json is root:root 0644 with env.DISABLE_AUTOUPDATER "1" F10 node-pin pass /opt/mosaic-stack/node-v24.1.0/bin/node prints v24.1.0 F11 no-discord pass /srv/mosaic/.mosaic-dev/discord is absent P1 mosaic-sudo closed sudo -l: User mosaic is not allowed to run sudo on dev-53. P2 mosaic-groups-keys closed id -G is '997'; authorized_keys is absent P3 localadmin-sudo accepted Q183 sudo -l -U localadmin lists 1 NOPASSWD lines P4 pve-root-pbs accepted Q182+Q183 root on pve over VM 1008, and PBS backups that hold /srv/mosaic with the credential; this script can't see pve P5 jarvis-reach closed jarvis is in none of sudo, docker and lxd (groups: jarvis) P6 group-members closed sudo holds only localadmin, and docker and lxd have no members P7 sudoers-d closed no file under /etc/sudoers.d names mosaic P8 lan-listeners closed 732 is on 127.0.0.1 only by MainPID 200; no TCP listener on 7331 or 7333; tester uses /srv/mosaic/.mosaic-dev/console/tester.sock P9 bwrap-userns accepted mos-1096 hostcheck items 1-6 ok, jarvis is denied bwrap, and group mosaic has no other member P10 tester-socket-squat unnamed boundary=observed path=/srv/mosaic/.mosaic-dev/console/tester.sock parent=0700 owner=997 socket=0600 peer_pid=200 peer_uid=997 floor=1024 port=732; hostile same-uid substitution remains P11 hostcheck-before-bus closed mosaic-hostcheck.service is enabled, and its Before= names mosaic-bus@mosaic-stack.service count pass 11 count FAIL 0 count closed 7 count accepted Q182+Q183 1 count accepted Q183 1 count accepted mos-1096 1 count unnamed 1 case1-accept: every F check passes; send the whole output to Duckworth, and each unnamed line to Mos 0 !== 2 code: 'ERR_ASSERTION' name: 'AssertionError' expected: 2 actual: 0 operator: 'strictEqual' stack: |- TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:692:12) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 822.94351 TAP version 13 # Subtest: row 195 accept: a bad args file refuses with exit 2 before any check, each for its own reason not ok 1 - row 195 accept: a bad args file refuses with exit 2 before any check, each for its own reason --- duration_ms: 751.197018 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:673:1' failureType: 'testCodeFailure' error: |- socket value: F1 units-user pass mosaic-bus@mosaic-stack.service and mosaic-webui.service are active as mosaic (uid 997) F2 console-loopback pass healthz answers, and 732 is bound to 127.0.0.1 only, by MainPID 200 F3 tester-reply pass chief replied to case1-accept-ae83f398208c F4 precheck pass case2-precheck.sh --profile factory exits 0 F5 bwrap-label pass bwrap 300 reads 'bwrap (enforce)' and its claude descendant 302 reads 'bwrap//&unpriv_bwrap (enforce)' F6 claude-pin pass /opt/mosaic-stack/claude-2.1.0/node_modules/@anthropic-ai/claude-code/bin/claude.exe prints '2.1.0 (Claude Code)' F7 pm-live pass one live launch: pm run r-0002 F8 credential-file pass /srv/mosaic/.config/mosaic-dev/secrets/claude-session.env is 'mosaic 600 regular file' F9 autoupdater-off pass /etc/claude-code/managed-settings.json is root:root 0644 with env.DISABLE_AUTOUPDATER "1" F10 node-pin pass /opt/mosaic-stack/node-v24.1.0/bin/node prints v24.1.0 F11 no-discord pass /srv/mosaic/.mosaic-dev/discord is absent P1 mosaic-sudo closed sudo -l: User mosaic is not allowed to run sudo on dev-53. P2 mosaic-groups-keys closed id -G is '997'; authorized_keys is absent P3 localadmin-sudo accepted Q183 sudo -l -U localadmin lists 1 NOPASSWD lines P4 pve-root-pbs accepted Q182+Q183 root on pve over VM 1008, and PBS backups that hold /srv/mosaic with the credential; this script can't see pve P5 jarvis-reach closed jarvis is in none of sudo, docker and lxd (groups: jarvis) P6 group-members closed sudo holds only localadmin, and docker and lxd have no members P7 sudoers-d closed no file under /etc/sudoers.d names mosaic P8 lan-listeners closed 732 is on 127.0.0.1 only by MainPID 200; no TCP listener on 7331 or 7333; tester uses /srv/mosaic/.mosaic-dev/console/tester.sock P9 bwrap-userns accepted mos-1096 hostcheck items 1-6 ok, jarvis is denied bwrap, and group mosaic has no other member P10 tester-socket-squat unnamed boundary=observed path=/srv/mosaic/.mosaic-dev/console/tester.sock parent=0700 owner=997 socket=0600 peer_pid=200 peer_uid=997 floor=1024 port=732; hostile same-uid substitution remains P11 hostcheck-before-bus closed mosaic-hostcheck.service is enabled, and its Before= names mosaic-bus@mosaic-stack.service count pass 11 count FAIL 0 count closed 7 count accepted Q182+Q183 1 count accepted Q183 1 count accepted mos-1096 1 count unnamed 1 case1-accept: every F check passes; send the whole output to Duckworth, and each unnamed line to Mos 0 !== 2 code: 'ERR_ASSERTION' name: 'AssertionError' expected: 2 actual: 0 operator: 'strictEqual' stack: |- TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:692:12) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 861.90659 TAP version 13 # Subtest: row253 acceptance rejects bad config and unsupported copies before talk ok 1 - row253 acceptance rejects bad config and unsupported copies before talk --- duration_ms: 1264.209543 type: 'test' ... 1..1 # tests 1 # suites 0 # pass 1 # fail 0 # cancelled 0 # skipped 0 # todo 0 # duration_ms 1362.263725 TAP version 13 # Subtest: row253 acceptance rejects bad config and unsupported copies before talk not ok 1 - row253 acceptance rejects bad config and unsupported copies before talk --- duration_ms: 1743.66744 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:291:1' failureType: 'testCodeFailure' error: |- failed: F1 units-user pass mosaic-bus@mosaic-stack.service and mosaic-webui.service are active as mosaic (uid 997) F2 console-loopback pass healthz answers, and 732 is bound to 127.0.0.1 only, by MainPID 200 F3 tester-reply pass chief replied to case1-accept-1f7e2ee27abd F4 precheck pass case2-precheck.sh --profile factory exits 0 F5 bwrap-label pass bwrap 300 reads 'bwrap (enforce)' and its claude descendant 302 reads 'bwrap//&unpriv_bwrap (enforce)' F6 claude-pin pass /opt/mosaic-stack/claude-2.1.0/node_modules/@anthropic-ai/claude-code/bin/claude.exe prints '2.1.0 (Claude Code)' F7 pm-live pass one live launch: pm run r-0002 F8 credential-file pass /srv/mosaic/.config/mosaic-dev/secrets/claude-session.env is 'mosaic 600 regular file' F9 autoupdater-off pass /etc/claude-code/managed-settings.json is root:root 0644 with env.DISABLE_AUTOUPDATER "1" F10 node-pin pass /opt/mosaic-stack/node-v24.1.0/bin/node prints v24.1.0 F11 no-discord pass /srv/mosaic/.mosaic-dev/discord is absent P1 mosaic-sudo closed sudo -l: User mosaic is not allowed to run sudo on dev-53. P2 mosaic-groups-keys closed id -G is '997'; authorized_keys is absent P3 localadmin-sudo accepted Q183 sudo -l -U localadmin lists 1 NOPASSWD lines P4 pve-root-pbs accepted Q182+Q183 root on pve over VM 1008, and PBS backups that hold /srv/mosaic with the credential; this script can't see pve P5 jarvis-reach closed jarvis is in none of sudo, docker and lxd (groups: jarvis) P6 group-members closed sudo holds only localadmin, and docker and lxd have no members P7 sudoers-d closed no file under /etc/sudoers.d names mosaic P8 lan-listeners closed 732 is on 127.0.0.1 only by MainPID 200; no TCP listener on 7331 or 7333; tester uses /srv/mosaic/.mosaic-dev/console/tester.sock P9 bwrap-userns accepted mos-1096 hostcheck items 1-6 ok, jarvis is denied bwrap, and group mosaic has no other member P10 tester-socket-squat unnamed boundary=observed path=/srv/mosaic/.mosaic-dev/console/tester.sock parent=0700 owner=997 socket=0600 peer_pid=200 peer_uid=997 floor=1024 port=732; hostile same-uid substitution remains P11 hostcheck-before-bus closed mosaic-hostcheck.service is enabled, and its Before= names mosaic-bus@mosaic-stack.service count pass 11 count FAIL 0 count closed 7 count accepted Q182+Q183 1 count accepted Q183 1 count accepted mos-1096 1 count unnamed 1 case1-accept: every F check passes; send the whole output to Duckworth, and each unnamed line to Mos 0 !== 2 code: 'ERR_ASSERTION' name: 'AssertionError' expected: 2 actual: 0 operator: 'strictEqual' stack: |- TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:302:12) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 1845.225169 TAP version 13 # Subtest: row253 P8 refuses both retired TCP and board listeners ok 1 - row253 P8 refuses both retired TCP and board listeners --- duration_ms: 1637.812012 type: 'test' ... 1..1 # tests 1 # suites 0 # pass 1 # fail 0 # cancelled 0 # skipped 0 # todo 0 # duration_ms 1777.849765 TAP version 13 # Subtest: row253 P8 refuses both retired TCP and board listeners not ok 1 - row253 P8 refuses both retired TCP and board listeners --- duration_ms: 697.127036 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:322:1' failureType: 'testCodeFailure' error: |- Expected values to be strictly deep-equal: + actual - expected [ + 'closed' - 'unnamed' ] code: 'ERR_ASSERTION' name: 'AssertionError' expected: 0: 'unnamed' actual: 0: 'closed' operator: 'deepStrictEqual' stack: |- TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:325:12) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 799.897371 TAP version 13 # Subtest: row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure ok 1 - row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure --- duration_ms: 9467.841715 type: 'test' ... 1..1 # tests 1 # suites 0 # pass 1 # fail 0 # cancelled 0 # skipped 0 # todo 0 # duration_ms 9583.161985 TAP version 13 # Subtest: row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure not ok 1 - row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure --- duration_ms: 687.052962 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:243:1' failureType: 'testCodeFailure' error: 'parent-mode' code: 'ERR_ASSERTION' name: 'AssertionError' expected: actual: |- F1 units-user pass mosaic-bus@mosaic-stack.service and mosaic-webui.service are active as mosaic (uid 997) F2 console-loopback pass healthz answers, and 732 is bound to 127.0.0.1 only, by MainPID 200 F3 tester-reply pass chief replied to case1-accept-5751b332553b F4 precheck pass case2-precheck.sh --profile factory exits 0 F5 bwrap-label pass bwrap 300 reads 'bwrap (enforce)' and its claude descendant 302 reads 'bwrap//&unpriv_bwrap (enforce)' F6 claude-pin pass /opt/mosaic-stack/claude-2.1.0/node_modules/@anthropic-ai/claude-code/bin/claude.exe prints '2.1.0 (Claude Code)' F7 pm-live pass one live launch: pm run r-0002 F8 credential-file pass /srv/mosaic/.config/mosaic-dev/secrets/claude-session.env is 'mosaic 600 regular file' F9 autoupdater-off pass /etc/claude-code/managed-settings.json is root:root 0644 with env.DISABLE_AUTOUPDATER "1" F10 node-pin pass /opt/mosaic-stack/node-v24.1.0/bin/node prints v24.1.0 F11 no-discord pass /srv/mosaic/.mosaic-dev/discord is absent P1 mosaic-sudo closed sudo -l: User mosaic is not allowed to run sudo on dev-53. P2 mosaic-groups-keys closed id -G is '997'; authorized_keys is absent P3 localadmin-sudo accepted Q183 sudo -l -U localadmin lists 1 NOPASSWD lines P4 pve-root-pbs accepted Q182+Q183 root on pve over VM 1008, and PBS backups that hold /srv/mosaic with the credential; this script can't see pve P5 jarvis-reach closed jarvis is in none of sudo, docker and lxd (groups: jarvis) P6 group-members closed sudo holds only localadmin, and docker and lxd have no members P7 sudoers-d closed no file under /etc/sudoers.d names mosaic P8 lan-listeners closed 732 is on 127.0.0.1 only by MainPID 200; no TCP listener on 7331 or 7333; tester uses /srv/mosaic/.mosaic-dev/console/tester.sock P9 bwrap-userns accepted mos-1096 hostcheck items 1-6 ok, jarvis is denied bwrap, and group mosaic has no other member P10 tester-socket-squat unnamed boundary=observed path=/srv/mosaic/.mosaic-dev/console/tester.sock parent=0700 owner=997 socket=0600 peer_pid=200 peer_uid=997 floor=1024 port=732; hostile same-uid substitution remains P11 hostcheck-before-bus closed mosaic-hostcheck.service is enabled, and its Before= names mosaic-bus@mosaic-stack.service count pass 11 count FAIL 0 count closed 7 count accepted Q182+Q183 1 count accepted Q183 1 count accepted mos-1096 1 count unnamed 1 case1-accept: every F check passes; send the whole output to Duckworth, and each unnamed line to Mos operator: 'match' stack: |- TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:285:12) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 790.835643 TAP version 13 # Subtest: row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure not ok 1 - row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure --- duration_ms: 1903.738583 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:243:1' failureType: 'testCodeFailure' error: 'socket-mode' code: 'ERR_ASSERTION' name: 'AssertionError' expected: actual: |- F1 units-user pass mosaic-bus@mosaic-stack.service and mosaic-webui.service are active as mosaic (uid 997) F2 console-loopback pass healthz answers, and 732 is bound to 127.0.0.1 only, by MainPID 200 F3 tester-reply pass chief replied to case1-accept-b03cfa70472c F4 precheck pass case2-precheck.sh --profile factory exits 0 F5 bwrap-label pass bwrap 300 reads 'bwrap (enforce)' and its claude descendant 302 reads 'bwrap//&unpriv_bwrap (enforce)' F6 claude-pin pass /opt/mosaic-stack/claude-2.1.0/node_modules/@anthropic-ai/claude-code/bin/claude.exe prints '2.1.0 (Claude Code)' F7 pm-live pass one live launch: pm run r-0002 F8 credential-file pass /srv/mosaic/.config/mosaic-dev/secrets/claude-session.env is 'mosaic 600 regular file' F9 autoupdater-off pass /etc/claude-code/managed-settings.json is root:root 0644 with env.DISABLE_AUTOUPDATER "1" F10 node-pin pass /opt/mosaic-stack/node-v24.1.0/bin/node prints v24.1.0 F11 no-discord pass /srv/mosaic/.mosaic-dev/discord is absent P1 mosaic-sudo closed sudo -l: User mosaic is not allowed to run sudo on dev-53. P2 mosaic-groups-keys closed id -G is '997'; authorized_keys is absent P3 localadmin-sudo accepted Q183 sudo -l -U localadmin lists 1 NOPASSWD lines P4 pve-root-pbs accepted Q182+Q183 root on pve over VM 1008, and PBS backups that hold /srv/mosaic with the credential; this script can't see pve P5 jarvis-reach closed jarvis is in none of sudo, docker and lxd (groups: jarvis) P6 group-members closed sudo holds only localadmin, and docker and lxd have no members P7 sudoers-d closed no file under /etc/sudoers.d names mosaic P8 lan-listeners closed 732 is on 127.0.0.1 only by MainPID 200; no TCP listener on 7331 or 7333; tester uses /srv/mosaic/.mosaic-dev/console/tester.sock P9 bwrap-userns accepted mos-1096 hostcheck items 1-6 ok, jarvis is denied bwrap, and group mosaic has no other member P10 tester-socket-squat unnamed boundary=observed path=/srv/mosaic/.mosaic-dev/console/tester.sock parent=0700 owner=997 socket=0600 peer_pid=200 peer_uid=997 floor=1024 port=732; hostile same-uid substitution remains P11 hostcheck-before-bus closed mosaic-hostcheck.service is enabled, and its Before= names mosaic-bus@mosaic-stack.service count pass 11 count FAIL 0 count closed 7 count accepted Q182+Q183 1 count accepted Q183 1 count accepted mos-1096 1 count unnamed 1 case1-accept: every F check passes; send the whole output to Duckworth, and each unnamed line to Mos operator: 'match' stack: |- TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:285:12) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 2042.613074 TAP version 13 # Subtest: row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure not ok 1 - row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure --- duration_ms: 4044.20384 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:243:1' failureType: 'testCodeFailure' error: 'peer-pid' code: 'ERR_ASSERTION' name: 'AssertionError' expected: actual: |- F1 units-user pass mosaic-bus@mosaic-stack.service and mosaic-webui.service are active as mosaic (uid 997) F2 console-loopback pass healthz answers, and 732 is bound to 127.0.0.1 only, by MainPID 200 F3 tester-reply pass chief replied to case1-accept-a5f8e877a073 F4 precheck pass case2-precheck.sh --profile factory exits 0 F5 bwrap-label pass bwrap 300 reads 'bwrap (enforce)' and its claude descendant 302 reads 'bwrap//&unpriv_bwrap (enforce)' F6 claude-pin pass /opt/mosaic-stack/claude-2.1.0/node_modules/@anthropic-ai/claude-code/bin/claude.exe prints '2.1.0 (Claude Code)' F7 pm-live pass one live launch: pm run r-0002 F8 credential-file pass /srv/mosaic/.config/mosaic-dev/secrets/claude-session.env is 'mosaic 600 regular file' F9 autoupdater-off pass /etc/claude-code/managed-settings.json is root:root 0644 with env.DISABLE_AUTOUPDATER "1" F10 node-pin pass /opt/mosaic-stack/node-v24.1.0/bin/node prints v24.1.0 F11 no-discord pass /srv/mosaic/.mosaic-dev/discord is absent P1 mosaic-sudo closed sudo -l: User mosaic is not allowed to run sudo on dev-53. P2 mosaic-groups-keys closed id -G is '997'; authorized_keys is absent P3 localadmin-sudo accepted Q183 sudo -l -U localadmin lists 1 NOPASSWD lines P4 pve-root-pbs accepted Q182+Q183 root on pve over VM 1008, and PBS backups that hold /srv/mosaic with the credential; this script can't see pve P5 jarvis-reach closed jarvis is in none of sudo, docker and lxd (groups: jarvis) P6 group-members closed sudo holds only localadmin, and docker and lxd have no members P7 sudoers-d closed no file under /etc/sudoers.d names mosaic P8 lan-listeners closed 732 is on 127.0.0.1 only by MainPID 200; no TCP listener on 7331 or 7333; tester uses /srv/mosaic/.mosaic-dev/console/tester.sock P9 bwrap-userns accepted mos-1096 hostcheck items 1-6 ok, jarvis is denied bwrap, and group mosaic has no other member P10 tester-socket-squat unnamed boundary=observed path=/srv/mosaic/.mosaic-dev/console/tester.sock parent=0700 owner=997 socket=0600 peer_pid=555 peer_uid=997 floor=1024 port=732; hostile same-uid substitution remains P11 hostcheck-before-bus closed mosaic-hostcheck.service is enabled, and its Before= names mosaic-bus@mosaic-stack.service count pass 11 count FAIL 0 count closed 7 count accepted Q182+Q183 1 count accepted Q183 1 count accepted mos-1096 1 count unnamed 1 case1-accept: every F check passes; send the whole output to Duckworth, and each unnamed line to Mos operator: 'match' stack: |- TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:285:12) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 4146.67992 TAP version 13 # Subtest: row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure not ok 1 - row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure --- duration_ms: 3518.040897 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:243:1' failureType: 'testCodeFailure' error: 'peer' code: 'ERR_ASSERTION' name: 'AssertionError' expected: actual: |- F1 units-user pass mosaic-bus@mosaic-stack.service and mosaic-webui.service are active as mosaic (uid 997) F2 console-loopback pass healthz answers, and 732 is bound to 127.0.0.1 only, by MainPID 200 F3 tester-reply pass chief replied to case1-accept-d0c9dcf244c3 F4 precheck pass case2-precheck.sh --profile factory exits 0 F5 bwrap-label pass bwrap 300 reads 'bwrap (enforce)' and its claude descendant 302 reads 'bwrap//&unpriv_bwrap (enforce)' F6 claude-pin pass /opt/mosaic-stack/claude-2.1.0/node_modules/@anthropic-ai/claude-code/bin/claude.exe prints '2.1.0 (Claude Code)' F7 pm-live pass one live launch: pm run r-0002 F8 credential-file pass /srv/mosaic/.config/mosaic-dev/secrets/claude-session.env is 'mosaic 600 regular file' F9 autoupdater-off pass /etc/claude-code/managed-settings.json is root:root 0644 with env.DISABLE_AUTOUPDATER "1" F10 node-pin pass /opt/mosaic-stack/node-v24.1.0/bin/node prints v24.1.0 F11 no-discord pass /srv/mosaic/.mosaic-dev/discord is absent P1 mosaic-sudo closed sudo -l: User mosaic is not allowed to run sudo on dev-53. P2 mosaic-groups-keys closed id -G is '997'; authorized_keys is absent P3 localadmin-sudo accepted Q183 sudo -l -U localadmin lists 1 NOPASSWD lines P4 pve-root-pbs accepted Q182+Q183 root on pve over VM 1008, and PBS backups that hold /srv/mosaic with the credential; this script can't see pve P5 jarvis-reach closed jarvis is in none of sudo, docker and lxd (groups: jarvis) P6 group-members closed sudo holds only localadmin, and docker and lxd have no members P7 sudoers-d closed no file under /etc/sudoers.d names mosaic P8 lan-listeners closed 732 is on 127.0.0.1 only by MainPID 200; no TCP listener on 7331 or 7333; tester uses /srv/mosaic/.mosaic-dev/console/tester.sock P9 bwrap-userns accepted mos-1096 hostcheck items 1-6 ok, jarvis is denied bwrap, and group mosaic has no other member P10 tester-socket-squat unnamed boundary=observed path=/srv/mosaic/.mosaic-dev/console/tester.sock parent=0700 owner=997 socket=0600 peer_pid=200 peer_uid=998 floor=1024 port=732; hostile same-uid substitution remains P11 hostcheck-before-bus closed mosaic-hostcheck.service is enabled, and its Before= names mosaic-bus@mosaic-stack.service count pass 11 count FAIL 0 count closed 7 count accepted Q182+Q183 1 count accepted Q183 1 count accepted mos-1096 1 count unnamed 1 case1-accept: every F check passes; send the whole output to Duckworth, and each unnamed line to Mos operator: 'match' stack: |- TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:285:12) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 3625.460858 TAP version 13 # Subtest: row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure not ok 1 - row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure --- duration_ms: 5942.054225 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:243:1' failureType: 'testCodeFailure' error: 'peer-malformed' code: 'ERR_ASSERTION' name: 'AssertionError' expected: actual: |- F1 units-user pass mosaic-bus@mosaic-stack.service and mosaic-webui.service are active as mosaic (uid 997) F2 console-loopback pass healthz answers, and 732 is bound to 127.0.0.1 only, by MainPID 200 F3 tester-reply pass chief replied to case1-accept-ace2cec64c2d F4 precheck pass case2-precheck.sh --profile factory exits 0 F5 bwrap-label pass bwrap 300 reads 'bwrap (enforce)' and its claude descendant 302 reads 'bwrap//&unpriv_bwrap (enforce)' F6 claude-pin pass /opt/mosaic-stack/claude-2.1.0/node_modules/@anthropic-ai/claude-code/bin/claude.exe prints '2.1.0 (Claude Code)' F7 pm-live pass one live launch: pm run r-0002 F8 credential-file pass /srv/mosaic/.config/mosaic-dev/secrets/claude-session.env is 'mosaic 600 regular file' F9 autoupdater-off pass /etc/claude-code/managed-settings.json is root:root 0644 with env.DISABLE_AUTOUPDATER "1" F10 node-pin pass /opt/mosaic-stack/node-v24.1.0/bin/node prints v24.1.0 F11 no-discord pass /srv/mosaic/.mosaic-dev/discord is absent P1 mosaic-sudo closed sudo -l: User mosaic is not allowed to run sudo on dev-53. P2 mosaic-groups-keys closed id -G is '997'; authorized_keys is absent P3 localadmin-sudo accepted Q183 sudo -l -U localadmin lists 1 NOPASSWD lines P4 pve-root-pbs accepted Q182+Q183 root on pve over VM 1008, and PBS backups that hold /srv/mosaic with the credential; this script can't see pve P5 jarvis-reach closed jarvis is in none of sudo, docker and lxd (groups: jarvis) P6 group-members closed sudo holds only localadmin, and docker and lxd have no members P7 sudoers-d closed no file under /etc/sudoers.d names mosaic P8 lan-listeners closed 732 is on 127.0.0.1 only by MainPID 200; no TCP listener on 7331 or 7333; tester uses /srv/mosaic/.mosaic-dev/console/tester.sock P9 bwrap-userns accepted mos-1096 hostcheck items 1-6 ok, jarvis is denied bwrap, and group mosaic has no other member P10 tester-socket-squat unnamed boundary=observed path=/srv/mosaic/.mosaic-dev/console/tester.sock parent=0700 owner=997 socket=0600 peer_pid=200 peer_uid=997 floor=1024 port=732; hostile same-uid substitution remains P11 hostcheck-before-bus closed mosaic-hostcheck.service is enabled, and its Before= names mosaic-bus@mosaic-stack.service count pass 11 count FAIL 0 count closed 7 count accepted Q182+Q183 1 count accepted Q183 1 count accepted mos-1096 1 count unnamed 1 case1-accept: every F check passes; send the whole output to Duckworth, and each unnamed line to Mos operator: 'match' stack: |- TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:285:12) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 6048.745901 TAP version 13 # Subtest: row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure not ok 1 - row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure --- duration_ms: 5389.801633 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:243:1' failureType: 'testCodeFailure' error: 'python-not-elf' code: 'ERR_ASSERTION' name: 'AssertionError' expected: actual: |- F1 units-user pass mosaic-bus@mosaic-stack.service and mosaic-webui.service are active as mosaic (uid 997) F2 console-loopback pass healthz answers, and 732 is bound to 127.0.0.1 only, by MainPID 200 F3 tester-reply pass chief replied to case1-accept-f40f86b17f1a F4 precheck pass case2-precheck.sh --profile factory exits 0 F5 bwrap-label pass bwrap 300 reads 'bwrap (enforce)' and its claude descendant 302 reads 'bwrap//&unpriv_bwrap (enforce)' F6 claude-pin pass /opt/mosaic-stack/claude-2.1.0/node_modules/@anthropic-ai/claude-code/bin/claude.exe prints '2.1.0 (Claude Code)' F7 pm-live pass one live launch: pm run r-0002 F8 credential-file pass /srv/mosaic/.config/mosaic-dev/secrets/claude-session.env is 'mosaic 600 regular file' F9 autoupdater-off pass /etc/claude-code/managed-settings.json is root:root 0644 with env.DISABLE_AUTOUPDATER "1" F10 node-pin pass /opt/mosaic-stack/node-v24.1.0/bin/node prints v24.1.0 F11 no-discord pass /srv/mosaic/.mosaic-dev/discord is absent P1 mosaic-sudo closed sudo -l: User mosaic is not allowed to run sudo on dev-53. P2 mosaic-groups-keys closed id -G is '997'; authorized_keys is absent P3 localadmin-sudo accepted Q183 sudo -l -U localadmin lists 1 NOPASSWD lines P4 pve-root-pbs accepted Q182+Q183 root on pve over VM 1008, and PBS backups that hold /srv/mosaic with the credential; this script can't see pve P5 jarvis-reach closed jarvis is in none of sudo, docker and lxd (groups: jarvis) P6 group-members closed sudo holds only localadmin, and docker and lxd have no members P7 sudoers-d closed no file under /etc/sudoers.d names mosaic P8 lan-listeners closed 732 is on 127.0.0.1 only by MainPID 200; no TCP listener on 7331 or 7333; tester uses /srv/mosaic/.mosaic-dev/console/tester.sock P9 bwrap-userns accepted mos-1096 hostcheck items 1-6 ok, jarvis is denied bwrap, and group mosaic has no other member P10 tester-socket-squat unnamed boundary=observed path=/srv/mosaic/.mosaic-dev/console/tester.sock parent=0700 owner=997 socket=0600 peer_pid=200 peer_uid=997 floor=1024 port=732; hostile same-uid substitution remains P11 hostcheck-before-bus closed mosaic-hostcheck.service is enabled, and its Before= names mosaic-bus@mosaic-stack.service count pass 11 count FAIL 0 count closed 7 count accepted Q182+Q183 1 count accepted Q183 1 count accepted mos-1096 1 count unnamed 1 case1-accept: every F check passes; send the whole output to Duckworth, and each unnamed line to Mos operator: 'match' stack: |- TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:285:12) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 5509.060831 TAP version 13 # Subtest: row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure not ok 1 - row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure --- duration_ms: 7538.836931 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:243:1' failureType: 'testCodeFailure' error: 'changed-inode' code: 'ERR_ASSERTION' name: 'AssertionError' expected: actual: |- F1 units-user pass mosaic-bus@mosaic-stack.service and mosaic-webui.service are active as mosaic (uid 997) F2 console-loopback pass healthz answers, and 732 is bound to 127.0.0.1 only, by MainPID 200 F3 tester-reply pass chief replied to case1-accept-080d8fbbd921 F4 precheck pass case2-precheck.sh --profile factory exits 0 F5 bwrap-label pass bwrap 300 reads 'bwrap (enforce)' and its claude descendant 302 reads 'bwrap//&unpriv_bwrap (enforce)' F6 claude-pin pass /opt/mosaic-stack/claude-2.1.0/node_modules/@anthropic-ai/claude-code/bin/claude.exe prints '2.1.0 (Claude Code)' F7 pm-live pass one live launch: pm run r-0002 F8 credential-file pass /srv/mosaic/.config/mosaic-dev/secrets/claude-session.env is 'mosaic 600 regular file' F9 autoupdater-off pass /etc/claude-code/managed-settings.json is root:root 0644 with env.DISABLE_AUTOUPDATER "1" F10 node-pin pass /opt/mosaic-stack/node-v24.1.0/bin/node prints v24.1.0 F11 no-discord pass /srv/mosaic/.mosaic-dev/discord is absent P1 mosaic-sudo closed sudo -l: User mosaic is not allowed to run sudo on dev-53. P2 mosaic-groups-keys closed id -G is '997'; authorized_keys is absent P3 localadmin-sudo accepted Q183 sudo -l -U localadmin lists 1 NOPASSWD lines P4 pve-root-pbs accepted Q182+Q183 root on pve over VM 1008, and PBS backups that hold /srv/mosaic with the credential; this script can't see pve P5 jarvis-reach closed jarvis is in none of sudo, docker and lxd (groups: jarvis) P6 group-members closed sudo holds only localadmin, and docker and lxd have no members P7 sudoers-d closed no file under /etc/sudoers.d names mosaic P8 lan-listeners closed 732 is on 127.0.0.1 only by MainPID 200; no TCP listener on 7331 or 7333; tester uses /srv/mosaic/.mosaic-dev/console/tester.sock P9 bwrap-userns accepted mos-1096 hostcheck items 1-6 ok, jarvis is denied bwrap, and group mosaic has no other member P10 tester-socket-squat unnamed boundary=observed path=/srv/mosaic/.mosaic-dev/console/tester.sock parent=0700 owner=997 socket=0600 peer_pid=200 peer_uid=997 floor=1024 port=732; hostile same-uid substitution remains P11 hostcheck-before-bus closed mosaic-hostcheck.service is enabled, and its Before= names mosaic-bus@mosaic-stack.service count pass 11 count FAIL 0 count closed 7 count accepted Q182+Q183 1 count accepted Q183 1 count accepted mos-1096 1 count unnamed 1 case1-accept: every F check passes; send the whole output to Duckworth, and each unnamed line to Mos operator: 'match' stack: |- TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:285:12) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 7636.996992 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: 268.249008 type: 'test' ... 1..1 # tests 1 # suites 0 # pass 1 # fail 0 # cancelled 0 # skipped 0 # todo 0 # duration_ms 371.08148 TAP version 13 # Subtest: row253 factory socket uses actual config and target-uid query without widening hardening not ok 1 - row253 factory socket uses actual config and target-uid query without widening hardening --- duration_ms: 46.796289 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:127:1' failureType: 'testCodeFailure' error: |- case2-unit: tester config query inner-command 1 !== 0 code: 'ERR_ASSERTION' name: 'AssertionError' expected: 0 actual: 1 operator: 'strictEqual' stack: |- TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:129:45) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 145.33847 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: 653.126932 type: 'test' ... 1..1 # tests 1 # suites 0 # pass 1 # fail 0 # cancelled 0 # skipped 0 # todo 0 # duration_ms 754.026959 TAP version 13 # Subtest: row253 socket observation uses configured root, metadata and the Console peer without sending bytes not ok 1 - row253 socket observation uses configured root, metadata and the Console peer without sending bytes --- duration_ms: 631.297602 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:230:1' failureType: 'testCodeFailure' error: |- The input did not match the regular expression /P10 tester-socket-squat unnamed boundary=observed path=\/srv\/mosaic\/custom-data\/console\/tester.sock/. Input: 'F1 units-user pass mosaic-bus@mosaic-stack.service and mosaic-webui.service are active as mosaic (uid 997)\n' + 'F2 console-loopback pass healthz answers, and 732 is bound to 127.0.0.1 only, by MainPID 200\n' + 'F3 tester-reply pass chief replied to case1-accept-47c5fcc9e673\n' + 'F4 precheck pass case2-precheck.sh --profile factory exits 0\n' + "F5 bwrap-label pass bwrap 300 reads 'bwrap (enforce)' and its claude descendant 302 reads 'bwrap//&unpriv_bwrap (enforce)'\n" + "F6 claude-pin pass /opt/mosaic-stack/claude-2.1.0/node_modules/@anthropic-ai/claude-code/bin/claude.exe prints '2.1.0 (Claude Code)'\n" + 'F7 pm-live pass one live launch: pm run r-0002\n' + "F8 credential-file pass /srv/mosaic/.config/mosaic-dev/secrets/claude-session.env is 'mosaic 600 regular file'\n" + 'F9 autoupdater-off pass /etc/claude-code/managed-settings.json is root:root 0644 with env.DISABLE_AUTOUPDATER "1"\n' + 'F10 node-pin pass /opt/mosaic-stack/node-v24.1.0/bin/node prints v24.1.0\n' + 'F11 no-discord pass /srv/mosaic/.mosaic-dev/discord is absent\n' + 'P1 mosaic-sudo closed sudo -l: User mosaic is not allowed to run sudo on dev-53.\n' + "P2 mosaic-groups-keys closed id -G is '997'; authorized_keys is absent\n" + 'P3 localadmin-sudo accepted Q183 sudo -l -U localadmin lists 1 NOPASSWD lines\n' + "P4 pve-root-pbs accepted Q182+Q183 root on pve over VM 1008, and PBS backups that hold /srv/mosaic with the credential; this script can't see pve\n" + 'P5 jarvis-reach closed jarvis is in none of sudo, docker and lxd (groups: jarvis)\n' + 'P6 group-members closed sudo holds only localadmin, and docker and lxd have no members\n' + 'P7 sudoers-d closed no file under /etc/sudoers.d names mosaic\n' + 'P8 lan-listeners closed 732 is on 127.0.0.1 only by MainPID 200; no TCP listener on 7331 or 7333; tester uses /srv/mosaic/custom-data/console/tester.sock\n' + 'P9 bwrap-userns accepted mos-1096 hostcheck items 1-6 ok, jarvis is denied bwrap, and group mosaic has no other member\n' + 'P10 tester-socket-squat unnamed boundary=failed reason=probe-inner-command path=/srv/mosaic/custom-data/console/tester.sock MainPID=200; hostile same-uid substitution remains\n' + 'P11 hostcheck-before-bus closed mosaic-hostcheck.service is enabled, and its Before= names mosaic-bus@mosaic-stack.service\n' + 'count pass 11\n' + 'count FAIL 0\n' + 'count closed 7\n' + 'count accepted Q182+Q183 1\n' + 'count accepted Q183 1\n' + 'count accepted mos-1096 1\n' + 'count unnamed 1\n' + 'case1-accept: every F check passes; send the whole output to Duckworth, and each unnamed line to Mos\n' code: 'ERR_ASSERTION' name: 'AssertionError' expected: actual: |- F1 units-user pass mosaic-bus@mosaic-stack.service and mosaic-webui.service are active as mosaic (uid 997) F2 console-loopback pass healthz answers, and 732 is bound to 127.0.0.1 only, by MainPID 200 F3 tester-reply pass chief replied to case1-accept-47c5fcc9e673 F4 precheck pass case2-precheck.sh --profile factory exits 0 F5 bwrap-label pass bwrap 300 reads 'bwrap (enforce)' and its claude descendant 302 reads 'bwrap//&unpriv_bwrap (enforce)' F6 claude-pin pass /opt/mosaic-stack/claude-2.1.0/node_modules/@anthropic-ai/claude-code/bin/claude.exe prints '2.1.0 (Claude Code)' F7 pm-live pass one live launch: pm run r-0002 F8 credential-file pass /srv/mosaic/.config/mosaic-dev/secrets/claude-session.env is 'mosaic 600 regular file' F9 autoupdater-off pass /etc/claude-code/managed-settings.json is root:root 0644 with env.DISABLE_AUTOUPDATER "1" F10 node-pin pass /opt/mosaic-stack/node-v24.1.0/bin/node prints v24.1.0 F11 no-discord pass /srv/mosaic/.mosaic-dev/discord is absent P1 mosaic-sudo closed sudo -l: User mosaic is not allowed to run sudo on dev-53. P2 mosaic-groups-keys closed id -G is '997'; authorized_keys is absent P3 localadmin-sudo accepted Q183 sudo -l -U localadmin lists 1 NOPASSWD lines P4 pve-root-pbs accepted Q182+Q183 root on pve over VM 1008, and PBS backups that hold /srv/mosaic with the credential; this script can't see pve P5 jarvis-reach closed jarvis is in none of sudo, docker and lxd (groups: jarvis) P6 group-members closed sudo holds only localadmin, and docker and lxd have no members P7 sudoers-d closed no file under /etc/sudoers.d names mosaic P8 lan-listeners closed 732 is on 127.0.0.1 only by MainPID 200; no TCP listener on 7331 or 7333; tester uses /srv/mosaic/custom-data/console/tester.sock P9 bwrap-userns accepted mos-1096 hostcheck items 1-6 ok, jarvis is denied bwrap, and group mosaic has no other member P10 tester-socket-squat unnamed boundary=failed reason=probe-inner-command path=/srv/mosaic/custom-data/console/tester.sock MainPID=200; hostile same-uid substitution remains P11 hostcheck-before-bus closed mosaic-hostcheck.service is enabled, and its Before= names mosaic-bus@mosaic-stack.service count pass 11 count FAIL 0 count closed 7 count accepted Q182+Q183 1 count accepted Q183 1 count accepted mos-1096 1 count unnamed 1 case1-accept: every F check passes; send the whole output to Duckworth, and each unnamed line to Mos operator: 'match' stack: |- TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:236:10) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 747.586346 TAP version 13 # Subtest: row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure not ok 1 - row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure --- duration_ms: 9313.890743 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:243:1' failureType: 'testCodeFailure' error: 'floor' code: 'ERR_ASSERTION' name: 'AssertionError' expected: actual: |- F1 units-user pass mosaic-bus@mosaic-stack.service and mosaic-webui.service are active as mosaic (uid 997) F2 console-loopback pass healthz answers, and 732 is bound to 127.0.0.1 only, by MainPID 200 F3 tester-reply pass chief replied to case1-accept-d9c440459ee0 F4 precheck pass case2-precheck.sh --profile factory exits 0 F5 bwrap-label pass bwrap 300 reads 'bwrap (enforce)' and its claude descendant 302 reads 'bwrap//&unpriv_bwrap (enforce)' F6 claude-pin pass /opt/mosaic-stack/claude-2.1.0/node_modules/@anthropic-ai/claude-code/bin/claude.exe prints '2.1.0 (Claude Code)' F7 pm-live pass one live launch: pm run r-0002 F8 credential-file pass /srv/mosaic/.config/mosaic-dev/secrets/claude-session.env is 'mosaic 600 regular file' F9 autoupdater-off pass /etc/claude-code/managed-settings.json is root:root 0644 with env.DISABLE_AUTOUPDATER "1" F10 node-pin pass /opt/mosaic-stack/node-v24.1.0/bin/node prints v24.1.0 F11 no-discord pass /srv/mosaic/.mosaic-dev/discord is absent P1 mosaic-sudo closed sudo -l: User mosaic is not allowed to run sudo on dev-53. P2 mosaic-groups-keys closed id -G is '997'; authorized_keys is absent P3 localadmin-sudo accepted Q183 sudo -l -U localadmin lists 1 NOPASSWD lines P4 pve-root-pbs accepted Q182+Q183 root on pve over VM 1008, and PBS backups that hold /srv/mosaic with the credential; this script can't see pve P5 jarvis-reach closed jarvis is in none of sudo, docker and lxd (groups: jarvis) P6 group-members closed sudo holds only localadmin, and docker and lxd have no members P7 sudoers-d closed no file under /etc/sudoers.d names mosaic P8 lan-listeners closed 732 is on 127.0.0.1 only by MainPID 200; no TCP listener on 7331 or 7333; tester uses /srv/mosaic/.mosaic-dev/console/tester.sock P9 bwrap-userns accepted mos-1096 hostcheck items 1-6 ok, jarvis is denied bwrap, and group mosaic has no other member P10 tester-socket-squat unnamed boundary=observed path=/srv/mosaic/.mosaic-dev/console/tester.sock parent=0700 owner=997 socket=0600 peer_pid=200 peer_uid=997 floor=700 port=732; hostile same-uid substitution remains P11 hostcheck-before-bus closed mosaic-hostcheck.service is enabled, and its Before= names mosaic-bus@mosaic-stack.service count pass 11 count FAIL 0 count closed 7 count accepted Q182+Q183 1 count accepted Q183 1 count accepted mos-1096 1 count unnamed 1 case1-accept: every F check passes; send the whole output to Duckworth, and each unnamed line to Mos operator: 'match' stack: |- TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:285:12) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 9425.03257 TAP version 13 # Subtest: row253 socket observation uses configured root, metadata and the Console peer without sending bytes not ok 1 - row253 socket observation uses configured root, metadata and the Console peer without sending bytes --- duration_ms: 648.640138 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:230:1' failureType: 'testCodeFailure' error: |- The input did not match the regular expression /P10 tester-socket-squat unnamed boundary=observed path=\/srv\/mosaic\/custom-data\/console\/tester.sock/. Input: 'F1 units-user pass mosaic-bus@mosaic-stack.service and mosaic-webui.service are active as mosaic (uid 997)\n' + 'F2 console-loopback pass healthz answers, and 732 is bound to 127.0.0.1 only, by MainPID 200\n' + 'F3 tester-reply pass chief replied to case1-accept-50162f7ce92b\n' + 'F4 precheck pass case2-precheck.sh --profile factory exits 0\n' + "F5 bwrap-label pass bwrap 300 reads 'bwrap (enforce)' and its claude descendant 302 reads 'bwrap//&unpriv_bwrap (enforce)'\n" + "F6 claude-pin pass /opt/mosaic-stack/claude-2.1.0/node_modules/@anthropic-ai/claude-code/bin/claude.exe prints '2.1.0 (Claude Code)'\n" + 'F7 pm-live pass one live launch: pm run r-0002\n' + "F8 credential-file pass /srv/mosaic/.config/mosaic-dev/secrets/claude-session.env is 'mosaic 600 regular file'\n" + 'F9 autoupdater-off pass /etc/claude-code/managed-settings.json is root:root 0644 with env.DISABLE_AUTOUPDATER "1"\n' + 'F10 node-pin pass /opt/mosaic-stack/node-v24.1.0/bin/node prints v24.1.0\n' + 'F11 no-discord pass /srv/mosaic/.mosaic-dev/discord is absent\n' + 'P1 mosaic-sudo closed sudo -l: User mosaic is not allowed to run sudo on dev-53.\n' + "P2 mosaic-groups-keys closed id -G is '997'; authorized_keys is absent\n" + 'P3 localadmin-sudo accepted Q183 sudo -l -U localadmin lists 1 NOPASSWD lines\n' + "P4 pve-root-pbs accepted Q182+Q183 root on pve over VM 1008, and PBS backups that hold /srv/mosaic with the credential; this script can't see pve\n" + 'P5 jarvis-reach closed jarvis is in none of sudo, docker and lxd (groups: jarvis)\n' + 'P6 group-members closed sudo holds only localadmin, and docker and lxd have no members\n' + 'P7 sudoers-d closed no file under /etc/sudoers.d names mosaic\n' + 'P8 lan-listeners closed 732 is on 127.0.0.1 only by MainPID 200; no TCP listener on 7331 or 7333; tester uses /srv/mosaic/custom-data/console/tester.sock\n' + 'P9 bwrap-userns accepted mos-1096 hostcheck items 1-6 ok, jarvis is denied bwrap, and group mosaic has no other member\n' + 'P10 tester-socket-squat unnamed boundary=failed reason=peer path=/srv/mosaic/custom-data/console/tester.sock MainPID=200; hostile same-uid substitution remains\n' + 'P11 hostcheck-before-bus closed mosaic-hostcheck.service is enabled, and its Before= names mosaic-bus@mosaic-stack.service\n' + 'count pass 11\n' + 'count FAIL 0\n' + 'count closed 7\n' + 'count accepted Q182+Q183 1\n' + 'count accepted Q183 1\n' + 'count accepted mos-1096 1\n' + 'count unnamed 1\n' + 'case1-accept: every F check passes; send the whole output to Duckworth, and each unnamed line to Mos\n' code: 'ERR_ASSERTION' name: 'AssertionError' expected: actual: |- F1 units-user pass mosaic-bus@mosaic-stack.service and mosaic-webui.service are active as mosaic (uid 997) F2 console-loopback pass healthz answers, and 732 is bound to 127.0.0.1 only, by MainPID 200 F3 tester-reply pass chief replied to case1-accept-50162f7ce92b F4 precheck pass case2-precheck.sh --profile factory exits 0 F5 bwrap-label pass bwrap 300 reads 'bwrap (enforce)' and its claude descendant 302 reads 'bwrap//&unpriv_bwrap (enforce)' F6 claude-pin pass /opt/mosaic-stack/claude-2.1.0/node_modules/@anthropic-ai/claude-code/bin/claude.exe prints '2.1.0 (Claude Code)' F7 pm-live pass one live launch: pm run r-0002 F8 credential-file pass /srv/mosaic/.config/mosaic-dev/secrets/claude-session.env is 'mosaic 600 regular file' F9 autoupdater-off pass /etc/claude-code/managed-settings.json is root:root 0644 with env.DISABLE_AUTOUPDATER "1" F10 node-pin pass /opt/mosaic-stack/node-v24.1.0/bin/node prints v24.1.0 F11 no-discord pass /srv/mosaic/.mosaic-dev/discord is absent P1 mosaic-sudo closed sudo -l: User mosaic is not allowed to run sudo on dev-53. P2 mosaic-groups-keys closed id -G is '997'; authorized_keys is absent P3 localadmin-sudo accepted Q183 sudo -l -U localadmin lists 1 NOPASSWD lines P4 pve-root-pbs accepted Q182+Q183 root on pve over VM 1008, and PBS backups that hold /srv/mosaic with the credential; this script can't see pve P5 jarvis-reach closed jarvis is in none of sudo, docker and lxd (groups: jarvis) P6 group-members closed sudo holds only localadmin, and docker and lxd have no members P7 sudoers-d closed no file under /etc/sudoers.d names mosaic P8 lan-listeners closed 732 is on 127.0.0.1 only by MainPID 200; no TCP listener on 7331 or 7333; tester uses /srv/mosaic/custom-data/console/tester.sock P9 bwrap-userns accepted mos-1096 hostcheck items 1-6 ok, jarvis is denied bwrap, and group mosaic has no other member P10 tester-socket-squat unnamed boundary=failed reason=peer path=/srv/mosaic/custom-data/console/tester.sock MainPID=200; hostile same-uid substitution remains P11 hostcheck-before-bus closed mosaic-hostcheck.service is enabled, and its Before= names mosaic-bus@mosaic-stack.service count pass 11 count FAIL 0 count closed 7 count accepted Q182+Q183 1 count accepted Q183 1 count accepted mos-1096 1 count unnamed 1 case1-accept: every F check passes; send the whole output to Duckworth, and each unnamed line to Mos operator: 'match' stack: |- TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:236:10) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 750.668044 TAP version 13 # Subtest: row253 installer refuses unsafe location and query facts before unit writes not ok 1 - row253 installer refuses unsafe location and query facts before unit writes --- duration_ms: 2045.041668 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:136:1' failureType: 'testCodeFailure' error: |- The input did not match the regular expression /symlink/. Input: 'case2-unit: tester path refuses parent-mode\n' code: 'ERR_ASSERTION' name: 'AssertionError' expected: actual: |- case2-unit: tester path refuses parent-mode operator: 'match' stack: |- refuses (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:291:10) TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:159:39) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 2151.181923 TAP version 13 # Subtest: row253 installer refuses unsafe location and query facts before unit writes not ok 1 - row253 installer refuses unsafe location and query facts before unit writes --- duration_ms: 1575.770124 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:136:1' failureType: 'testCodeFailure' error: |- expected a refusal, got 0: case2-unit: wrote /mnt/storage/scratch/tmp/ggIX/case2-unit-L1eHav/units/mosaic-bus@.service and /mnt/storage/scratch/tmp/ggIX/case2-unit-L1eHav/units/mosaic-webui.service from copy aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; enabled and started mosaic-bus@acme.service, then mosaic-webui.service 0 !== 1 code: 'ERR_ASSERTION' name: 'AssertionError' expected: 1 actual: 0 operator: 'strictEqual' stack: |- refuses (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:290:10) TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:159:39) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 1695.091688 TAP version 13 # Subtest: row253 installer refuses unsafe location and query facts before unit writes not ok 1 - row253 installer refuses unsafe location and query facts before unit writes --- duration_ms: 463.603906 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:136:1' failureType: 'testCodeFailure' error: |- expected a refusal, got 0: case2-unit: wrote /mnt/storage/scratch/tmp/ggIX/case2-unit-PKRuDo/units/mosaic-bus@.service and /mnt/storage/scratch/tmp/ggIX/case2-unit-PKRuDo/units/mosaic-webui.service from copy aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; enabled and started mosaic-bus@acme.service, then mosaic-webui.service 0 !== 1 code: 'ERR_ASSERTION' name: 'AssertionError' expected: 1 actual: 0 operator: 'strictEqual' stack: |- refuses (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:290:10) TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:159:39) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 575.826816 TAP version 13 # Subtest: row253 config parser is strict ok 1 - row253 config parser is strict --- duration_ms: 10.325806 type: 'test' ... 1..1 # tests 1 # suites 0 # pass 1 # fail 0 # cancelled 0 # skipped 0 # todo 0 # duration_ms 120.206068 TAP version 13 # Subtest: row253 config parser is strict not ok 1 - row253 config parser is strict --- duration_ms: 5.7354 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:278:1' failureType: 'testCodeFailure' error: '{"dataRoot":"/srv/mosaic/data","socket":true,"extra":1}' code: 'ERR_ASSERTION' name: 'AssertionError' expected: 0 actual: 0 operator: 'notStrictEqual' stack: |- TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:285:10) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 125.248267 TAP version 13 # Subtest: row253 C4 overflow is output-limit in both sudo modes ok 1 - row253 C4 overflow is output-limit in both sudo modes --- duration_ms: 404.833659 type: 'test' ... 1..1 # tests 1 # suites 0 # pass 1 # fail 0 # cancelled 0 # skipped 0 # todo 0 # duration_ms 510.402888 TAP version 13 # Subtest: row253 C4 overflow is output-limit in both sudo modes not ok 1 - row253 C4 overflow is output-limit in both sudo modes --- duration_ms: 269.330003 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:209:1' failureType: 'testCodeFailure' error: |- The input did not match the regular expression /^case2-unit: tester config query output-limit\n$/. Input: 'case2-unit: tester config query has invalid facts\n' code: 'ERR_ASSERTION' name: 'AssertionError' expected: actual: |- case2-unit: tester config query has invalid facts operator: 'match' stack: |- refuses (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:291:10) TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:213:49) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 405.778963 TAP version 13 # Subtest: row253 query reaps its group even when a child closes stdout before the query returns ok 1 - row253 query reaps its group even when a child closes stdout before the query returns --- duration_ms: 146.064927 type: 'test' ... 1..1 # tests 1 # suites 0 # pass 1 # fail 0 # cancelled 0 # skipped 0 # todo 0 # duration_ms 277.124911 TAP version 13 # Subtest: row253 query reaps its group even when a child closes stdout before the query returns not ok 1 - row253 query reaps its group even when a child closes stdout before the query returns --- duration_ms: 660.489201 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:261:1' failureType: 'testCodeFailure' error: 'query descendant 209075 still S' code: 'ERR_ASSERTION' name: 'AssertionError' expected: true actual: false operator: '==' stack: |- TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:275:9) async Test.run (node:internal/test_runner/test:1409:7) async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 779.534955 TAP version 13 # Subtest: row253 C4 signals query has exact inner reason and cleans all members ok 1 - row253 C4 signals query has exact inner reason and cleans all members --- duration_ms: 10642.70426 type: 'test' ... 1..1 # tests 1 # suites 0 # pass 1 # fail 0 # cancelled 0 # skipped 0 # todo 0 # duration_ms 10757.91059 TAP version 13 # Subtest: row253 C4 signals query has exact inner reason and cleans all members not ok 1 - row253 C4 signals query has exact inner reason and cleans all members --- duration_ms: 7066.781868 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:192:49' failureType: 'testCodeFailure' error: |- The input did not match the regular expression /^case2-unit: tester config query inner-timeout\n$/. Input: 'case2-unit: tester config query outer-timeout\n' code: 'ERR_ASSERTION' name: 'AssertionError' expected: actual: |- case2-unit: tester config query outer-timeout operator: 'match' stack: |- refuses (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:291:10) TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:201:3) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 7215.071658 TAP version 13 # Subtest: row253 C4 stalled supervisor uses the outer reason and explicit residual cleanup ok 1 - row253 C4 stalled supervisor uses the outer reason and explicit residual cleanup --- duration_ms: 14136.252555 type: 'test' ... 1..1 # tests 1 # suites 0 # pass 1 # fail 0 # cancelled 0 # skipped 0 # todo 0 # duration_ms 14251.027092 TAP version 13 # Subtest: row253 C4 stalled supervisor uses the outer reason and explicit residual cleanup not ok 1 - row253 C4 stalled supervisor uses the outer reason and explicit residual cleanup --- duration_ms: 9543.34275 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:219:1' failureType: 'testCodeFailure' error: |- The input did not match the regular expression /^case2-unit: tester config query outer-timeout\n$/. Input: 'case2-unit: tester config query inner-command\n' code: 'ERR_ASSERTION' name: 'AssertionError' expected: actual: |- case2-unit: tester config query inner-command operator: 'match' stack: |- refuses (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:291:10) TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:225:3) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 9656.017669 TAP version 13 # Subtest: row253 C4 member query has exact inner reason and cleans all members ok 1 - row253 C4 member query has exact inner reason and cleans all members --- duration_ms: 10600.701408 type: 'test' ... 1..1 # tests 1 # suites 0 # pass 1 # fail 0 # cancelled 0 # skipped 0 # todo 0 # duration_ms 10705.864328 TAP version 13 # Subtest: row253 C4 member query has exact inner reason and cleans all members not ok 1 - row253 C4 member query has exact inner reason and cleans all members --- duration_ms: 7064.199845 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:192:49' failureType: 'testCodeFailure' error: |- The input did not match the regular expression /^case2-unit: tester config query inner-timeout\n$/. Input: 'case2-unit: tester config query outer-timeout\n' code: 'ERR_ASSERTION' name: 'AssertionError' expected: actual: |- case2-unit: tester config query outer-timeout operator: 'match' stack: |- refuses (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:291:10) TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:201:3) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 7176.731621 TAP version 13 # Subtest: row253 C4 overflow is output-limit in both sudo modes not ok 1 - row253 C4 overflow is output-limit in both sudo modes --- duration_ms: 190.301376 type: 'test' location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:209:1' failureType: 'testCodeFailure' error: |- The input did not match the regular expression /^case2-unit: tester config query output-limit\n$/. Input: 'case2-unit: tester config query has invalid facts\n' code: 'ERR_ASSERTION' name: 'AssertionError' expected: actual: |- case2-unit: tester config query has invalid facts operator: 'match' stack: |- refuses (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:291:10) TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:213:49) Test.runInAsyncScope (node:async_hooks:226:14) Test.run (node:internal/test_runner/test:1402:25) Test.start (node:internal/test_runner/test:1262:17) startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) ... 1..1 # tests 1 # suites 0 # pass 0 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 300.234096 TAP version 13 # Subtest: row253 C4 signals query has exact inner reason and cleans all members ok 1 - row253 C4 signals query has exact inner reason and cleans all members --- duration_ms: 10141.877013 type: 'test' ... 1..1 # tests 1 # suites 0 # pass 1 # fail 0 # cancelled 0 # skipped 0 # todo 0 # duration_ms 10255.703881 Traceback (most recent call last): File "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-253/driver.py", line 114, in main() File "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-253/driver.py", line 110, in main raise RuntimeError('first unexpected failure: end the sage-2297 window') RuntimeError: first unexpected failure: end the sage-2297 window