From 4cd7d3e4fea34894dbacc5dbdb331bbb283cddae Mon Sep 17 00:00:00 2001 From: Danyang Chen Date: Tue, 3 Nov 2026 13:22:50 +0800 Subject: [PATCH 1/2] board: a read-only window draws no task-board write (#2248) Replayed onto main 03a1253 (#2262/#2263): regenerate core/client.js and patches/ds-bot/0008-client-bundle.patch + files/ from the merged sources, keeping #2262's overlay-hooks/dialog-focus bundle changes. --- changelog.d/2248-readonly-task-board.fixed.md | 1 + core-test.log | 9629 +++++++++++++++++ core/client.js | 30 +- core/src/client/kanban.js | 32 +- core/test/kanban.test.js | 75 +- docs/subsystems/core-client.md | 2 +- patches/ds-bot/0008-client-bundle.patch | 32 +- patches/ds-bot/files/src/client/kanban.js | 32 +- patches/ds-bot/files/test/kanban.test.js | 75 +- 9 files changed, 9852 insertions(+), 56 deletions(-) create mode 100644 changelog.d/2248-readonly-task-board.fixed.md create mode 100644 core-test.log diff --git a/changelog.d/2248-readonly-task-board.fixed.md b/changelog.d/2248-readonly-task-board.fixed.md new file mode 100644 index 000000000..1a456c1fd --- /dev/null +++ b/changelog.d/2248-readonly-task-board.fixed.md @@ -0,0 +1 @@ +A read-only FlyBot window no longer draws the task-board writes the host would refuse — the **Add task** form, **Start**, **Complete** and card dragging — and a drop on a column no longer sends a move; the rail, the three columns, the cards and the Done stamps stay readable ([#2248](https://github.com/ThinkFlowLab/FlyBot/issues/2248)). diff --git a/core-test.log b/core-test.log new file mode 100644 index 000000000..3e2974b7a --- /dev/null +++ b/core-test.log @@ -0,0 +1,9629 @@ +TAP version 13 +# Subtest: the page points at FlyBot: star, source code, release notes and the underlying harness +ok 1 - the page points at FlyBot: star, source code, release notes and the underlying harness + --- + duration_ms: 6.004756 + type: 'test' + ... +# Subtest: the version line adds the branch and commit of a git install, and stays plain without them +ok 2 - the version line adds the branch and commit of a git install, and stays plain without them + --- + duration_ms: 1.528299 + type: 'test' + ... +# Subtest: a git install that follows a branch says how it is updated, and how far behind it is once checked +ok 3 - a git install that follows a branch says how it is updated, and how far behind it is once checked + --- + duration_ms: 32.69084 + type: 'test' + ... +# Subtest: an install pinned to a commit shows the short commit, no branch, and says it is pinned (\#379) +ok 4 - an install pinned to a commit shows the short commit, no branch, and says it is pinned (\#379) + --- + duration_ms: 0.930584 + type: 'test' + ... +# Subtest: the new About wording has zh copy +ok 5 - the new About wording has zh copy + --- + duration_ms: 2.000052 + type: 'test' + ... +# node:internal/modules/cjs/loader:1430 +# const err = new Error(message); +# ^ +# Error: Cannot find module 'jsdom' +# Require stack: +# - /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Function._resolveFilename (node:internal/modules/cjs/loader:1430:15) +# at defaultResolveImpl (node:internal/modules/cjs/loader:1040:19) +# at defaultResolve (node:internal/modules/cjs/loader:1075:31) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:46:12) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) +# at resolveForCJSWithHooks (node:internal/modules/cjs/loader:1084:25) +# at Function._load (node:internal/modules/cjs/loader:1216:25) +# at wrapModuleLoad (node:internal/modules/cjs/loader:254:19) { +# code: 'MODULE_NOT_FOUND', +# requireStack: [ +# '/data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json' +# ] +# } +# Node.js v22.23.3 +# Subtest: test/activity-row-host.test.js +not ok 2 - test/activity-row-host.test.js + --- + duration_ms: 68.048648 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/activity-row-host.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: indexRoster indexes agents by id and by Session +ok 7 - indexRoster indexes agents by id and by Session + --- + duration_ms: 2.7154 + type: 'test' + ... +# Subtest: a roster without agents still answers the index reads +ok 8 - a roster without agents still answers the index reads + --- + duration_ms: 0.308318 + type: 'test' + ... +# Subtest: isAgentSession follows the roster first, the cache before it is ready +ok 9 - isAgentSession follows the roster first, the cache before it is ready + --- + duration_ms: 0.354419 + type: 'test' + ... +# Subtest: the plain flag maps to the mounted groups +ok 10 - the plain flag maps to the mounted groups + --- + duration_ms: 0.789711 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/agents.test.js +not ok 4 - test/agents.test.js + --- + duration_ms: 195.220701 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/agents.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/api-route.test.js +not ok 5 - test/api-route.test.js + --- + duration_ms: 112.188125 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/api-route.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/approval-binding.test.js +not ok 6 - test/approval-binding.test.js + --- + duration_ms: 204.323437 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/approval-binding.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/approval-notices.test.js +not ok 7 - test/approval-notices.test.js + --- + duration_ms: 140.336445 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/approval-notices.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: \#734: an approval is waiting for `pending` and `pending_approval`, and nothing else +ok 15 - \#734: an approval is waiting for `pending` and `pending_approval`, and nothing else + --- + duration_ms: 2.498885 + type: 'test' + ... +# Subtest: \#734: the held-reply card draws Approve and Reject for both waiting spellings only +ok 16 - \#734: the held-reply card draws Approve and Reject for both waiting spellings only + --- + duration_ms: 18.362237 + type: 'test' + ... +# Subtest: \#734: the dock card offers Approve and Reject for a `pending_approval` hold, not for a settled one +ok 17 - \#734: the dock card offers Approve and Reject for a `pending_approval` hold, not for a settled one + --- + duration_ms: 16.410116 + type: 'test' + ... +# Subtest: \#734: both call sites ask the shared predicate instead of comparing a literal status +ok 18 - \#734: both call sites ask the shared predicate instead of comparing a literal status + --- + duration_ms: 1.074098 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/archive-bot.test.js +not ok 9 - test/archive-bot.test.js + --- + duration_ms: 200.789015 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/archive-bot.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-session-reference' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/at-menu.test.js +not ok 10 - test/at-menu.test.js + --- + duration_ms: 85.836629 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/at-menu.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/authz.test.js +not ok 11 - test/authz.test.js + --- + duration_ms: 101.338182 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/authz.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/automation-default.test.js +not ok 12 - test/automation-default.test.js + --- + duration_ms: 193.287421 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/automation-default.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/blocking-question.test.js +not ok 13 - test/blocking-question.test.js + --- + duration_ms: 198.015064 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/blocking-question.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: a task card keeps its own id +ok 24 - a task card keeps its own id + --- + duration_ms: 1.399607 + type: 'test' + ... +# Subtest: the task card draws with the task skin and its identity +ok 25 - the task card draws with the task skin and its identity + --- + duration_ms: 0.873203 + type: 'test' + ... +# Subtest: each Bot gets its own partition, and only the shown tab is visible +ok 26 - each Bot gets its own partition, and only the shown tab is visible + --- + duration_ms: 5.489703 + type: 'test' + ... +# Subtest: a dragged panel moves the shown guest at once and the hidden ones after it settles +ok 27 - a dragged panel moves the shown guest at once and the hidden ones after it settles + --- + duration_ms: 263.497934 + type: 'test' + ... +# Subtest: openTab activates the new tab; closing the active one activates a neighbor +ok 28 - openTab activates the new tab; closing the active one activates a neighbor + --- + duration_ms: 2.132085 + type: 'test' + ... +# Subtest: a navigation before the guest is ready waits for dom-ready, and the address is saved +ok 29 - a navigation before the guest is ready waits for dom-ready, and the address is saved + --- + duration_ms: 4.22889 + type: 'test' + ... +# Subtest: the v1 one-page store migrates to one tab per Bot +ok 30 - the v1 one-page store migrates to one tab per Bot + --- + duration_ms: 1.028967 + type: 'test' + ... +# Subtest: a read reaches the Bot’s active tab +ok 31 - a read reaches the Bot’s active tab + --- + duration_ms: 1.903019 + type: 'test' + ... +# Subtest: a page that asks for a new window opens a new tab in the same Bot +ok 32 - a page that asks for a new window opens a new tab in the same Bot + --- + duration_ms: 6.636042 + type: 'test' + ... +# Subtest: past six live guests the least recently shown one is released; forget drops all of a Bot’s tabs +ok 33 - past six live guests the least recently shown one is released; forget drops all of a Bot’s tabs + --- + duration_ms: 3.209334 + type: 'test' + ... +# Subtest: retain forgets Bots that are gone, saved tabs included +ok 34 - retain forgets Bots that are gone, saved tabs included + --- + duration_ms: 1.875929 + type: 'test' + ... +# Subtest: a settled page leaves a text excerpt, shown or hidden, and no tab is ever captured +ok 35 - a settled page leaves a text excerpt, shown or hidden, and no tab is ever captured + --- + duration_ms: 34.214688 + type: 'test' + ... +# Subtest: serveBrowserReads answers each request once and re-polls when the open pages change +ok 36 - serveBrowserReads answers each request once and re-polls when the open pages change + --- + duration_ms: 4.299472 + type: 'test' + ... +# [ds-bot] browser result Error: offline +# at post (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/bot-browsers.test.js:328:42) +# at answer (file:///data/dsh/bot/workspace/replay-2261/merged/core/src/client/bot-browsers.js:499:11) +# Subtest: serveBrowserReads answers a resend from the cache when the first submit failed +ok 37 - serveBrowserReads answers a resend from the cache when the first submit failed + --- + duration_ms: 3.10361 + type: 'test' + ... +# Subtest: browserAddress opens hosts over https, local addresses over http, and searches the rest +ok 38 - browserAddress opens hosts over https, local addresses over http, and searches the rest + --- + duration_ms: 0.870982 + type: 'test' + ... +# Subtest: the page reader is one valid expression +ok 39 - the page reader is one valid expression + --- + duration_ms: 1.247242 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/bot-messages.test.js +not ok 16 - test/bot-messages.test.js + --- + duration_ms: 198.963388 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/bot-messages.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: \#366: a Bot row's hover title names the model it runs on +ok 41 - \#366: a Bot row's hover title names the model it runs on + --- + duration_ms: 1.55406 + type: 'test' + ... +# Subtest: \#366: the model a row names is the served name of the chosen model, else the one it last ran on +ok 42 - \#366: the model a row names is the served name of the chosen model, else the one it last ran on + --- + duration_ms: 1.298534 + type: 'test' + ... +# Subtest: \#366: every own Bot row (the tree draws the same row) takes that title; a friend's Bot keeps its own +ok 43 - \#366: every own Bot row (the tree draws the same row) takes that title; a friend's Bot keeps its own + --- + duration_ms: 2.512136 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/bot-tasks.test.js +not ok 18 - test/bot-tasks.test.js + --- + duration_ms: 196.010482 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/bot-tasks.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# flybot: menuItems failed Error: x +# at Object.menuItems (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/bot-tree.test.js:61:59) +# at pluginItems (file:///data/dsh/bot/workspace/replay-2261/merged/core/src/client/flybot-registry.js:212:27) +# at TestContext. (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/bot-tree.test.js:61:20) +# at async Test.run (node:internal/test_runner/test:1054:7) +# at async Test.processPendingSubtests (node:internal/test_runner/test:744:7) +# Subtest: botTree: Chief is the root; Bots without a known parent go under it; cycles are broken +ok 45 - botTree: Chief is the root; Bots without a known parent go under it; cycles are broken + --- + duration_ms: 3.389388 + type: 'test' + ... +# Subtest: sidebar tree toggle is a 28px hit target with a 16px chevron, hover, and focus ring +ok 46 - sidebar tree toggle is a 28px hit target with a 16px chevron, hover, and focus ring + --- + duration_ms: 2.557316 + type: 'test' + ... +# Subtest: sidebar Bot rows show a wait badge when pendingCount is set +ok 47 - sidebar Bot rows show a wait badge when pendingCount is set + --- + duration_ms: 2.007882 + type: 'test' + ... +# Subtest: sidebar tree draws the structure entry's nodeActions after each row +ok 48 - sidebar tree draws the structure entry's nodeActions after each row + --- + duration_ms: 0.943184 + type: 'test' + ... +# Subtest: row context menu renders the structure entry's menuItems +ok 49 - row context menu renders the structure entry's menuItems + --- + duration_ms: 2.568957 + type: 'test' + ... +# Subtest: \#2238: the row-menu contract carries the window's read-only flag +ok 50 - \#2238: the row-menu contract carries the window's read-only flag + --- + duration_ms: 1.397906 + type: 'test' + ... +# Subtest: sidebar brand is FlyBot with the FlyBot mark, not the whale +ok 51 - sidebar brand is FlyBot with the FlyBot mark, not the whale + --- + duration_ms: 3.903562 + type: 'test' + ... +# Subtest: Chinese copy maps FlyBot chrome, not DS Bot +ok 52 - Chinese copy maps FlyBot chrome, not DS Bot + --- + duration_ms: 0.336048 + type: 'test' + ... +# Subtest: FlyBot mark SVG matches the docs logo; tab title and favicon follow +ok 53 - FlyBot mark SVG matches the docs logo; tab title and favicon follow + --- + duration_ms: 1.079948 + type: 'test' + ... +# Subtest: \#250: an ended face-to-face room says closed in the tab instead of listing its members +ok 54 - \#250: an ended face-to-face room says closed in the tab instead of listing its members + --- + duration_ms: 1.723565 + type: 'test' + ... +# Subtest: \#1102: a live face-room tab leads with the number so both names stay in the title +ok 55 - \#1102: a live face-room tab leads with the number so both names stay in the title + --- + duration_ms: 0.358909 + type: 'test' + ... +# Subtest: \#173: the tab title follows a room the roster learns after it opened +ok 56 - \#173: the tab title follows a room the roster learns after it opened + --- + duration_ms: 0.527373 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-tools' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/browser-channel.test.js +not ok 21 - test/browser-channel.test.js + --- + duration_ms: 106.473315 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/browser-channel.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/busy-ack-arrival.test.js +not ok 22 - test/busy-ack-arrival.test.js + --- + duration_ms: 82.192905 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/busy-ack-arrival.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: pendingBusyPlacement is true for queued or steering submissions +ok 59 - pendingBusyPlacement is true for queued or steering submissions + --- + duration_ms: 1.736305 + type: 'test' + ... +# Subtest: busyAckVisible prefers host or pending ack and hides once spoken text streams +ok 60 - busyAckVisible prefers host or pending ack and hides once spoken text streams + --- + duration_ms: 0.356579 + type: 'test' + ... +# Subtest: \#1656: while the host ack is pending there is no text at all, and the host line shows when it lands +ok 61 - \#1656: while the host ack is pending there is no text at all, and the host line shows when it lands + --- + duration_ms: 0.508833 + type: 'test' + ... +# Subtest: \#1656: the canned sentence is not shipped anywhere in the client +ok 62 - \#1656: the canned sentence is not shipped anywhere in the client + --- + duration_ms: 16.004565 + type: 'test' + ... +# Subtest: a room ack is the running member's, keyed by the member the host noted (\#1646) +ok 63 - a room ack is the running member's, keyed by the member the host noted (\#1646) + --- + duration_ms: 1.670063 + type: 'test' + ... +# Subtest: a room ack shows its line, or the blinking dots while the person's line is still queued (\#1646) +ok 64 - a room ack shows its line, or the blinking dots while the person's line is still queued (\#1646) + --- + duration_ms: 0.320618 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/busy-ack-ledger.test.js +not ok 24 - test/busy-ack-ledger.test.js + --- + duration_ms: 86.670012 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/busy-ack-ledger.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/busy-ack.test.js +not ok 25 - test/busy-ack.test.js + --- + duration_ms: 97.01761 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/busy-ack.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/capabilities.test.js +not ok 26 - test/capabilities.test.js + --- + duration_ms: 198.201438 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/capabilities.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: parseOwnedPaths reads front-matter +ok 68 - parseOwnedPaths reads front-matter + --- + duration_ms: 3.222974 + type: 'test' + ... +# Subtest: pathMatchesOwned directory and exact +ok 69 - pathMatchesOwned directory and exact + --- + duration_ms: 0.505023 + type: 'test' + ... +# Subtest: loadSubsystemMap loads docs dir +ok 70 - loadSubsystemMap loads docs dir + --- + duration_ms: 9.391694 + type: 'test' + ... +# Subtest: empty diff passes +not ok 71 - empty diff passes + --- + duration_ms: 2.788712 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/check-arch-docs.test.js:39:1' + failureType: 'testCodeFailure' + error: 'cannot diff against HEAD' + code: 'ERR_TEST_FAILURE' + stack: |- + assertBaseRef (file:///data/dsh/bot/workspace/replay-2261/merged/core/scripts/check-arch-docs.mjs:81:11) + filesNeedDocs (file:///data/dsh/bot/workspace/replay-2261/merged/core/scripts/check-arch-docs.mjs:111:3) + TestContext. (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/check-arch-docs.test.js:41:13) + async Test.run (node:internal/test_runner/test:1054:7) + async Test.processPendingSubtests (node:internal/test_runner/test:744:7) + ... +# Subtest: invalid base ref fails closed +ok 72 - invalid base ref fails closed + --- + duration_ms: 3.886571 + type: 'test' + ... +# Subtest: \#1076: the refusal names both places the trailer has to appear +ok 73 - \#1076: the refusal names both places the trailer has to appear + --- + duration_ms: 0.878663 + type: 'test' + ... +# Subtest: the gate never runs git through a shell +not ok 74 - the gate never runs git through a shell + --- + duration_ms: 54.841064 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/check-arch-docs.test.js:73:1' + failureType: 'testCodeFailure' + error: "ENOENT: no such file or directory, open '/tmp/arch-shell-GBKx75/parent.txt'" + code: 'ENOENT' + stack: |- + readFileSync (node:fs:440:20) + TestContext. (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/check-arch-docs.test.js:111:18) + Test.runInAsyncScope (node:async_hooks:214:14) + Test.run (node:internal/test_runner/test:1047:25) + Test.processPendingSubtests (node:internal/test_runner/test:744:18) + Test.postRun (node:internal/test_runner/test:1173:19) + Test.run (node:internal/test_runner/test:1101:12) + async Test.processPendingSubtests (node:internal/test_runner/test:744:7) + ... +# Subtest: every repo path named in inline code on the root READMEs exists on disk +ok 75 - every repo path named in inline code on the root READMEs exists on disk + --- + duration_ms: 4.61906 + type: 'test' + ... +# Subtest: the tokenizer skips refs, URLs, globs, placeholders, npm scopes and absolute paths, and names a miss +ok 76 - the tokenizer skips refs, URLs, globs, placeholders, npm scopes and absolute paths, and names a miss + --- + duration_ms: 1.510469 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/claim-cue.test.js +not ok 29 - test/claim-cue.test.js + --- + duration_ms: 202.247553 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/claim-cue.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: client apply declares roster before effects that read it +ok 78 - client apply declares roster before effects that read it + --- + duration_ms: 1.685583 + type: 'test' + ... +# Subtest: client.js is the build of src/client +ok 79 - client.js is the build of src/client + --- + duration_ms: 209.576044 + type: 'test' + ... +# Subtest: client.js registers a factory that exports apply and inject +ok 80 - client.js registers a factory that exports apply and inject + --- + duration_ms: 160.91926 + type: 'test' + ... +# node:internal/modules/cjs/loader:1430 +# const err = new Error(message); +# ^ +# Error: Cannot find module 'jsdom' +# Require stack: +# - /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Function._resolveFilename (node:internal/modules/cjs/loader:1430:15) +# at defaultResolveImpl (node:internal/modules/cjs/loader:1040:19) +# at defaultResolve (node:internal/modules/cjs/loader:1075:31) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:46:12) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) +# at resolveForCJSWithHooks (node:internal/modules/cjs/loader:1084:25) +# at Function._load (node:internal/modules/cjs/loader:1216:25) +# at wrapModuleLoad (node:internal/modules/cjs/loader:254:19) { +# code: 'MODULE_NOT_FOUND', +# requireStack: [ +# '/data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json' +# ] +# } +# Node.js v22.23.3 +# Subtest: test/composer-label.test.js +not ok 32 - test/composer-label.test.js + --- + duration_ms: 65.785209 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/composer-label.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/connector-access.test.js +not ok 33 - test/connector-access.test.js + --- + duration_ms: 261.01487 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/connector-access.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: the picker shows the picked apps with their status, and a search box instead of a typed list +ok 83 - the picker shows the picked apps with their status, and a search box instead of a typed list + --- + duration_ms: 5.77745 + type: 'test' + ... +# Subtest: search results from Composio replace the common apps; an app it found is added by its slug +ok 84 - search results from Composio replace the common apps; an app it found is added by its slug + --- + duration_ms: 0.747269 + type: 'test' + ... +# Subtest: without a key to search with, or when the search fails, the common apps are searched by name +ok 85 - without a key to search with, or when the search fails, the common apps are searched by name + --- + duration_ms: 0.723179 + type: 'test' + ... +# Subtest: the connected row lists each picked app as ready or needing a sign-in, and nothing before Composio answers +ok 86 - the connected row lists each picked app as ready or needing a sign-in, and nothing before Composio answers + --- + duration_ms: 0.931724 + type: 'test' + ... +# Subtest: the owner switches only their own local Bots; on is the default, and only an explicit off reads as off +ok 87 - the owner switches only their own local Bots; on is the default, and only an explicit off reads as off + --- + duration_ms: 3.605383 + type: 'test' + ... +# Subtest: \#601: Bot settings show one switch per connected connector, also on a shared Bot +ok 88 - \#601: Bot settings show one switch per connected connector, also on a shared Bot + --- + duration_ms: 2.71057 + type: 'test' + ... +# Subtest: Bot settings show no Connectors card until a connector is connected +ok 89 - Bot settings show no Connectors card until a connector is connected + --- + duration_ms: 0.320679 + type: 'test' + ... +# Subtest: \#601: Connectors page: a summary line and one switch per Bot +ok 90 - \#601: Connectors page: a summary line and one switch per Bot + --- + duration_ms: 1.487888 + type: 'test' + ... +# Subtest: the connector switch and its host messages have zh copy +ok 91 - the connector switch and its host messages have zh copy + --- + duration_ms: 0.41774 + type: 'test' + ... +# Subtest: \#2027: Copy error hands the full stored text to the clipboard, then reads Copied +ok 92 - \#2027: Copy error hands the full stored text to the clipboard, then reads Copied + --- + duration_ms: 8.764418 + type: 'test' + ... +# Subtest: \#2027: no clipboard and a refused write both read Could not copy the error, never Copied +ok 93 - \#2027: no clipboard and a refused write both read Could not copy the error, never Copied + --- + duration_ms: 2.981047 + type: 'test' + ... +# Subtest: \#2027: only an error row offers Copy error; ready and off keep their own actions +ok 94 - \#2027: only an error row offers Copy error; ready and off keep their own actions + --- + duration_ms: 1.859378 + type: 'test' + ... +# Subtest: \#2027: both new labels speak Chinese too +ok 95 - \#2027: both new labels speak Chinese too + --- + duration_ms: 0.522104 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/connectors.test.js +not ok 37 - test/connectors.test.js + --- + duration_ms: 260.107666 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/connectors.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/constants.test.js +not ok 38 - test/constants.test.js + --- + duration_ms: 254.09549 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/constants.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/context-sharing.test.js +not ok 39 - test/context-sharing.test.js + --- + duration_ms: 236.581835 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/context-sharing.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: the form starts on the Main Bot's model, then the DSH default, then the first served one (\#230) +ok 99 - the form starts on the Main Bot's model, then the DSH default, then the first served one (\#230) + --- + duration_ms: 1.991012 + type: 'test' + ... +# Subtest: without a Main Bot the form starts on the DSH default model, else the first served one +ok 100 - without a Main Bot the form starts on the DSH default model, else the first served one + --- + duration_ms: 0.473083 + type: 'test' + ... +# Subtest: the payload carries the look and the chosen model, and never a brief (\#645) +ok 101 - the payload carries the look and the chosen model, and never a brief (\#645) + --- + duration_ms: 1.345945 + type: 'test' + ... +# Subtest: the suggested name skips taken names +ok 102 - the suggested name skips taken names + --- + duration_ms: 0.40545 + type: 'test' + ... +# Subtest: a failed first send still opens the new Bot and shows the failure +ok 103 - a failed first send still opens the new Bot and shows the failure + --- + duration_ms: 1.286013 + type: 'test' + ... +# Subtest: the new Bot is opened even when the composer had nothing typed, and a sent line reports nothing +ok 104 - the new Bot is opened even when the composer had nothing typed, and a sent line reports nothing + --- + duration_ms: 0.531713 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/dead-turn.test.js +not ok 41 - test/dead-turn.test.js + --- + duration_ms: 218.704721 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/dead-turn.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/decisions.test.js +not ok 42 - test/decisions.test.js + --- + duration_ms: 203.852835 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/decisions.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/delivery-write-failure.test.js +not ok 43 - test/delivery-write-failure.test.js + --- + duration_ms: 201.565106 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/delivery-write-failure.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/details-copy.test.js +not ok 44 - test/details-copy.test.js + --- + duration_ms: 82.548545 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/details-copy.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/diagnostics.test.js +not ok 45 - test/diagnostics.test.js + --- + duration_ms: 124.120895 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/diagnostics.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: the Settings dialog is a focus target: tabIndex -1 on the dialog container +ok 110 - the Settings dialog is a focus target: tabIndex -1 on the dialog container + --- + duration_ms: 27.496305 + type: 'test' + ... +# Subtest: opening moves focus into the dialog and closing gives it back to the still-connected opener +ok 111 - opening moves focus into the dialog and closing gives it back to the still-connected opener + --- + duration_ms: 5.550544 + type: 'test' + ... +# Subtest: the dialog keeps its role, aria-modal, aria-label and data-wide contract +ok 112 - the dialog keeps its role, aria-modal, aria-label and data-wide contract + --- + duration_ms: 11.467338 + type: 'test' + ... +# Subtest: an npm DSH shows the row while the verified version differs from the running one +ok 113 - an npm DSH shows the row while the verified version differs from the running one + --- + duration_ms: 1.93738 + type: 'test' + ... +# Subtest: a packaged app shows the row only when its own updater found the verified version +ok 114 - a packaged app shows the row only when its own updater found the verified version + --- + duration_ms: 0.425011 + type: 'test' + ... +# Subtest: a packaged app without a verified version shows nothing, whatever its updater found +ok 115 - a packaged app without a verified version shows nothing, whatever its updater found + --- + duration_ms: 0.263437 + type: 'test' + ... +# Subtest: sameVersion ignores a leading v and build metadata, and never matches an empty version +ok 116 - sameVersion ignores a leading v and build metadata, and never matches an empty version + --- + duration_ms: 0.297098 + type: 'test' + ... +# Subtest: the harness pin is the version every other copy must equal +ok 117 - the harness pin is the version every other copy must equal + --- + duration_ms: 1.834007 + type: 'test' + ... +# Subtest: the CI workflows install the pinned DSH, and the PR gate keeps its required job name +ok 118 - the CI workflows install the pinned DSH, and the PR gate keeps its required job name + --- + duration_ms: 1.052447 + type: 'test' + ... +# Subtest: the install help and the local CI install the pinned DSH +ok 119 - the install help and the local CI install the pinned DSH + --- + duration_ms: 0.656237 + type: 'test' + ... +# Subtest: every npx command in the READMEs runs the pinned DSH +ok 120 - every npx command in the READMEs runs the pinned DSH + --- + duration_ms: 1.690544 + type: 'test' + ... +# Subtest: the docs that tell people which DSH to run name the pinned version +ok 121 - the docs that tell people which DSH to run name the pinned version + --- + duration_ms: 0.964515 + type: 'test' + ... +# Subtest: the newest released bot declares the verified DSH, offered to an older npm install +ok 122 - the newest released bot declares the verified DSH, offered to an older npm install + --- + duration_ms: 7.444843 + type: 'test' + ... +# Subtest: a verified version older than the running one is still offered, for a broken release +ok 123 - a verified version older than the running one is still offered, for a broken release + --- + duration_ms: 1.336565 + type: 'test' + ... +# Subtest: without any verified version nothing is offered +ok 124 - without any verified version nothing is offered + --- + duration_ms: 1.091448 + type: 'test' + ... +# Subtest: the running version matching the verified one offers nothing +ok 125 - the running version matching the verified one offers nothing + --- + duration_ms: 2.476354 + type: 'test' + ... +# Subtest: a minBot newer than the running bot gates the DSH update until the bot goes first +ok 126 - a minBot newer than the running bot gates the DSH update until the bot goes first + --- + duration_ms: 2.223398 + type: 'test' + ... +# Subtest: a git or local install asks the public repo's latest release for its declaration +ok 127 - a git or local install asks the public repo's latest release for its declaration + --- + duration_ms: 10.609966 + type: 'test' + ... +# Subtest: a bundled package manager means the app owns the runtime: report only, never install +ok 128 - a bundled package manager means the app owns the runtime: report only, never install + --- + duration_ms: 1.271143 + type: 'test' + ... +# Subtest: without a running version there is nothing to compare against +ok 129 - without a running version there is nothing to compare against + --- + duration_ms: 1.507199 + type: 'test' + ... +# Subtest: a failed npm install reports why and can be tried again +ok 130 - a failed npm install reports why and can be tried again + --- + duration_ms: 2.104424 + type: 'test' + ... +# Subtest: P-393: a reaction picked on a message loaded from an earlier part is stored under that message +ok 131 - P-393: a reaction picked on a message loaded from an earlier part is stored under that message + --- + duration_ms: 43.849139 + type: 'test' + ... +# Subtest: P-393: the reply button on a message from an earlier part quotes it into the open chat +ok 132 - P-393: the reply button on a message from an earlier part quotes it into the open chat + --- + duration_ms: 3.07603 + type: 'test' + ... +# Subtest: P-393: a bubble in the current part keeps its own key and its own reply target +ok 133 - P-393: a bubble in the current part keeps its own key and its own reply target + --- + duration_ms: 2.072413 + type: 'test' + ... +# Subtest: \#2123: a message with no text paints no row at all — no avatar, no bubble +ok 134 - \#2123: a message with no text paints no row at all — no avatar, no bubble + --- + duration_ms: 2.552796 + type: 'test' + ... +# Subtest: \#2123: a group chat draws no row for an empty Bot line, and one for the same line with text +ok 135 - \#2123: a group chat draws no row for an empty Bot line, and one for the same line with text + --- + duration_ms: 2.484044 + type: 'test' + ... +# Subtest: \#2123: a friend's line with no text keeps its files and draws no empty bubble +ok 136 - \#2123: a friend's line with no text keeps its files and draws no empty bubble + --- + duration_ms: 2.540176 + type: 'test' + ... +# Subtest: check: must, mustNot and order, with a string as a case-insensitive substring +ok 137 - check: must, mustNot and order, with a string as a case-insensitive substring + --- + duration_ms: 3.410618 + type: 'test' + ... +# Subtest: specs are well formed and lookable up +ok 138 - specs are well formed and lookable up + --- + duration_ms: 0.40829 + type: 'test' + ... +# Subtest: run scores a text against a spec and records the grader hash +ok 139 - run scores a text against a spec and records the grader hash + --- + duration_ms: 3.09981 + type: 'test' + ... +# Subtest: parseVerdict reads a judge answer and rejects a malformed one +ok 140 - parseVerdict reads a judge answer and rejects a malformed one + --- + duration_ms: 0.637907 + type: 'test' + ... +# Subtest: grade: the deterministic check gates; the judge can only tighten +ok 141 - grade: the deterministic check gates; the judge can only tighten + --- + duration_ms: 1.576771 + type: 'test' + ... +# Subtest: judgePrompt names the journey and the checklist +ok 142 - judgePrompt names the journey and the checklist + --- + duration_ms: 0.345509 + type: 'test' + ... +# Subtest: guard: a touched grader file is not unchanged +ok 143 - guard: a touched grader file is not unchanged + --- + duration_ms: 1.575441 + type: 'test' + ... +# Subtest: exchangeText reads a stored line: no trace, no fence, and the paragraph breaks stay +ok 144 - exchangeText reads a stored line: no trace, no fence, and the paragraph breaks stay + --- + duration_ms: 107.644706 + type: 'test' + ... +# Subtest: the row shows the words, and the copy path copies exactly what it shows +ok 145 - the row shows the words, and the copy path copies exactly what it shows + --- + duration_ms: 44.136926 + type: 'test' + ... +# Subtest: lookup reads only the asked repo and never another repo directory +ok 146 - lookup reads only the asked repo and never another repo directory + --- + duration_ms: 14.592209 + type: 'test' + ... +# Subtest: a corrupt entry outside the asked scope is not read +ok 147 - a corrupt entry outside the asked scope is not read + --- + duration_ms: 3.623384 + type: 'test' + ... +# Subtest: lookup rejects a scope that would leave the root +ok 148 - lookup rejects a scope that would leave the root + --- + duration_ms: 2.070894 + type: 'test' + ... +# Subtest: check fails closed when a file disagrees with its directory +ok 149 - check fails closed when a file disagrees with its directory + --- + duration_ms: 4.115437 + type: 'test' + ... +# Subtest: a shared stack file that names a repo fails the check +ok 150 - a shared stack file that names a repo fails the check + --- + duration_ms: 2.962197 + type: 'test' + ... +# Subtest: the committed library isolates ThinkFlowLab/FlyBot from the shared node-host stack +ok 151 - the committed library isolates ThinkFlowLab/FlyBot from the shared node-host stack + --- + duration_ms: 2.409062 + type: 'test' + ... +# Subtest: harnessExperience is a read hook and leaves tiers unchanged +ok 152 - harnessExperience is a read hook and leaves tiers unchanged + --- + duration_ms: 2.539566 + type: 'test' + ... +# Subtest: the CLI writes one new entry file and refuses to overwrite it +ok 153 - the CLI writes one new entry file and refuses to overwrite it + --- + duration_ms: 259.659705 + type: 'test' + ... +# Subtest: the experience text bound counts code points, not UTF-16 units +ok 154 - the experience text bound counts code points, not UTF-16 units + --- + duration_ms: 3.384008 + type: 'test' + ... +# Subtest: \#305: a face room's "@" hides the shell's Session rows and their section titles, files and Bots stay +ok 155 - \#305: a face room's "@" hides the shell's Session rows and their section titles, files and Bots stay + --- + duration_ms: 3.405889 + type: 'test' + ... +# Subtest: \#305: the highlight never rests on a hidden Session row, whichever way the keys move +ok 156 - \#305: the highlight never rests on a hidden Session row, whichever way the keys move + --- + duration_ms: 0.737779 + type: 'test' + ... +# Subtest: \#305: a face-room menu with nothing but Session rows is out of view and dismissed, so Enter sends +ok 157 - \#305: a face-room menu with nothing but Session rows is out of view and dismissed, so Enter sends + --- + duration_ms: 0.751659 + type: 'test' + ... +# Subtest: \#305: the watcher styles the open menu, steers the highlight, dismisses, and cleans up +ok 158 - \#305: the watcher styles the open menu, steers the highlight, dismisses, and cleans up + --- + duration_ms: 1.766246 + type: 'test' + ... +# Subtest: a role label another home set is cut at 80 without splitting an emoji +ok 159 - a role label another home set is cut at 80 without splitting an emoji + --- + duration_ms: 1.601821 + type: 'test' + ... +# Subtest: \#1104: SelfA1025 and SelfB1025 share an initial, so a letter mark cannot tell the homes apart +ok 160 - \#1104: SelfA1025 and SelfB1025 share an initial, so a letter mark cannot tell the homes apart + --- + duration_ms: 3.652505 + type: 'test' + ... +# Subtest: \#1104: member rows draw each home's chat look, not the same initial +ok 161 - \#1104: member rows draw each home's chat look, not the same initial + --- + duration_ms: 5.534214 + type: 'test' + ... +# Subtest: \#1104: a seat with no stored look still draws a seeded character (\#1089) +ok 162 - \#1104: a seat with no stored look still draws a seeded character (\#1089) + --- + duration_ms: 2.519686 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/face-mentions.test.js +not ok 58 - test/face-mentions.test.js + --- + duration_ms: 112.067261 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/face-mentions.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: another person's face-room line is their own received bubble with name and person mark +ok 164 - another person's face-room line is their own received bubble with name and person mark + --- + duration_ms: 46.185359 + type: 'test' + ... +# Subtest: a shared room's subtitle counts remote Bots that are still in the room +ok 165 - a shared room's subtitle counts remote Bots that are still in the room + --- + duration_ms: 0.761639 + type: 'test' + ... +# Subtest: a face room lists people, each with the Bot they brought, named one way +ok 166 - a face room lists people, each with the Bot they brought, named one way + --- + duration_ms: 2.453353 + type: 'test' + ... +# Subtest: \#306: a face room counts people and Bots, not an ambiguous "members" +ok 167 - \#306: a face room counts people and Bots, not an ambiguous "members" + --- + duration_ms: 2.127885 + type: 'test' + ... +# Subtest: another home member's line shows their person mark and a received surface +ok 168 - another home member's line shows their person mark and a received surface + --- + duration_ms: 16.819597 + type: 'test' + ... +# Subtest: \#455: a line a running round already showed draws no second bubble, and a person's line keeps its line breaks +ok 169 - \#455: a line a running round already showed draws no second bubble, and a person's line keeps its line breaks + --- + duration_ms: 106.335962 + type: 'test' + ... +# Subtest: one entry per person, mine first, "(you)" only on the person, count = people +ok 170 - one entry per person, mine first, "(you)" only on the person, count = people + --- + duration_ms: 9.533798 + type: 'test' + ... +# Subtest: my own Bot reads "Chief (SelfB0056)" in the room, a plain name elsewhere +ok 171 - my own Bot reads "Chief (SelfB0056)" in the room, a plain name elsewhere + --- + duration_ms: 0.828951 + type: 'test' + ... +# Subtest: a sent mention stays bound to the Bot it named after that person leaves +ok 172 - a sent mention stays bound to the Bot it named after that person leaves + --- + duration_ms: 4.800274 + type: 'test' + ... +# Subtest: a Bot bubble header in a face room is "Bot (Person)", no handle and no lowercase id +ok 173 - a Bot bubble header in a face room is "Bot (Person)", no handle and no lowercase id + --- + duration_ms: 2.931786 + type: 'test' + ... +# Subtest: my own face-room line keeps one colour and has my name and person mark +ok 174 - my own face-room line keeps one colour and has my name and person mark + --- + duration_ms: 2.467095 + type: 'test' + ... +# Subtest: \#458: a face-room sidebar row leads with its number, so a cut title never hides it +ok 175 - \#458: a face-room sidebar row leads with its number, so a cut title never hides it + --- + duration_ms: 4.417615 + type: 'test' + ... +# Subtest: \#1102: a face-room row wraps its number-first title, and the session breadcrumb wraps too +ok 176 - \#1102: a face-room row wraps its number-first title, and the session breadcrumb wraps too + --- + duration_ms: 2.107995 + type: 'test' + ... +# Subtest: \#458: a face room's turns never take over its Bots' sidebar preview; other groups still show +ok 177 - \#458: a face room's turns never take over its Bots' sidebar preview; other groups still show + --- + duration_ms: 1.908639 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/feishu-channel.test.js +not ok 62 - test/feishu-channel.test.js + --- + duration_ms: 259.694726 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/feishu-channel.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: a replayed event_id starts one turn, and the second one says duplicate (\#1266) +ok 179 - a replayed event_id starts one turn, and the second one says duplicate (\#1266) + --- + duration_ms: 4.321972 + type: 'test' + ... +# Subtest: a ring this size still forgets the oldest id, so a fresh event is not refused (\#1266) +ok 180 - a ring this size still forgets the oldest id, so a fresh event is not refused (\#1266) + --- + duration_ms: 23.631464 + type: 'test' + ... +# Subtest: a message from anyone but the owner starts no turn (\#1266) +ok 181 - a message from anyone but the owner starts no turn (\#1266) + --- + duration_ms: 0.616336 + type: 'test' + ... +# Subtest: no owner and no open_id never compare equal (\#1266) +ok 182 - no owner and no open_id never compare equal (\#1266) + --- + duration_ms: 0.563104 + type: 'test' + ... +# Subtest: switched off, it dials nothing at all (\#1266) +ok 183 - switched off, it dials nothing at all (\#1266) + --- + duration_ms: 0.838122 + type: 'test' + ... +# Subtest: a failed connect is one redacted line in the row, not a thrown start (\#1266) +ok 184 - a failed connect is one redacted line in the row, not a thrown start (\#1266) + --- + duration_ms: 0.625876 + type: 'test' + ... +# Subtest: one socket per connector: a second start while it dials shares the first (\#1266) +ok 185 - one socket per connector: a second start while it dials shares the first (\#1266) + --- + duration_ms: 0.534474 + type: 'test' + ... +# Subtest: an event that is not a text message is logged and starts nothing (\#1266) +ok 186 - an event that is not a text message is logged and starts nothing (\#1266) + --- + duration_ms: 0.692188 + type: 'test' + ... +# Subtest: a text message drops the mention placeholders and names the chat after the conversation (\#1266) +ok 187 - a text message drops the mention placeholders and names the chat after the conversation (\#1266) + --- + duration_ms: 2.035773 + type: 'test' + ... +# Subtest: readEvent reads only the envelope phase 2 means to accept (\#1266) +ok 188 - readEvent reads only the envelope phase 2 means to accept (\#1266) + --- + duration_ms: 2.123715 + type: 'test' + ... +# Subtest: the app pair is one credential: it is the record's id and the saved secret, either half missing dials nothing (\#1266) +ok 189 - the app pair is one credential: it is the record's id and the saved secret, either half missing dials nothing (\#1266) + --- + duration_ms: 0.622646 + type: 'test' + ... +# Subtest: the view never carries either half of the app pair (\#1266) +ok 190 - the view never carries either half of the app pair (\#1266) + --- + duration_ms: 0.563084 + type: 'test' + ... +# Subtest: with no socket adapter installed it says so instead of pretending (\#1266) +ok 191 - with no socket adapter installed it says so instead of pretending (\#1266) + --- + duration_ms: 0.284867 + type: 'test' + ... +# Subtest: an adapter installed after the first start is the one the next start dials (\#1266) +ok 192 - an adapter installed after the first start is the one the next start dials (\#1266) + --- + duration_ms: 0.435351 + type: 'test' + ... +# Subtest: a stop while the socket dials hangs up the one that arrives and never reports ready (\#1266) +ok 193 - a stop while the socket dials hangs up the one that arrives and never reports ready (\#1266) + --- + duration_ms: 0.510283 + type: 'test' + ... +# Subtest: a message whose delivery throws is handed over again, not remembered as handled (\#1266) +ok 194 - a message whose delivery throws is handed over again, not remembered as handled (\#1266) + --- + duration_ms: 1.337445 + type: 'test' + ... +# Subtest: two copies of one event arriving together still start one turn (\#1266) +ok 195 - two copies of one event arriving together still start one turn (\#1266) + --- + duration_ms: 0.506393 + type: 'test' + ... +# Subtest: a sender the row allowed starts a turn; one it did not is refused (\#1266) +ok 196 - a sender the row allowed starts a turn; one it did not is refused (\#1266) + --- + duration_ms: 0.507473 + type: 'test' + ... +# Subtest: the refused list is one row per sender, bounded, and an allowed sender leaves it (\#1266) +ok 197 - the refused list is one row per sender, bounded, and an allowed sender leaves it (\#1266) + --- + duration_ms: 1.428507 + type: 'test' + ... +# Subtest: the SDK is imported at dial time, and its flattened event reaches the policy as Feishu sends it (\#1266) +ok 198 - the SDK is imported at dial time, and its flattened event reaches the policy as Feishu sends it (\#1266) + --- + duration_ms: 3.622724 + type: 'test' + ... +# Subtest: a package that is not installed is one readable line, not a stack (\#1266) +ok 199 - a package that is not installed is one readable line, not a stack (\#1266) + --- + duration_ms: 0.935515 + type: 'test' + ... +# Subtest: with no app pair saved nothing is imported and nothing dials (\#1266) +ok 200 - with no app pair saved nothing is imported and nothing dials (\#1266) + --- + duration_ms: 0.416371 + type: 'test' + ... +# Subtest: a socket that reports an error ends the start with that error (\#1266) +ok 201 - a socket that reports an error ends the start with that error (\#1266) + --- + duration_ms: 0.732799 + type: 'test' + ... +# Subtest: a socket that never opens is given up at the deadline instead of hanging the start (\#1266) +ok 202 - a socket that never opens is given up at the deadline instead of hanging the start (\#1266) + --- + duration_ms: 10.187645 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/feishu.test.js +not ok 65 - test/feishu.test.js + --- + duration_ms: 228.243378 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/feishu.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/fence-property.test.js +not ok 66 - test/fence-property.test.js + --- + duration_ms: 81.707193 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/fence-property.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/fence.test.js +not ok 67 - test/fence.test.js + --- + duration_ms: 76.082646 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/fence.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: the client registry orders entries, replaces by id, and notifies +ok 206 - the client registry orders entries, replaces by id, and notifies + --- + duration_ms: 3.85894 + type: 'test' + ... +# Subtest: new-chat action rows sit after New group chat and skip a failing plugin +ok 207 - new-chat action rows sit after New group chat and skip a failing plugin + --- + duration_ms: 0.935334 + type: 'test' + ... +# Subtest: mention candidates come from every plugin and one failing source is skipped +ok 208 - mention candidates come from every plugin and one failing source is skipped + --- + duration_ms: 0.641627 + type: 'test' + ... +# Subtest: the browser flybot service lists Bots and turns host changes into field events +ok 209 - the browser flybot service lists Bots and turns host changes into field events + --- + duration_ms: 1.318764 + type: 'test' + ... +# Subtest: remote members: @ rows insert the one name, the sidebar groups by home, bubbles show the fenced words +ok 210 - remote members: @ rows insert the one name, the sidebar groups by home, bubbles show the fenced words + --- + duration_ms: 15.741459 + type: 'test' + ... +# Subtest: every client bundle registers under its package name, as the DSH module loader looks it up +ok 211 - every client bundle registers under its package name, as the DSH module loader looks it up + --- + duration_ms: 11.199801 + type: 'test' + ... +# Subtest: field events keep flowing after a host restart (\#18) +ok 212 - field events keep flowing after a host restart (\#18) + --- + duration_ms: 11.970451 + type: 'test' + ... +# Subtest: client UI (\#19): every plugin slot renders inside an error boundary; approval copy is translated; the stack scrolls +ok 213 - client UI (\#19): every plugin slot renders inside an error boundary; approval copy is translated; the stack scrolls + --- + duration_ms: 1.288563 + type: 'test' + ... +# Subtest: the sidebar footer button opens Settings > Connectors as "Connect apps" +ok 214 - the sidebar footer button opens Settings > Connectors as "Connect apps" + --- + duration_ms: 2.270498 + type: 'test' + ... +# Subtest: the account menu keeps a Plugins row that opens the shell plugin panel +ok 215 - the account menu keeps a Plugins row that opens the shell plugin panel + --- + duration_ms: 2.117315 + type: 'test' + ... +# Subtest: the account menu names each destination as it is named elsewhere (\#392, \#393, \#394) +ok 216 - the account menu names each destination as it is named elsewhere (\#392, \#393, \#394) + --- + duration_ms: 1.960701 + type: 'test' + ... +# Subtest: a face-room sidebar row shows its full title on hover (\#304, \#1102) +ok 217 - a face-room sidebar row shows its full title on hover (\#304, \#1102) + --- + duration_ms: 3.932713 + type: 'test' + ... +# Subtest: a friend's Bot sidebar row is its one name, "Chief (Bob)", on one line, with a second line like own rows (\#384, \#498) +ok 218 - a friend's Bot sidebar row is its one name, "Chief (Bob)", on one line, with a second line like own rows (\#384, \#498) + --- + duration_ms: 3.140712 + type: 'test' + ... +# Subtest: a friend's Bot picked from the @ menu reads as its one name in the menu, the bubble and the preview (\#967) +ok 219 - a friend's Bot picked from the @ menu reads as its one name in the menu, the bubble and the preview (\#967) + --- + duration_ms: 57.814622 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/flybot-feed.test.js +not ok 69 - test/flybot-feed.test.js + --- + duration_ms: 216.022302 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/flybot-feed.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: \#818: the slot host leaves the wrapper empty for a section that renders null +ok 221 - \#818: the slot host leaves the wrapper empty for a section that renders null + --- + duration_ms: 11.52846 + type: 'test' + ... +# Subtest: \#818: an empty wrapper draws no separator, and a section with content keeps it +ok 222 - \#818: an empty wrapper draws no separator, and a section with content keeps it + --- + duration_ms: 4.288992 + type: 'test' + ... +# Subtest: \#818: the host still draws a wrapper for a section that has rows +ok 223 - \#818: the host still draws a wrapper for a section that has rows + --- + duration_ms: 2.517296 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/flybot.test.js +not ok 71 - test/flybot.test.js + --- + duration_ms: 263.486144 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/flybot.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/follow-through.test.js +not ok 72 - test/follow-through.test.js + --- + duration_ms: 213.872205 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/follow-through.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/fresh-part-model.test.js +not ok 73 - test/fresh-part-model.test.js + --- + duration_ms: 87.518794 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/fresh-part-model.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/friend-chat-awaiting.test.js +not ok 74 - test/friend-chat-awaiting.test.js + --- + duration_ms: 141.864895 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/friend-chat-awaiting.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: a friend's Bot reply carries its mark beside the bubble, the look its sidebar row shows +ok 228 - a friend's Bot reply carries its mark beside the bubble, the look its sidebar row shows + --- + duration_ms: 3.870591 + type: 'test' + ... +# Subtest: my own Bot's chat and a Not sent note have no friend mark +ok 229 - my own Bot's chat and a Not sent note have no friend mark + --- + duration_ms: 0.526483 + type: 'test' + ... +# Subtest: \#420: a friend's line in a Bot's chat that is not open marks that Bot unread once +ok 230 - \#420: a friend's line in a Bot's chat that is not open marks that Bot unread once + --- + duration_ms: 2.554347 + type: 'test' + ... +# Subtest: \#420: the first friend's line a Bot ever gets is news too, once this browser keeps a record +ok 231 - \#420: the first friend's line a Bot ever gets is news too, once this browser keeps a record + --- + duration_ms: 0.278017 + type: 'test' + ... +# Subtest: \#420: a line that arrives while its chat is on screen was seen live +ok 232 - \#420: a line that arrives while its chat is on screen was seen live + --- + duration_ms: 0.311978 + type: 'test' + ... +# Subtest: \#420: a browser with no record yet takes what is there as shown +ok 233 - \#420: a browser with no record yet takes what is there as shown + --- + duration_ms: 0.652347 + type: 'test' + ... +# Subtest: \#420: a friend's Bot chat and another member's shared Bot are not marked here +ok 234 - \#420: a friend's Bot chat and another member's shared Bot are not marked here + --- + duration_ms: 0.332818 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/group-bot-label.test.js +not ok 77 - test/group-bot-label.test.js + --- + duration_ms: 144.229386 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/group-bot-label.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/group-status.test.js +not ok 78 - test/group-status.test.js + --- + duration_ms: 207.640594 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/group-status.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/group-work.test.js +not ok 79 - test/group-work.test.js + --- + duration_ms: 207.165541 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/group-work.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/groups.test.js +not ok 80 - test/groups.test.js + --- + duration_ms: 132.894232 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/groups.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: Step 0 default harness names prompt, tools, model, step·retry, and verifiers +ok 239 - Step 0 default harness names prompt, tools, model, step·retry, and verifiers + --- + duration_ms: 2.025663 + type: 'test' + ... +# Subtest: default harness keeps the Step 0 shape +ok 240 - default harness keeps the Step 0 shape + --- + duration_ms: 1.452288 + type: 'test' + ... +# Subtest: unknown harness ids still throw +ok 241 - unknown harness ids still throw + --- + duration_ms: 0.737239 + type: 'test' + ... +# Subtest: tree prompt exception is listed outside the default harness file +ok 242 - tree prompt exception is listed outside the default harness file + --- + duration_ms: 0.77029 + type: 'test' + ... +# Subtest: lite, medium, and heavy load with distinct ordered budgets +ok 243 - lite, medium, and heavy load with distinct ordered budgets + --- + duration_ms: 0.869673 + type: 'test' + ... +# Subtest: tier tool budgets name tools the host registers +ok 244 - tier tool budgets name tools the host registers + --- + duration_ms: 4.99631 + type: 'test' + ... +# Subtest: triage routes one harness label and leaves every other label on default +ok 245 - triage routes one harness label and leaves every other label on default + --- + duration_ms: 1.021776 + type: 'test' + ... +# Subtest: HarnessPro checks a tier offline against CI, eval, and rsi-baseline +ok 246 - HarnessPro checks a tier offline against CI, eval, and rsi-baseline + --- + duration_ms: 2.035292 + type: 'test' + ... +# Subtest: install keeps the process harness on default and exposes routing +ok 247 - install keeps the process harness on default and exposes routing + --- + duration_ms: 1.046637 + type: 'test' + ... +# node:internal/modules/cjs/loader:1430 +# const err = new Error(message); +# ^ +# Error: Cannot find module 'jsdom' +# Require stack: +# - /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Function._resolveFilename (node:internal/modules/cjs/loader:1430:15) +# at defaultResolveImpl (node:internal/modules/cjs/loader:1040:19) +# at defaultResolve (node:internal/modules/cjs/loader:1075:31) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:46:12) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) +# at resolveForCJSWithHooks (node:internal/modules/cjs/loader:1084:25) +# at Function._load (node:internal/modules/cjs/loader:1216:25) +# at wrapModuleLoad (node:internal/modules/cjs/loader:254:19) { +# code: 'MODULE_NOT_FOUND', +# requireStack: [ +# '/data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json' +# ] +# } +# Node.js v22.23.3 +# Subtest: test/header-effects.test.js +not ok 82 - test/header-effects.test.js + --- + duration_ms: 72.034191 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/header-effects.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: the shell keeps its own conversation.session.header occupant +ok 249 - the shell keeps its own conversation.session.header occupant + --- + duration_ms: 2.936706 + type: 'test' + ... +# Subtest: the Bot pill is appended to conversation.session.header.utilities +ok 250 - the Bot pill is appended to conversation.session.header.utilities + --- + duration_ms: 0.636366 + type: 'test' + ... +# Subtest: \#803: the page effects are installed from apply, not parked in a slot +ok 251 - \#803: the page effects are installed from apply, not parked in a slot + --- + duration_ms: 0.585585 + type: 'test' + ... +# Subtest: a held Bot line is no bubble at all before Approve; its text stays in the approval card +ok 252 - a held Bot line is no bubble at all before Approve; its text stays in the approval card + --- + duration_ms: 3.922452 + type: 'test' + ... +# Subtest: only the held line is left out: other lines, and once the hold is decided, the line, are full bubbles +ok 253 - only the held line is left out: other lines, and once the hold is decided, the line, are full bubbles + --- + duration_ms: 3.593934 + type: 'test' + ... +# Subtest: \#456: a line the host is sending or Bot Social holds is not drawn; approved, it is a bubble +ok 254 - \#456: a line the host is sending or Bot Social holds is not drawn; approved, it is a bubble + --- + duration_ms: 1.123749 + type: 'test' + ... +# Subtest: \#456: a rejected line is one grey "Not sent" line, never its words, after a reload and in Past rooms +ok 255 - \#456: a rejected line is one grey "Not sent" line, never its words, after a reload and in Past rooms + --- + duration_ms: 1.859509 + type: 'test' + ... +# Subtest: \#456: a late post (no seq) is found by its Bot and its exact text; a stale send is drawn as before +ok 256 - \#456: a late post (no seq) is found by its Bot and its exact text; a stale send is drawn as before + --- + duration_ms: 0.666447 + type: 'test' + ... +# Subtest: the held text matches however the card cleaned it: spacing, the "To the room:" lead, the 800-character cap +ok 257 - the held text matches however the card cleaned it: spacing, the "To the room:" lead, the 800-character cap + --- + duration_ms: 0.503173 + type: 'test' + ... +# Subtest: the held line waits only for the Bot that sent it: another Bot saying the same words stays a full bubble +ok 258 - the held line waits only for the Bot that sent it: another Bot saying the same words stays a full bubble + --- + duration_ms: 1.210632 + type: 'test' + ... +# Subtest: only a Face-to-face room hides a held line, and only for a held room line +ok 259 - only a Face-to-face room hides a held line, and only for a held room line + --- + duration_ms: 0.312798 + type: 'test' + ... +# Subtest: the Not sent copy has a Chinese string +ok 260 - the Not sent copy has a Chinese string + --- + duration_ms: 1.883479 + type: 'test' + ... +# Subtest: the Not sent line is a quiet grey event line +ok 261 - the Not sent line is a quiet grey event line + --- + duration_ms: 10.0308 + type: 'test' + ... +# Subtest: a held message to a friend is no bubble at all: the Bot's send is not drawn, the card is the one place +ok 262 - a held message to a friend is no bubble at all: the Bot's send is not drawn, the card is the one place + --- + duration_ms: 0.999256 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/held-reply-seam.test.js +not ok 85 - test/held-reply-seam.test.js + --- + duration_ms: 227.821118 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/held-reply-seam.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: a waiting reply is drawn held, with the decision on it, naming the person who gets it +ok 264 - a waiting reply is drawn held, with the decision on it, naming the person who gets it + --- + duration_ms: 6.288433 + type: 'test' + ... +# Subtest: after the decision the reply says Sent or Not sent in place, and they differ +ok 265 - after the decision the reply says Sent or Not sent in place, and they differ + --- + duration_ms: 1.995892 + type: 'test' + ... +# Subtest: \#498: the card names the person who gets the reply, the same with or without the friend's chat; no held reply, no wrapper +ok 266 - \#498: the card names the person who gets the reply, the same with or without the friend's chat; no held reply, no wrapper + --- + duration_ms: 3.355447 + type: 'test' + ... +# Subtest: the list preview shows the friend's line, not a reply that was not sent; the host tags the turn +ok 267 - the list preview shows the friend's line, not a reply that was not sent; the host tags the turn + --- + duration_ms: 42.398491 + type: 'test' + ... +# Subtest: \#968: a terminal failure draws no Retry on the bubble, in any spelling; a retryable one does +ok 268 - \#968: a terminal failure draws no Retry on the bubble, in any spelling; a retryable one does + --- + duration_ms: 2.939266 + type: 'test' + ... +# Subtest: \#968: both spellings of a terminal failure answer false, and a retryable one answers true +ok 269 - \#968: both spellings of a terminal failure answer false, and a retryable one answers true + --- + duration_ms: 2.358732 + type: 'test' + ... +# Subtest: \#968: a record written before \#954 carries no flag, only the sentence, and is still terminal +ok 270 - \#968: a record written before \#954 carries no flag, only the sentence, and is still terminal + --- + duration_ms: 0.367769 + type: 'test' + ... +# Subtest: \#988: capability_not_granted is terminal only for the chat.public sentence +ok 271 - \#988: capability_not_granted is terminal only for the chat.public sentence + --- + duration_ms: 0.336209 + type: 'test' + ... +# Subtest: \#140: the context row hides FlyBot-removed tools, not other tool cells +ok 272 - \#140: the context row hides FlyBot-removed tools, not other tool cells + --- + duration_ms: 5.690638 + type: 'test' + ... +# Subtest: \#335: connector tools coming and going with a Bot's connector switch leave no notice in the chat +ok 273 - \#335: connector tools coming and going with a Bot's connector switch leave no notice in the chat + --- + duration_ms: 0.739449 + type: 'test' + ... +# Subtest: \#419: plugin tools a per-Bot mask takes away (tree) leave no Tool removed / Tool added line in any chat +ok 274 - \#419: plugin tools a per-Bot mask takes away (tree) leave no Tool removed / Tool added line in any chat + --- + duration_ms: 2.098044 + type: 'test' + ... +# Subtest: \#1101: product tool registration leaves no Tool added / Tool removed line +ok 275 - \#1101: product tool registration leaves no Tool added / Tool removed line + --- + duration_ms: 1.732735 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/history.test.js +not ok 89 - test/history.test.js + --- + duration_ms: 91.654191 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/history.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/home-lock.test.js +not ok 90 - test/home-lock.test.js + --- + duration_ms: 199.752259 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/home-lock.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/host-approval-status.test.js +not ok 91 - test/host-approval-status.test.js + --- + duration_ms: 196.063353 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/host-approval-status.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: every literal the client translates has a Chinese entry +ok 279 - every literal the client translates has a Chinese entry + --- + duration_ms: 19.23574 + type: 'test' + ... +# Subtest: copy follows the DSH language and stays English without a locale service +ok 280 - copy follows the DSH language and stays English without a locale service + --- + duration_ms: 3.232344 + type: 'test' + ... +# Subtest: \#1813: the Project board queue states read in Chinese +ok 281 - \#1813: the Project board queue states read in Chinese + --- + duration_ms: 0.293517 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/identity.test.js +not ok 93 - test/identity.test.js + --- + duration_ms: 207.12417 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/identity.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/images.test.js +not ok 94 - test/images.test.js + --- + duration_ms: 73.50117 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/images.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: a reply opening with a delegation trace shows without it +ok 284 - a reply opening with a delegation trace shows without it + --- + duration_ms: 6.606392 + type: 'test' + ... +# Subtest: ordinary text that merely mentions an arrow is left alone +ok 285 - ordinary text that merely mentions an arrow is left alone + --- + duration_ms: 0.36876 + type: 'test' + ... +# Subtest: the sidebar preview drops the trace too +ok 286 - the sidebar preview drops the trace too + --- + duration_ms: 2.444983 + type: 'test' + ... +# Subtest: an inbound friend's message uses the friend's sidebar Bot (avatar, name), else a stable look from its handle +ok 287 - an inbound friend's message uses the friend's sidebar Bot (avatar, name), else a stable look from its handle + --- + duration_ms: 2.120775 + type: 'test' + ... +# Subtest: a friend Bot's handle in a preview reads as its one name (\#71, \#967) +ok 288 - a friend Bot's handle in a preview reads as its one name (\#71, \#967) + --- + duration_ms: 3.031639 + type: 'test' + ... +# Subtest: a friend Bot's generated look is seeded by its handle: with or without its chat record, one look (\#84) +ok 289 - a friend Bot's generated look is seeded by its handle: with or without its chat record, one look (\#84) + --- + duration_ms: 0.580575 + type: 'test' + ... +# Subtest: lookBotForRemote seeds a distinct look from the handle when there is no chat record +ok 290 - lookBotForRemote seeds a distinct look from the handle when there is no chat record + --- + duration_ms: 0.866142 + type: 'test' + ... +# Subtest: room avatars include live remote face-to-face members +ok 291 - room avatars include live remote face-to-face members + --- + duration_ms: 0.803631 + type: 'test' + ... +# Subtest: \#1089: a face room with only the local Chief shows that Chief, not the grey you circle +ok 292 - \#1089: a face room with only the local Chief shows that Chief, not the grey you circle + --- + duration_ms: 2.260549 + type: 'test' + ... +# Subtest: handles equal modulo @ and case share one look; a stored look still wins +ok 293 - handles equal modulo @ and case share one look; a stored look still wins + --- + duration_ms: 1.383616 + type: 'test' + ... +# Subtest: \#236 follow-up: a friend's line Bot Social attested as typed by them is drawn as the person, not as their Bot +ok 294 - \#236 follow-up: a friend's line Bot Social attested as typed by them is drawn as the person, not as their Bot + --- + duration_ms: 1.890679 + type: 'test' + ... +# Subtest: \#275: a typed line from a friend has one short header: the person, then "via " only when that Bot is known +ok 295 - \#275: a typed line from a friend has one short header: the person, then "via " only when that Bot is known + --- + duration_ms: 1.015567 + type: 'test' + ... +# Subtest: \#420: a sender's first line in a Bot's own chat gets one quiet line naming who talks to which Bot +ok 296 - \#420: a sender's first line in a Bot's own chat gets one quiet line naming who talks to which Bot + --- + duration_ms: 0.731929 + type: 'test' + ... +# Subtest: a face room's remote Bot speaks with its seat's look, the one Members and the waiting tiles draw (\#182) +ok 297 - a face room's remote Bot speaks with its seat's look, the one Members and the waiting tiles draw (\#182) + --- + duration_ms: 1.073618 + type: 'test' + ... +# Subtest: a person's mark is their initial on a color from their name, the same on every home (\#182) +ok 298 - a person's mark is their initial on a color from their name, the same on every home (\#182) + --- + duration_ms: 1.54356 + type: 'test' + ... +# Subtest: a row the board paints Not started is not an In progress card in the Inbox (\#1739) +ok 299 - a row the board paints Not started is not an In progress card in the Inbox (\#1739) + --- + duration_ms: 2.528416 + type: 'test' + ... +# Subtest: both views read the same row the same way: In progress is exactly the board in-progress column +ok 300 - both views read the same row the same way: In progress is exactly the board in-progress column + --- + duration_ms: 0.490793 + type: 'test' + ... +# Subtest: a card age comes from the row clock: the moment it started, never its creation +ok 301 - a card age comes from the row clock: the moment it started, never its creation + --- + duration_ms: 0.513363 + type: 'test' + ... +# Subtest: \#1706: a failed run reaches the Inbox as one card naming graph, node and reason +ok 302 - \#1706: a failed run reaches the Inbox as one card naming graph, node and reason + --- + duration_ms: 1.567801 + type: 'test' + ... +# Subtest: \#1706 control: a run that is still running is not Inbox news +ok 303 - \#1706 control: a run that is still running is not Inbox news + --- + duration_ms: 1.015036 + type: 'test' + ... +# Subtest: \#1706 control: a failed run whose task card is gone still reaches the Inbox +ok 304 - \#1706 control: a failed run whose task card is gone still reaches the Inbox + --- + duration_ms: 0.446182 + type: 'test' + ... +# Subtest: \#1706: one card per graph, its newest failure, inside the 7-day window Done uses +ok 305 - \#1706: one card per graph, its newest failure, inside the 7-day window Done uses + --- + duration_ms: 0.569155 + type: 'test' + ... +# Subtest: \#1706: a missing Workflow plugin is the same Inbox, with no error line +ok 306 - \#1706: a missing Workflow plugin is the same Inbox, with no error line + --- + duration_ms: 1.027537 + type: 'test' + ... +# Subtest: \#1706: the sidebar badge counts the same failed run the dialog lists +ok 307 - \#1706: the sidebar badge counts the same failed run the dialog lists + --- + duration_ms: 1.887229 + type: 'test' + ... +# Subtest: \#1706: a workflow row has no chat, opens the Workflow graphs page, and answers nothing +ok 308 - \#1706: a workflow row has no chat, opens the Workflow graphs page, and answers nothing + --- + duration_ms: 2.847614 + type: 'test' + ... +# Subtest: \#1706: failed workflow rows share the one Needs you list +ok 309 - \#1706: failed workflow rows share the one Needs you list + --- + duration_ms: 12.692329 + type: 'test' + ... +# Subtest: the groups are Needs you, In progress and Done, in that order, each with an empty line +ok 310 - the groups are Needs you, In progress and Done, in that order, each with an empty line + --- + duration_ms: 2.944606 + type: 'test' + ... +# Subtest: Needs you: my own Bots' approvals, held messages, and tasks that wait for me or failed in the last 7 days +ok 311 - Needs you: my own Bots' approvals, held messages, and tasks that wait for me or failed in the last 7 days + --- + duration_ms: 1.14969 + type: 'test' + ... +# Subtest: a friend's Bot and another member's Bot never show, in any group +ok 312 - a friend's Bot and another member's Bot never show, in any group + --- + duration_ms: 0.323838 + type: 'test' + ... +# Subtest: In progress: running turns per chat and group, without the ones waiting for an approval, and open tasks +ok 313 - In progress: running turns per chat and group, without the ones waiting for an approval, and open tasks + --- + duration_ms: 0.333029 + type: 'test' + ... +# Subtest: Done: accepted and cancelled tasks and finished Bot chats from the last 7 days only +ok 314 - Done: accepted and cancelled tasks and finished Bot chats from the last 7 days only + --- + duration_ms: 0.545784 + type: 'test' + ... +# Subtest: every card carries assigner, owner and executing Bot; in step 1 the first two are me +ok 315 - every card carries assigner, owner and executing Bot; in step 1 the first two are me + --- + duration_ms: 0.325899 + type: 'test' + ... +# Subtest: every status has a word and an icon besides its color +ok 316 - every status has a word and an icon besides its color + --- + duration_ms: 0.467272 + type: 'test' + ... +# Subtest: a card shows exactly one status, as an icon and a word, and its full title on hover +ok 317 - a card shows exactly one status, as an icon and a word, and its full title on hover + --- + duration_ms: 5.274117 + type: 'test' + ... +# Subtest: an answerable approval has Reject, Allow once, the two Always allow choices (\#540) and Open; everything else only Open +ok 318 - an answerable approval has Reject, Allow once, the two Always allow choices (\#540) and Open; everything else only Open + --- + duration_ms: 2.282339 + type: 'test' + ... +# Subtest: the card buttons call back with the card and the choice +ok 319 - the card buttons call back with the card and the choice + --- + duration_ms: 1.643273 + type: 'test' + ... +# Subtest: Allow once in the inbox gives the same answer as the chat card (answerApproval), and Open goes to the chat +ok 320 - Allow once in the inbox gives the same answer as the chat card (answerApproval), and Open goes to the chat + --- + duration_ms: 18.766928 + type: 'test' + ... +# Subtest: the dialog draws the three groups with their headings, and an empty line where a group is empty +ok 321 - the dialog draws the three groups with their headings, and an empty line where a group is empty + --- + duration_ms: 0.827912 + type: 'test' + ... +# Subtest: the Inbox row shows how many cards need me and opens the inbox +ok 322 - the Inbox row shows how many cards need me and opens the inbox + --- + duration_ms: 1.15529 + type: 'test' + ... +# Subtest: the inbox has no second approval path and no native confirm dialog +ok 323 - the inbox has no second approval path and no native confirm dialog + --- + duration_ms: 1.15489 + type: 'test' + ... +# Subtest: the sidebar has one Inbox row at its top, and the dialog is an overlay +ok 324 - the sidebar has one Inbox row at its top, and the dialog is an overlay + --- + duration_ms: 0.7836 + type: 'test' + ... +# Subtest: a failed turn of my own Bot needs me while it is the latest turn in its chat and the Bot is not back at work there +ok 325 - a failed turn of my own Bot needs me while it is the latest turn in its chat and the Bot is not back at work there + --- + duration_ms: 1.111899 + type: 'test' + ... +# Subtest: a failure no longer needs me once the Bot works or waits there again +ok 326 - a failure no longer needs me once the Bot works or waits there again + --- + duration_ms: 2.820284 + type: 'test' + ... +# Subtest: a failed turn in a hidden Bot's own chat is not a Needs you card (\#1566) +ok 327 - a failed turn in a hidden Bot's own chat is not a Needs you card (\#1566) + --- + duration_ms: 3.108781 + type: 'test' + ... +# Subtest: each card has a one-line latest activity that never repeats its title or reason +ok 328 - each card has a one-line latest activity that never repeats its title or reason + --- + duration_ms: 3.717397 + type: 'test' + ... +# Subtest: a card shows its own place's tool-call count, from the running turn there or the last ended one (\#471) +ok 329 - a card shows its own place's tool-call count, from the running turn there or the last ended one (\#471) + --- + duration_ms: 0.785011 + type: 'test' + ... +# Subtest: a count of 0 or unknown draws no line; a counted card draws one `N tool calls` line, read-only +ok 330 - a count of 0 or unknown draws no line; a counted card draws one `N tool calls` line, read-only + --- + duration_ms: 1.657433 + type: 'test' + ... +# Subtest: a question asked about work handed out from a group is a Needs you card that opens the group (\#552) +ok 331 - a question asked about work handed out from a group is a Needs you card that opens the group (\#552) + --- + duration_ms: 2.271599 + type: 'test' + ... +# Subtest: an ask_user card and a listed policy approval are answered in the inbox, and that clears them (\#1140) +ok 332 - an ask_user card and a listed policy approval are answered in the inbox, and that clears them (\#1140) + --- + duration_ms: 12.108935 + type: 'test' + ... +# Subtest: a short answer survives a re-render, and a multi-select toggles until Submit (\#1140) +ok 333 - a short answer survives a re-render, and a multi-select toggles until Submit (\#1140) + --- + duration_ms: 2.152006 + type: 'test' + ... +# Subtest: a result card is accepted or sent back in place, with its evidence and the note (\#401) +ok 334 - a result card is accepted or sent back in place, with its evidence and the note (\#401) + --- + duration_ms: 3.429209 + type: 'test' + ... +# Subtest: a card names where its decision is written back, and one line when that failed (\#1154) +ok 335 - a card names where its decision is written back, and one line when that failed (\#1154) + --- + duration_ms: 1.239452 + type: 'test' + ... +# Subtest: a Needs you card shows the whole ask, and the phone clamp cannot cut it to two lines (\#1177) +ok 336 - a Needs you card shows the whole ask, and the phone clamp cannot cut it to two lines (\#1177) + --- + duration_ms: 1.783056 + type: 'test' + ... +# Subtest: \#1252: the Inbox asks for the settled rows, and they reach Done and Needs you +ok 337 - \#1252: the Inbox asks for the settled rows, and they reach Done and Needs you + --- + duration_ms: 5.503953 + type: 'test' + ... +# Subtest: \#2042: the model reports the Done total from before the cap, and Needs you and In progress do not read it +ok 338 - \#2042: the model reports the Done total from before the cap, and Needs you and In progress do not read it + --- + duration_ms: 1.842507 + type: 'test' + ... +# Subtest: \#2042: the Done group says how many rows the cap hid, and says nothing when it hid none +ok 339 - \#2042: the Done group says how many rows the cap hid, and says nothing when it hid none + --- + duration_ms: 3.721846 + type: 'test' + ... +# Subtest: \#2050: the model keeps the finished rows past the cap, in the order the Done group draws +ok 340 - \#2050: the model keeps the finished rows past the cap, in the order the Done group draws + --- + duration_ms: 1.111819 + type: 'test' + ... +# Subtest: \#2050: the Done group opens every row it counted, and folds back to the cap +ok 341 - \#2050: the Done group opens every row it counted, and folds back to the cap + --- + duration_ms: 5.871073 + type: 'test' + ... +# Subtest: nodeMeetsFloor: below the floor fails, the floor and newer majors pass +ok 342 - nodeMeetsFloor: below the floor fails, the floor and newer majors pass + --- + duration_ms: 2.278649 + type: 'test' + ... +# Subtest: checkPluginPackage: a missing package.json fails without throwing +ok 343 - checkPluginPackage: a missing package.json fails without throwing + --- + duration_ms: 1.366316 + type: 'test' + ... +# Subtest: checkPluginPackage: a wrong package name fails +ok 344 - checkPluginPackage: a wrong package name fails + --- + duration_ms: 1.485729 + type: 'test' + ... +# Subtest: checkPluginPackage: a declared but missing cordis patch fails +ok 345 - checkPluginPackage: a declared but missing cordis patch fails + --- + duration_ms: 1.068978 + type: 'test' + ... +# Subtest: checkPluginPackage: a valid fixture passes +ok 346 - checkPluginPackage: a valid fixture passes + --- + duration_ms: 2.037833 + type: 'test' + ... +# Subtest: checkPluginPackage: a JSON null body fails without throwing +ok 347 - checkPluginPackage: a JSON null body fails without throwing + --- + duration_ms: 1.050058 + type: 'test' + ... +# Subtest: checkPluginPackage: a numeric dsh.bundle.patch fails without throwing +ok 348 - checkPluginPackage: a numeric dsh.bundle.patch fails without throwing + --- + duration_ms: 0.952674 + type: 'test' + ... +# Subtest: buildInstallCommands: core, social, tree and workflow; timeline only on request (\#281) +ok 349 - buildInstallCommands: core, social, tree and workflow; timeline only on request (\#281) + --- + duration_ms: 0.431111 + type: 'test' + ... +# Subtest: runDoctor: the real repository passes on a Node version at the floor +ok 350 - runDoctor: the real repository passes on a Node version at the floor + --- + duration_ms: 2.957887 + type: 'test' + ... +# Subtest: runDoctor: the real repository fails on Node v20 +ok 351 - runDoctor: the real repository fails on Node v20 + --- + duration_ms: 1.857059 + type: 'test' + ... +# Subtest: runDoctor: an empty root fails the plugin checks +ok 352 - runDoctor: an empty root fails the plugin checks + --- + duration_ms: 1.136929 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/install.test.js +not ok 100 - test/install.test.js + --- + duration_ms: 273.71776 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/install.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: a hex colour is not an issue reference +ok 354 - a hex colour is not an issue reference + --- + duration_ms: 3.132781 + type: 'test' + ... +# Subtest: a language version is not an issue reference +ok 355 - a language version is not an issue reference + --- + duration_ms: 0.621756 + type: 'test' + ... +# Subtest: a version string is not an issue reference +ok 356 - a version string is not an issue reference + --- + duration_ms: 0.219916 + type: 'test' + ... +# Subtest: an identifier is not an issue reference +ok 357 - an identifier is not an issue reference + --- + duration_ms: 0.196516 + type: 'test' + ... +# Subtest: a number running into letters is not an issue reference +ok 358 - a number running into letters is not an issue reference + --- + duration_ms: 0.210645 + type: 'test' + ... +# Subtest: a URL fragment is not an issue reference +ok 359 - a URL fragment is not an issue reference + --- + duration_ms: 0.202556 + type: 'test' + ... +# Subtest: a bare number still names the issue: \#1360 +ok 360 - a bare number still names the issue: \#1360 + --- + duration_ms: 0.428382 + type: 'test' + ... +# Subtest: a repository-qualified number still names the issue: owner/repo\#1360 +ok 361 - a repository-qualified number still names the issue: owner/repo\#1360 + --- + duration_ms: 0.39422 + type: 'test' + ... +# Subtest: a github issue URL still names the issue: https://github.com/o/r/issues/1360 +ok 362 - a github issue URL still names the issue: https://github.com/o/r/issues/1360 + --- + duration_ms: 1.13749 + type: 'test' + ... +# Subtest: a github pull URL still names the issue: https://github.com/o/r/pull/1360 +ok 363 - a github pull URL still names the issue: https://github.com/o/r/pull/1360 + --- + duration_ms: 0.959545 + type: 'test' + ... +# Subtest: a number after a Bot mention still names the issue: @Dev-2 rebase \#1360 +ok 364 - a number after a Bot mention still names the issue: @Dev-2 rebase \#1360 + --- + duration_ms: 0.366439 + type: 'test' + ... +# Subtest: a number in a sentence still names the issue: please rebase \#1360 onto main +ok 365 - a number in a sentence still names the issue: please rebase \#1360 onto main + --- + duration_ms: 0.173214 + type: 'test' + ... +# Subtest: numbers in brackets and punctuation still names the issue: (\#1360), \#1361. +ok 366 - numbers in brackets and punctuation still names the issue: (\#1360), \#1361. + --- + duration_ms: 0.159784 + type: 'test' + ... +# Subtest: namesIssue answers the same question, so a colour cannot name an issue +ok 367 - namesIssue answers the same question, so a colour cannot name an issue + --- + duration_ms: 0.501563 + type: 'test' + ... +# Subtest: columns follow the task state and a card carries id, priority and progress +ok 368 - columns follow the task state and a card carries id, priority and progress + --- + duration_ms: 2.829813 + type: 'test' + ... +# Subtest: the board draws the three columns, nests the child, and moves only the owner's card +ok 369 - the board draws the three columns, nests the child, and moves only the owner's card + --- + duration_ms: 6.15181 + type: 'test' + ... +# Subtest: a group column nests subtasks under the overall task +ok 370 - a group column nests subtasks under the overall task + --- + duration_ms: 2.428753 + type: 'test' + ... +# Subtest: the task dialog has no delivery metrics panel (\#1363) +ok 371 - the task dialog has no delivery metrics panel (\#1363) + --- + duration_ms: 2.239468 + type: 'test' + ... +# Subtest: the task dialog shows task cards without a GitHub read (\#1363) +ok 372 - the task dialog shows task cards without a GitHub read (\#1363) + --- + duration_ms: 1.300654 + type: 'test' + ... +# Subtest: the dialog nests a group subtask under its overall task (\#1358) +ok 373 - the dialog nests a group subtask under its overall task (\#1358) + --- + duration_ms: 1.839438 + type: 'test' + ... +# Subtest: Start and Complete fire from the task board +ok 374 - Start and Complete fire from the task board + --- + duration_ms: 1.808357 + type: 'test' + ... +# Subtest: \#1252: a group board renders the newest finished cards, not the oldest +ok 375 - \#1252: a group board renders the newest finished cards, not the oldest + --- + duration_ms: 0.712209 + type: 'test' + ... +# Subtest: \#1252: a Bot board asks the host for that Bot's archive, not the whole scope +ok 376 - \#1252: a Bot board asks the host for that Bot's archive, not the whole scope + --- + duration_ms: 16.17511 + type: 'test' + ... +# Subtest: \#2045: a full archive page says how many rows were drawn and that there are more, on a Bot board and a group board +ok 377 - \#2045: a full archive page says how many rows were drawn and that there are more, on a Bot board and a group board + --- + duration_ms: 41.303903 + type: 'test' + ... +# Subtest: \#2045: a page that is not full still reads as the whole history, unchanged +ok 378 - \#2045: a page that is not full still reads as the whole history, unchanged + --- + duration_ms: 11.344925 + type: 'test' + ... +# Subtest: \#2045: a Bot whose share of a full group page is drawn reads as a lower bound, not a total +ok 379 - \#2045: a Bot whose share of a full group page is drawn reads as a lower bound, not a total + --- + duration_ms: 8.459889 + type: 'test' + ... +# Subtest: \#2045: the rail hedge follows the Bot's drawn done rows, not its total +ok 380 - \#2045: the rail hedge follows the Bot's drawn done rows, not its total + --- + duration_ms: 5.463892 + type: 'test' + ... +# Subtest: P-364: a room board rail counts the room's active cards, not only its archive page +ok 381 - P-364: a room board rail counts the room's active cards, not only its archive page + --- + duration_ms: 1.357456 + type: 'test' + ... +# Subtest: P-364: the rail counts the list the board draws, never the one the other scope left behind +ok 382 - P-364: the rail counts the list the board draws, never the one the other scope left behind + --- + duration_ms: 1.690914 + type: 'test' + ... +# Subtest: P-360: switching the rail re-reads the archive, and the new Bot draws its own Done page +ok 383 - P-360: switching the rail re-reads the archive, and the new Bot draws its own Done page + --- + duration_ms: 31.057967 + type: 'test' + ... +# Subtest: \#2069: a room board reached from a Bot board counts each active card once in the rail +ok 384 - \#2069: a room board reached from a Bot board counts each active card once in the rail + --- + duration_ms: 7.390522 + type: 'test' + ... +# Subtest: a Done card says when it finished, from the first terminal actor entry +ok 385 - a Done card says when it finished, from the first terminal actor entry + --- + duration_ms: 0.909653 + type: 'test' + ... +# Subtest: an In progress card carries no finish time +ok 386 - an In progress card carries no finish time + --- + duration_ms: 0.599245 + type: 'test' + ... +# Subtest: a Done card with no actor entry falls back to updatedAt +ok 387 - a Done card with no actor entry falls back to updatedAt + --- + duration_ms: 0.542434 + type: 'test' + ... +# Subtest: a Done card without a usable timestamp draws no time and no Invalid Date +ok 388 - a Done card without a usable timestamp draws no time and no Invalid Date + --- + duration_ms: 0.672347 + type: 'test' + ... +# Subtest: a room board Done card says when it finished too +ok 389 - a room board Done card says when it finished too + --- + duration_ms: 0.541544 + type: 'test' + ... +# Subtest: a cancelled card is terminal: it sits in Done and says when it was cancelled +ok 390 - a cancelled card is terminal: it sits in Done and says when it was cancelled + --- + duration_ms: 0.492283 + type: 'test' + ... +# Subtest: a failed card is terminal: it sits in Done and says when it failed +ok 391 - a failed card is terminal: it sits in Done and says when it failed + --- + duration_ms: 0.487653 + type: 'test' + ... +# Subtest: a blocked or result-ready card is not terminal and stays In progress +ok 392 - a blocked or result-ready card is not terminal and stays In progress + --- + duration_ms: 0.682498 + type: 'test' + ... +# Subtest: a non-terminal actor entry does not end a Done card, even when it comes first +ok 393 - a non-terminal actor entry does not end a Done card, even when it comes first + --- + duration_ms: 0.543585 + type: 'test' + ... +# Subtest: P-455: a read-only window draws no write on the task board +ok 394 - P-455: a read-only window draws no write on the task board + --- + duration_ms: 9.862396 + type: 'test' + ... +# Subtest: counter-proof: a writable board keeps all four writes +ok 395 - counter-proof: a writable board keeps all four writes + --- + duration_ms: 6.826678 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/kickoff-line.test.js +not ok 103 - test/kickoff-line.test.js + --- + duration_ms: 109.212967 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/kickoff-line.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: an emptied view returns to the friend chat it held, not the Main Bot +ok 397 - an emptied view returns to the friend chat it held, not the Main Bot + --- + duration_ms: 2.954387 + type: 'test' + ... +# Subtest: a part archived for a fresh one goes on in the fresh part +ok 398 - a part archived for a fresh one goes on in the fresh part + --- + duration_ms: 0.270447 + type: 'test' + ... +# Subtest: a blank New Session the user opened, a removed Bot, or no last chat goes to the Main Bot +ok 399 - a blank New Session the user opened, a removed Bot, or no last chat goes to the Main Bot + --- + duration_ms: 0.261577 + type: 'test' + ... +# Subtest: \#261: a roster that lost the Bot keeps the held chat whose session still exists +ok 400 - \#261: a roster that lost the Bot keeps the held chat whose session still exists + --- + duration_ms: 0.586005 + type: 'test' + ... +# Subtest: \#261: a session that is gone, or a New Session the user opened, still goes to the Main Bot +ok 401 - \#261: a session that is gone, or a New Session the user opened, still goes to the Main Bot + --- + duration_ms: 0.337279 + type: 'test' + ... +# Subtest: a navigation with no user activation behind it is noted, with where it went and from where; a click is not +ok 402 - a navigation with no user activation behind it is noted, with where it went and from where; a click is not + --- + duration_ms: 1.954271 + type: 'test' + ... +# Subtest: \#1306: a destination the session list does not know is never handed to the shell +ok 403 - \#1306: a destination the session list does not know is never handed to the shell + --- + duration_ms: 0.541764 + type: 'test' + ... +# Subtest: a reply that still carries a legacy color id paints in the renamed ink +ok 404 - a reply that still carries a legacy color id paints in the renamed ink + --- + duration_ms: 1.385386 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/legacy-state.test.js +not ok 106 - test/legacy-state.test.js + --- + duration_ms: 199.935703 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/legacy-state.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: values saved under the dsh-bot keys move to the ds-bot keys +ok 406 - values saved under the dsh-bot keys move to the ds-bot keys + --- + duration_ms: 2.943086 + type: 'test' + ... +# Subtest: the dsh-bot-team keys move too, and the newer name wins +ok 407 - the dsh-bot-team keys move too, and the newer name wins + --- + duration_ms: 0.430441 + type: 'test' + ... +# Subtest: a value already under the current key is never overwritten +ok 408 - a value already under the current key is never overwritten + --- + duration_ms: 0.601266 + type: 'test' + ... +# Subtest: every current key has its legacy keys, and unusable storage is no error +ok 409 - every current key has its legacy keys, and unusable storage is no error + --- + duration_ms: 0.736399 + type: 'test' + ... +# Subtest: a saved legacy grok theme becomes the mono theme +ok 410 - a saved legacy grok theme becomes the mono theme + --- + duration_ms: 0.632637 + type: 'test' + ... +# Subtest: \#892: a room a link opened is named by its own name; a friend's shared room still says who shared it +ok 411 - \#892: a room a link opened is named by its own name; a friend's shared room still says who shared it + --- + duration_ms: 2.157836 + type: 'test' + ... +# Subtest: \#892: the sidebar, the header, its effects, the drawer and the brand all name a room through roomTitle +ok 412 - \#892: the sidebar, the header, its effects, the drawer and the brand all name a room through roomTitle + --- + duration_ms: 3.100891 + type: 'test' + ... +# Subtest: a friend chat does not take a local Bot's id or session in the roster index (\#963) +ok 413 - a friend chat does not take a local Bot's id or session in the roster index (\#963) + --- + duration_ms: 2.163227 + type: 'test' + ... +# Subtest: a member id resolves to the local Bot when a friend shares that key (\#963) +ok 414 - a member id resolves to the local Bot when a friend shares that key (\#963) + --- + duration_ms: 0.535764 + type: 'test' + ... +# Subtest: an @Name chip keeps the local Bot's look when a friend has the same name (\#963) +ok 415 - an @Name chip keeps the local Bot's look when a friend has the same name (\#963) + --- + duration_ms: 2.544296 + type: 'test' + ... +# Subtest: @Chief in a bubble names the local Bot when a friend is listed first (\#963) +ok 416 - @Chief in a bubble names the local Bot when a friend is listed first (\#963) + --- + duration_ms: 1.17363 + type: 'test' + ... +# Subtest: a friend seat does not cover the local Bot in a group icon (\#963) +ok 417 - a friend seat does not cover the local Bot in a group icon (\#963) + --- + duration_ms: 2.549217 + type: 'test' + ... +# Subtest: a Bot with no look of its own never gets the whale, gray, brown, or black +ok 418 - a Bot with no look of its own never gets the whale, gray, brown, or black + --- + duration_ms: 8.295176 + type: 'test' + ... +# Subtest: the whale is only a stored look: the browser gives no Bot a look by its place in the team +ok 419 - the whale is only a stored look: the browser gives no Bot a look by its place in the team + --- + duration_ms: 1.329284 + type: 'test' + ... +# Subtest: the whole Settings dialog is Settings; one Bot opens as Edit Bot or Bot settings; nothing is called Team settings +ok 420 - the whole Settings dialog is Settings; one Bot opens as Edit Bot or Bot settings; nothing is called Team settings + --- + duration_ms: 34.967149 + type: 'test' + ... +# Subtest: a friend's Bot fallback look never matches one of my own Bots exactly (\#384) +ok 421 - a friend's Bot fallback look never matches one of my own Bots exactly (\#384) + --- + duration_ms: 2.065603 + type: 'test' + ... +# Subtest: a friend Bot that shares a display name does not wear that local Bot's look (\#1069) +ok 422 - a friend Bot that shares a display name does not wear that local Bot's look (\#1069) + --- + duration_ms: 1.792407 + type: 'test' + ... +# Subtest: fallback avoidance treats a named ink and its published hex as one color, and survives a full shape set (\#384) +ok 423 - fallback avoidance treats a named ink and its published hex as one color, and survives a full shape set (\#384) + --- + duration_ms: 1.126389 + type: 'test' + ... +# Subtest: indexing the roster registers own Bots, so every BotMark of a friend avoids them (\#384) +ok 424 - indexing the roster registers own Bots, so every BotMark of a friend avoids them (\#384) + --- + duration_ms: 1.181491 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/meetings-decide-paths.test.js +not ok 111 - test/meetings-decide-paths.test.js + --- + duration_ms: 197.261244 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/meetings-decide-paths.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/meetings-persist.test.js +not ok 112 - test/meetings-persist.test.js + --- + duration_ms: 195.475057 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/meetings-persist.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/meetings.test.js +not ok 113 - test/meetings.test.js + --- + duration_ms: 193.411184 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/meetings.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: two members get different identities via invite then redeem +ok 428 - two members get different identities via invite then redeem + --- + duration_ms: 26.19166 + type: 'test' + ... +# Subtest: authenticate ignores forged strings; only a live session token works +ok 429 - authenticate ignores forged strings; only a live session token works + --- + duration_ms: 6.683564 + type: 'test' + ... +# Subtest: an invitation token cannot be replayed and an expired one fails +ok 430 - an invitation token cannot be replayed and an expired one fails + --- + duration_ms: 7.195827 + type: 'test' + ... +# Subtest: removeMember and revokeSession invalidate authenticate; last owner stays +ok 431 - removeMember and revokeSession invalidate authenticate; last owner stays + --- + duration_ms: 15.261776 + type: 'test' + ... +# Subtest: tokens are stored only as hashes; plaintext never reaches state.json +ok 432 - tokens are stored only as hashes; plaintext never reaches state.json + --- + duration_ms: 6.024947 + type: 'test' + ... +# Subtest: removeMember refuses while the member still owns a Bot; has_bots after delete +ok 433 - removeMember refuses while the member still owns a Bot; has_bots after delete + --- + duration_ms: 10.76901 + type: 'test' + ... +# Subtest: concurrent removeMember calls cannot both pass the last-owner check +ok 434 - concurrent removeMember calls cannot both pass the last-owner check + --- + duration_ms: 13.819599 + type: 'test' + ... +# Subtest: a revoked invitation cannot be redeemed or revoked twice +ok 435 - a revoked invitation cannot be redeemed or revoked twice + --- + duration_ms: 6.694984 + type: 'test' + ... +# Subtest: authInviteAllowed: bootstrap opens the first invite, then a session is required +ok 436 - authInviteAllowed: bootstrap opens the first invite, then a session is required + --- + duration_ms: 4.529808 + type: 'test' + ... +# Subtest: the members line names who waits for an approval first, then who is at work +ok 437 - the members line names who waits for an approval first, then who is at work + --- + duration_ms: 5.108153 + type: 'test' + ... +# Subtest: a member at work in the group gets a row, the speaker first; approvals go on the line, work elsewhere nowhere +ok 438 - a member at work in the group gets a row, the speaker first; approvals go on the line, work elsewhere nowhere + --- + duration_ms: 2.802393 + type: 'test' + ... +# Subtest: a Bot's own chat shows the groups it is at work in, unless its own chat runs +ok 439 - a Bot's own chat shows the groups it is at work in, unless its own chat runs + --- + duration_ms: 0.983006 + type: 'test' + ... +# Subtest: the approval card offers Always allow for this Bot, and for this group when the ask came from one +ok 440 - the approval card offers Always allow for this Bot, and for this group when the ask came from one + --- + duration_ms: 1.391086 + type: 'test' + ... +# Subtest: every member at work in the group, the speaker too, gets the same left row with its step and time +ok 441 - every member at work in the group, the speaker too, gets the same left row with its step and time + --- + duration_ms: 1.686493 + type: 'test' + ... +# Subtest: a Bot at work in another room shows nothing in this room or face room, not even a hint (\#553) +ok 442 - a Bot at work in another room shows nothing in this room or face room, not even a hint (\#553) + --- + duration_ms: 1.221052 + type: 'test' + ... +# Subtest: a Bot busy in its own chat, or waiting for an approval elsewhere, is idle in this room (\#553) +ok 443 - a Bot busy in its own chat, or waiting for an approval elsewhere, is idle in this room (\#553) + --- + duration_ms: 0.435751 + type: 'test' + ... +# Subtest: work handed out from this room with message_bot shows here with its step, and nowhere else (\#553) +ok 444 - work handed out from this room with message_bot shows here with its step, and nowhere else (\#553) + --- + duration_ms: 1.336485 + type: 'test' + ... +# Subtest: the approval card action row wraps and stays right-aligned +ok 445 - the approval card action row wraps and stays right-aligned + --- + duration_ms: 1.120719 + type: 'test' + ... +# Subtest: the approval card command wraps and scrolls instead of being clipped to one line +ok 446 - the approval card command wraps and scrolls instead of being clipped to one line + --- + duration_ms: 1.245293 + type: 'test' + ... +# Subtest: every rule prelude in the member sheet is a selector, so the command rule survives +ok 447 - every rule prelude in the member sheet is a selector, so the command rule survives + --- + duration_ms: 1.264512 + type: 'test' + ... +# Subtest: the own-chat dock counts the rooms it drops past four instead of ending silently (\#2043) +ok 448 - the own-chat dock counts the rooms it drops past four instead of ending silently (\#2043) + --- + duration_ms: 2.089764 + type: 'test' + ... +# Subtest: the counted line does not look clickable, and the group line still does +ok 449 - the counted line does not look clickable, and the group line still does + --- + duration_ms: 1.392626 + type: 'test' + ... +# Subtest: \#2101: a blocked empty view says which folder could not be read +ok 450 - \#2101: a blocked empty view says which folder could not be read + --- + duration_ms: 1.94617 + type: 'test' + ... +# Subtest: \#2101: an ordinary empty view adds nothing +ok 451 - \#2101: an ordinary empty view adds nothing + --- + duration_ms: 0.277867 + type: 'test' + ... +# Subtest: \#2101: one broken folder behind both scopes is named once +ok 452 - \#2101: one broken folder behind both scopes is named once + --- + duration_ms: 0.288918 + type: 'test' + ... +# Subtest: \#2101: entries are not the empty state, however the folder was read +ok 453 - \#2101: entries are not the empty state, however the folder was read + --- + duration_ms: 0.247946 + type: 'test' + ... +# Subtest: \#2101: a refused scope is named above the list, whatever the other scope holds +ok 454 - \#2101: a refused scope is named above the list, whatever the other scope holds + --- + duration_ms: 0.522893 + type: 'test' + ... +# Subtest: \#2101: a list with nothing refused adds nothing +ok 455 - \#2101: a list with nothing refused adds nothing + --- + duration_ms: 0.270217 + type: 'test' + ... +# Subtest: a Chinese query finds a Chinese entry, with no word split +ok 456 - a Chinese query finds a Chinese entry, with no word split + --- + duration_ms: 3.295956 + type: 'test' + ... +# Subtest: a word stem matches across endings, and ranking is deterministic +ok 457 - a word stem matches across endings, and ranking is deterministic + --- + duration_ms: 1.52764 + type: 'test' + ... +# Subtest: an empty query, and a tokenization with nothing to keep, return no hits +ok 458 - an empty query, and a tokenization with nothing to keep, return no hits + --- + duration_ms: 0.317478 + type: 'test' + ... +# Subtest: a two-way [[topic]] link does not loop, and a self-link is ignored +ok 459 - a two-way [[topic]] link does not loop, and a self-link is ignored + --- + duration_ms: 1.13205 + type: 'test' + ... +# Subtest: an unknown start is empty, and a topic with no link has no neighbours +ok 460 - an unknown start is empty, and a topic with no link has no neighbours + --- + duration_ms: 0.35416 + type: 'test' + ... +# Subtest: termsOf keeps words, adds a trigram of longer words, and splits CJK runs +ok 461 - termsOf keeps words, adds a trigram of longer words, and splits CJK runs + --- + duration_ms: 2.147756 + type: 'test' + ... +# Subtest: searchIndex finds an entry whose wording differs from the query +ok 462 - searchIndex finds an entry whose wording differs from the query + --- + duration_ms: 1.618132 + type: 'test' + ... +# Subtest: searchIndex ranks the entry that shares the rarer word higher +ok 463 - searchIndex ranks the entry that shares the rarer word higher + --- + duration_ms: 0.529804 + type: 'test' + ... +# Subtest: buildGraph and relatedOf walk [[links]] and who wrote an entry +ok 464 - buildGraph and relatedOf walk [[links]] and who wrote an entry + --- + duration_ms: 19.390553 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/memory.test.js +not ok 119 - test/memory.test.js + --- + duration_ms: 205.709653 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/memory.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: the reported handle seed is a green moon, not the stored blue whale +ok 466 - the reported handle seed is a green moon, not the stored blue whale + --- + duration_ms: 1.317814 + type: 'test' + ... +# Subtest: a face-room @ row and mention chip draw the stored friend look, not the handle seed (\#1088) +ok 467 - a face-room @ row and mention chip draw the stored friend look, not the handle seed (\#1088) + --- + duration_ms: 9.589209 + type: 'test' + ... +# Subtest: a face-room seat look is drawn when the friend has no chat yet (\#1088) +ok 468 - a face-room seat look is drawn when the friend has no chat yet (\#1088) + --- + duration_ms: 1.885759 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/mention-rule.test.js +not ok 121 - test/mention-rule.test.js + --- + duration_ms: 148.144838 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/mention-rule.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: a bare name is ordinary text, even when a Bot has that name +ok 470 - a bare name is ordinary text, even when a Bot has that name + --- + duration_ms: 1.649663 + type: 'test' + ... +# Subtest: a Bot naming itself is not taken for a Bot whose name is a prefix of its own +ok 471 - a Bot naming itself is not taken for a Bot whose name is a prefix of its own + --- + duration_ms: 1.140439 + type: 'test' + ... +# Subtest: the longest name wins, and other Bots are still linked +ok 472 - the longest name wins, and other Bots are still linked + --- + duration_ms: 1.098079 + type: 'test' + ... +# Subtest: addresses, longer words and code are left alone +ok 473 - addresses, longer words and code are left alone + --- + duration_ms: 0.635966 + type: 'test' + ... +# Subtest: every phone rule sits inside one max-width media query at 640px +ok 474 - every phone rule sits inside one max-width media query at 640px + --- + duration_ms: 3.903051 + type: 'test' + ... +# Subtest: held-reply and floating approval buttons are touch-sized, Approve filled +ok 475 - held-reply and floating approval buttons are touch-sized, Approve filled + --- + duration_ms: 0.813581 + type: 'test' + ... +# Subtest: floating cards span the screen beside the icon rail, not over the top + or the account +ok 476 - floating cards span the screen beside the icon rail, not over the top + or the account + --- + duration_ms: 0.437972 + type: 'test' + ... +# Subtest: inbox cards wrap their actions under the text so the title stays readable +ok 477 - inbox cards wrap their actions under the text so the title stays readable + --- + duration_ms: 0.984966 + type: 'test' + ... +# Subtest: the client installs the phone styles after the shell styles they override +ok 478 - the client installs the phone styles after the shell styles they override + --- + duration_ms: 12.241318 + type: 'test' + ... +# Subtest: the mock treats the caller as admin from the system section, not the turn (\#917) +ok 479 - the mock treats the caller as admin from the system section, not the turn (\#917) + --- + duration_ms: 6.410636 + type: 'test' + ... +# Subtest: 长任务 writes text on every step when the step size is left out +ok 480 - 长任务 writes text on every step when the step size is left out + --- + duration_ms: 257.520059 + type: 'test' + ... +# Subtest: the first model choice shows provider groups and keeps each model route +ok 481 - the first model choice shows provider groups and keeps each model route + --- + duration_ms: 4.650831 + type: 'test' + ... +# Subtest: providers with the same display name stay distinct, and unnamed providers use their id +ok 482 - providers with the same display name stay distinct, and unnamed providers use their id + --- + duration_ms: 0.557045 + type: 'test' + ... +# Subtest: an unavailable model offers the same provider groups +ok 483 - an unavailable model offers the same provider groups + --- + duration_ms: 0.652897 + type: 'test' + ... +# Subtest: an empty catalog offers setup choices, and a ready model needs no choice dock +ok 484 - an empty catalog offers setup choices, and a ready model needs no choice dock + --- + duration_ms: 0.616216 + type: 'test' + ... +# Subtest: the Thinking section always offers Default, so a picked level can be cleared +ok 485 - the Thinking section always offers Default, so a picked level can be cleared + --- + duration_ms: 0.707448 + type: 'test' + ... +# Subtest: a friend's Bot never gets the lost-model picker; an ended share says why instead +ok 486 - a friend's Bot never gets the lost-model picker; an ended share says why instead + --- + duration_ms: 0.554414 + type: 'test' + ... +# Subtest: a run that failed for a missing API key offers the model setup right under it (\#405) +ok 487 - a run that failed for a missing API key offers the model setup right under it (\#405) + --- + duration_ms: 2.374192 + type: 'test' + ... +# Subtest: the DeepSeek key guide opens FlyBot's doc in a new tab (\#451) +ok 488 - the DeepSeek key guide opens FlyBot's doc in a new tab (\#451) + --- + duration_ms: 0.557775 + type: 'test' + ... +# Subtest: a passing test names the model and how long it took +ok 489 - a passing test names the model and how long it took + --- + duration_ms: 2.808163 + type: 'test' + ... +# Subtest: each failure code reads as a short, actionable reason, and an unknown code stays generic +ok 490 - each failure code reads as a short, actionable reason, and an unknown code stays generic + --- + duration_ms: 0.586786 + type: 'test' + ... +# Subtest: the row offers Test connection and says the request may be billed +ok 491 - the row offers Test connection and says the request may be billed + --- + duration_ms: 0.915064 + type: 'test' + ... +# Subtest: opened on purpose, the step opens the Models section and hands back +ok 492 - opened on purpose, the step opens the Models section and hands back + --- + duration_ms: 2.393362 + type: 'test' + ... +# Subtest: in first-run onboarding the step skips itself without opening Settings +ok 493 - in first-run onboarding the step skips itself without opening Settings + --- + duration_ms: 0.38937 + type: 'test' + ... +# Subtest: openHarnessModels asks the launcher seat for the FlyBot step, not plain Settings +ok 494 - openHarnessModels asks the launcher seat for the FlyBot step, not plain Settings + --- + duration_ms: 0.976546 + type: 'test' + ... +# Subtest: the step is registered and every models entry uses it (\#407) +ok 495 - the step is registered and every models entry uses it (\#407) + --- + duration_ms: 1.245072 + type: 'test' + ... +# Subtest: the default model is the DSH default when served, else the first served model +ok 496 - the default model is the DSH default when served, else the first served model + --- + duration_ms: 3.589053 + type: 'test' + ... +# Subtest: a model is named by its ref, or by an id or name only one provider serves +ok 497 - a model is named by its ref, or by an id or name only one provider serves + --- + duration_ms: 3.305966 + type: 'test' + ... +# Subtest: a Bot runs on its own model, else the one it last ran on, else the default +ok 498 - a Bot runs on its own model, else the one it last ran on, else the default + --- + duration_ms: 0.627367 + type: 'test' + ... +# Subtest: choosing a Bot model leaves the user's DSH default model as it was +ok 499 - choosing a Bot model leaves the user's DSH default model as it was + --- + duration_ms: 2.109025 + type: 'test' + ... +# Subtest: a Bot with no model yet changes nothing until the user picks one +ok 500 - a Bot with no model yet changes nothing until the user picks one + --- + duration_ms: 0.472412 + type: 'test' + ... +# Subtest: the catalog is every model DSH serves, with no lab +ok 501 - the catalog is every model DSH serves, with no lab + --- + duration_ms: 1.063628 + type: 'test' + ... +# Subtest: a fresh catalog sees a model list changed in DSH settings at once +ok 502 - a fresh catalog sees a model list changed in DSH settings at once + --- + duration_ms: 0.965305 + type: 'test' + ... +# Subtest: applying a Bot model leaves the DSH default as the user set it +ok 503 - applying a Bot model leaves the DSH default as the user set it + --- + duration_ms: 1.081828 + type: 'test' + ... +# Subtest: a Bot model applies its thinking level, and only re-selects on a change +ok 504 - a Bot model applies its thinking level, and only re-selects on a change + --- + duration_ms: 2.080264 + type: 'test' + ... +# Subtest: a settled record still re-selects a group Session left on another provider (\#1127) +ok 505 - a settled record still re-selects a group Session left on another provider (\#1127) + --- + duration_ms: 2.442444 + type: 'test' + ... +# Subtest: force-apply re-selects every group Session even when the record already matches (\#1127) +ok 506 - force-apply re-selects every group Session even when the record already matches (\#1127) + --- + duration_ms: 0.956574 + type: 'test' + ... +# Subtest: a drifted group Session that refuses the model marks the Bot stale (\#1127) +ok 507 - a drifted group Session that refuses the model marks the Bot stale (\#1127) + --- + duration_ms: 0.803681 + type: 'test' + ... +# Subtest: a group Session that did not take the model keeps the Bot stale and is retried (\#289) +ok 508 - a group Session that did not take the model keeps the Bot stale and is retried (\#289) + --- + duration_ms: 1.432677 + type: 'test' + ... +# Subtest: resolveEffort takes an id or a name, and refuses what the model has not +ok 509 - resolveEffort takes an id or a name, and refuses what the model has not + --- + duration_ms: 0.764389 + type: 'test' + ... +# Subtest: the catalog attaches thinking levels to models a Bot uses +ok 510 - the catalog attaches thinking levels to models a Bot uses + --- + duration_ms: 0.622986 + type: 'test' + ... +# Subtest: a model is applied once the provider of its Bot registers +ok 511 - a model is applied once the provider of its Bot registers + --- + duration_ms: 21.097168 + type: 'test' + ... +# Subtest: a Bot on the default model with its own thinking level leaves the default level as it was +ok 512 - a Bot on the default model with its own thinking level leaves the default level as it was + --- + duration_ms: 0.882273 + type: 'test' + ... +# Subtest: a connection test sends one tiny request on the Bot's own route and reports success +ok 513 - a connection test sends one tiny request on the Bot's own route and reports success + --- + duration_ms: 1.808547 + type: 'test' + ... +# Subtest: a reply cut off at the token limit still counts as a working connection +ok 514 - a reply cut off at the token limit still counts as a working connection + --- + duration_ms: 0.502383 + type: 'test' + ... +# Subtest: a failed test answers with a code only, never the provider text +ok 515 - a failed test answers with a code only, never the provider text + --- + duration_ms: 6.077458 + type: 'test' + ... +# Subtest: an aborted or throwing test is a timeout or a coded failure, not an exception +ok 516 - an aborted or throwing test is a timeout or a coded failure, not an exception + --- + duration_ms: 1.056987 + type: 'test' + ... +# Subtest: a Bot runs one test at a time, and a Bot with no model sends nothing +ok 517 - a Bot runs one test at a time, and a Bot with no model sends nothing + --- + duration_ms: 1.136299 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/mutate-writers.test.js +not ok 130 - test/mutate-writers.test.js + --- + duration_ms: 229.84318 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/mutate-writers.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: \#705: a narrow window shrinks the Details panel before it starves the conversation +ok 519 - \#705: a narrow window shrinks the Details panel before it starves the conversation + --- + duration_ms: 2.609058 + type: 'test' + ... +# Subtest: \#705: every pane the row flexes can shrink, and a long value wraps instead of widening it +ok 520 - \#705: every pane the row flexes can shrink, and a long value wraps instead of widening it + --- + duration_ms: 0.957845 + type: 'test' + ... +# Subtest: \#705: the client installs the pane rules after the shell styles it overrides, and ships them +ok 521 - \#705: the client installs the pane rules after the shell styles it overrides, and ships them + --- + duration_ms: 14.218059 + type: 'test' + ... +# Subtest: + menu: an action row puts its description under the title, always, so hovering never hides the title +ok 522 - + menu: an action row puts its description under the title, always, so hovering never hides the title + --- + duration_ms: 2.016962 + type: 'test' + ... +# Subtest: + menu: the inline hint is capped and ellipsized, the copy column and its subline wrap +ok 523 - + menu: the inline hint is capped and ellipsized, the copy column and its subline wrap + --- + duration_ms: 1.92259 + type: 'test' + ... +# Subtest: picker hides gone, hidden, and home-level remotes; labels include the owner +ok 524 - picker hides gone, hidden, and home-level remotes; labels include the owner + --- + duration_ms: 4.625241 + type: 'test' + ... +# Subtest: new-chat splits a friend's Bot out of local members into remote participants +ok 525 - new-chat splits a friend's Bot out of local members into remote participants + --- + duration_ms: 0.699908 + type: 'test' + ... +# Subtest: the sidebar + menu wires plugin actions in after New group chat +ok 526 - the sidebar + menu wires plugin actions in after New group chat + --- + duration_ms: 4.433755 + type: 'test' + ... +# Subtest: the sidebar + menu is a compact popover next to +, closed by a press outside (\#173) +ok 527 - the sidebar + menu is a compact popover next to +, closed by a press outside (\#173) + --- + duration_ms: 1.727345 + type: 'test' + ... +# Subtest: ungrantedLocalFix reads the host refusal defensively +ok 528 - ungrantedLocalFix reads the host refusal defensively + --- + duration_ms: 1.129529 + type: 'test' + ... +# Subtest: new-chat turns a refused group into a card with the invite and leave-out actions, never a dead end +ok 529 - new-chat turns a refused group into a card with the invite and leave-out actions, never a dead end + --- + duration_ms: 0.790091 + type: 'test' + ... +# Subtest: copiedToClipboard is true only when the clipboard really took the text +ok 530 - copiedToClipboard is true only when the clipboard really took the text + --- + duration_ms: 4.22292 + type: 'test' + ... +# Subtest: Copy invite link says copied only after a real copy, else shows the link to copy by hand +ok 531 - Copy invite link says copied only after a real copy, else shows the link to copy by hand + --- + duration_ms: 0.734559 + type: 'test' + ... +# Subtest: \#385: the + menu rows have their own marks, one verb style and short hints; a Bot menu has one way to edit it +ok 532 - \#385: the + menu rows have their own marks, one verb style and short hints; a Bot menu has one way to edit it + --- + duration_ms: 3.583243 + type: 'test' + ... +# Subtest: \#645: a line typed in the composer is the new Bot's first turn, not its instructions +ok 533 - \#645: a line typed in the composer is the new Bot's first turn, not its instructions + --- + duration_ms: 1.789467 + type: 'test' + ... +# Subtest: \#956: a row is kept for a share that ended, dropped for a hide the user set +ok 534 - \#956: a row is kept for a share that ended, dropped for a hide the user set + --- + duration_ms: 0.673668 + type: 'test' + ... +# Subtest: \#1363: the delivery board files are gone +ok 535 - \#1363: the delivery board files are gone + --- + duration_ms: 1.934111 + type: 'test' + ... +# Subtest: \#1363: the host does not serve delivery-board or delivery-probe +ok 536 - \#1363: the host does not serve delivery-board or delivery-probe + --- + duration_ms: 1.280703 + type: 'test' + ... +# Subtest: \#1363: the task board does not mount the delivery view +ok 537 - \#1363: the task board does not mount the delivery view + --- + duration_ms: 1.331485 + type: 'test' + ... +# Subtest: \#1376: the dead nesting helper is gone and nothing names it +ok 538 - \#1376: the dead nesting helper is gone and nothing names it + --- + duration_ms: 74.108435 + type: 'test' + ... +# Subtest: \#355: a reminder reaches the transport in Slack chat.postMessage shape +ok 539 - \#355: a reminder reaches the transport in Slack chat.postMessage shape + --- + duration_ms: 3.990093 + type: 'test' + ... +# Subtest: \#355: the same reminder handed over twice is one message +ok 540 - \#355: the same reminder handed over twice is one message + --- + duration_ms: 0.508613 + type: 'test' + ... +# (node:1237309) ExperimentalWarning: The MockTimers API is an experimental feature and might change at any time +# (Use `node --trace-warnings ...` to show where the warning was created) +# Subtest: \#355: a second send for a reminder already in flight joins it instead of starting another +ok 541 - \#355: a second send for a reminder already in flight joins it instead of starting another + --- + duration_ms: 11.136839 + type: 'test' + ... +# Subtest: \#355: a rate limit waits what Retry-After asks, then sends once +ok 542 - \#355: a rate limit waits what Retry-After asks, then sends once + --- + duration_ms: 3.347237 + type: 'test' + ... +# Subtest: \#355: a broken link backs off further on each attempt +ok 543 - \#355: a broken link backs off further on each attempt + --- + duration_ms: 1.002006 + type: 'test' + ... +# Subtest: \#355: a thrown transport error is a broken link, not a reason to give up +ok 544 - \#355: a thrown transport error is a broken link, not a reason to give up + --- + duration_ms: 2.159686 + type: 'test' + ... +# Subtest: \#355: three failed attempts end the delivery, and a later run may try again +ok 545 - \#355: three failed attempts end the delivery, and a later run may try again + --- + duration_ms: 1.711484 + type: 'test' + ... +# Subtest: \#355: Slack's own transient codes are retried, not remembered as permanent +ok 546 - \#355: Slack's own transient codes are retried, not remembered as permanent + --- + duration_ms: 1.484448 + type: 'test' + ... +# Subtest: \#355: a missing channel is a permanent failure and is not retried +ok 547 - \#355: a missing channel is a permanent failure and is not retried + --- + duration_ms: 1.309474 + type: 'test' + ... +# Subtest: \#355: a channel that is off makes no transport call at all +ok 548 - \#355: a channel that is off makes no transport call at all + --- + duration_ms: 1.191371 + type: 'test' + ... +# Subtest: \#355: switching a channel off stops a reminder that is waiting to retry +ok 549 - \#355: switching a channel off stops a reminder that is waiting to retry + --- + duration_ms: 5.107522 + type: 'test' + ... +# Subtest: \#355: a reminder needs a key and something to say +ok 550 - \#355: a reminder needs a key and something to say + --- + duration_ms: 1.238212 + type: 'test' + ... +# Subtest: \#254: the approvals overlay renders again with the same hooks when the first held message arrives +ok 551 - \#254: the approvals overlay renders again with the same hooks when the first held message arrives + --- + duration_ms: 32.603816 + type: 'test' + ... +# Subtest: \#260: one card per approval: a dock-drawn one is not repeated, and reads like the dock's card +ok 552 - \#260: one card per approval: a dock-drawn one is not repeated, and reads like the dock's card + --- + duration_ms: 1.5531 + type: 'test' + ... +# Subtest: \#260: an approval no open chat shows becomes a pointer to its chat, after a short wait +ok 553 - \#260: an approval no open chat shows becomes a pointer to its chat, after a short wait + --- + duration_ms: 3.024639 + type: 'test' + ... +# Subtest: \#271: no pointer for an approval whose chat is the open one, whatever the open chat draws +ok 554 - \#271: no pointer for an approval whose chat is the open one, whatever the open chat draws + --- + duration_ms: 1.764896 + type: 'test' + ... +# Subtest: \#998: the session dock tells a slot whether the chat is still blank +ok 555 - \#998: the session dock tells a slot whether the chat is still blank + --- + duration_ms: 1.102359 + type: 'test' + ... +# Subtest: \#1347: a blank Bot chat draws its own strip, and only while it is blank +ok 556 - \#1347: a blank Bot chat draws its own strip, and only while it is blank + --- + duration_ms: 1.414817 + type: 'test' + ... +# Subtest: \#968: a terminal failed approval draws no Retry in the dock card +ok 557 - \#968: a terminal failed approval draws no Retry in the dock card + --- + duration_ms: 1.54176 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/own-keys.test.js +not ok 137 - test/own-keys.test.js + --- + duration_ms: 216.932875 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/own-keys.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: \#1347: a trace indented with spaces is read as previewOf reads it +ok 559 - \#1347: a trace indented with spaces is read as previewOf reads it + --- + duration_ms: 8.709236 + type: 'test' + ... +# Subtest: \#1347: a trace split by tabs is read as previewOf reads it +ok 560 - \#1347: a trace split by tabs is read as previewOf reads it + --- + duration_ms: 1.241562 + type: 'test' + ... +# Subtest: \#1347: a trace with doubled spaces is read as previewOf reads it +ok 561 - \#1347: a trace with doubled spaces is read as previewOf reads it + --- + duration_ms: 0.928714 + type: 'test' + ... +# Subtest: \#1347: a trace with mixed indentation is read as previewOf reads it +ok 562 - \#1347: a trace with mixed indentation is read as previewOf reads it + --- + duration_ms: 0.830831 + type: 'test' + ... +# Subtest: \#1347: a trace after a header is read as previewOf reads it +ok 563 - \#1347: a trace after a header is read as previewOf reads it + --- + duration_ms: 1.365465 + type: 'test' + ... +# Subtest: \#1347: a wrapped multi-line line is read as previewOf reads it +ok 564 - \#1347: a wrapped multi-line line is read as previewOf reads it + --- + duration_ms: 1.386566 + type: 'test' + ... +# Subtest: \#1347: a fence fragment after a trace is read as previewOf reads it +ok 565 - \#1347: a fence fragment after a trace is read as previewOf reads it + --- + duration_ms: 4.23073 + type: 'test' + ... +# Subtest: \#1408: a trace inside a fence reads as its words +ok 566 - \#1408: a trace inside a fence reads as its words + --- + duration_ms: 0.621847 + type: 'test' + ... +# Subtest: \#1408: an ordinary arrow line is not a trace +ok 567 - \#1408: an ordinary arrow line is not a trace + --- + duration_ms: 2.126775 + type: 'test' + ... +# Subtest: \#1408: a known-name trace loses its routing, whole names only +ok 568 - \#1408: a known-name trace loses its routing, whole names only + --- + duration_ms: 1.585081 + type: 'test' + ... +# Subtest: \#1408: no names, no trace removal +ok 569 - \#1408: no names, no trace removal + --- + duration_ms: 0.534233 + type: 'test' + ... +# Subtest: previewOf falls back to an older turn when the newest turn is empty +ok 570 - previewOf falls back to an older turn when the newest turn is empty + --- + duration_ms: 0.556945 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/part-archive.test.js +not ok 139 - test/part-archive.test.js + --- + duration_ms: 222.250823 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/part-archive.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: a Bot's preset is set on its chat and its group Sessions +ok 572 - a Bot's preset is set on its chat and its group Sessions + --- + duration_ms: 3.195963 + type: 'test' + ... +# Subtest: a fresh Session gets the Bot's preset, and a Bot without one keeps the default +ok 573 - a fresh Session gets the Bot's preset, and a Bot without one keeps the default + --- + duration_ms: 0.38257 + type: 'test' + ... +# Subtest: an unknown preset is refused and the Bot keeps its own +ok 574 - an unknown preset is refused and the Bot keeps its own + --- + duration_ms: 1.133179 + type: 'test' + ... +# Subtest: the catalog lists the presets DSH offers, or nothing without the presets service +ok 575 - the catalog lists the presets DSH offers, or nothing without the presets service + --- + duration_ms: 0.707628 + type: 'test' + ... +# Subtest: Auto review is not offered or kept as a Bot's preset +ok 576 - Auto review is not offered or kept as a Bot's preset + --- + duration_ms: 0.77384 + type: 'test' + ... +# Subtest: a preset the Bot's own chat refuses is not kept +ok 577 - a preset the Bot's own chat refuses is not kept + --- + duration_ms: 0.397481 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/plugin-model.test.js +not ok 141 - test/plugin-model.test.js + --- + duration_ms: 90.215773 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/plugin-model.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/pre-step-compaction.test.js +not ok 142 - test/pre-step-compaction.test.js + --- + duration_ms: 92.01065 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/pre-step-compaction.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/project-assistant.test.js +not ok 143 - test/project-assistant.test.js + --- + duration_ms: 221.153265 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/project-assistant.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: \#1701: a board row shows the task title, its priority and the board that owns it +ok 581 - \#1701: a board row shows the task title, its priority and the board that owns it + --- + duration_ms: 56.920968 + type: 'test' + ... +# Subtest: \#1701: a board row draws the title and opens the board that owns the task +ok 582 - \#1701: a board row draws the title and opens the board that owns the task + --- + duration_ms: 32.163215 + type: 'test' + ... +# Subtest: \#1854: the Tasks dialog has no second entry to the Project board +ok 583 - \#1854: the Tasks dialog has no second entry to the Project board + --- + duration_ms: 34.702271 + type: 'test' + ... +# Subtest: \#1701: the three board columns have their own labels +ok 584 - \#1701: the three board columns have their own labels + --- + duration_ms: 20.105273 + type: 'test' + ... +# Subtest: \#1701: the Tasks board reads the task hash and lands on that board +ok 585 - \#1701: the Tasks board reads the task hash and lands on that board + --- + duration_ms: 28.365997 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-tools' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/project-board-levels.test.js +not ok 145 - test/project-board-levels.test.js + --- + duration_ms: 161.099444 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/project-board-levels.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/project-board-panels.test.js +not ok 146 - test/project-board-panels.test.js + --- + duration_ms: 229.901251 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/project-board-panels.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: the board groups rows by their source and keeps each task id +ok 588 - the board groups rows by their source and keeps each task id + --- + duration_ms: 4.653151 + type: 'test' + ... +# Subtest: \#P-167: a finished card keeps its title and priority with no task record to join +ok 589 - \#P-167: a finished card keeps its title and priority with no task record to join + --- + duration_ms: 3.353507 + type: 'test' + ... +# Subtest: \#2198: a finished card opens the board its row names, with no task record to join +ok 590 - \#2198: a finished card opens the board its row names, with no task record to join + --- + duration_ms: 1.396576 + type: 'test' + ... +# Subtest: a workflow row carries its run and node; other rows carry none +ok 591 - a workflow row carries its run and node; other rows carry none + --- + duration_ms: 0.611546 + type: 'test' + ... +# Subtest: a Project with nothing under it is an empty state, not an error +ok 592 - a Project with nothing under it is an empty state, not an error + --- + duration_ms: 1.135259 + type: 'test' + ... +# Subtest: the pane draws the grouped rows and both management buttons, owner or not (\#1749) +ok 593 - the pane draws the grouped rows and both management buttons, owner or not (\#1749) + --- + duration_ms: 2.262209 + type: 'test' + ... +# Subtest: an empty Project renders the empty text and no row +ok 594 - an empty Project renders the empty text and no row + --- + duration_ms: 1.013727 + type: 'test' + ... +# Subtest: a Project-less entry offers the page that creates one (\#1766) +ok 595 - a Project-less entry offers the page that creates one (\#1766) + --- + duration_ms: 16.257062 + type: 'test' + ... +# Subtest: \#1767: the view carries the decisions with their hash and the meetings apart +ok 596 - \#1767: the view carries the decisions with their hash and the meetings apart + --- + duration_ms: 2.004792 + type: 'test' + ... +# Subtest: \#1767: the pane draws the record under the cards, and a deliberating meeting is never a decision +ok 597 - \#1767: the pane draws the record under the cards, and a deliberating meeting is never a decision + --- + duration_ms: 2.797983 + type: 'test' + ... +# Subtest: \#1767: an empty record names the folder it read and the missing decision file +ok 598 - \#1767: an empty record names the folder it read and the missing decision file + --- + duration_ms: 0.78704 + type: 'test' + ... +# Subtest: \#1768: the view carries the three groups and the header counts +ok 599 - \#1768: the view carries the three groups and the header counts + --- + duration_ms: 1.093228 + type: 'test' + ... +# Subtest: \#1896: a sub-minute wait and a sub-minute median read in seconds, never 0 +ok 600 - \#1896: a sub-minute wait and a sub-minute median read in seconds, never 0 + --- + duration_ms: 1.616492 + type: 'test' + ... +# Subtest: \#1768: an unreadable count stays unknown and is never rendered as 0 +ok 601 - \#1768: an unreadable count stays unknown and is never rendered as 0 + --- + duration_ms: 0.810361 + type: 'test' + ... +# Subtest: \#1768: the pane draws each group and a blocked card shows its reason +ok 602 - \#1768: the pane draws each group and a blocked card shows its reason + --- + duration_ms: 2.150376 + type: 'test' + ... +# Subtest: \#2029: a blocked row says how long it has been stuck, and nothing when the host has no stamp +ok 603 - \#2029: a blocked row says how long it has been stuck, and nothing when the host has no stamp + --- + duration_ms: 2.144655 + type: 'test' + ... +# Subtest: \#1814: an open board reads on every tick, stops once a row opens its own board or the tab hides, and resumes +ok 604 - \#1814: an open board reads on every tick, stops once a row opens its own board or the tab hides, and resumes + --- + duration_ms: 48.861209 + type: 'test' + ... +# Subtest: \#1900: an open board reads the dossier once, never on a tick +ok 605 - \#1900: an open board reads the dossier once, never on a tick + --- + duration_ms: 8.803278 + type: 'test' + ... +# Subtest: \#1913: a refused dossier refresh keeps the rows the panel already had +ok 606 - \#1913: a refused dossier refresh keeps the rows the panel already had + --- + duration_ms: 4.475156 + type: 'test' + ... +# Subtest: \#1910: a refused dossier read at open is asked again on the next tick, then frozen +ok 607 - \#1910: a refused dossier read at open is asked again on the next tick, then frozen + --- + duration_ms: 7.452813 + type: 'test' + ... +# Subtest: \#1814: a failing poll keeps the board the last good read drew +ok 608 - \#1814: a failing poll keeps the board the last good read drew + --- + duration_ms: 4.799564 + type: 'test' + ... +# Subtest: \#1814: a read that lands after the board closed is dropped +ok 609 - \#1814: a read that lands after the board closed is dropped + --- + duration_ms: 6.100418 + type: 'test' + ... +# Subtest: \#1814: a second read moves one card to stalled and a waiting card in flight in the same render +ok 610 - \#1814: a second read moves one card to stalled and a waiting card in flight in the same render + --- + duration_ms: 4.666681 + type: 'test' + ... +# Subtest: the metric cards are the seven the issue fixed, each with a caption +ok 611 - the metric cards are the seven the issue fixed, each with a caption + --- + duration_ms: 0.515193 + type: 'test' + ... +# Subtest: an unavailable read says why and draws no number +ok 612 - an unavailable read says why and draws no number + --- + duration_ms: 0.319458 + type: 'test' + ... +# Subtest: a running row carries who, claim age, source and activity, and opens its board +ok 613 - a running row carries who, claim age, source and activity, and opens its board + --- + duration_ms: 0.481772 + type: 'test' + ... +# Subtest: \#1855: the view keeps finished cards out of the three groups and in one archive +ok 614 - \#1855: the view keeps finished cards out of the three groups and in one archive + --- + duration_ms: 4.722323 + type: 'test' + ... +# Subtest: \#1855: the archive is a collapsed group on first paint and the header keeps the count +ok 615 - \#1855: the archive is a collapsed group on first paint and the header keeps the count + --- + duration_ms: 5.854913 + type: 'test' + ... +# Subtest: \#2021: a decision total above the drawn rows draws one line and rides on the section +ok 616 - \#2021: a decision total above the drawn rows draws one line and rides on the section + --- + duration_ms: 1.15495 + type: 'test' + ... +# Subtest: \#2021: no total, or one that matches, draws no line — and each meeting list says its own +ok 617 - \#2021: no total, or one that matches, draws no line — and each meeting list says its own + --- + duration_ms: 2.237269 + type: 'test' + ... +# Subtest: \#2041: activating a decision row asks for that row and draws its text under it +ok 618 - \#2041: activating a decision row asks for that row and draws its text under it + --- + duration_ms: 7.542956 + type: 'test' + ... +# Subtest: \#2041: a second activation collapses the open decision, one row at a time +ok 619 - \#2041: a second activation collapses the open decision, one row at a time + --- + duration_ms: 5.969545 + type: 'test' + ... +# Subtest: \#2041: each refused answer reads its own sentence, never the markup it carries +ok 620 - \#2041: each refused answer reads its own sentence, never the markup it carries + --- + duration_ms: 12.031833 + type: 'test' + ... +# Subtest: \#2041: an answer that lands after another row opened is never drawn +ok 621 - \#2041: an answer that lands after another row opened is never drawn + --- + duration_ms: 5.454112 + type: 'test' + ... +# Subtest: \#2041: the overlay hands the board its own read, so a row opens through it +ok 622 - \#2041: the overlay hands the board its own read, so a row opens through it + --- + duration_ms: 4.361193 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/project-board.test.js +not ok 148 - test/project-board.test.js + --- + duration_ms: 207.955462 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/project-board.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/project-digest-authz.test.js +not ok 149 - test/project-digest-authz.test.js + --- + duration_ms: 218.166527 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/project-digest-authz.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/project-metrics-scope.test.js +not ok 150 - test/project-metrics-scope.test.js + --- + duration_ms: 257.599701 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/project-metrics-scope.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: the natural day is the reader zone, not UTC +ok 626 - the natural day is the reader zone, not UTC + --- + duration_ms: 33.130261 + type: 'test' + ... +# Subtest: a day count compares the field it documents +ok 627 - a day count compares the field it documents + --- + duration_ms: 1.744885 + type: 'test' + ... +# Subtest: an empty window is null, never zero, and median halves round +ok 628 - an empty window is null, never zero, and median halves round + --- + duration_ms: 0.888563 + type: 'test' + ... +# Subtest: durations are the last seven days only +ok 629 - durations are the last seven days only + --- + duration_ms: 1.260383 + type: 'test' + ... +# Subtest: no credential answers unavailable without a request +ok 630 - no credential answers unavailable without a request + --- + duration_ms: 1.374176 + type: 'test' + ... +# Subtest: a failed read degrades and is not cached +ok 631 - a failed read degrades and is not cached + --- + duration_ms: 1.275473 + type: 'test' + ... +# Subtest: a cache hit spends the source once +ok 632 - a cache hit spends the source once + --- + duration_ms: 4.449916 + type: 'test' + ... +# Subtest: a card claimed after a cached read still shows as running +ok 633 - a card claimed after a cached read still shows as running + --- + duration_ms: 2.966587 + type: 'test' + ... +# Subtest: a running row carries who, how long and where from +ok 634 - a running row carries who, how long and where from + --- + duration_ms: 1.066478 + type: 'test' + ... +# Subtest: the task median reads the store stamps only +ok 635 - the task median reads the store stamps only + --- + duration_ms: 1.615922 + type: 'test' + ... +# Subtest: \#1849: an unknown zone answers the named UTC fallback on every path +ok 636 - \#1849: an unknown zone answers the named UTC fallback on every path + --- + duration_ms: 4.118497 + type: 'test' + ... +# Subtest: \#1849: a valid zone keeps the day boundary and the answer it had +ok 637 - \#1849: a valid zone keeps the day boundary and the answer it had + --- + duration_ms: 2.012472 + type: 'test' + ... +# Subtest: a card that finished the way the host finishes cards is a done duration +ok 638 - a card that finished the way the host finishes cards is a done duration + --- + duration_ms: 0.957415 + type: 'test' + ... +# Subtest: only cancelled and failed cards is null, never zero +ok 639 - only cancelled and failed cards is null, never zero + --- + duration_ms: 0.603926 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/project-owner-gate.test.js +not ok 152 - test/project-owner-gate.test.js + --- + duration_ms: 199.651686 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/project-owner-gate.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/project-role-authz.test.js +not ok 153 - test/project-role-authz.test.js + --- + duration_ms: 201.32134 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/project-role-authz.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-tools' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/project-roles.test.js +not ok 154 - test/project-roles.test.js + --- + duration_ms: 114.193706 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/project-roles.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/project-run-seam.test.js +not ok 155 - test/project-run-seam.test.js + --- + duration_ms: 203.347612 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/project-run-seam.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: Settings lists a Projects page beside Bots and group chats, and draws it +ok 644 - Settings lists a Projects page beside Bots and group chats, and draws it + --- + duration_ms: 4.682662 + type: 'test' + ... +# Subtest: an install with no Project says so, and creating one re-reads the list +ok 645 - an install with no Project says so, and creating one re-reads the list + --- + duration_ms: 8.017738 + type: 'test' + ... +# Subtest: a row opens its board, a Bot binds with its Project id, and unbinding sends null +ok 646 - a row opens its board, a Bot binds with its Project id, and unbinding sends null + --- + duration_ms: 3.882581 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/project-state.test.js +not ok 157 - test/project-state.test.js + --- + duration_ms: 205.955399 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/project-state.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/project-team.test.js +not ok 158 - test/project-team.test.js + --- + duration_ms: 204.123372 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/project-team.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: the list draws each Project with the role the host answered (\#1828) +ok 649 - the list draws each Project with the role the host answered (\#1828) + --- + duration_ms: 3.022408 + type: 'test' + ... +# Subtest: an empty list and an unreadable one say so instead of drawing nothing (\#1828) +ok 650 - an empty list and an unreadable one say so instead of drawing nothing (\#1828) + --- + duration_ms: 0.561025 + type: 'test' + ... +# Subtest: a row opens its board by id, and the hash is the board entry point (\#1828) +ok 651 - a row opens its board by id, and the hash is the board entry point (\#1828) + --- + duration_ms: 0.42028 + type: 'test' + ... +# Subtest: the menu lists only switchable roles and marks the current one (\#1828) +ok 652 - the menu lists only switchable roles and marks the current one (\#1828) + --- + duration_ms: 0.866313 + type: 'test' + ... +# Subtest: the menu draws the current rank checked and disabled, and picking calls back (\#1828) +ok 653 - the menu draws the current rank checked and disabled, and picking calls back (\#1828) + --- + duration_ms: 0.736879 + type: 'test' + ... +# Subtest: a refusal is quoted with the host reason, and a switch says so (\#1828) +ok 654 - a refusal is quoted with the host reason, and a switch says so (\#1828) + --- + duration_ms: 0.450792 + type: 'test' + ... +# Subtest: the sidebar row carries the expand arrow and reports its state (\#1828) +ok 655 - the sidebar row carries the expand arrow and reports its state (\#1828) + --- + duration_ms: 0.997186 + type: 'test' + ... +# Subtest: the sidebar asks the host for `projects` and `project-role`, unprefixed (\#1854) +ok 656 - the sidebar asks the host for `projects` and `project-role`, unprefixed (\#1854) + --- + duration_ms: 14.041004 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/projects.test.js +not ok 160 - test/projects.test.js + --- + duration_ms: 201.793971 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/projects.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: Bots get a scoped progress rule without changing the private/group prompt prefix +ok 658 - Bots get a scoped progress rule without changing the private/group prompt prefix + --- + duration_ms: 3.317767 + type: 'test' + ... +# Subtest: the group relay and non-Bot sessions do not get progress instructions +ok 659 - the group relay and non-Bot sessions do not get progress instructions + --- + duration_ms: 1.066507 + type: 'test' + ... +# Subtest: a Bot stays idle until it is addressed or given a task (part B of \#645) +ok 660 - a Bot stays idle until it is addressed or given a task (part B of \#645) + --- + duration_ms: 1.54473 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/questions.test.js +not ok 162 - test/questions.test.js + --- + duration_ms: 230.931769 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/questions.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/quiet-hours.test.js +not ok 163 - test/quiet-hours.test.js + --- + duration_ms: 204.911472 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/quiet-hours.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/rate-limit-retry.test.js +not ok 164 - test/rate-limit-retry.test.js + --- + duration_ms: 195.521839 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/rate-limit-retry.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/reach-policy.test.js +not ok 165 - test/reach-policy.test.js + --- + duration_ms: 200.419446 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/reach-policy.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/cjs/loader:1430 +# const err = new Error(message); +# ^ +# Error: Cannot find module 'jsdom' +# Require stack: +# - /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Function._resolveFilename (node:internal/modules/cjs/loader:1430:15) +# at defaultResolveImpl (node:internal/modules/cjs/loader:1040:19) +# at defaultResolve (node:internal/modules/cjs/loader:1075:31) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:46:12) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) +# at resolveForCJSWithHooks (node:internal/modules/cjs/loader:1084:25) +# at Function._load (node:internal/modules/cjs/loader:1216:25) +# at wrapModuleLoad (node:internal/modules/cjs/loader:254:19) { +# code: 'MODULE_NOT_FOUND', +# requireStack: [ +# '/data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json' +# ] +# } +# Node.js v22.23.3 +# Subtest: test/read-page.test.js +not ok 166 - test/read-page.test.js + --- + duration_ms: 112.106392 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/read-page.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: \#2055: a link to a real directory is other, not a directory here +ok 666 - \#2055: a link to a real directory is other, not a directory here + --- + duration_ms: 8.743787 + type: 'test' + ... +# Subtest: \#2055: a link to a path that does not exist is other, not absent +ok 667 - \#2055: a link to a path that does not exist is other, not absent + --- + duration_ms: 3.744388 + type: 'test' + ... +# Subtest: \#2055: a plain file is other +ok 668 - \#2055: a plain file is other + --- + duration_ms: 2.001752 + type: 'test' + ... +# Subtest: \#2055: a real directory is real, and a path that is not there is absent +ok 669 - \#2055: a real directory is real, and a path that is not there is absent + --- + duration_ms: 1.691634 + type: 'test' + ... +# Subtest: \#2079: a leaf file is real, absent, or other, and a link is never a file here +ok 670 - \#2079: a leaf file is real, absent, or other, and a link is never a file here + --- + duration_ms: 3.218604 + type: 'test' + ... +# Subtest: \#P-hardlink: a temp name is writable only when it is absent or a plain file of its own +ok 671 - \#P-hardlink: a temp name is writable only when it is absent or a plain file of its own + --- + duration_ms: 1.238523 + type: 'test' + ... +# Subtest: \#2159: a hard-linked leaf is other, and a file of one name beside it stays real +ok 672 - \#2159: a hard-linked leaf is other, and a file of one name beside it stays real + --- + duration_ms: 2.797142 + type: 'test' + ... +# Subtest: \#1087: a friend DM wait says their approval is pending, not the thinking pool +ok 673 - \#1087: a friend DM wait says their approval is pending, not the thinking pool + --- + duration_ms: 2.515165 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/remote-chat.test.js +not ok 169 - test/remote-chat.test.js + --- + duration_ms: 89.69028 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/remote-chat.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/remote-room.test.js +not ok 170 - test/remote-room.test.js + --- + duration_ms: 210.159299 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/remote-room.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/repeated-delivery.test.js +not ok 171 - test/repeated-delivery.test.js + --- + duration_ms: 191.601647 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/repeated-delivery.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: the node-command reader finds a script and its line +ok 677 - the node-command reader finds a script and its line + --- + duration_ms: 2.614287 + type: 'test' + ... +# Subtest: every node command in the turn-split report names a script that exists at the tree root +ok 678 - every node command in the turn-split report names a script that exists at the tree root + --- + duration_ms: 1.448398 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/retired-bot-paths.test.js +not ok 173 - test/retired-bot-paths.test.js + --- + duration_ms: 226.712659 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/retired-bot-paths.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/retired-sessions.test.js +not ok 174 - test/retired-sessions.test.js + --- + duration_ms: 199.567184 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/retired-sessions.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/room-collaboration.test.js +not ok 175 - test/room-collaboration.test.js + --- + duration_ms: 198.909907 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/room-collaboration.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/room-context.test.js +not ok 176 - test/room-context.test.js + --- + duration_ms: 77.38382 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/room-context.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: an external Bot whose process dies answers with a failure and lands in the room, not in silence (\#198) +ok 683 - an external Bot whose process dies answers with a failure and lands in the room, not in silence (\#198) + --- + duration_ms: 45.934233 + type: 'test' + ... +# Subtest: an external Bot answers a room turn with the line its process writes (\#198) +ok 684 - an external Bot answers a room turn with the line its process writes (\#198) + --- + duration_ms: 39.579248 + type: 'test' + ... +# Subtest: a crashed external Bot starts a fresh process on its next turn (\#198) +ok 685 - a crashed external Bot starts a fresh process on its next turn (\#198) + --- + duration_ms: 73.807007 + type: 'test' + ... +# Subtest: a seat that is closed takes its process with it (\#198) +ok 686 - a seat that is closed takes its process with it (\#198) + --- + duration_ms: 81.048846 + type: 'test' + ... +# Subtest: a stop is asked for on the protocol before the signal, and a shell is not a program (\#198) +ok 687 - a stop is asked for on the protocol before the signal, and a shell is not a program (\#198) + --- + duration_ms: 124.575736 + type: 'test' + ... +# Subtest: a stop the child obeys is not reported to the room as a crash (\#198) +ok 688 - a stop the child obeys is not reported to the room as a crash (\#198) + --- + duration_ms: 324.406186 + type: 'test' + ... +# Subtest: a turn that times out comes back as no answer, not as a model failure (\#198) +ok 689 - a turn that times out comes back as no answer, not as a model failure (\#198) + --- + duration_ms: 246.544004 + type: 'test' + ... +# Subtest: a child that ignores the stop is killed after the grace (\#1164) +ok 690 - a child that ignores the stop is killed after the grace (\#1164) + --- + duration_ms: 602.340095 + type: 'test' + ... +# Subtest: a seat that was closed is never handed the next turn (\#1164) +ok 691 - a seat that was closed is never handed the next turn (\#1164) + --- + duration_ms: 97.721359 + type: 'test' + ... +# Subtest: the timeout state line says timed out (\#1164) +ok 692 - the timeout state line says timed out (\#1164) + --- + duration_ms: 202.752357 + type: 'test' + ... +# Subtest: a crash line carries the last words from stderr (\#1164) +ok 693 - a crash line carries the last words from stderr (\#1164) + --- + duration_ms: 84.430643 + type: 'test' + ... +# Subtest: a crash is reported when a grandchild holds the stdio open (\#1164) +ok 694 - a crash is reported when a grandchild holds the stdio open (\#1164) + --- + duration_ms: 186.502655 + type: 'test' + ... +# Subtest: a record may not carry a command line, only arguments (\#198) +ok 695 - a record may not carry a command line, only arguments (\#198) + --- + duration_ms: 1.703324 + type: 'test' + ... +# Subtest: \#876: the card names the room, its lead, its people and the deadline +ok 696 - \#876: the card names the room, its lead, its people and the deadline + --- + duration_ms: 2.850614 + type: 'test' + ... +# Subtest: \#876: `kind` only renames the hooks, so both surfaces draw this one tree +ok 697 - \#876: `kind` only renames the hooks, so both surfaces draw this one tree + --- + duration_ms: 1.097878 + type: 'test' + ... +# Subtest: \#876: a name a stranger wrote reaches the card as plain text +ok 698 - \#876: a name a stranger wrote reaches the card as plain text + --- + duration_ms: 1.005076 + type: 'test' + ... +# Subtest: \#876: nothing worth saying is no card, and a count is only what reads as one +ok 699 - \#876: nothing worth saying is no card, and a count is only what reads as one + --- + duration_ms: 0.3853 + type: 'test' + ... +# Subtest: \#876: the deadline line is shared copy, and an expired one says so +ok 700 - \#876: the deadline line is shared copy, and an expired one says so + --- + duration_ms: 1.040917 + type: 'test' + ... +# Subtest: \#876: a plugin row in the Members card gets the room and a host call for core endpoints +ok 701 - \#876: a plugin row in the Members card gets the room and a host call for core endpoints + --- + duration_ms: 55.610414 + type: 'test' + ... +# Subtest: \#876: the Members card draws the plugin rows only in a group that lives here +ok 702 - \#876: the Members card draws the plugin rows only in a group that lives here + --- + duration_ms: 0.847812 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/room-membership.test.js +not ok 180 - test/room-membership.test.js + --- + duration_ms: 198.023494 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/room-membership.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: a stale Bot still repairs through applyModel before it speaks (\#289) +ok 704 - a stale Bot still repairs through applyModel before it speaks (\#289) + --- + duration_ms: 4.359714 + type: 'test' + ... +# Subtest: opening an existing group session re-selects a route the record already calls applied (\#1127) +ok 705 - opening an existing group session re-selects a route the record already calls applied (\#1127) + --- + duration_ms: 2.558906 + type: 'test' + ... +# Subtest: DSH participant opens isolated room sessions and reuses persisted links +ok 706 - DSH participant opens isolated room sessions and reuses persisted links + --- + duration_ms: 1.623652 + type: 'test' + ... +# (node:1237989) ExperimentalWarning: The MockTimers API is an experimental feature and might change at any time +# (Use `node --trace-warnings ...` to show where the warning was created) +# Subtest: DSH participant waits for capabilities before opening completes +ok 707 - DSH participant waits for capabilities before opening completes + --- + duration_ms: 11.111599 + type: 'test' + ... +# Subtest: a new DSH session invalidates its old room cursor even if setup fails +ok 708 - a new DSH session invalidates its old room cursor even if setup fails + --- + duration_ms: 2.949767 + type: 'test' + ... +# Subtest: DSH participant preserves exchange attribution and releases completed waiters +ok 709 - DSH participant preserves exchange attribution and releases completed waiters + --- + duration_ms: 2.087875 + type: 'test' + ... +# Subtest: DSH participant yields for approval or earlier work without losing stop targets +ok 710 - DSH participant yields for approval or earlier work without losing stop targets + --- + duration_ms: 1.344475 + type: 'test' + ... +# Subtest: DSH events follow context rollover and only slow tools yield the room +ok 711 - DSH events follow context rollover and only slow tools yield the room + --- + duration_ms: 2.390252 + type: 'test' + ... +# Subtest: DSH failure, delivery failure and abort release the waiter without inventing success +ok 712 - DSH failure, delivery failure and abort release the waiter without inventing success + --- + duration_ms: 2.30375 + type: 'test' + ... +# Subtest: DSH cancellation distinguishes a round exchange from stopping member work +ok 713 - DSH cancellation distinguishes a round exchange from stopping member work + --- + duration_ms: 1.170091 + type: 'test' + ... +# Subtest: a group sidebar row shows an open question asked in that group (\#552) +ok 714 - a group sidebar row shows an open question asked in that group (\#552) + --- + duration_ms: 1.899799 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/room-text-bound.test.js +not ok 183 - test/room-text-bound.test.js + --- + duration_ms: 193.430584 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/room-text-bound.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/room-ticket-seat.test.js +not ok 184 - test/room-ticket-seat.test.js + --- + duration_ms: 99.973987 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/room-ticket-seat.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/roster.test.js +not ok 185 - test/roster.test.js + --- + duration_ms: 213.148046 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/roster.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/rounds.test.js +not ok 186 - test/rounds.test.js + --- + duration_ms: 215.190369 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/rounds.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/run-bot-tools.test.js +not ok 187 - test/run-bot-tools.test.js + --- + duration_ms: 244.040419 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/run-bot-tools.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/runbot-model.test.js +not ok 188 - test/runbot-model.test.js + --- + duration_ms: 194.666796 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/runbot-model.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: openPlugins closes the Settings dialog first, then opens the Plugins panel +ok 721 - openPlugins closes the Settings dialog first, then opens the Plugins panel + --- + duration_ms: 3.208934 + type: 'test' + ... +# Subtest: Settings → Scheduled tasks, with Automation tasks off, has one button and it opens Plugins +ok 722 - Settings → Scheduled tasks, with Automation tasks off, has one button and it opens Plugins + --- + duration_ms: 1.198721 + type: 'test' + ... +# Subtest: a Bot's Scheduled tasks card, with Automation tasks off, opens Plugins too +ok 723 - a Bot's Scheduled tasks card, with Automation tasks off, opens Plugins too + --- + duration_ms: 0.752889 + type: 'test' + ... +# Subtest: the hint reads the same in English and Chinese, and says Plugins page, not Harness settings +ok 724 - the hint reads the same in English and Chinese, and says Plugins page, not Harness settings + --- + duration_ms: 1.826578 + type: 'test' + ... +# Subtest: a task row offers Edit and Pause; a paused one reads Paused and offers Resume (\#354) +ok 725 - a task row offers Edit and Pause; a paused one reads Paused and offers Resume (\#354) + --- + duration_ms: 45.78454 + type: 'test' + ... +# Subtest: Edit opens the task form filled in, and saving updates that task (\#354) +ok 726 - Edit opens the task form filled in, and saving updates that task (\#354) + --- + duration_ms: 5.557294 + type: 'test' + ... +# Subtest: the form starts from the edited task: repeat interval, one time, cron kept +ok 727 - the form starts from the edited task: repeat interval, one time, cron kept + --- + duration_ms: 2.431703 + type: 'test' + ... +# Subtest: a repeat that is not a whole number of minutes reads as seconds, not rounded (\#1651 a, c) +ok 728 - a repeat that is not a whole number of minutes reads as seconds, not rounded (\#1651 a, c) + --- + duration_ms: 1.756436 + type: 'test' + ... +# Subtest: whole-minute and whole-hour repeats keep the words they had (\#1651 d) +ok 729 - whole-minute and whole-hour repeats keep the words they had (\#1651 d) + --- + duration_ms: 1.368885 + type: 'test' + ... +# Subtest: the edit form holds a non-whole-minute interval exactly (\#1651 a) +ok 730 - the edit form holds a non-whole-minute interval exactly (\#1651 a) + --- + duration_ms: 2.070714 + type: 'test' + ... +# Subtest: editing only the title sends the stored repeat back unchanged (\#1651 a, b) +ok 731 - editing only the title sends the stored repeat back unchanged (\#1651 a, b) + --- + duration_ms: 4.538268 + type: 'test' + ... +# Subtest: a row says how its last run went; only a failed run offers Retry, which runs the task now (\#473) +ok 732 - a row says how its last run went; only a failed run offers Retry, which runs the task now (\#473) + --- + duration_ms: 4.412435 + type: 'test' + ... +# Subtest: with quiet hours off the page says Off and offers to turn them on (\#1166) +ok 733 - with quiet hours off the page says Off and offers to turn them on (\#1166) + --- + duration_ms: 1.131499 + type: 'test' + ... +# Subtest: with quiet hours on the page shows the window, and a repeat task says it is not checked (\#1166) +ok 734 - with quiet hours on the page shows the window, and a repeat task says it is not checked (\#1166) + --- + duration_ms: 3.199833 + type: 'test' + ... +# Subtest: turning quiet hours on saves the default window as the settings write (\#1166) +ok 735 - turning quiet hours on saves the default window as the settings write (\#1166) + --- + duration_ms: 2.851635 + type: 'test' + ... +# Subtest: a once task sends its zone, so the host reads its wall clock (\#1166) +ok 736 - a once task sends its zone, so the host reads its wall clock (\#1166) + --- + duration_ms: 1.682303 + type: 'test' + ... +# Subtest: the repeat-task warning is the view flag, not the page scanning its tasks (\#1199) +ok 737 - the repeat-task warning is the view flag, not the page scanning its tasks (\#1199) + --- + duration_ms: 2.339101 + type: 'test' + ... +# Subtest: after the quiet-hours write the page reads the host view again, not a predicted flag (\#1199) +ok 738 - after the quiet-hours write the page reads the host view again, not a predicted flag (\#1199) + --- + duration_ms: 3.8196 + type: 'test' + ... +# Subtest: the quiet-hours copy has Chinese entries, including the refusal with the window end (\#1166) +ok 739 - the quiet-hours copy has Chinese entries, including the refusal with the window end (\#1166) + --- + duration_ms: 1.354795 + type: 'test' + ... +# Subtest: Copy asks for another chat and posts schedule-create with copyFrom (\#1287) +ok 740 - Copy asks for another chat and posts schedule-create with copyFrom (\#1287) + --- + duration_ms: 2.419503 + type: 'test' + ... +# Subtest: the copy picker opens with no target chosen, so one click cannot send it (\#1322) +ok 741 - the copy picker opens with no target chosen, so one click cannot send it (\#1322) + --- + duration_ms: 1.487708 + type: 'test' + ... +# Subtest: the new-task form opens with no target chosen, so one click cannot create it (\#1334) +ok 742 - the new-task form opens with no target chosen, so one click cannot create it (\#1334) + --- + duration_ms: 3.042319 + type: 'test' + ... +# Subtest: a task row offers Copy (\#1287) +ok 743 - a task row offers Copy (\#1287) + --- + duration_ms: 0.982866 + type: 'test' + ... +# Subtest: \#2024: a Bot whose tasks are all paused lists them, and the add-one empty state is gone +ok 744 - \#2024: a Bot whose tasks are all paused lists them, and the add-one empty state is gone + --- + duration_ms: 1.245822 + type: 'test' + ... +# Subtest: \#2024: each row answers when — Next: …, Paused, Finished +ok 745 - \#2024: each row answers when — Next: …, Paused, Finished + --- + duration_ms: 0.810491 + type: 'test' + ... +# Subtest: \#2024: a missing or malformed scheduledAt renders without throwing +ok 746 - \#2024: a missing or malformed scheduledAt renders without throwing + --- + duration_ms: 1.357375 + type: 'test' + ... +# Subtest: \#2024: a Bot with no tasks at all keeps the empty state and its add button +ok 747 - \#2024: a Bot with no tasks at all keeps the empty state and its add button + --- + duration_ms: 0.3706 + type: 'test' + ... +# Subtest: \#2030: five tasks draw three rows and the title says the real count +ok 748 - \#2030: five tasks draw three rows and the title says the real count + --- + duration_ms: 0.796101 + type: 'test' + ... +# Subtest: \#2030: the row after the three says how many are left and opens the list, not the new-task form +ok 749 - \#2030: the row after the three says how many are left and opens the list, not the new-task form + --- + duration_ms: 0.641197 + type: 'test' + ... +# Subtest: \#2030: three tasks keep the bare title and no more row; no tasks keep the empty state +ok 750 - \#2030: three tasks keep the bare title and no more row; no tasks keep the empty state + --- + duration_ms: 0.676708 + type: 'test' + ... +# Subtest: \#2035: a schedules view that has not been read yet draws no empty state and opens nothing +ok 751 - \#2035: a schedules view that has not been read yet draws no empty state and opens nothing + --- + duration_ms: 0.230926 + type: 'test' + ... +# Subtest: \#2035: a read that answers zero tasks keeps the empty state and its add button +ok 752 - \#2035: a read that answers zero tasks keeps the empty state and its add button + --- + duration_ms: 0.318048 + type: 'test' + ... +# Subtest: \#2035: five tasks keep the \#2030 shape — count in the title, three rows, one more row +ok 753 - \#2035: five tasks keep the \#2030 shape — count in the title, three rows, one more row + --- + duration_ms: 0.676848 + type: 'test' + ... +# Subtest: \#2039: a group chat's panel lists only the tasks that room owns +ok 754 - \#2039: a group chat's panel lists only the tasks that room owns + --- + duration_ms: 0.879713 + type: 'test' + ... +# Subtest: \#2039: a row and the more row in a room's panel open the list with no target +ok 755 - \#2039: a row and the more row in a room's panel open the list with no target + --- + duration_ms: 0.828292 + type: 'test' + ... +# Subtest: \#2039: a room with no tasks draws nothing at all +ok 756 - \#2039: a room with no tasks draws nothing at all + --- + duration_ms: 0.242886 + type: 'test' + ... +# Subtest: \#2039: a face-to-face room draws no schedule section +ok 757 - \#2039: a face-to-face room draws no schedule section + --- + duration_ms: 0.264686 + type: 'test' + ... +# Subtest: \#2039: an unread schedules view draws no room section either +ok 758 - \#2039: an unread schedules view draws no room section either + --- + duration_ms: 0.187284 + type: 'test' + ... +# Subtest: a failed read is a sentence on the page, not Loading… for good +ok 759 - a failed read is a sentence on the page, not Loading… for good + --- + duration_ms: 0.269637 + type: 'test' + ... +# Subtest: a Bot's card says the read failed, and the details line stays quiet +ok 760 - a Bot's card says the read failed, and the details line stays quiet + --- + duration_ms: 0.584185 + type: 'test' + ... +# Subtest: the failure sentence is null while there is nothing to say +ok 761 - the failure sentence is null while there is nothing to say + --- + duration_ms: 0.186965 + type: 'test' + ... +# Subtest: \#2112: a narrowed list says rows are hidden, not "No scheduled tasks yet." +ok 762 - \#2112: a narrowed list says rows are hidden, not "No scheduled tasks yet." + --- + duration_ms: 0.707648 + type: 'test' + ... +# Subtest: \#2112: with nothing dropped the page keeps "No scheduled tasks yet." +ok 763 - \#2112: with nothing dropped the page keeps "No scheduled tasks yet." + --- + duration_ms: 0.38237 + type: 'test' + ... +# Subtest: \#2112: the Bot details line says the list is narrowed, not that none exist +ok 764 - \#2112: the Bot details line says the list is narrowed, not that none exist + --- + duration_ms: 0.293137 + type: 'test' + ... +# Subtest: \#2232: a read-only window draws no scheduled-task write control +ok 765 - \#2232: a read-only window draws no scheduled-task write control + --- + duration_ms: 2.090865 + type: 'test' + ... +# Subtest: \#2232: a refused Pause, Resume or Delete says the host sentence in that row, once +ok 766 - \#2232: a refused Pause, Resume or Delete says the host sentence in that row, once + --- + duration_ms: 18.277465 + type: 'test' + ... +# Subtest: \#2232: a successful Pause speaks nothing and the page reads the host view again +ok 767 - \#2232: a successful Pause speaks nothing and the page reads the host view again + --- + duration_ms: 1.934591 + type: 'test' + ... +# Subtest: \#2232: a failed row keeps its Retry alert, in the same slot +ok 768 - \#2232: a failed row keeps its Retry alert, in the same slot + --- + duration_ms: 1.144539 + type: 'test' + ... +# Subtest: \#2232: Quiet hours and the form announce a refusal, not only print it +ok 769 - \#2232: Quiet hours and the form announce a refusal, not only print it + --- + duration_ms: 3.197463 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/schedules.test.js +not ok 190 - test/schedules.test.js + --- + duration_ms: 213.728151 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/schedules.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/secrets.test.js +not ok 191 - test/secrets.test.js + --- + duration_ms: 243.69624 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/secrets.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/session-identity.test.js +not ok 192 - test/session-identity.test.js + --- + duration_ms: 256.122733 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/session-identity.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: a refused write in Settings stays in view instead of scrolling away with the page (\#2194) +ok 773 - a refused write in Settings stays in view instead of scrolling away with the page (\#2194) + --- + duration_ms: 7.185136 + type: 'test' + ... +# Subtest: a flybot.settings.page entry is listed after Connectors and drawn with the host t, Section, Row and call +ok 774 - a flybot.settings.page entry is listed after Connectors and drawn with the host t, Section, Row and call + --- + duration_ms: 4.960119 + type: 'test' + ... +# Subtest: a page whose plugin is gone falls back to General, and without plugins the list is unchanged +ok 775 - a page whose plugin is gone falls back to General, and without plugins the list is unchanged + --- + duration_ms: 0.791681 + type: 'test' + ... +# Subtest: a switch row under a card of the same name shows only its hint; the switch keeps its label +ok 776 - a switch row under a card of the same name shows only its hint; the switch keeps its label + --- + duration_ms: 3.000448 + type: 'test' + ... +# Subtest: the Model and Main Bot cards do not repeat their title as a row label +ok 777 - the Model and Main Bot cards do not repeat their title as a row label + --- + duration_ms: 0.801511 + type: 'test' + ... +# Subtest: Create Bot has one back control: the dialog header, or the inline form's footer +ok 778 - Create Bot has one back control: the dialog header, or the inline form's footer + --- + duration_ms: 0.39373 + type: 'test' + ... +# Subtest: the account menu fits its longest item instead of cutting it +ok 779 - the account menu fits its longest item instead of cutting it + --- + duration_ms: 1.144029 + type: 'test' + ... +# Subtest: a read-only window says so in the Settings header, in the host's own words (\#2199) +ok 780 - a read-only window says so in the Settings header, in the host's own words (\#2199) + --- + duration_ms: 6.459307 + type: 'test' + ... +# Subtest: a writable window, a blank sentence and a missing one draw no read-only line at all (\#2199) +ok 781 - a writable window, a blank sentence and a missing one draw no read-only line at all (\#2199) + --- + duration_ms: 14.787295 + type: 'test' + ... +# Subtest: the standing read-only line stays above the refusal one pressed control adds (\#2199) +ok 782 - the standing read-only line stays above the refusal one pressed control adds (\#2199) + --- + duration_ms: 7.155316 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/settle.test.js +not ok 197 - test/settle.test.js + --- + duration_ms: 265.882196 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/settle.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: \#1086: the document and the app frame cannot scroll sideways +ok 784 - \#1086: the document and the app frame cannot scroll sideways + --- + duration_ms: 14.024764 + type: 'test' + ... +# Subtest: \#1086: a sideways offset on the page and the frame is cleared, a transcript scroller is not +ok 785 - \#1086: a sideways offset on the page and the frame is cleared, a transcript scroller is not + --- + duration_ms: 0.620446 + type: 'test' + ... +# Subtest: \#1086: typing in the composer puts the shell back; a code block keeps its own scroll +ok 786 - \#1086: typing in the composer puts the shell back; a code block keeps its own scroll + --- + duration_ms: 0.913474 + type: 'test' + ... +# Subtest: \#1086: a scrollLeft that lands after the composer focuses is put back +ok 787 - \#1086: a scrollLeft that lands after the composer focuses is put back + --- + duration_ms: 0.423141 + type: 'test' + ... +# Subtest: \#1086: the error toast is centered without a box that hangs past the viewport +ok 788 - \#1086: the error toast is centered without a box that hangs past the viewport + --- + duration_ms: 0.997696 + type: 'test' + ... +# Subtest: a read-only host keeps the wide sidebar sentence exactly as it was +ok 789 - a read-only host keeps the wide sidebar sentence exactly as it was + --- + duration_ms: 3.407339 + type: 'test' + ... +# Subtest: a read-only host says so in the sidebar rail, with the whole sentence as its tooltip +ok 790 - a read-only host says so in the sidebar rail, with the whole sentence as its tooltip + --- + duration_ms: 0.502543 + type: 'test' + ... +# Subtest: the rail clips the sentence to one line and the wide rule is untouched +ok 791 - the rail clips the sentence to one line and the wide rule is untouched + --- + duration_ms: 0.626326 + type: 'test' + ... +# Subtest: a writable window, or a host sentence of only whitespace, draws no read-only sentence in either shape +ok 792 - a writable window, or a host sentence of only whitespace, draws no read-only sentence in either shape + --- + duration_ms: 2.518845 + type: 'test' + ... +# Subtest: waveBytes writes a 16 kHz mono PCM16 WAV +ok 793 - waveBytes writes a 16 kHz mono PCM16 WAV + --- + duration_ms: 2.656599 + type: 'test' + ... +# Subtest: base64Of matches Buffer for large input +ok 794 - base64Of matches Buffer for large input + --- + duration_ms: 15.03046 + type: 'test' + ... +# Subtest: speechCatalog is usable only when the selected provider is ready +ok 795 - speechCatalog is usable only when the selected provider is ready + --- + duration_ms: 1.344065 + type: 'test' + ... +# Subtest: transcribeWave sends the selection and returns trimmed text +ok 796 - transcribeWave sends the selection and returns trimmed text + --- + duration_ms: 0.588005 + type: 'test' + ... +# Subtest: transcribeWave rejects audio over the limit and service failures +ok 797 - transcribeWave rejects audio over the limit and service failures + --- + duration_ms: 0.933174 + type: 'test' + ... +# Subtest: turnDetector ends a turn after a pause that follows speech +ok 798 - turnDetector ends a turn after a pause that follows speech + --- + duration_ms: 0.3611 + type: 'test' + ... +# Subtest: a group lists only the grants the signed-in person gave, and all of them before anyone signs in +ok 799 - a group lists only the grants the signed-in person gave, and all of them before anyone signs in + --- + duration_ms: 2.107255 + type: 'test' + ... +# Subtest: Remove revokes that one grant on its Bot or group, and an empty list draws nothing +ok 800 - Remove revokes that one grant on its Bot or group, and an empty list draws nothing + --- + duration_ms: 0.951705 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/state-journal.test.js +not ok 202 - test/state-journal.test.js + --- + duration_ms: 202.561721 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/state-journal.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: the English run counts say "1 turn" and "1 step" +ok 802 - the English run counts say "1 turn" and "1 step" + --- + duration_ms: 1.861008 + type: 'test' + ... +# Subtest: other keys and translated copy pass through unchanged +ok 803 - other keys and translated copy pass through unchanged + --- + duration_ms: 0.37224 + type: 'test' + ... +# Subtest: the footer is the shell's own entry, drawn with the plural t and the shell's inject +ok 804 - the footer is the shell's own entry, drawn with the plural t and the shell's inject + --- + duration_ms: 0.732769 + type: 'test' + ... +# Subtest: the counts pill is wrapped under every id a shell has used for it +ok 805 - the counts pill is wrapped under every id a shell has used for it + --- + duration_ms: 1.54146 + type: 'test' + ... +# Subtest: the client registers the footer over the shell's run-stats dock entries +ok 806 - the client registers the footer over the shell's run-stats dock entries + --- + duration_ms: 0.811481 + type: 'test' + ... +# Subtest: the harness still writes "{turns} turns {steps} steps" in a dock entry FlyBot wraps +ok 807 - the harness still writes "{turns} turns {steps} steps" in a dock entry FlyBot wraps # SKIP no @deepseek-ai/dsh-client-ui-chat in the harness + --- + duration_ms: 0.881483 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/steering-interrupt.test.js +not ok 204 - test/steering-interrupt.test.js + --- + duration_ms: 223.720731 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/steering-interrupt.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/steward-retry.test.js +not ok 205 - test/steward-retry.test.js + --- + duration_ms: 208.771143 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/steward-retry.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: the lines follow the model: its window less the room for its reply +ok 810 - the lines follow the model: its window less the room for its reply + --- + duration_ms: 2.801463 + type: 'test' + ... +# Subtest: a model without a window counts as the default, and odd settings fall back +ok 811 - a model without a window counts as the default, and odd settings fall back + --- + duration_ms: 0.594426 + type: 'test' + ... +# Subtest: the steward's answer is read from its JSON, and nothing else counts +ok 812 - the steward's answer is read from its JSON, and nothing else counts + --- + duration_ms: 0.571725 + type: 'test' + ... +# Subtest: the steward reads the latest messages oldest first, within a budget +ok 813 - the steward reads the latest messages oldest first, within a budget + --- + duration_ms: 3.513881 + type: 'test' + ... +# Subtest: a long message shows the steward its start and its end, and says the middle was left out +ok 814 - a long message shows the steward its start and its end, and says the middle was left out + --- + duration_ms: 1.408906 + type: 'test' + ... +# Subtest: checkpoints are counted from the summary the backend wrapped, not from user text +ok 815 - checkpoints are counted from the summary the backend wrapped, not from user text + --- + duration_ms: 0.904244 + type: 'test' + ... +# Subtest: a checkpoint keeps the messages to the Bot word for word after the summary +ok 816 - a checkpoint keeps the messages to the Bot word for word after the summary + --- + duration_ms: 0.437421 + type: 'test' + ... +# Subtest: the checkpoint also reads the messages the backend keeps after it +ok 817 - the checkpoint also reads the messages the backend keeps after it + --- + duration_ms: 1.154 + type: 'test' + ... +# Subtest: P-1993: the quoted first line of the kept tail is cut on a code point at 80 +ok 818 - P-1993: the quoted first line of the kept tail is cut on a code point at 80 + --- + duration_ms: 1.367486 + type: 'test' + ... +# Subtest: the checkpoint records unanswered requests as remaining, and does not answer them +ok 819 - the checkpoint records unanswered requests as remaining, and does not answer them + --- + duration_ms: 1.041147 + type: 'test' + ... +# Subtest: a failed state write rejects and leaves the saved file unchanged +ok 820 - a failed state write rejects and leaves the saved file unchanged + --- + duration_ms: 23.0761 + type: 'test' + ... +# Subtest: a failed migration write warns but load() still resolves +ok 821 - a failed migration write warns but load() still resolves + --- + duration_ms: 5.212005 + type: 'test' + ... +# Subtest: a failed state rename rejects and preserves the saved file +ok 822 - a failed state rename rejects and preserves the saved file + --- + duration_ms: 6.744605 + type: 'test' + ... +# Subtest: malformed state is backed up before a later save +ok 823 - malformed state is backed up before a later save + --- + duration_ms: 4.478856 + type: 'test' + ... +# Subtest: malformed state stays read-only when its backup cannot be copied +ok 824 - malformed state stays read-only when its backup cannot be copied + --- + duration_ms: 4.426555 + type: 'test' + ... +# Subtest: a state from a newer version remains untouched +ok 825 - a state from a newer version remains untouched + --- + duration_ms: 3.258825 + type: 'test' + ... +# Subtest: a read error keeps the existing state read-only +ok 826 - a read error keeps the existing state read-only + --- + duration_ms: 2.411193 + type: 'test' + ... +# Subtest: refresh adopts a fixed state file and clears read-only mode +ok 827 - refresh adopts a fixed state file and clears read-only mode + --- + duration_ms: 7.205817 + type: 'test' + ... +# Subtest: an unusable state lock warns and keeps the team saving +ok 828 - an unusable state lock warns and keeps the team saving + --- + duration_ms: 5.824121 + type: 'test' + ... +# Subtest: a queued save rejects after another host takes the lock +ok 829 - a queued save rejects after another host takes the lock + --- + duration_ms: 6.445388 + type: 'test' + ... +# Subtest: a read-only host resolves awaited saves without writing +ok 830 - a read-only host resolves awaited saves without writing + --- + duration_ms: 4.552449 + type: 'test' + ... +# Subtest: dispose waits for a pending save and prevents later writes +ok 831 - dispose waits for a pending save and prevents later writes + --- + duration_ms: 4.436015 + type: 'test' + ... +# Subtest: a member that loses its seat closes its external process (\#198) +ok 832 - a member that loses its seat closes its external process (\#198) + --- + duration_ms: 2.842674 + type: 'test' + ... +# Subtest: a roster id that is not an own key finds no Bot and no group (\#1704) +ok 833 - a roster id that is not an own key finds no Bot and no group (\#1704) + --- + duration_ms: 6.208672 + type: 'test' + ... +# Subtest: a linked state temp name does not take the save; the state file stays a plain file +ok 834 - a linked state temp name does not take the save; the state file stays a plain file + --- + duration_ms: 2.899085 + type: 'test' + ... +# Subtest: a link at the state file itself is replaced, not written through +ok 835 - a link at the state file itself is replaced, not written through + --- + duration_ms: 3.652825 + type: 'test' + ... +# Subtest: a hard link at the state temp name is refused; the save never reaches the shared file +ok 836 - a hard link at the state temp name is refused; the save never reaches the shared file + --- + duration_ms: 3.310196 + type: 'test' + ... +# Subtest: Bot mode mounts both groups; Agent mode mounts neither +ok 837 - Bot mode mounts both groups; Agent mode mounts neither + --- + duration_ms: 2.607538 + type: 'test' + ... +# Subtest: a plain Bot-mode view keeps the shell but drops the conversation +ok 838 - a plain Bot-mode view keeps the shell but drops the conversation + --- + duration_ms: 0.250937 + type: 'test' + ... +# Subtest: the saved surface mode survives reloads and defaults to bot +ok 839 - the saved surface mode survives reloads and defaults to bot + --- + duration_ms: 0.427661 + type: 'test' + ... +# Subtest: switching to Agent mode withdraws the conversation before the shell, last entry first +ok 840 - switching to Agent mode withdraws the conversation before the shell, last entry first + --- + duration_ms: 1.246222 + type: 'test' + ... +# Subtest: a throwing disposer does not stop the rest, and the group can be installed again +ok 841 - a throwing disposer does not stop the rest, and the group can be installed again + --- + duration_ms: 1.12116 + type: 'test' + ... +# Subtest: unloading the plugin disposes every group even when a disposer throws +ok 842 - unloading the plugin disposes every group even when a disposer throws + --- + duration_ms: 0.485983 + type: 'test' + ... +# Subtest: a group whose install throws stays unmounted and is tried again +ok 843 - a group whose install throws stays unmounted and is tried again + --- + duration_ms: 0.665157 + type: 'test' + ... +# Subtest: readMode falls back to bot when storage throws +ok 844 - readMode falls back to bot when storage throws + --- + duration_ms: 0.288207 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/task-audit.test.js +not ok 209 - test/task-audit.test.js + --- + duration_ms: 210.846227 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/task-audit.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/task-contract.test.js +not ok 210 - test/task-contract.test.js + --- + duration_ms: 208.829274 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/task-contract.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/task-drive.test.js +not ok 211 - test/task-drive.test.js + --- + duration_ms: 222.798057 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/task-drive.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/task-handoff-route.test.js +not ok 212 - test/task-handoff-route.test.js + --- + duration_ms: 202.183322 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/task-handoff-route.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/task-queue-lease.test.js +not ok 213 - test/task-queue-lease.test.js + --- + duration_ms: 230.109807 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/task-queue-lease.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/task-queue.test.js +not ok 214 - test/task-queue.test.js + --- + duration_ms: 200.000025 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/task-queue.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/task-route.test.js +not ok 215 - test/task-route.test.js + --- + duration_ms: 193.100305 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/task-route.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/tasks.test.js +not ok 216 - test/tasks.test.js + --- + duration_ms: 217.958111 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/tasks.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: the teardown removes the home once and asserts it is gone (\#1983) +ok 853 - the teardown removes the home once and asserts it is gone (\#1983) + --- + duration_ms: 2.950407 + type: 'test' + ... +# Subtest: a remover that leaves the directory behind fails the teardown (\#1983) +ok 854 - a remover that leaves the directory behind fails the teardown (\#1983) + --- + duration_ms: 1.742095 + type: 'test' + ... +# Subtest: an error from the removal surfaces unchanged (\#1983) +ok 855 - an error from the removal surfaces unchanged (\#1983) + --- + duration_ms: 0.440981 + type: 'test' + ... +# Subtest: a lone high surrogate in the input comes back as U+FFFD +ok 856 - a lone high surrogate in the input comes back as U+FFFD + --- + duration_ms: 1.596882 + type: 'test' + ... +# Subtest: a lone low surrogate in the input comes back as U+FFFD +ok 857 - a lone low surrogate in the input comes back as U+FFFD + --- + duration_ms: 0.264047 + type: 'test' + ... +# Subtest: a lone surrogate is repaired before the bound, not after it +ok 858 - a lone surrogate is repaired before the bound, not after it + --- + duration_ms: 0.267407 + type: 'test' + ... +# Subtest: well-formed input keeps its exact prefix and flag +ok 859 - well-formed input keeps its exact prefix and flag + --- + duration_ms: 1.671583 + type: 'test' + ... +# Subtest: codePoints counts one character as one whatever its UTF-16 width (\#1895) +ok 860 - codePoints counts one character as one whatever its UTF-16 width (\#1895) + --- + duration_ms: 2.124135 + type: 'test' + ... +# Subtest: textOf joins the text blocks only +ok 861 - textOf joins the text blocks only + --- + duration_ms: 0.348479 + type: 'test' + ... +# Subtest: normalize and unquote +ok 862 - normalize and unquote + --- + duration_ms: 0.537484 + type: 'test' + ... +# Subtest: splitRef splits at the first slash +ok 863 - splitRef splits at the first slash + --- + duration_ms: 1.16831 + type: 'test' + ... +# Subtest: isColor takes avatar inks, extra inks, and \#rrggbb +ok 864 - isColor takes avatar inks, extra inks, and \#rrggbb + --- + duration_ms: 0.423381 + type: 'test' + ... +# Subtest: escapeRegExp makes a literal pattern +ok 865 - escapeRegExp makes a literal pattern + --- + duration_ms: 0.423601 + type: 'test' + ... +# Subtest: excerpt keeps the match in view +ok 866 - excerpt keeps the match in view + --- + duration_ms: 0.723408 + type: 'test' + ... +# Subtest: estimateTokens counts CJK as one token and other text as a third +ok 867 - estimateTokens counts CJK as one token and other text as a third + --- + duration_ms: 0.354309 + type: 'test' + ... +# Subtest: clip cuts long text and says where the rest is +ok 868 - clip cuts long text and says where the rest is + --- + duration_ms: 0.911523 + type: 'test' + ... +# Subtest: clip says only that it cut when it is given no reason (\#1918) +ok 869 - clip says only that it cut when it is given no reason (\#1918) + --- + duration_ms: 1.019207 + type: 'test' + ... +# Subtest: clip keeps the reason it is given byte for byte (\#1918) +ok 870 - clip keeps the reason it is given byte for byte (\#1918) + --- + duration_ms: 0.432751 + type: 'test' + ... +# Subtest: clip never leaves half of a surrogate pair behind +ok 871 - clip never leaves half of a surrogate pair behind + --- + duration_ms: 2.158206 + type: 'test' + ... +# Subtest: excerpt never starts inside a surrogate pair +ok 872 - excerpt never starts inside a surrogate pair + --- + duration_ms: 0.364729 + type: 'test' + ... +# Subtest: createClock formats month, day, and 24-hour time +ok 873 - createClock formats month, day, and 24-hour time + --- + duration_ms: 28.942501 + type: 'test' + ... +# Subtest: \#1624: a settled step shows a line of its reasoning in the closed row, not a bare 思考过程 strip +ok 874 - \#1624: a settled step shows a line of its reasoning in the closed row, not a bare 思考过程 strip + --- + duration_ms: 3.566693 + type: 'test' + ... +# Subtest: \#1624: the peek line is capped, so one long line cannot fill the row +ok 875 - \#1624: the peek line is capped, so one long line cannot fill the row + --- + duration_ms: 25.266197 + type: 'test' + ... +# Subtest: \#1624: the row still holds the whole reasoning once opened +ok 876 - \#1624: the row still holds the whole reasoning once opened + --- + duration_ms: 0.428741 + type: 'test' + ... +# Subtest: \#1624: a step that is still thinking draws no row at all +ok 877 - \#1624: a step that is still thinking draws no row at all + --- + duration_ms: 0.633176 + type: 'test' + ... +# Subtest: \#1624: reasoning that is only whitespace draws no row at all +ok 878 - \#1624: reasoning that is only whitespace draws no row at all + --- + duration_ms: 0.331228 + type: 'test' + ... +# Subtest: \#1636: an opened row hides its preview, so its first line is not printed twice +ok 879 - \#1636: an opened row hides its preview, so its first line is not printed twice + --- + duration_ms: 10.742929 + type: 'test' + ... +# Subtest: \#1642: a fence or a rule is not the peek line; the first prose line is +ok 880 - \#1642: a fence or a rule is not the peek line; the first prose line is + --- + duration_ms: 0.620087 + type: 'test' + ... +# Subtest: \#1642: a cut preview keeps whole characters and says it was cut +ok 881 - \#1642: a cut preview keeps whole characters and says it was cut + --- + duration_ms: 2.235888 + type: 'test' + ... +# Subtest: \#1642: reasoning that is only markup gets a neutral summary, never a bare fence or an empty row +ok 882 - \#1642: reasoning that is only markup gets a neutral summary, never a bare fence or an empty row + --- + duration_ms: 1.51244 + type: 'test' + ... +1..9 +# Error: A resource generated asynchronous activity after the test ended. This activity created the error "Error: Cannot find module 'jsdom'\\nRequire stack:\\n- /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json" which triggered an uncaughtException event, caught by the test runner. +# Subtest: test/thinking-row.test.js +not ok 220 - test/thinking-row.test.js + --- + duration_ms: 249.177123 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/thinking-row.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/time-context.test.js +not ok 221 - test/time-context.test.js + --- + duration_ms: 78.862478 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/time-context.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# (node:1239040) ExperimentalWarning: SQLite is an experimental feature and might change at any time +# (Use `node --trace-warnings ...` to show where the warning was created) +# Subtest: the report matches hand-computed sums, with cache reads kept apart +ok 885 - the report matches hand-computed sums, with cache reads kept apart + --- + duration_ms: 93.249132 + type: 'test' + ... +# Subtest: the window, the Bot filter and a missing ledger +ok 886 - the window, the Bot filter and a missing ledger + --- + duration_ms: 447.052612 + type: 'test' + ... +# Subtest: an impossible date is an error, never an empty report +ok 887 - an impossible date is an error, never an empty report + --- + duration_ms: 348.299677 + type: 'test' + ... +# Subtest: a day a zone falls back is 25 hours, and --to covers all of it +ok 888 - a day a zone falls back is 25 hours, and --to covers all of it + --- + duration_ms: 338.106282 + type: 'test' + ... +# Subtest: every row of the committed report carries its provenance +ok 889 - every row of the committed report carries its provenance + --- + duration_ms: 2.109945 + type: 'test' + ... +# Subtest: every call ToolCell draws shows the same nested in a PTC program as on its own +ok 890 - every call ToolCell draws shows the same nested in a PTC program as on its own + --- + duration_ms: 22.227267 + type: 'test' + ... +# Subtest: a program draws every known sub-call in dispatch order and each call once +ok 891 - a program draws every known sub-call in dispatch order and each call once + --- + duration_ms: 2.135795 + type: 'test' + ... +# Subtest: nested group relays keep their own replies in order, each once +ok 892 - nested group relays keep their own replies in order, each once + --- + duration_ms: 1.128009 + type: 'test' + ... +# Subtest: cards and replies still show when the program's own call head left the loaded history +ok 893 - cards and replies still show when the program's own call head left the loaded history + --- + duration_ms: 1.085889 + type: 'test' + ... +# Subtest: each sub-call shows its own state, not its program's +ok 894 - each sub-call shows its own state, not its program's + --- + duration_ms: 2.214297 + type: 'test' + ... +# Subtest: a program with no known sub-call draws nothing, as before +ok 895 - a program with no known sub-call draws nothing, as before + --- + duration_ms: 0.339749 + type: 'test' + ... +# Subtest: a hidden Bot-to-Bot turn draws none of its sub-calls +ok 896 - a hidden Bot-to-Bot turn draws none of its sub-calls + --- + duration_ms: 0.807011 + type: 'test' + ... +# Subtest: a message line opens the exchange of the chat's Bot, from any part +ok 897 - a message line opens the exchange of the chat's Bot, from any part + --- + duration_ms: 0.887343 + type: 'test' + ... +# Subtest: the live note follows the running sub-call of a program +ok 898 - the live note follows the running sub-call of a program + --- + duration_ms: 2.990188 + type: 'test' + ... +# Subtest: a cell tells the docks which card calls it draws, until it unmounts +ok 899 - a cell tells the docks which card calls it draws, until it unmounts + --- + duration_ms: 1.682044 + type: 'test' + ... +# Subtest: a card whose call is not drawn waits in the dock; a drawn one shows only at its call +ok 900 - a card whose call is not drawn waits in the dock; a drawn one shows only at its call + --- + duration_ms: 3.165302 + type: 'test' + ... +# Subtest: the docks hold a card back while the history loads, and keep cards without a call +ok 901 - the docks hold a card back while the history loads, and keep cards without a call + --- + duration_ms: 2.794642 + type: 'test' + ... +# Subtest: a card from an earlier part waits in the dock even when a call here has the same id +ok 902 - a card from an earlier part waits in the dock even when a call here has the same id + --- + duration_ms: 0.711389 + type: 'test' + ... +# Subtest: a secret in a hidden turn shows in the dock instead of nowhere +ok 903 - a secret in a hidden turn shows in the dock instead of nowhere + --- + duration_ms: 0.506643 + type: 'test' + ... +# Subtest: a PTC group relay shows its replies from the sub-call, live and after reload +ok 904 - a PTC group relay shows its replies from the sub-call, live and after reload + --- + duration_ms: 18.975122 + type: 'test' + ... +# Subtest: PTC secret and question cards show at their sub-calls and act on their own requests +ok 905 - PTC secret and question cards show at their sub-calls and act on their own requests + --- + duration_ms: 2.335011 + type: 'test' + ... +# Subtest: \#278: a Face-to-face room drops the old "Waiting for the owner's approval" line but keeps its other notices +ok 906 - \#278: a Face-to-face room drops the old "Waiting for the owner's approval" line but keeps its other notices + --- + duration_ms: 0.879543 + type: 'test' + ... +# Subtest: \#1103: a closed face room draws the short leave only when the banner does not cover it +ok 907 - \#1103: a closed face room draws the short leave only when the banner does not cover it + --- + duration_ms: 0.906434 + type: 'test' + ... +# Subtest: the scope editor offers all my Bots, chosen Bots, or none, and shows the current one +ok 908 - the scope editor offers all my Bots, chosen Bots, or none, and shows the current one + --- + duration_ms: 1.755746 + type: 'test' + ... +# Subtest: a finished call that carries its name and arguments only under `call` is still read +ok 909 - a finished call that carries its name and arguments only under `call` is still read + --- + duration_ms: 4.118717 + type: 'test' + ... +# Subtest: a running call is read from its own name and raw arguments +ok 910 - a running call is read from its own name and raw arguments + --- + duration_ms: 0.433872 + type: 'test' + ... +# Subtest: a node with an argument reader uses the reader +ok 911 - a node with an argument reader uses the reader + --- + duration_ms: 0.39771 + type: 'test' + ... +# Subtest: an empty name falls back to the call, and unreadable arguments read as absent +ok 912 - an empty name falls back to the call, and unreadable arguments read as absent + --- + duration_ms: 0.316088 + type: 'test' + ... +# Subtest: a relay between steps attaches to the step that follows it only +ok 913 - a relay between steps attaches to the step that follows it only + --- + duration_ms: 0.838762 + type: 'test' + ... +# Subtest: a relay before a tool-only step attaches to the next step that renders +ok 914 - a relay before a tool-only step attaches to the next step that renders + --- + duration_ms: 0.299188 + type: 'test' + ... +# Subtest: a relay before the first step attaches to it +ok 915 - a relay before the first step attaches to it + --- + duration_ms: 0.504964 + type: 'test' + ... +# Subtest: the step is found by its number when the cell holds a different copy +ok 916 - the step is found by its number when the cell holds a different copy + --- + duration_ms: 0.443341 + type: 'test' + ... +# Subtest: a relay sharing the previous step’s time attaches to the next step +ok 917 - a relay sharing the previous step’s time attaches to the next step + --- + duration_ms: 1.046467 + type: 'test' + ... +# Subtest: relayPart puts the line in the step’s first cell +ok 918 - relayPart puts the line in the step’s first cell + --- + duration_ms: 1.119959 + type: 'test' + ... +# Subtest: two relays before one step both return, in order +ok 919 - two relays before one step both return, in order + --- + duration_ms: 0.469412 + type: 'test' + ... +# Subtest: non-relay context and ds-bot package sources are ignored +ok 920 - non-relay context and ds-bot package sources are ignored + --- + duration_ms: 0.511784 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-tools' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/tool-schema.test.js +not ok 225 - test/tool-schema.test.js + --- + duration_ms: 200.329414 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/tool-schema.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/turn-origin.test.js +not ok 226 - test/turn-origin.test.js + --- + duration_ms: 97.473512 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/turn-origin.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: a long tool Turn shows its reasoning once, on the first step, in order +ok 923 - a long tool Turn shows its reasoning once, on the first step, in order + --- + duration_ms: 2.186997 + type: 'test' + ... +# Subtest: the row sits on the first step with reasoning +ok 924 - the row sits on the first step with reasoning + --- + duration_ms: 1.166471 + type: 'test' + ... +# Subtest: reasoning still in progress stays out until its step settles +ok 925 - reasoning still in progress stays out until its step settles + --- + duration_ms: 0.38662 + type: 'test' + ... +# Subtest: a step outside the loaded Turn list shows only its own reasoning +ok 926 - a step outside the loaded Turn list shows only its own reasoning + --- + duration_ms: 0.284628 + type: 'test' + ... +# Subtest: a turn separates its task from the history that came before it +ok 927 - a turn separates its task from the history that came before it + --- + duration_ms: 4.966429 + type: 'test' + ... +# Subtest: a tool result is its own part, never folded into the history +ok 928 - a tool result is its own part, never folded into the history + --- + duration_ms: 0.735839 + type: 'test' + ... +# Subtest: the fixed block is the intercept of the Session's prompt fit +ok 929 - the fixed block is the intercept of the Session's prompt fit + --- + duration_ms: 0.625436 + type: 'test' + ... +# Subtest: a Session with too few calls gets no fit instead of a guess +ok 930 - a Session with too few calls gets no fit instead of a guess + --- + duration_ms: 0.37478 + type: 'test' + ... +# Subtest: a split accounts for the whole prompt and never claims the fixed block twice +ok 931 - a split accounts for the whole prompt and never claims the fixed block twice + --- + duration_ms: 0.74567 + type: 'test' + ... +# Subtest: the frame walker finds every frame of a concatenated log +ok 932 - the frame walker finds every frame of a concatenated log + --- + duration_ms: 2.3342 + type: 'test' + ... +# Subtest: the CLI prints a split for the sampled turn +ok 933 - the CLI prints a split for the sampled turn + --- + duration_ms: 104.046113 + type: 'test' + ... +# Subtest: the --days table divides each day by the same measured fixed block +ok 934 - the --days table divides each day by the same measured fixed block + --- + duration_ms: 116.2718 + type: 'test' + ... +# Subtest: a missing session root is an error that names the path +ok 935 - a missing session root is an error that names the path + --- + duration_ms: 89.839664 + type: 'test' + ... +# Subtest: \#1989: a Session id is the directory name under either path separator +ok 936 - \#1989: a Session id is the directory name under either path separator + --- + duration_ms: 0.956325 + type: 'test' + ... +# Subtest: every row of the committed split report carries its provenance +ok 937 - every row of the committed split report carries its provenance + --- + duration_ms: 1.665964 + type: 'test' + ... +# Subtest: \#1259: the report and the CLI name the moment each fixed-block number is measured at +ok 938 - \#1259: the report and the CLI name the moment each fixed-block number is measured at + --- + duration_ms: 131.615859 + type: 'test' + ... +# Subtest: \#1259: the committed report says which moment §2 and §4 each measure +ok 939 - \#1259: the committed report says which moment §2 and §4 each measure + --- + duration_ms: 0.521713 + type: 'test' + ... +# Subtest: \#1259: a fit with no characters-per-token figure does not crash the summary +ok 940 - \#1259: a fit with no characters-per-token figure does not crash the summary + --- + duration_ms: 166.69554 + type: 'test' + ... +# Subtest: \#1259: an unknown --tz is refused by name instead of an uncaught RangeError +ok 941 - \#1259: an unknown --tz is refused by name instead of an uncaught RangeError + --- + duration_ms: 94.016722 + type: 'test' + ... +# Subtest: \#1259: --stats re-derives the §5, §7 and §8 numbers from one command +ok 942 - \#1259: --stats re-derives the §5, §7 and §8 numbers from one command + --- + duration_ms: 117.81548 + type: 'test' + ... +# Subtest: \#1259: --stats says which command measures §7 when no room is named +ok 943 - \#1259: --stats says which command measures §7 when no room is named + --- + duration_ms: 115.033608 + type: 'test' + ... +# Subtest: a reply that closes its turn links the files the turn changed or delivered +ok 944 - a reply that closes its turn links the files the turn changed or delivered + --- + duration_ms: 3.664725 + type: 'test' + ... +# Subtest: a reply that does not close its turn, or one still running, links nothing +ok 945 - a reply that does not close its turn, or one still running, links nothing + --- + duration_ms: 0.733209 + type: 'test' + ... +# Subtest: the turn tail entry notes when the turn ended and shows the pause before the next one +ok 946 - the turn tail entry notes when the turn ended and shows the pause before the next one + --- + duration_ms: 30.455161 + type: 'test' + ... +# Subtest: a reply to a line the friend typed themselves is drawn as the person, not as the Bot +ok 947 - a reply to a line the friend typed themselves is drawn as the person, not as the Bot + --- + duration_ms: 1.785517 + type: 'test' + ... +# Subtest: \#275: a friend's line that came while away has the NEW divider; the settled visit has none +ok 948 - \#275: a friend's line that came while away has the NEW divider; the settled visit has none + --- + duration_ms: 0.943015 + type: 'test' + ... +# Subtest: \#275: the reply to a line I saw begin, finished while away, loses its divider when the visit settles +ok 949 - \#275: the reply to a line I saw begin, finished while away, loses its divider when the visit settles + --- + duration_ms: 0.665027 + type: 'test' + ... +# Subtest: \#275: only a shown turn that began after the visit opened moves the chat on +ok 950 - \#275: only a shown turn that began after the visit opened moves the chat on + --- + duration_ms: 0.583495 + type: 'test' + ... +# Subtest: \#275: a visit with nothing unread, or no record, is left as it is +ok 951 - \#275: a visit with nothing unread, or no record, is left as it is + --- + duration_ms: 0.267676 + type: 'test' + ... +# Subtest: \#275: the new-message pills settle the visit once the divider was seen and the chat moved on +ok 952 - \#275: the new-message pills settle the visit once the divider was seen and the chat moved on + --- + duration_ms: 1.790786 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/turns-tool-result.test.js +not ok 230 - test/turns-tool-result.test.js + --- + duration_ms: 109.847673 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/turns-tool-result.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: \#1347: a settings row never breaks its own label or its control words +ok 954 - \#1347: a settings row never breaks its own label or its control words + --- + duration_ms: 2.983927 + type: 'test' + ... +# Subtest: \#1347: the panel is a container, and below 300px the row stacks instead of clipping +ok 955 - \#1347: the panel is a container, and below 300px the row stacks instead of clipping + --- + duration_ms: 2.370202 + type: 'test' + ... +# Subtest: \#1347: a preview shows the words of a line, never its fence +ok 956 - \#1347: a preview shows the words of a line, never its fence + --- + duration_ms: 1.339485 + type: 'test' + ... +# Subtest: \#1347: both sidebar row kinds read their preview through that helper +ok 957 - \#1347: both sidebar row kinds read their preview through that helper + --- + duration_ms: 2.465894 + type: 'test' + ... +# Subtest: \#1347: the details drawer copies, says so, and names the button for what it does +ok 958 - \#1347: the details drawer copies, says so, and names the button for what it does + --- + duration_ms: 1.875258 + type: 'test' + ... +# Subtest: \#1347: the mode word beside the title does not look like a control +ok 959 - \#1347: the mode word beside the title does not look like a control + --- + duration_ms: 1.330134 + type: 'test' + ... +# Subtest: \#1347: a Bot chat with nothing said yet draws its own header +ok 960 - \#1347: a Bot chat with nothing said yet draws its own header + --- + duration_ms: 0.913214 + type: 'test' + ... +# Subtest: \#1347: a blank column says why it is blank, and only while it is blank +ok 961 - \#1347: a blank column says why it is blank, and only while it is blank + --- + duration_ms: 1.379315 + type: 'test' + ... +# Subtest: \#1347: a provider refusal reads as a sentence that says what to change +ok 962 - \#1347: a provider refusal reads as a sentence that says what to change + --- + duration_ms: 3.230154 + type: 'test' + ... +# Subtest: \#1347: the thread cannot paint above a dialog, a sheet or a scrim +ok 963 - \#1347: the thread cannot paint above a dialog, a sheet or a scrim + --- + duration_ms: 11.5644 + type: 'test' + ... +# Subtest: \#1347: the built bundle carries these rules, so a page reload shows them +ok 964 - \#1347: the built bundle carries these rules, so a page reload shows them + --- + duration_ms: 12.185596 + type: 'test' + ... +# Subtest: \#1750: the Project board overlay covers the shell behind its scrim +ok 965 - \#1750: the Project board overlay covers the shell behind its scrim + --- + duration_ms: 13.103521 + type: 'test' + ... +# Subtest: Bot settings draws Sharing as a titled card right after Instructions (\#406) +ok 966 - Bot settings draws Sharing as a titled card right after Instructions (\#406) + --- + duration_ms: 3.438389 + type: 'test' + ... +# Subtest: group settings and Bot settings both end with a "More" card (\#406) +ok 967 - group settings and Bot settings both end with a "More" card (\#406) + --- + duration_ms: 0.704248 + type: 'test' + ... +# Subtest: the composer focus border is stronger than its hover border (\#406) +ok 968 - the composer focus border is stronger than its hover border (\#406) + --- + duration_ms: 1.695794 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/update-bot.test.js +not ok 233 - test/update-bot.test.js + --- + duration_ms: 282.355614 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/update-bot.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: versions compare in semver order and lose their v and build metadata +ok 970 - versions compare in semver order and lose their v and build metadata + --- + duration_ms: 20.473202 + type: 'test' + ... +# Subtest: the install source decides where a newer version is looked for +ok 971 - the install source decides where a newer version is looked for + --- + duration_ms: 3.07584 + type: 'test' + ... +# Subtest: a 40-hex ref in the spec is a commit, not a branch or a tag (\#379) +ok 972 - a 40-hex ref in the spec is a commit, not a branch or a tag (\#379) + --- + duration_ms: 0.76833 + type: 'test' + ... +# Subtest: a registry install finds the newest version on the next registry and installs it from there +ok 973 - a registry install finds the newest version on the next registry and installs it from there + --- + duration_ms: 4.99196 + type: 'test' + ... +# Subtest: a private registry of pnpm's own is asked alone, and an answer stands for a while +ok 974 - a private registry of pnpm's own is asked alone, and an answer stands for a while + --- + duration_ms: 1.840418 + type: 'test' + ... +# Subtest: a versioned GitHub install follows the latest release tag and keeps its path +ok 975 - a versioned GitHub install follows the latest release tag and keeps its path + --- + duration_ms: 1.92696 + type: 'test' + ... +# Subtest: a versioned GitHub install follows the release to the repository's current address +ok 976 - a versioned GitHub install follows the release to the repository's current address + --- + duration_ms: 1.613172 + type: 'test' + ... +# Subtest: a linked checkout, an unversioned git install, or a disabled check never asks the network +ok 977 - a linked checkout, an unversioned git install, or a disabled check never asks the network + --- + duration_ms: 1.661073 + type: 'test' + ... +# Subtest: the star count comes from the repository, is kept for an hour, and survives a failed answer +ok 978 - the star count comes from the repository, is kept for an hour, and survives a failed answer + --- + duration_ms: 1.483219 + type: 'test' + ... +# Subtest: without a source from the plugin manager, the profile's own dependency entry decides +ok 979 - without a source from the plugin manager, the profile's own dependency entry decides + --- + duration_ms: 2.835114 + type: 'test' + ... +# Subtest: a check that finds nothing clears the version a check before it found +ok 980 - a check that finds nothing clears the version a check before it found + --- + duration_ms: 2.047504 + type: 'test' + ... +# Subtest: a failed install reports why and can be tried again +ok 981 - a failed install reports why and can be tried again + --- + duration_ms: 1.92066 + type: 'test' + ... +# Subtest: the commit a git install runs is read from the package's real path, and a wrong one is never guessed +ok 982 - the commit a git install runs is read from the package's real path, and a wrong one is never guessed + --- + duration_ms: 1.104339 + type: 'test' + ... +# Subtest: the commit pnpm locked for ds-bot is read from the profile lockfile, and only for ds-bot (\#379) +ok 983 - the commit pnpm locked for ds-bot is read from the profile lockfile, and only for ds-bot (\#379) + --- + duration_ms: 1.855518 + type: 'test' + ... +# Subtest: the commit comes from the spec first, then the lockfile, then the real path +ok 984 - the commit comes from the spec first, then the lockfile, then the real path + --- + duration_ms: 0.471432 + type: 'test' + ... +# Subtest: a hoisted git install shows the commit from the profile lockfile and compares it with its branch (\#379) +ok 985 - a hoisted git install shows the commit from the profile lockfile and compares it with its branch (\#379) + --- + duration_ms: 1.652333 + type: 'test' + ... +# Subtest: an install pinned to a commit shows the commit, is no branch, and asks GitHub for nothing (\#379) +ok 986 - an install pinned to a commit shows the commit, is no branch, and asks GitHub for nothing (\#379) + --- + duration_ms: 0.937775 + type: 'test' + ... +# Subtest: a git install on a branch reports its branch and commit, and how many commits the branch is ahead +ok 987 - a git install on a branch reports its branch and commit, and how many commits the branch is ahead + --- + duration_ms: 1.854548 + type: 'test' + ... +# Subtest: without a commit in the path a branch install still names its branch and compares nothing; other sources have no build +ok 988 - without a commit in the path a branch install still names its branch and compares nothing; other sources have no build + --- + duration_ms: 0.923394 + type: 'test' + ... +# Subtest: the package names FlyBot's own repository, not the upstream DS Bot +ok 989 - the package names FlyBot's own repository, not the upstream DS Bot + --- + duration_ms: 0.271608 + type: 'test' + ... +# Subtest: buckets end at the current hour, day, week, or month, after as many before them +ok 990 - buckets end at the current hour, day, week, or month, after as many before them + --- + duration_ms: 3.707516 + type: 'test' + ... +# Subtest: a summary sums the range, the span before it, and each owner, model, and stack +ok 991 - a summary sums the range, the span before it, and each owner, model, and stack + --- + duration_ms: 1.425917 + type: 'test' + ... +# Subtest: a picked span sums by hour, day, week, or month by its length +ok 992 - a picked span sums by hour, day, week, or month by its length + --- + duration_ms: 2.266449 + type: 'test' + ... +# Subtest: a picked span compares with as many days just before it and ignores the days after +ok 993 - a picked span compares with as many days just before it and ignores the days after + --- + duration_ms: 0.880663 + type: 'test' + ... +# Subtest: counts read short and shares round +ok 994 - counts read short and shares round + --- + duration_ms: 0.851772 + type: 'test' + ... +# Subtest: withUsageFields fills harness, issue·PR, toolCalls, wallMs, and keeps tokens +ok 995 - withUsageFields fills harness, issue·PR, toolCalls, wallMs, and keeps tokens + --- + duration_ms: 2.315431 + type: 'test' + ... +# Subtest: missing any of the five usage fields is red +ok 996 - missing any of the five usage fields is red + --- + duration_ms: 0.486563 + type: 'test' + ... +# Subtest: foldCalls counts tool/call events and wall clock from the attempt +ok 997 - foldCalls counts tool/call events and wall clock from the attempt + --- + duration_ms: 1.444117 + type: 'test' + ... +# Subtest: foldCalls records a routed harness and leaves the resume state unchanged +ok 998 - foldCalls records a routed harness and leaves the resume state unchanged + --- + duration_ms: 1.640153 + type: 'test' + ... +# Subtest: noteUsageHarness keeps a triage label and clears back to default +ok 999 - noteUsageHarness keeps a triage label and clears back to default + --- + duration_ms: 1.184861 + type: 'test' + ... +# Subtest: extractIssuePr prefers PR refs over bare issue numbers +ok 1000 - extractIssuePr prefers PR refs over bare issue numbers + --- + duration_ms: 0.412991 + type: 'test' + ... +# Subtest: fixture usage.sqlite has one real calls row with all five fields +not ok 1001 - fixture usage.sqlite has one real calls row with all five fields + --- + duration_ms: 3.669355 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/usage-fields.test.js:88:1' + failureType: 'testCodeFailure' + error: |- + Expected values to be strictly equal: + + null !== 0 + + code: 'ERR_ASSERTION' + name: 'AssertionError' + expected: 0 + actual: ~ + operator: 'strictEqual' + stack: |- + TestContext. (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/usage-fields.test.js:106:10) + Test.runInAsyncScope (node:async_hooks:214:14) + Test.run (node:internal/test_runner/test:1047:25) + Test.processPendingSubtests (node:internal/test_runner/test:744:18) + Test.postRun (node:internal/test_runner/test:1173:19) + Test.run (node:internal/test_runner/test:1101:12) + async Test.processPendingSubtests (node:internal/test_runner/test:744:7) + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/usage.test.js +not ok 237 - test/usage.test.js + --- + duration_ms: 198.64221 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/usage.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: every rule that writes in the user ink paints the user surface under it +ok 1003 - every rule that writes in the user ink paints the user surface under it + --- + duration_ms: 12.565656 + type: 'test' + ... +# Subtest: no ds-bot text color sits on a surface that a skin owns +ok 1004 - no ds-bot text color sits on a surface that a skin owns + --- + duration_ms: 20.084232 + type: 'test' + ... +# Subtest: ds-bot leaves the host bubble variables to the host and its skins +ok 1005 - ds-bot leaves the host bubble variables to the host and its skins + --- + duration_ms: 5.644807 + type: 'test' + ... +# Subtest: the user ink reads on the user surface in every built-in theme and mode +ok 1006 - the user ink reads on the user surface in every built-in theme and mode + --- + duration_ms: 2.321801 + type: 'test' + ... +# Subtest: a user message stays readable when a dark skin repaints the host bubble +ok 1007 - a user message stays readable when a dark skin repaints the host bubble + --- + duration_ms: 15.029371 + type: 'test' + ... +# Subtest: the surface wins over the host bubble rule that reads the skin variable +ok 1008 - the surface wins over the host bubble rule that reads the skin variable + --- + duration_ms: 1.992492 + type: 'test' + ... +# Subtest: \#457: my own face-room line is never drawn as held, so its colour does not flip +ok 1009 - \#457: my own face-room line is never drawn as held, so its colour does not flip + --- + duration_ms: 0.746889 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/voice-speech.test.js +not ok 239 - test/voice-speech.test.js + --- + duration_ms: 121.789214 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/voice-speech.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/web-search.test.js +not ok 240 - test/web-search.test.js + --- + duration_ms: 104.988467 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/web-search.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/work-dir.test.js +not ok 241 - test/work-dir.test.js + --- + duration_ms: 200.440536 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/work-dir.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/work-dispatch.test.js +not ok 242 - test/work-dispatch.test.js + --- + duration_ms: 219.934433 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/work-dispatch.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: a definition saves to canonical bytes and reads back unchanged +ok 1014 - a definition saves to canonical bytes and reads back unchanged + --- + duration_ms: 5.505673 + type: 'test' + ... +# Subtest: the same definition in a different key order saves to the same bytes +ok 1015 - the same definition in a different key order saves to the same bytes + --- + duration_ms: 0.605425 + type: 'test' + ... +# Subtest: a preset copy differs from its preset only in id and name, and the preset file is untouched +ok 1016 - a preset copy differs from its preset only in id and name, and the preset file is untouched + --- + duration_ms: 2.143295 + type: 'test' + ... +# Subtest: an id is a file name: lowercase, digits and hyphens, and a preset id is never one of ours +ok 1017 - an id is a file name: lowercase, digits and hyphens, and a preset id is never one of ours + --- + duration_ms: 0.501283 + type: 'test' + ... +# Subtest: a blank copy keeps its nodes and edges and nothing else moves +ok 1018 - a blank copy keeps its nodes and edges and nothing else moves + --- + duration_ms: 0.662957 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/workflow-node-connectors.test.js +not ok 244 - test/workflow-node-connectors.test.js + --- + duration_ms: 225.058416 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/workflow-node-connectors.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: a stale verdict prints the producer sentence with both revisions and no pass +ok 1020 - a stale verdict prints the producer sentence with both revisions and no pass + --- + duration_ms: 3.43729 + type: 'test' + ... +# Subtest: a fact that could not be read is named, and a reader that answered nothing says so +ok 1021 - a fact that could not be read is named, and a reader that answered nothing says so + --- + duration_ms: 1.237232 + type: 'test' + ... +# Subtest: a check nobody implemented refuses instead of being read as present +ok 1022 - a check nobody implemented refuses instead of being read as present + --- + duration_ms: 0.472402 + type: 'test' + ... +# Subtest: a node with no guards and a node that does not exist both answer plainly +ok 1023 - a node with no guards and a node that does not exist both answer plainly + --- + duration_ms: 1.620853 + type: 'test' + ... +# Subtest: \#1524: gated() logic - ephemeral with deferred MUST be gated (the fix) +ok 1024 - \#1524: gated() logic - ephemeral with deferred MUST be gated (the fix) + --- + duration_ms: 1.713534 + type: 'test' + ... +# Subtest: \#1524: tombstone logic - post-removal late reply MUST be gated and denied +ok 1025 - \#1524: tombstone logic - post-removal late reply MUST be gated and denied + --- + duration_ms: 0.434371 + type: 'test' + ... +# Subtest: \#1524: normal (non-ephemeral) bot behavior unchanged +ok 1026 - \#1524: normal (non-ephemeral) bot behavior unchanged + --- + duration_ms: 0.438432 + type: 'test' + ... +# Subtest: \#1524: ephemeral node reply is not delivered to Main Bot chat +ok 1027 - \#1524: ephemeral node reply is not delivered to Main Bot chat + --- + duration_ms: 45.199844 + type: 'test' + ... +# Subtest: \#1524: persistent Bot-to-Bot replies are NOT blocked +ok 1028 - \#1524: persistent Bot-to-Bot replies are NOT blocked + --- + duration_ms: 1.039027 + type: 'test' + ... +# Subtest: \#1524: ephemeral Bot replies do NOT leak, middleware runs for stepResult, tombstone works +ok 1029 - \#1524: ephemeral Bot replies do NOT leak, middleware runs for stepResult, tombstone works + --- + duration_ms: 0.953345 + type: 'test' + ... +# Subtest: the repo-dev preset is data, and it validates with the roles this team has +ok 1030 - the repo-dev preset is data, and it validates with the roles this team has + --- + duration_ms: 7.893875 + type: 'test' + ... +# Subtest: the columns are the definition s, and a node that says column: false draws none (\#1265) +ok 1031 - the columns are the definition s, and a node that says column: false draws none (\#1265) + --- + duration_ms: 2.359372 + type: 'test' + ... +# Subtest: a definition that states no column keeps step 1 s answer, the node id +ok 1032 - a definition that states no column keeps step 1 s answer, the node id + --- + duration_ms: 0.976585 + type: 'test' + ... +# Subtest: a column the board does not have, and a guard check nobody implements, are each refused by name +ok 1033 - a column the board does not have, and a guard check nobody implements, are each refused by name + --- + duration_ms: 1.893009 + type: 'test' + ... +# Subtest: a guard whose check nobody implements refuses instead of passing on a guess (\#1291 debt) +ok 1034 - a guard whose check nobody implements refuses instead of passing on a guess (\#1291 debt) + --- + duration_ms: 1.286024 + type: 'test' + ... +# Subtest: a fact is keyed by its parsed spec, so "text: draft" and "text:draft" are one fact (\#1291 debt) +ok 1035 - a fact is keyed by its parsed spec, so "text: draft" and "text:draft" are one fact (\#1291 debt) + --- + duration_ms: 0.948295 + type: 'test' + ... +# Subtest: one word for one thing: a node names a role, and the older spelling is not read (\#1291 debt) +ok 1036 - one word for one thing: a node names a role, and the older spelling is not read (\#1291 debt) + --- + duration_ms: 0.708558 + type: 'test' + ... +# Subtest: an edge carries its artifact once, and says so (\#1291 debt) +ok 1037 - an edge carries its artifact once, and says so (\#1291 debt) + --- + duration_ms: 0.37444 + type: 'test' + ... +# Subtest: the gate s refusal is the merge gate s own sentence, byte for byte (acceptance 9) +ok 1038 - the gate s refusal is the merge gate s own sentence, byte for byte (acceptance 9) + --- + duration_ms: 2.218598 + type: 'test' + ... +# Subtest: the gate starts only when every fact it reads is present, current and says the right thing +ok 1039 - the gate starts only when every fact it reads is present, current and says the right thing + --- + duration_ms: 1.836768 + type: 'test' + ... +# Subtest: a fact nobody could read is unreadable, and no fact is guessed (acceptance 10) +ok 1040 - a fact nobody could read is unreadable, and no fact is guessed (acceptance 10) + --- + duration_ms: 2.264529 + type: 'test' + ... +# Subtest: a check run with no conclusion is unreadable, not a fact whose value is null (\#1298) +ok 1041 - a check run with no conclusion is unreadable, not a fact whose value is null (\#1298) + --- + duration_ms: 0.347649 + type: 'test' + ... +# Subtest: a job instantiates exactly one node card, parented to the job and queued by role +ok 1042 - a job instantiates exactly one node card, parented to the job and queued by role + --- + duration_ms: 8.348037 + type: 'test' + ... +# Subtest: a missing input creates no card and the refusal is enterNode's own sentence +ok 1043 - a missing input creates no card and the refusal is enterNode's own sentence + --- + duration_ms: 2.002782 + type: 'test' + ... +# Subtest: the card is queued for the node's role and carries no assignee +ok 1044 - the card is queued for the node's role and carries no assignee + --- + duration_ms: 1.674463 + type: 'test' + ... +# Subtest: two passes on the same facts open one card, and a replayed tick after a restart opens none +ok 1045 - two passes on the same facts open one card, and a replayed tick after a restart opens none + --- + duration_ms: 1.695254 + type: 'test' + ... +# Subtest: node two opens only when node one's output is present and current +ok 1046 - node two opens only when node one's output is present and current + --- + duration_ms: 1.54145 + type: 'test' + ... +# Subtest: two ready nodes open together, with no second limit in the plan +ok 1047 - two ready nodes open together, with no second limit in the plan + --- + duration_ms: 0.465102 + type: 'test' + ... +# Subtest: another job's card is not this job's record, in the plan or in completions +ok 1048 - another job's card is not this job's record, in the plan or in completions + --- + duration_ms: 1.093008 + type: 'test' + ... +# Subtest: a stale revision refuses and says both revisions, leaving the open card alone +ok 1049 - a stale revision refuses and says both revisions, leaving the open card alone + --- + duration_ms: 0.7383 + type: 'test' + ... +# Subtest: a held job opens nothing on any node, in the definition's own sentence +ok 1050 - a held job opens nothing on any node, in the definition's own sentence + --- + duration_ms: 2.061393 + type: 'test' + ... +# Subtest: a blank hold is not a hold: it plans exactly like no hold at all (\#1337) +ok 1051 - a blank hold is not a hold: it plans exactly like no hold at all (\#1337) + --- + duration_ms: 3.141091 + type: 'test' + ... +# Subtest: a hold with no name is read as not held, deliberately (\#1337) +ok 1052 - a hold with no name is read as not held, deliberately (\#1337) + --- + duration_ms: 3.84295 + type: 'test' + ... +# Subtest: an unreadable fact creates no card and is marked unreadable +ok 1053 - an unreadable fact creates no card and is marked unreadable + --- + duration_ms: 0.942874 + type: 'test' + ... +# Subtest: completions are append-only and replay adds nothing +ok 1054 - completions are append-only and replay adds nothing + --- + duration_ms: 1.094638 + type: 'test' + ... +# Subtest: an edited definition does not rewrite a card's past nodes +ok 1055 - an edited definition does not rewrite a card's past nodes + --- + duration_ms: 0.566625 + type: 'test' + ... +# Subtest: a job is done only when its terminal node's output is current +ok 1056 - a job is done only when its terminal node's output is current + --- + duration_ms: 1.042268 + type: 'test' + ... +# Subtest: the module holds no clock, no timer, no fetch and no host import +ok 1057 - the module holds no clock, no timer, no fetch and no host import + --- + duration_ms: 0.980305 + type: 'test' + ... +# node:internal/modules/package_json_reader:314 +# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); +# ^ +# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json +# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) +# at packageResolve (node:internal/modules/esm/resolve:772:81) +# at moduleResolve (node:internal/modules/esm/resolve:859:18) +# at defaultResolve (node:internal/modules/esm/resolve:989:11) +# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) +# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) +# at nextStep (node:internal/modules/customization_hooks:189:26) +# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { +# code: 'ERR_MODULE_NOT_FOUND' +# } +# Node.js v22.23.3 +# Subtest: test/workflow-store.test.js +not ok 250 - test/workflow-store.test.js + --- + duration_ms: 116.834765 + type: 'test' + location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/workflow-store.test.js:1:1' + failureType: 'testCodeFailure' + exitCode: 1 + signal: ~ + error: 'test failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: an artifact spec is a kind, and the kinds that name a fact need the name +ok 1059 - an artifact spec is a kind, and the kinds that name a fact need the name + --- + duration_ms: 3.056899 + type: 'test' + ... +# Subtest: a revision is part of the artifact, and a SHA compares case-insensitively +ok 1060 - a revision is part of the artifact, and a SHA compares case-insensitively + --- + duration_ms: 0.849192 + type: 'test' + ... +# Subtest: present and current are two questions, and an unreadable fact is not a pass +ok 1061 - present and current are two questions, and an unreadable fact is not a pass + --- + duration_ms: 0.707558 + type: 'test' + ... +# Subtest: the blank preset validates with its own team, and names a Bot on every node +ok 1062 - the blank preset validates with its own team, and names a Bot on every node + --- + duration_ms: 5.500463 + type: 'test' + ... +# Subtest: the columns are the definition s, not a built-in list +ok 1063 - the columns are the definition s, not a built-in list + --- + duration_ms: 2.769672 + type: 'test' + ... +# Subtest: the flowchart is generated: one box per node, one edge per edges[] row +ok 1064 - the flowchart is generated: one box per node, one edge per edges[] row + --- + duration_ms: 2.752092 + type: 'test' + ... +# Subtest: an input nothing produces is refused, unless the workflow declares it as a starting point +ok 1065 - an input nothing produces is refused, unless the workflow declares it as a starting point + --- + duration_ms: 0.976926 + type: 'test' + ... +# Subtest: an output nothing consumes is refused, unless it is a declared deliverable +ok 1066 - an output nothing consumes is refused, unless it is a declared deliverable + --- + duration_ms: 0.573655 + type: 'test' + ... +# Subtest: one fact has one producer, and two producers are refused by name +ok 1067 - one fact has one producer, and two producers are refused by name + --- + duration_ms: 1.245832 + type: 'test' + ... +# Subtest: a node without a role is refused, and so is a role that names nobody on the team +ok 1068 - a node without a role is refused, and so is a role that names nobody on the team + --- + duration_ms: 2.239948 + type: 'test' + ... +# Subtest: a cycle that is not declared is refused; a declared loop is how work goes back +ok 1069 - a cycle that is not declared is refused; a declared loop is how work goes back + --- + duration_ms: 1.311234 + type: 'test' + ... +# Subtest: a spelling the engine does not know, or an edge that does not line up, is refused on its own +ok 1070 - a spelling the engine does not know, or an edge that does not line up, is refused on its own + --- + duration_ms: 0.582215 + type: 'test' + ... +# Subtest: a missing input refuses in the node s own words, and moves nothing +ok 1071 - a missing input refuses in the node s own words, and moves nothing + --- + duration_ms: 0.910434 + type: 'test' + ... +# Subtest: a stale input refuses with both revisions, so a card reads without asking anyone +ok 1072 - a stale input refuses with both revisions, so a card reads without asking anyone + --- + duration_ms: 1.044207 + type: 'test' + ... +# Subtest: a fact is looked up by its parsed spec, not by the spelling the definition used (\#1298) +ok 1073 - a fact is looked up by its parsed spec, not by the spelling the definition used (\#1298) + --- + duration_ms: 1.256723 + type: 'test' + ... +# Subtest: a guard is a predicate over a fact, and its refusal says what the fact said +ok 1074 - a guard is a predicate over a fact, and its refusal says what the fact said + --- + duration_ms: 0.560854 + type: 'test' + ... +# Subtest: the ids are data: renaming them changes nothing but the strings +ok 1075 - the ids are data: renaming them changes nothing but the strings + --- + duration_ms: 1.16095 + type: 'test' + ... +# Subtest: a fact whose source revision is unreadable refuses, whether the key is missing or null (\#1291 INC) +ok 1076 - a fact whose source revision is unreadable refuses, whether the key is missing or null (\#1291 INC) + --- + duration_ms: 0.444842 + type: 'test' + ... +# Subtest: the unreadable sentence names the fact it read and never fills the source revision with an empty slot (\#1291 INC) +ok 1077 - the unreadable sentence names the fact it read and never fills the source revision with an empty slot (\#1291 INC) + --- + duration_ms: 0.351899 + type: 'test' + ... +# Subtest: the card and the gate say the same thing about an unreadable input (\#1291 INC) +ok 1078 - the card and the gate say the same thing about an unreadable input (\#1291 INC) + --- + duration_ms: 0.492473 + type: 'test' + ... +# Subtest: the page is not a file-path tutorial, even while it is still reading +ok 1079 - the page is not a file-path tutorial, even while it is still reading + --- + duration_ms: 4.928948 + type: 'test' + ... +# Subtest: a settled read lists factory pipelines and your own, and opens the flowchart +ok 1080 - a settled read lists factory pipelines and your own, and opens the flowchart + --- + duration_ms: 7.186497 + type: 'test' + ... +# Subtest: \#1789: a node the run skipped is named Skipped, the word the Room uses +ok 1081 - \#1789: a node the run skipped is named Skipped, the word the Room uses + --- + duration_ms: 2.28414 + type: 'test' + ... +# Subtest: \#2017: a node avatar takes the first code point, so an emoji name is whole +ok 1082 - \#2017: a node avatar takes the first code point, so an emoji name is whole + --- + duration_ms: 1.277463 + type: 'test' + ... +# Subtest: an empty list and a failed read are settled states, not a permanent reading line +ok 1083 - an empty list and a failed read are settled states, not a permanent reading line + --- + duration_ms: 0.906473 + type: 'test' + ... +# Subtest: a read that never returns becomes an error, and a good payload opens as ready +ok 1084 - a read that never returns becomes an error, and a good payload opens as ready + --- + duration_ms: 18.599824 + type: 'test' + ... +# Subtest: a missing workflow plugin is an enable hint, not the host endpoint string (\#1381) +ok 1085 - a missing workflow plugin is an enable hint, not the host endpoint string (\#1381) + --- + duration_ms: 1.854818 + type: 'test' + ... +# Subtest: editing the graph moves a node, draws an edge, drops a local Bot and removes one +ok 1086 - editing the graph moves a node, draws an edge, drops a local Bot and removes one + --- + duration_ms: 0.843932 + type: 'test' + ... +# Subtest: a drag on the open flowchart commits the moved graph +ok 1087 - a drag on the open flowchart commits the moved graph + --- + duration_ms: 1.846218 + type: 'test' + ... +# Subtest: edit mode sets a node system prompt and the commit keeps the edges +ok 1088 - edit mode sets a node system prompt and the commit keeps the edges + --- + duration_ms: 2.951086 + type: 'test' + ... +# Subtest: a factory preset with a live copy keeps the Use this entry (\#1396) +ok 1089 - a factory preset with a live copy keeps the Use this entry (\#1396) + --- + duration_ms: 1.319785 + type: 'test' + ... +# Subtest: Use this on a preset with a live copy hands the factory id to onUse (\#1396) +ok 1090 - Use this on a preset with a live copy hands the factory id to onUse (\#1396) + --- + duration_ms: 0.884263 + type: 'test' + ... +# Subtest: only a factory-backed graph offers Use this (\#1396) +ok 1091 - only a factory-backed graph offers Use this (\#1396) + --- + duration_ms: 1.037907 + type: 'test' + ... +# Subtest: a parallel frame encloses a member stored lower than its partner (\#1752) +ok 1092 - a parallel frame encloses a member stored lower than its partner (\#1752) + --- + duration_ms: 0.962735 + type: 'test' + ... +# Subtest: the Settings graph fits its plane into the canvas width (\#1752) +ok 1093 - the Settings graph fits its plane into the canvas width (\#1752) + --- + duration_ms: 0.720669 + type: 'test' + ... +# Subtest: a fitted graph keeps the right-hand card and the wire into it inside the canvas (\#1752) +ok 1094 - a fitted graph keeps the right-hand card and the wire into it inside the canvas (\#1752) + --- + duration_ms: 0.359769 + type: 'test' + ... +# Subtest: a graph wider than the canvas is fitted at half size with a reachable left edge (\#1769) +ok 1095 - a graph wider than the canvas is fitted at half size with a reachable left edge (\#1769) + --- + duration_ms: 0.37326 + type: 'test' + ... +# Subtest: the fitted stage carries the left offset and the plane is the same size as the helper says (\#1769) +ok 1096 - the fitted stage carries the left offset and the plane is the same size as the helper says (\#1769) + --- + duration_ms: 0.886303 + type: 'test' + ... +# Subtest: a graph that fits keeps the \#1752 scale and no left offset (\#1769) +ok 1097 - a graph that fits keeps the \#1752 scale and no left offset (\#1769) + --- + duration_ms: 0.888423 + type: 'test' + ... +# Subtest: the measured width is the canvas clientWidth, the same box the scroll range is read in (\#1769) +ok 1098 - the measured width is the canvas clientWidth, the same box the scroll range is read in (\#1769) + --- + duration_ms: 0.39138 + type: 'test' + ... +# Subtest: \#1810: a running workflow is read again every 2 s and the chip follows the run +ok 1099 - \#1810: a running workflow is read again every 2 s and the chip follows the run + --- + duration_ms: 15.514563 + type: 'test' + ... +# Subtest: \#1810: nothing running means one read in ten seconds, not a poll +ok 1100 - \#1810: nothing running means one read in ten seconds, not a poll + --- + duration_ms: 1.487018 + type: 'test' + ... +# Subtest: \#1810: an edit suspends the poll and finishing it brings the poll back +ok 1101 - \#1810: an edit suspends the poll and finishing it brings the poll back + --- + duration_ms: 4.132368 + type: 'test' + ... +# Subtest: \#1810: a page that unmounts stops asking +ok 1102 - \#1810: a page that unmounts stops asking + --- + duration_ms: 1.628702 + type: 'test' + ... +# Subtest: \#1810: a failed poll shows the error line and Retry, not an empty page +ok 1103 - \#1810: a failed poll shows the error line and Retry, not an empty page + --- + duration_ms: 2.052903 + type: 'test' + ... +# Subtest: \#2122: every wire leaves a port and never cuts through a card +ok 1104 - \#2122: every wire leaves a port and never cuts through a card + --- + duration_ms: 6.216912 + type: 'test' + ... +# Subtest: \#2122: a back edge is a visible loop outside the cards, not a stub +ok 1105 - \#2122: a back edge is a visible loop outside the cards, not a stub + --- + duration_ms: 1.208552 + type: 'test' + ... +# Subtest: \#2122: no two wires share one stroke for more than 20px +ok 1106 - \#2122: no two wires share one stroke for more than 20px + --- + duration_ms: 22.797292 + type: 'test' + ... +# Subtest: \#2122: the dashed parallel frame is built from the measured cards, not 72px +ok 1107 - \#2122: the dashed parallel frame is built from the measured cards, not 72px + --- + duration_ms: 1.456548 + type: 'test' + ... +# Subtest: \#2122: a card between two cards on one column sends the wire round it +ok 1108 - \#2122: a card between two cards on one column sends the wire round it + --- + duration_ms: 0.859322 + type: 'test' + ... +# Subtest: P-395: every wire joins two named cards, and a hit path names them +ok 1109 - P-395: every wire joins two named cards, and a hit path names them + --- + duration_ms: 1.15435 + type: 'test' + ... +# Subtest: P-395: hovering one wire points at it and dims the others, then lets them all go +ok 1110 - P-395: hovering one wire points at it and dims the others, then lets them all go + --- + duration_ms: 2.372412 + type: 'test' + ... +# Subtest: P-395: a read-only graph commits nothing when a wire is hovered or clicked +ok 1111 - P-395: a read-only graph commits nothing when a wire is hovered or clicked + --- + duration_ms: 2.069154 + type: 'test' + ... +# Subtest: \#2138: a back edge out of a parallel layer clears the card beside it +ok 1112 - \#2138: a back edge out of a parallel layer clears the card beside it + --- + duration_ms: 6.1428 + type: 'test' + ... +# Subtest: \#2138: a back edge that leaves a parallel layer clears the card beside it +ok 1113 - \#2138: a back edge that leaves a parallel layer clears the card beside it + --- + duration_ms: 3.646865 + type: 'test' + ... +# Subtest: \#2151: a loop across one parallel layer clears the middle card +ok 1114 - \#2151: a loop across one parallel layer clears the middle card + --- + duration_ms: 2.648319 + type: 'test' + ... +# Subtest: \#2151: a skip across one row clears the middle card +ok 1115 - \#2151: a skip across one row clears the middle card + --- + duration_ms: 2.6787 + type: 'test' + ... +# Subtest: a forward edge to the next row clears a taller card beside its source (\#2160) +ok 1116 - a forward edge to the next row clears a taller card beside its source (\#2160) + --- + duration_ms: 0.966386 + type: 'test' + ... +# Subtest: a forward edge to the next row clears taller cards on both sides of its source (\#2160) +ok 1117 - a forward edge to the next row clears taller cards on both sides of its source (\#2160) + --- + duration_ms: 1.014596 + type: 'test' + ... +# Subtest: a forward edge into the next row keeps the factory row pitch clear (\#2164) +ok 1118 - a forward edge into the next row keeps the factory row pitch clear (\#2164) + --- + duration_ms: 1.394996 + type: 'test' + ... +# Subtest: a forward edge into the next row turns in the corridor under a taller neighbour (\#2164) +ok 1119 - a forward edge into the next row turns in the corridor under a taller neighbour (\#2164) + --- + duration_ms: 0.678778 + type: 'test' + ... +# Subtest: a forward edge into the next row turns above the tallest CJK named card (\#2164) +ok 1120 - a forward edge into the next row turns above the tallest CJK named card (\#2164) + --- + duration_ms: 0.526354 + type: 'test' + ... +# Subtest: \#2176: a read-only window renders the host sentence instead of Edit and offers no rename or delete +ok 1121 - \#2176: a read-only window renders the host sentence instead of Edit and offers no rename or delete + --- + duration_ms: 0.966815 + type: 'test' + ... +# Subtest: \#2176: a read-only window never asks the host to save a graph the user drags +ok 1122 - \#2176: a read-only window never asks the host to save a graph the user drags + --- + duration_ms: 13.184612 + type: 'test' + ... +# Subtest: \#2176: a window that is not read-only keeps Edit, rename and delete +ok 1123 - \#2176: a window that is not read-only keeps Edit, rename and delete + --- + duration_ms: 0.885273 + type: 'test' + ... +# Subtest: \#2176: a read-only window offers no Use this on a preset and never creates a copy +ok 1124 - \#2176: a read-only window offers no Use this on a preset and never creates a copy + --- + duration_ms: 2.664369 + type: 'test' + ... +# Subtest: \#2176: a window that is not read-only keeps Use this and copies the preset once +ok 1125 - \#2176: a window that is not read-only keeps Use this and copies the preset once + --- + duration_ms: 2.658589 + type: 'test' + ... +1..1125 +# tests 1125 +# suites 0 +# pass 999 +# fail 125 +# cancelled 0 +# skipped 1 +# todo 0 +# duration_ms 21014.930402 diff --git a/core/client.js b/core/client.js index 78d5a5189..8563b9a3a 100644 --- a/core/client.js +++ b/core/client.js @@ -9012,10 +9012,10 @@ function BoardCard2({ task, roster, movable, onMove, onDrag, partOf: partOf2 }) onDragEnd: () => onDrag?.(null) }); } -function cardProps(task, roster, onMove, onDrag, partOf2) { - return { task, roster, movable: canMoveTask(roster, task), onMove, onDrag, partOf: partOf2 }; +function cardProps(task, roster, onMove, onDrag, partOf2, locked) { + return { task, roster, movable: !locked && canMoveTask(roster, task), onMove, onDrag, partOf: partOf2 }; } -function BoardColumn({ column, tasks, roster, lanes, dragging, onMove, onDrag, archiveFull }) { +function BoardColumn({ column, tasks, roster, lanes, dragging, onMove, onDrag, archiveFull, locked }) { const tree = lanes ? columnTree(tasks) : null; const linked = tree ? tree.loose.filter((task) => task.parentId || task.parentTitle) : []; const plain = tree ? tree.loose.filter((task) => !task.parentId && !task.parentTitle) : tasks; @@ -9026,10 +9026,11 @@ function BoardColumn({ column, tasks, roster, lanes, dragging, onMove, onDrag, a "data-column": column, "aria-label": columnTitle(column), onDragOver: (event) => { - if (!dragging) return; + if (locked || !dragging) return; event.preventDefault(); }, onDrop: (event) => { + if (locked) return; event.preventDefault(); const id = event.dataTransfer?.getData("text/plain"); if (id) onMove?.(id, column); @@ -9049,23 +9050,23 @@ function BoardColumn({ column, tasks, roster, lanes, dragging, onMove, onDrag, a tree ? tree.nests.map((nest) => (0, import_react15.createElement)( "div", { key: nest.task.id, className: "bt-board-nest" }, - (0, import_react15.createElement)(BoardCard2, cardProps(nest.task, roster, onMove, onDrag)), + (0, import_react15.createElement)(BoardCard2, cardProps(nest.task, roster, onMove, onDrag, void 0, locked)), nest.children.map((child) => (0, import_react15.createElement)( "div", { key: child.id, className: "bt-board-subtask", "data-parent": nest.task.id }, - (0, import_react15.createElement)(BoardCard2, cardProps(child, roster, onMove, onDrag)) + (0, import_react15.createElement)(BoardCard2, cardProps(child, roster, onMove, onDrag, void 0, locked)) )) )) : null, - linked.map((task) => (0, import_react15.createElement)(BoardCard2, { key: task.id, ...cardProps(task, roster, onMove, onDrag, task.parentTitle || "") })), + linked.map((task) => (0, import_react15.createElement)(BoardCard2, { key: task.id, ...cardProps(task, roster, onMove, onDrag, task.parentTitle || "", locked) })), lanes ? lanesOf(plain, roster).map((lane) => (0, import_react15.createElement)( "div", { key: lane.id, className: "bt-board-lane" }, (0, import_react15.createElement)("span", { className: "bt-board-lane-name" }, lane.name), - lane.tasks.map((task) => (0, import_react15.createElement)(BoardCard2, { key: task.id, ...cardProps(task, roster, onMove, onDrag) })) - )) : plain.map((task) => (0, import_react15.createElement)(BoardCard2, { key: task.id, ...cardProps(task, roster, onMove, onDrag) })) + lane.tasks.map((task) => (0, import_react15.createElement)(BoardCard2, { key: task.id, ...cardProps(task, roster, onMove, onDrag, void 0, locked) })) + )) : plain.map((task) => (0, import_react15.createElement)(BoardCard2, { key: task.id, ...cardProps(task, roster, onMove, onDrag, void 0, locked) })) ); } -function BoardView({ roster, tasks, rail, scope, counts: counts2, dragging, error, draft, onDraft, onSelect, onMove, onDrag, onCreate, archiveFull }) { +function BoardView({ roster, tasks, rail, scope, counts: counts2, dragging, error, draft, onDraft, onSelect, onMove, onDrag, onCreate, archiveFull, locked }) { const columns = boardColumns(tasks); const lanes = scope?.kind === "group"; const selectedBot = scope?.kind === "bot" ? scope.botId : ""; @@ -9097,7 +9098,7 @@ function BoardView({ roster, tasks, rail, scope, counts: counts2, dragging, erro { className: "bt-board-main" }, error ? (0, import_react15.createElement)("p", { className: "bt-board-error", role: "alert" }, error) : null, lanes ? (0, import_react15.createElement)("p", { className: "bt-board-hint" }, t("Assign, claim, and progress live on this board: one overall task, a subtask per part, an assignee, a column, and progress. @ only wakes someone.")) : null, - scope?.kind === "bot" && onCreate ? (0, import_react15.createElement)( + scope?.kind === "bot" && onCreate && !locked ? (0, import_react15.createElement)( "form", { className: "bt-board-add", onSubmit: (event) => { event.preventDefault(); @@ -9118,7 +9119,8 @@ function BoardView({ roster, tasks, rail, scope, counts: counts2, dragging, erro dragging, onMove, onDrag, - archiveFull + archiveFull, + locked })) ) ) @@ -9148,6 +9150,7 @@ function scopeName(roster, scope) { return ""; } function KanbanDialog({ roster, actions, leaving = false }) { + const locked = typeof roster?.readOnly === "string" && roster.readOnly.trim() !== ""; const rail = boardRail(roster); const [scope, setScope] = (0, import_react15.useState)(() => rail.bots[0] ? { kind: "bot", botId: rail.bots[0].id } : rail.groups[0] ? { kind: "group", roomId: rail.groups[0].id } : null); const [dragging, setDragging] = (0, import_react15.useState)(null); @@ -9176,6 +9179,7 @@ function KanbanDialog({ roster, actions, leaving = false }) { if (columnOf(task) === "done") bucket.done += 1; } const move = async (id, column) => { + if (locked) return; const task = tasks.find((item) => item.id === id) ?? own.find((item) => item.id === id); if (!task || !canMoveTask(roster, task) || columnOf(task) === column) return; setError(""); @@ -9186,6 +9190,7 @@ function KanbanDialog({ roster, actions, leaving = false }) { } }; const create = async (title) => { + if (locked) return; const text2 = String(title ?? "").trim(); if (!text2 || scope?.kind !== "bot") return; setError(""); @@ -9224,6 +9229,7 @@ function KanbanDialog({ roster, actions, leaving = false }) { error, draft, archiveFull, + locked, onDraft: setDraft, onSelect: setScope, onMove: move, diff --git a/core/src/client/kanban.js b/core/src/client/kanban.js index 0d0f07872..0fc5e2c63 100644 --- a/core/src/client/kanban.js +++ b/core/src/client/kanban.js @@ -294,11 +294,11 @@ export function BoardCard({ task, roster, movable, onMove, onDrag, partOf }) { }) } -function cardProps(task, roster, onMove, onDrag, partOf) { - return { task, roster, movable: canMoveTask(roster, task), onMove, onDrag, partOf } +function cardProps(task, roster, onMove, onDrag, partOf, locked) { + return { task, roster, movable: !locked && canMoveTask(roster, task), onMove, onDrag, partOf } } -function BoardColumn({ column, tasks, roster, lanes, dragging, onMove, onDrag, archiveFull }) { +function BoardColumn({ column, tasks, roster, lanes, dragging, onMove, onDrag, archiveFull, locked }) { const tree = lanes ? columnTree(tasks) : null const linked = tree ? tree.loose.filter(task => task.parentId || task.parentTitle) : [] const plain = tree ? tree.loose.filter(task => !task.parentId && !task.parentTitle) : tasks @@ -306,8 +306,9 @@ function BoardColumn({ column, tasks, roster, lanes, dragging, onMove, onDrag, a className: 'bt-board-column', 'data-column': column, 'aria-label': columnTitle(column), - onDragOver: (event) => { if (!dragging) return; event.preventDefault() }, + onDragOver: (event) => { if (locked || !dragging) return; event.preventDefault() }, onDrop: (event) => { + if (locked) return event.preventDefault() const id = event.dataTransfer?.getData('text/plain') if (id) onMove?.(id, column) @@ -322,18 +323,18 @@ function BoardColumn({ column, tasks, roster, lanes, dragging, onMove, onDrag, a dragging ? h('div', { className: 'bt-board-drop' }, dropLabel(column)) : null, tasks.length === 0 && !dragging ? h('p', { className: 'bt-board-empty' }, t('Nothing in this column.')) : null, tree ? tree.nests.map(nest => h('div', { key: nest.task.id, className: 'bt-board-nest' }, - h(BoardCard, cardProps(nest.task, roster, onMove, onDrag)), + h(BoardCard, cardProps(nest.task, roster, onMove, onDrag, undefined, locked)), nest.children.map(child => h('div', { key: child.id, className: 'bt-board-subtask', 'data-parent': nest.task.id }, - h(BoardCard, cardProps(child, roster, onMove, onDrag)))))) : null, - linked.map(task => h(BoardCard, { key: task.id, ...cardProps(task, roster, onMove, onDrag, task.parentTitle || '') })), + h(BoardCard, cardProps(child, roster, onMove, onDrag, undefined, locked)))))) : null, + linked.map(task => h(BoardCard, { key: task.id, ...cardProps(task, roster, onMove, onDrag, task.parentTitle || '', locked) })), lanes ? lanesOf(plain, roster).map(lane => h('div', { key: lane.id, className: 'bt-board-lane' }, h('span', { className: 'bt-board-lane-name' }, lane.name), - lane.tasks.map(task => h(BoardCard, { key: task.id, ...cardProps(task, roster, onMove, onDrag) })))) - : plain.map(task => h(BoardCard, { key: task.id, ...cardProps(task, roster, onMove, onDrag) }))) + lane.tasks.map(task => h(BoardCard, { key: task.id, ...cardProps(task, roster, onMove, onDrag, undefined, locked) })))) + : plain.map(task => h(BoardCard, { key: task.id, ...cardProps(task, roster, onMove, onDrag, undefined, locked) }))) } -export function BoardView({ roster, tasks, rail, scope, counts, dragging, error, draft, onDraft, onSelect, onMove, onDrag, onCreate, archiveFull }) { +export function BoardView({ roster, tasks, rail, scope, counts, dragging, error, draft, onDraft, onSelect, onMove, onDrag, onCreate, archiveFull, locked }) { const columns = boardColumns(tasks) const lanes = scope?.kind === 'group' const selectedBot = scope?.kind === 'bot' ? scope.botId : '' @@ -362,12 +363,12 @@ export function BoardView({ roster, tasks, rail, scope, counts, dragging, error, h('div', { className: 'bt-board-main' }, error ? h('p', { className: 'bt-board-error', role: 'alert' }, error) : null, lanes ? h('p', { className: 'bt-board-hint' }, t('Assign, claim, and progress live on this board: one overall task, a subtask per part, an assignee, a column, and progress. @ only wakes someone.')) : null, - scope?.kind === 'bot' && onCreate ? h('form', { className: 'bt-board-add', onSubmit: (event) => { event.preventDefault(); onCreate(draft) } }, + scope?.kind === 'bot' && onCreate && !locked ? h('form', { className: 'bt-board-add', onSubmit: (event) => { event.preventDefault(); onCreate(draft) } }, h('input', { 'aria-label': t('Task title'), placeholder: t('New task'), value: draft ?? '', onChange: (event) => onDraft?.(event.target.value) }), h('button', { type: 'submit', className: 'bt-soft bt-soft-sm' }, t('Add task'))) : null, h('div', { className: 'bt-board-columns' }, ['not-started', 'in-progress', 'done'].map(column => h(BoardColumn, { - key: column, column, tasks: columns[column], roster, lanes, dragging, onMove, onDrag, archiveFull, + key: column, column, tasks: columns[column], roster, lanes, dragging, onMove, onDrag, archiveFull, locked, }))))) } @@ -389,6 +390,9 @@ function scopeName(roster, scope) { } export function KanbanDialog({ roster, actions, leaving = false }) { + // #2248: the window lock, read once the way the rest of the client reads it (sidebar.js:371). A + // read-only window draws no board write the host would refuse, and the write entries refuse too. + const locked = typeof roster?.readOnly === 'string' && roster.readOnly.trim() !== '' // Per-Bot task board. The GitHub metrics panel is not part of this dialog (#1363). const rail = boardRail(roster) const [scope, setScope] = useState(() => (rail.bots[0] ? { kind: 'bot', botId: rail.bots[0].id } : rail.groups[0] ? { kind: 'group', roomId: rail.groups[0].id } : null)) @@ -427,6 +431,7 @@ export function KanbanDialog({ roster, actions, leaving = false }) { if (columnOf(task) === 'done') bucket.done += 1 } const move = async (id, column) => { + if (locked) return const task = tasks.find(item => item.id === id) ?? own.find(item => item.id === id) if (!task || !canMoveTask(roster, task) || columnOf(task) === column) return setError('') @@ -437,6 +442,7 @@ export function KanbanDialog({ roster, actions, leaving = false }) { } } const create = async (title) => { + if (locked) return const text = String(title ?? '').trim() if (!text || scope?.kind !== 'bot') return setError('') @@ -459,7 +465,7 @@ export function KanbanDialog({ roster, actions, leaving = false }) { h('span', { className: 'bt-mem-head-gap' }), h('button', { type: 'button', className: 'bt-icon-btn', 'aria-label': t('Close board'), autoFocus: true, onClick: close }, h(CloseIcon))), h(BoardView, { - roster, tasks: boardTasks, rail, scope, counts, dragging, error, draft, archiveFull, + roster, tasks: boardTasks, rail, scope, counts, dragging, error, draft, archiveFull, locked, onDraft: setDraft, onSelect: setScope, onMove: move, onDrag: setDragging, onCreate: create, }))) } diff --git a/core/test/kanban.test.js b/core/test/kanban.test.js index b1820a3d7..b1d45bd31 100644 --- a/core/test/kanban.test.js +++ b/core/test/kanban.test.js @@ -487,7 +487,7 @@ test('P-364: the rail counts the list the board draws, never the one the other s // effect back to the test and never re-runs one, so a switch case written against it passes whatever // the hook does (#1810). This is a second, stateful context: hook slots per component, an effect // re-run only when its deps change, a setter that re-renders, and the board's poll on a fake clock. -function mountBoard(actions) { +function mountBoard(actions, boardRoster = roster) { const h = (type, props, ...children) => ({ type, props: props ?? {}, children: children.flat(Infinity) }) const runtime = { instances: new Map(), key: 'root', index: 0, dirty: false, timer: 0, timers: new Map() } const instance = (key) => { @@ -577,7 +577,7 @@ function mountBoard(actions) { const draw = () => { runtime.dirty = false for (const slot of runtime.instances.values()) slot.pending = [] - tree = expandLive(h(live.KanbanDialog, { roster, actions })) + tree = expandLive(h(live.KanbanDialog, { roster: boardRoster, actions })) commit() return tree } @@ -809,3 +809,74 @@ test('a non-terminal actor entry does not end a Done card, even when it comes fi ]) assert.equal(whenOf(board.column('done'), 'task-done999999'), '2 h') }) + +// P-455: a read-only window's task board still drew every write control and accepted drags, and +// the host refused each one (`bot/read-only`) with nothing on the board saying why. The board reads +// the window lock once, the way the rest of the client reads `roster.readOnly` (sidebar.js:371), +// and draws no write at all; everything readable — the rail, the three columns, the cards, the +// archive and its Done stamp — stays. +test('P-455: a read-only window draws no write on the task board', async () => { + const lockedRoster = { ...roster, readOnly: 'This window is read-only.' } + const open = task('task-open123456', 'open', { title: 'Open card', ownerBotId: 'a' }) + const working = task('task-working456789', 'working', { title: 'Working card', ownerBotId: 'a', progress: 40 }) + const finished = task('task-done789012', 'accepted', { title: 'Done card', ownerBotId: 'a', progress: 100, updatedAt: Date.now() - 2 * HOUR }) + const writes = [] + const actions = { + closeBoard: () => {}, boardClose: () => {}, + tasks: query => Promise.resolve(query?.archive ? [finished] : [open, working]), + taskUpdate: async input => { writes.push(['update', input]); return open }, + taskCreate: async input => { writes.push(['create', input]); return input }, + } + const board = mountBoard(actions, lockedRoster) + board.draw() + await board.settle() + const tree = board.tree + const buttons = all(tree).filter(node => node.type === 'button' && ['Add task', 'Start', 'Complete'].includes(textOf(node))).map(textOf) + const newTaskForms = byClass(tree, 'bt-board-add').length + const draggable = byClass(tree, 'bt-board-card').filter(node => node.props.draggable).map(node => node.props['data-task']) + assert.deepEqual({ buttons, newTaskForms, draggable }, { buttons: [], newTaskForms: 0, draggable: [] }) + // The readable board is untouched by the lock. + assert.equal(byClass(tree, 'bt-board-column').map(node => node.props['data-column']).join('|'), 'not-started|in-progress|done') + assert.equal(byClass(tree, 'bt-board-card').length, 3) + assert.match(textOf(tree), /Open card/) + assert.match(textOf(tree), /Working card/) + assert.match(textOf(tree), /Done card/) + assert.equal(byClass(tree, 'bt-board-when').length, 1) + // A drop on a column writes nothing either, even when a drag value is handed to the handler. + board.column('in-progress').props.onDrop({ preventDefault() {}, dataTransfer: { getData: () => open.id } }) + assert.deepEqual(writes, []) +}) + +// The counter-proof: the same board in a writable window keeps all four writes and still sends +// the two requests. A fix that only makes the read-only case pass by removing the controls for +// every window fails here. +test('counter-proof: a writable board keeps all four writes', async () => { + const open = task('task-open123456', 'open', { title: 'Open card', ownerBotId: 'a' }) + const working = task('task-working456789', 'working', { title: 'Working card', ownerBotId: 'a', progress: 40 }) + const calls = [] + const actions = { + closeBoard: () => {}, boardClose: () => {}, + tasks: query => Promise.resolve(query?.archive ? [] : [open, working]), + taskUpdate: async input => { calls.push(['update', input]); return { ...open, status: 'working' } }, + taskCreate: async input => { calls.push(['create', input]); return { ...open, ...input } }, + } + const board = mountBoard(actions) + board.draw() + await board.settle() + const buttons = all(board.tree).filter(node => node.type === 'button' && ['Add task', 'Start', 'Complete'].includes(textOf(node))).map(textOf) + assert.deepEqual(buttons, ['Add task', 'Start', 'Complete']) + assert.equal(byClass(board.tree, 'bt-board-add').length, 1) + const draggable = byClass(board.tree, 'bt-board-card').filter(node => node.props.draggable).map(node => node.props['data-task']).sort() + assert.deepEqual(draggable, ['task-open123456', 'task-working456789']) + const start = all(board.tree).find(node => node.type === 'button' && textOf(node) === 'Start') + start.props.onClick() + await board.settle() + assert.equal(calls.length, 1); assert.equal(calls[0][0], 'update'); assert.equal(calls[0][1].id, open.id); assert.equal(calls[0][1].column, 'in-progress') + // The form writes too: type a title, then submit it. + const input = all(byClass(board.tree, 'bt-board-add')[0]).find(node => node.type === 'input') + input.props.onChange({ target: { value: 'New card' } }) + board.draw() + byClass(board.tree, 'bt-board-add')[0].props.onSubmit({ preventDefault() {} }) + await board.settle() + assert.equal(calls.length, 2); assert.equal(calls[1][0], 'create'); assert.equal(calls[1][1].botId, 'a'); assert.equal(calls[1][1].title, 'New card'); assert.equal(calls[1][1].column, 'not-started') +}) diff --git a/docs/subsystems/core-client.md b/docs/subsystems/core-client.md index 22f6e3e36..7827709ce 100644 --- a/docs/subsystems/core-client.md +++ b/docs/subsystems/core-client.md @@ -48,7 +48,7 @@ The browser side of the patched `ds-bot` core (`core/`): sources in `core/src/cl | `core/src/shared/preview.js` | What a preview may show of a stored line (#130, #1347): `visibleText(text)` unwraps complete `` wraps and then removes leftover marker fragments until neither changes the text — a `from="User">` tail, a `untrusted-message>` whose brackets an older pass already stripped, a nested fragment that would otherwise rebuild a marker — and folds the result to the one line a sidebar row is. `stripFence` is the marker half on its own. It is used where a row is built (`previewOf` in `src/client/text.js`, the group row in `src/client/sidebar.js`, the host's `preview` in `src/host/channel.js`), so no surface has to remember it, and by the details drawer's copy export: `transcriptOf` (`src/client/text.js`) reads each stored turn through the same helper, so a copied conversation carries the words, not an untrusted fence, and `copyBodyOf` drops a leading delegation trace only when its first hop is a Bot's name taken from the roster (`copyNames`; longest first, and no names strips nothing), which keeps a line like `Settings → Models 页面` as written; a copied reply keeps its own line breaks, and only a trace-only line or a fence-marker line is dropped. Tests: `core/test/ui-clickthrough.test.js`, `core/test/details-copy.test.js`. | | `core/src/client/board-card.js` | The task board's card frame (#1363): `BoardCard` draws the identity line, the title, the note and the actions the board passes in, with `TASK_SKIN`. A card carries `data-source` (`task`) and `data-key` (`task:`). The caller is `kanban.js`. Tests: `core/test/board-card.test.js`, `core/test/kanban.test.js`. | | `core/src/shared/board-card.js` | Task-card identity (#1363): `taskCardKey(id)` is `task:` and `taskCard(task)` builds the model `BoardCard` draws. Tests: `core/test/board-card.test.js`. | -| `core/src/client/kanban.js` | Per-Bot task board (#1058, #1099): the **Tasks** row under Inbox (`KanbanRow`, `ui.board`, `actions.openBoard` / `closeBoard`) and `KanbanDialog`. `boardRail` lists the viewer's Bots nested by `createdBy` and the groups they administer; `boardColumns` maps task status onto **Not started** / **In progress** / **Done**. Cards show id, priority, title, note, assignee and progress, and are drawn by the shared `board-card.js` component: a task card says `source: 'task'`, keys `task:` and keeps `data-task` / `data-column` for this board's own selectors (#1265 step 1). The dialog body is `BoardView` (#1363): the rail stays per-Bot and the columns are the task columns only. The GitHub metrics panel (Today / 7 days, Retry, Diagnose, the package-default repository header) is not mounted. A task card is the shared `BoardCard` with `TASK_SKIN`, and dragging it or dropping it on a column only reports the request to the dialog's `onMove` (`actions.taskUpdate`), so the view still never writes. In a group scope, `columnTree` nests subtasks under the overall task (`kind: 'group'`) when they share a column, and a subtask in another column says which overall task it is part of. That scope also says assigning, claiming, and progress live on the board (overall task, subtask, assignee, column, progress) and that @ only wakes someone. Drag or **Start** / **Complete** calls `actions.taskUpdate`; only the Bot's owner gets those actions. A group scope loads `tasks { roomId }`. Since #1252 the default read is active work only and the Done column merges a second read of the finished rows — `tasks { ...query, archive: true, limit: ARCHIVE_SHOWN }`, which is room-scoped for a group and names the Bot for a Bot board, because the host cuts the page before the board can filter by Bot — newest-settled first by `updatedAt` (tiebreak `createdAt`), finished rows only, and cut to that limit, so a room with hundreds of finished cards still renders a twenty-card column while the poll carries the slice and not the history. Since #2045 that page is also counted for what it is: when the archive holds a full page (`ARCHIVE_SHOWN`), the Done heading reads `20 newest` and a Bot's rail row reads `20+ done` rather than a fraction that would present the page as the history, and in a group the page is cut across the room, so every Bot's share of it is a lower bound and reads the same way rather than presenting its slice as its own total; a page under the limit keeps `{done}/{total}` exactly as before. P-364: the rail adds up the list the scope actually draws from, and a room board keeps its active cards in a second list of its own (`groupTasks`), so a room rail counts the room's active cards as well as the archive page, reading `1/4` beside four drawn cards and `0/1` for a Bot whose cards are all still active, while a Bot board's numbers are unchanged. #2069: it counts one list and never both — `own` still holds the Bot board's read after the rail switches to a room, and adding it counted the room's active cards twice, so a room board that draws two cards read `1/3` where it now reads `1/2`. P-360: a Bot board's load effect is keyed by the Bot it shows, so switching the rail re-reads the new Bot's active list and archive page — the page it kept was that of the Bot it left, and filtering it by the new Bot emptied its Done column while the poll kept refilling the old one. That read without `limit` stays uncapped on purpose: it is the id-lookup and tooling path (`statusOf`, a Bot reading a settled row), not what the board polls. Finishing a card moves it off the active list at once, before the next poll. A card in the Done column also says when it finished — a relative time beside the assignee (`bt-board-when`, `relativeShort`), on a Bot's board and a group's alike (#2066). The stamp is the **first** terminal entry in the card's `actors` (`accepted`, `cancelled` or `failed`), never `updatedAt`: `record()` bumps `updatedAt` on a plain edit too, so taking it would name the edit instead of the finish and taking the last terminal entry would do the same. A row written before that history existed falls back to `updatedAt`, and a card with neither a finite `at` nor a finite `updatedAt` draws no node at all — `relativeShort(undefined)` would print `Invalid Date` and `0` would print 1970. The other columns keep the footer they had. Tests: `core/test/kanban.test.js`. | +| `core/src/client/kanban.js` | Per-Bot task board (#1058, #1099): the **Tasks** row under Inbox (`KanbanRow`, `ui.board`, `actions.openBoard` / `closeBoard`) and `KanbanDialog`. `boardRail` lists the viewer's Bots nested by `createdBy` and the groups they administer; `boardColumns` maps task status onto **Not started** / **In progress** / **Done**. Cards show id, priority, title, note, assignee and progress, and are drawn by the shared `board-card.js` component: a task card says `source: 'task'`, keys `task:` and keeps `data-task` / `data-column` for this board's own selectors (#1265 step 1). The dialog body is `BoardView` (#1363): the rail stays per-Bot and the columns are the task columns only. The GitHub metrics panel (Today / 7 days, Retry, Diagnose, the package-default repository header) is not mounted. A task card is the shared `BoardCard` with `TASK_SKIN`, and dragging it or dropping it on a column only reports the request to the dialog's `onMove` (`actions.taskUpdate`), so the view still never writes. In a group scope, `columnTree` nests subtasks under the overall task (`kind: 'group'`) when they share a column, and a subtask in another column says which overall task it is part of. That scope also says assigning, claiming, and progress live on the board (overall task, subtask, assignee, column, progress) and that @ only wakes someone. Drag or **Start** / **Complete** calls `actions.taskUpdate`; only the Bot's owner gets those actions. A group scope loads `tasks { roomId }`. Since #1252 the default read is active work only and the Done column merges a second read of the finished rows — `tasks { ...query, archive: true, limit: ARCHIVE_SHOWN }`, which is room-scoped for a group and names the Bot for a Bot board, because the host cuts the page before the board can filter by Bot — newest-settled first by `updatedAt` (tiebreak `createdAt`), finished rows only, and cut to that limit, so a room with hundreds of finished cards still renders a twenty-card column while the poll carries the slice and not the history. Since #2045 that page is also counted for what it is: when the archive holds a full page (`ARCHIVE_SHOWN`), the Done heading reads `20 newest` and a Bot's rail row reads `20+ done` rather than a fraction that would present the page as the history, and in a group the page is cut across the room, so every Bot's share of it is a lower bound and reads the same way rather than presenting its slice as its own total; a page under the limit keeps `{done}/{total}` exactly as before. P-364: the rail adds up the list the scope actually draws from, and a room board keeps its active cards in a second list of its own (`groupTasks`), so a room rail counts the room's active cards as well as the archive page, reading `1/4` beside four drawn cards and `0/1` for a Bot whose cards are all still active, while a Bot board's numbers are unchanged. #2069: it counts one list and never both — `own` still holds the Bot board's read after the rail switches to a room, and adding it counted the room's active cards twice, so a room board that draws two cards read `1/3` where it now reads `1/2`. P-360: a Bot board's load effect is keyed by the Bot it shows, so switching the rail re-reads the new Bot's active list and archive page — the page it kept was that of the Bot it left, and filtering it by the new Bot emptied its Done column while the poll kept refilling the old one. That read without `limit` stays uncapped on purpose: it is the id-lookup and tooling path (`statusOf`, a Bot reading a settled row), not what the board polls. Finishing a card moves it off the active list at once, before the next poll. A card in the Done column also says when it finished — a relative time beside the assignee (`bt-board-when`, `relativeShort`), on a Bot's board and a group's alike (#2066). The stamp is the **first** terminal entry in the card's `actors` (`accepted`, `cancelled` or `failed`), never `updatedAt`: `record()` bumps `updatedAt` on a plain edit too, so taking it would name the edit instead of the finish and taking the last terminal entry would do the same. A row written before that history existed falls back to `updatedAt`, and a card with neither a finite `at` nor a finite `updatedAt` draws no node at all — `relativeShort(undefined)` would print `Invalid Date` and `0` would print 1970. The other columns keep the footer they had. #2248: a read-only window (`roster.readOnly` a non-empty string, read once in `KanbanDialog`) draws no board write the host would refuse — no **Add task** form, no **Start** / **Complete**, no `draggable` card, and a drop on a column runs no `taskUpdate` — while the readable board (rail, three columns, cards, archive, Done stamp) and a writable window are unchanged. Tests: `core/test/kanban.test.js`. | | `core/src/client/standing-approvals.js` | Standing tool approvals (#540): `StandingApprovalsCard`, the **Always allowed** card in Bot settings (the Bot's grants) and Group settings (the grants this person gave in the group), one row per kind with **Remove** (`actions.removeStandingApproval`). The approval cards (`member-status.js` `ApprovalCard`, the inbox card) add **Always allow for this Bot** and, for an ask from a group, **Always allow for this group** (`alwaysChoices`; never on a friend's Bot). Host side in [core-host](core-host.md#standing-tool-approvals-540). Tests: `core/test/member-status.test.js`, `core/test/standing-approvals.test.js`. | | `core/src/client/mobile.js` | Phone-width layout, step 1 (#362): `MOBILE_CSS` under `@media (max-width:640px)` for held-reply and floating approval buttons, the chat pointers and Agent inbox cards. Tests: `core/test/mobile-layout.test.js`. | diff --git a/patches/ds-bot/0008-client-bundle.patch b/patches/ds-bot/0008-client-bundle.patch index 86e00ab9d..7770d2b21 100644 --- a/patches/ds-bot/0008-client-bundle.patch +++ b/patches/ds-bot/0008-client-bundle.patch @@ -5158,7 +5158,7 @@ diff --git a/client.js b/client.js .bt-panel-view>.bt-drawer-body[data-move=tab]{animation:bt-veil-in .2s ease-out} .bt-drawer-name-input{animation:bt-veil-in .16s ease-out} .bt-pop-in{display:inline-flex;animation:bt-check-pop ${SPRING_POP.duration}ms ${SPRING_POP.easing}} -@@ -2595,2914 +2595,6816 @@ body[data-ds-dark-theme] .bt-theme-chip i{background:var(--da)} +@@ -2595,2914 +2595,6822 @@ body[data-ds-dark-theme] .bt-theme-chip i{background:var(--da)} :is(.bt-soft,.bt-send,.bt-mini,.bt-tab,.bt-avedit-tab,.bt-pick,.bt-q-submit,.bt-q-btn):active:not(:disabled){scale:.96} @media (prefers-reduced-motion:reduce){.bt-thumb{transition:none}.bt-panel-view>[data-move],.bt-drawer-name-input,.bt-veil,.bt-pop-in,.bt-token,.bt-drop,.bt-newchat,.bt-option-hint,.bt-connector-form,.bt-settings-head>*{animation:none}} `; @@ -10861,8 +10861,8 @@ diff --git a/client.js b/client.js - if (days === 1) return t("Yesterday {time}", { time: clock4 }); - const sameYear = date.getFullYear() === new Date(now).getFullYear(); - return `${date.toLocaleDateString(dateLocale(), { weekday: "short", month: "short", day: "numeric", ...sameYear ? {} : { year: "numeric" } })} ${clock4}`; -+function cardProps(task, roster, onMove, onDrag, partOf2) { -+ return { task, roster, movable: canMoveTask(roster, task), onMove, onDrag, partOf: partOf2 }; ++function cardProps(task, roster, onMove, onDrag, partOf2, locked) { ++ return { task, roster, movable: !locked && canMoveTask(roster, task), onMove, onDrag, partOf: partOf2 }; } -function nextTurnStart(turns, turn) { - let next; @@ -10871,7 +10871,7 @@ diff --git a/client.js b/client.js - if (candidate > turn && turns[key].first !== void 0 && (next === void 0 || candidate < next)) next = candidate; - } - return next === void 0 ? void 0 : turns[next].first; -+function BoardColumn({ column, tasks, roster, lanes, dragging, onMove, onDrag, archiveFull }) { ++function BoardColumn({ column, tasks, roster, lanes, dragging, onMove, onDrag, archiveFull, locked }) { + const tree = lanes ? columnTree(tasks) : null; + const linked = tree ? tree.loose.filter((task) => task.parentId || task.parentTitle) : []; + const plain = tree ? tree.loose.filter((task) => !task.parentId && !task.parentTitle) : tasks; @@ -10882,10 +10882,11 @@ diff --git a/client.js b/client.js + "data-column": column, + "aria-label": columnTitle(column), + onDragOver: (event) => { -+ if (!dragging) return; ++ if (locked || !dragging) return; + event.preventDefault(); + }, + onDrop: (event) => { ++ if (locked) return; + event.preventDefault(); + const id = event.dataTransfer?.getData("text/plain"); + if (id) onMove?.(id, column); @@ -10905,20 +10906,20 @@ diff --git a/client.js b/client.js + tree ? tree.nests.map((nest) => (0, import_react15.createElement)( + "div", + { key: nest.task.id, className: "bt-board-nest" }, -+ (0, import_react15.createElement)(BoardCard2, cardProps(nest.task, roster, onMove, onDrag)), ++ (0, import_react15.createElement)(BoardCard2, cardProps(nest.task, roster, onMove, onDrag, void 0, locked)), + nest.children.map((child) => (0, import_react15.createElement)( + "div", + { key: child.id, className: "bt-board-subtask", "data-parent": nest.task.id }, -+ (0, import_react15.createElement)(BoardCard2, cardProps(child, roster, onMove, onDrag)) ++ (0, import_react15.createElement)(BoardCard2, cardProps(child, roster, onMove, onDrag, void 0, locked)) + )) + )) : null, -+ linked.map((task) => (0, import_react15.createElement)(BoardCard2, { key: task.id, ...cardProps(task, roster, onMove, onDrag, task.parentTitle || "") })), ++ linked.map((task) => (0, import_react15.createElement)(BoardCard2, { key: task.id, ...cardProps(task, roster, onMove, onDrag, task.parentTitle || "", locked) })), + lanes ? lanesOf(plain, roster).map((lane) => (0, import_react15.createElement)( + "div", + { key: lane.id, className: "bt-board-lane" }, + (0, import_react15.createElement)("span", { className: "bt-board-lane-name" }, lane.name), -+ lane.tasks.map((task) => (0, import_react15.createElement)(BoardCard2, { key: task.id, ...cardProps(task, roster, onMove, onDrag) })) -+ )) : plain.map((task) => (0, import_react15.createElement)(BoardCard2, { key: task.id, ...cardProps(task, roster, onMove, onDrag) })) ++ lane.tasks.map((task) => (0, import_react15.createElement)(BoardCard2, { key: task.id, ...cardProps(task, roster, onMove, onDrag, void 0, locked) })) ++ )) : plain.map((task) => (0, import_react15.createElement)(BoardCard2, { key: task.id, ...cardProps(task, roster, onMove, onDrag, void 0, locked) })) + ); } -function openingTurn(turns, firstTurns, hiddenTurns) { @@ -10929,7 +10930,7 @@ diff --git a/client.js b/client.js - const listed = firstTurns.split(",").map(Number); - const earlier = listed.filter((entry) => entry < turn); - return listed.includes(turn) && earlier.every((entry) => hiddenTurns?.includes(entry)) ? { turn, start } : null; -+function BoardView({ roster, tasks, rail, scope, counts: counts2, dragging, error, draft, onDraft, onSelect, onMove, onDrag, onCreate, archiveFull }) { ++function BoardView({ roster, tasks, rail, scope, counts: counts2, dragging, error, draft, onDraft, onSelect, onMove, onDrag, onCreate, archiveFull, locked }) { + const columns = boardColumns(tasks); + const lanes = scope?.kind === "group"; + const selectedBot = scope?.kind === "bot" ? scope.botId : ""; @@ -10961,7 +10962,7 @@ diff --git a/client.js b/client.js + { className: "bt-board-main" }, + error ? (0, import_react15.createElement)("p", { className: "bt-board-error", role: "alert" }, error) : null, + lanes ? (0, import_react15.createElement)("p", { className: "bt-board-hint" }, t("Assign, claim, and progress live on this board: one overall task, a subtask per part, an assignee, a column, and progress. @ only wakes someone.")) : null, -+ scope?.kind === "bot" && onCreate ? (0, import_react15.createElement)( ++ scope?.kind === "bot" && onCreate && !locked ? (0, import_react15.createElement)( + "form", + { className: "bt-board-add", onSubmit: (event) => { + event.preventDefault(); @@ -10982,7 +10983,8 @@ diff --git a/client.js b/client.js + dragging, + onMove, + onDrag, -+ archiveFull ++ archiveFull, ++ locked + })) + ) + ) @@ -11070,6 +11072,7 @@ diff --git a/client.js b/client.js - const target = findBot(arg("bot")); - return { label: target ? t("Stopping {name}", { name: target.name }) : t("Stopping another Bot"), state: "sending" }; +function KanbanDialog({ roster, actions, leaving = false }) { ++ const locked = typeof roster?.readOnly === "string" && roster.readOnly.trim() !== ""; + const rail = boardRail(roster); + const [scope, setScope] = (0, import_react15.useState)(() => rail.bots[0] ? { kind: "bot", botId: rail.bots[0].id } : rail.groups[0] ? { kind: "group", roomId: rail.groups[0].id } : null); + const [dragging, setDragging] = (0, import_react15.useState)(null); @@ -11098,6 +11101,7 @@ diff --git a/client.js b/client.js + if (columnOf(task) === "done") bucket.done += 1; + } + const move = async (id, column) => { ++ if (locked) return; + const task = tasks.find((item) => item.id === id) ?? own.find((item) => item.id === id); + if (!task || !canMoveTask(roster, task) || columnOf(task) === column) return; + setError(""); @@ -11113,6 +11117,7 @@ diff --git a/client.js b/client.js - return { label: t("Updating {name}", { name: target?.name ?? t("a Bot") }), state: "sending" }; + }; + const create = async (title) => { ++ if (locked) return; + const text2 = String(title ?? "").trim(); + if (!text2 || scope?.kind !== "bot") return; + setError(""); @@ -11168,6 +11173,7 @@ diff --git a/client.js b/client.js + error, + draft, + archiveFull, ++ locked, + onDraft: setDraft, + onSelect: setScope, + onMove: move, diff --git a/patches/ds-bot/files/src/client/kanban.js b/patches/ds-bot/files/src/client/kanban.js index 0d0f07872..0fc5e2c63 100644 --- a/patches/ds-bot/files/src/client/kanban.js +++ b/patches/ds-bot/files/src/client/kanban.js @@ -294,11 +294,11 @@ export function BoardCard({ task, roster, movable, onMove, onDrag, partOf }) { }) } -function cardProps(task, roster, onMove, onDrag, partOf) { - return { task, roster, movable: canMoveTask(roster, task), onMove, onDrag, partOf } +function cardProps(task, roster, onMove, onDrag, partOf, locked) { + return { task, roster, movable: !locked && canMoveTask(roster, task), onMove, onDrag, partOf } } -function BoardColumn({ column, tasks, roster, lanes, dragging, onMove, onDrag, archiveFull }) { +function BoardColumn({ column, tasks, roster, lanes, dragging, onMove, onDrag, archiveFull, locked }) { const tree = lanes ? columnTree(tasks) : null const linked = tree ? tree.loose.filter(task => task.parentId || task.parentTitle) : [] const plain = tree ? tree.loose.filter(task => !task.parentId && !task.parentTitle) : tasks @@ -306,8 +306,9 @@ function BoardColumn({ column, tasks, roster, lanes, dragging, onMove, onDrag, a className: 'bt-board-column', 'data-column': column, 'aria-label': columnTitle(column), - onDragOver: (event) => { if (!dragging) return; event.preventDefault() }, + onDragOver: (event) => { if (locked || !dragging) return; event.preventDefault() }, onDrop: (event) => { + if (locked) return event.preventDefault() const id = event.dataTransfer?.getData('text/plain') if (id) onMove?.(id, column) @@ -322,18 +323,18 @@ function BoardColumn({ column, tasks, roster, lanes, dragging, onMove, onDrag, a dragging ? h('div', { className: 'bt-board-drop' }, dropLabel(column)) : null, tasks.length === 0 && !dragging ? h('p', { className: 'bt-board-empty' }, t('Nothing in this column.')) : null, tree ? tree.nests.map(nest => h('div', { key: nest.task.id, className: 'bt-board-nest' }, - h(BoardCard, cardProps(nest.task, roster, onMove, onDrag)), + h(BoardCard, cardProps(nest.task, roster, onMove, onDrag, undefined, locked)), nest.children.map(child => h('div', { key: child.id, className: 'bt-board-subtask', 'data-parent': nest.task.id }, - h(BoardCard, cardProps(child, roster, onMove, onDrag)))))) : null, - linked.map(task => h(BoardCard, { key: task.id, ...cardProps(task, roster, onMove, onDrag, task.parentTitle || '') })), + h(BoardCard, cardProps(child, roster, onMove, onDrag, undefined, locked)))))) : null, + linked.map(task => h(BoardCard, { key: task.id, ...cardProps(task, roster, onMove, onDrag, task.parentTitle || '', locked) })), lanes ? lanesOf(plain, roster).map(lane => h('div', { key: lane.id, className: 'bt-board-lane' }, h('span', { className: 'bt-board-lane-name' }, lane.name), - lane.tasks.map(task => h(BoardCard, { key: task.id, ...cardProps(task, roster, onMove, onDrag) })))) - : plain.map(task => h(BoardCard, { key: task.id, ...cardProps(task, roster, onMove, onDrag) }))) + lane.tasks.map(task => h(BoardCard, { key: task.id, ...cardProps(task, roster, onMove, onDrag, undefined, locked) })))) + : plain.map(task => h(BoardCard, { key: task.id, ...cardProps(task, roster, onMove, onDrag, undefined, locked) }))) } -export function BoardView({ roster, tasks, rail, scope, counts, dragging, error, draft, onDraft, onSelect, onMove, onDrag, onCreate, archiveFull }) { +export function BoardView({ roster, tasks, rail, scope, counts, dragging, error, draft, onDraft, onSelect, onMove, onDrag, onCreate, archiveFull, locked }) { const columns = boardColumns(tasks) const lanes = scope?.kind === 'group' const selectedBot = scope?.kind === 'bot' ? scope.botId : '' @@ -362,12 +363,12 @@ export function BoardView({ roster, tasks, rail, scope, counts, dragging, error, h('div', { className: 'bt-board-main' }, error ? h('p', { className: 'bt-board-error', role: 'alert' }, error) : null, lanes ? h('p', { className: 'bt-board-hint' }, t('Assign, claim, and progress live on this board: one overall task, a subtask per part, an assignee, a column, and progress. @ only wakes someone.')) : null, - scope?.kind === 'bot' && onCreate ? h('form', { className: 'bt-board-add', onSubmit: (event) => { event.preventDefault(); onCreate(draft) } }, + scope?.kind === 'bot' && onCreate && !locked ? h('form', { className: 'bt-board-add', onSubmit: (event) => { event.preventDefault(); onCreate(draft) } }, h('input', { 'aria-label': t('Task title'), placeholder: t('New task'), value: draft ?? '', onChange: (event) => onDraft?.(event.target.value) }), h('button', { type: 'submit', className: 'bt-soft bt-soft-sm' }, t('Add task'))) : null, h('div', { className: 'bt-board-columns' }, ['not-started', 'in-progress', 'done'].map(column => h(BoardColumn, { - key: column, column, tasks: columns[column], roster, lanes, dragging, onMove, onDrag, archiveFull, + key: column, column, tasks: columns[column], roster, lanes, dragging, onMove, onDrag, archiveFull, locked, }))))) } @@ -389,6 +390,9 @@ function scopeName(roster, scope) { } export function KanbanDialog({ roster, actions, leaving = false }) { + // #2248: the window lock, read once the way the rest of the client reads it (sidebar.js:371). A + // read-only window draws no board write the host would refuse, and the write entries refuse too. + const locked = typeof roster?.readOnly === 'string' && roster.readOnly.trim() !== '' // Per-Bot task board. The GitHub metrics panel is not part of this dialog (#1363). const rail = boardRail(roster) const [scope, setScope] = useState(() => (rail.bots[0] ? { kind: 'bot', botId: rail.bots[0].id } : rail.groups[0] ? { kind: 'group', roomId: rail.groups[0].id } : null)) @@ -427,6 +431,7 @@ export function KanbanDialog({ roster, actions, leaving = false }) { if (columnOf(task) === 'done') bucket.done += 1 } const move = async (id, column) => { + if (locked) return const task = tasks.find(item => item.id === id) ?? own.find(item => item.id === id) if (!task || !canMoveTask(roster, task) || columnOf(task) === column) return setError('') @@ -437,6 +442,7 @@ export function KanbanDialog({ roster, actions, leaving = false }) { } } const create = async (title) => { + if (locked) return const text = String(title ?? '').trim() if (!text || scope?.kind !== 'bot') return setError('') @@ -459,7 +465,7 @@ export function KanbanDialog({ roster, actions, leaving = false }) { h('span', { className: 'bt-mem-head-gap' }), h('button', { type: 'button', className: 'bt-icon-btn', 'aria-label': t('Close board'), autoFocus: true, onClick: close }, h(CloseIcon))), h(BoardView, { - roster, tasks: boardTasks, rail, scope, counts, dragging, error, draft, archiveFull, + roster, tasks: boardTasks, rail, scope, counts, dragging, error, draft, archiveFull, locked, onDraft: setDraft, onSelect: setScope, onMove: move, onDrag: setDragging, onCreate: create, }))) } diff --git a/patches/ds-bot/files/test/kanban.test.js b/patches/ds-bot/files/test/kanban.test.js index b1820a3d7..b1d45bd31 100644 --- a/patches/ds-bot/files/test/kanban.test.js +++ b/patches/ds-bot/files/test/kanban.test.js @@ -487,7 +487,7 @@ test('P-364: the rail counts the list the board draws, never the one the other s // effect back to the test and never re-runs one, so a switch case written against it passes whatever // the hook does (#1810). This is a second, stateful context: hook slots per component, an effect // re-run only when its deps change, a setter that re-renders, and the board's poll on a fake clock. -function mountBoard(actions) { +function mountBoard(actions, boardRoster = roster) { const h = (type, props, ...children) => ({ type, props: props ?? {}, children: children.flat(Infinity) }) const runtime = { instances: new Map(), key: 'root', index: 0, dirty: false, timer: 0, timers: new Map() } const instance = (key) => { @@ -577,7 +577,7 @@ function mountBoard(actions) { const draw = () => { runtime.dirty = false for (const slot of runtime.instances.values()) slot.pending = [] - tree = expandLive(h(live.KanbanDialog, { roster, actions })) + tree = expandLive(h(live.KanbanDialog, { roster: boardRoster, actions })) commit() return tree } @@ -809,3 +809,74 @@ test('a non-terminal actor entry does not end a Done card, even when it comes fi ]) assert.equal(whenOf(board.column('done'), 'task-done999999'), '2 h') }) + +// P-455: a read-only window's task board still drew every write control and accepted drags, and +// the host refused each one (`bot/read-only`) with nothing on the board saying why. The board reads +// the window lock once, the way the rest of the client reads `roster.readOnly` (sidebar.js:371), +// and draws no write at all; everything readable — the rail, the three columns, the cards, the +// archive and its Done stamp — stays. +test('P-455: a read-only window draws no write on the task board', async () => { + const lockedRoster = { ...roster, readOnly: 'This window is read-only.' } + const open = task('task-open123456', 'open', { title: 'Open card', ownerBotId: 'a' }) + const working = task('task-working456789', 'working', { title: 'Working card', ownerBotId: 'a', progress: 40 }) + const finished = task('task-done789012', 'accepted', { title: 'Done card', ownerBotId: 'a', progress: 100, updatedAt: Date.now() - 2 * HOUR }) + const writes = [] + const actions = { + closeBoard: () => {}, boardClose: () => {}, + tasks: query => Promise.resolve(query?.archive ? [finished] : [open, working]), + taskUpdate: async input => { writes.push(['update', input]); return open }, + taskCreate: async input => { writes.push(['create', input]); return input }, + } + const board = mountBoard(actions, lockedRoster) + board.draw() + await board.settle() + const tree = board.tree + const buttons = all(tree).filter(node => node.type === 'button' && ['Add task', 'Start', 'Complete'].includes(textOf(node))).map(textOf) + const newTaskForms = byClass(tree, 'bt-board-add').length + const draggable = byClass(tree, 'bt-board-card').filter(node => node.props.draggable).map(node => node.props['data-task']) + assert.deepEqual({ buttons, newTaskForms, draggable }, { buttons: [], newTaskForms: 0, draggable: [] }) + // The readable board is untouched by the lock. + assert.equal(byClass(tree, 'bt-board-column').map(node => node.props['data-column']).join('|'), 'not-started|in-progress|done') + assert.equal(byClass(tree, 'bt-board-card').length, 3) + assert.match(textOf(tree), /Open card/) + assert.match(textOf(tree), /Working card/) + assert.match(textOf(tree), /Done card/) + assert.equal(byClass(tree, 'bt-board-when').length, 1) + // A drop on a column writes nothing either, even when a drag value is handed to the handler. + board.column('in-progress').props.onDrop({ preventDefault() {}, dataTransfer: { getData: () => open.id } }) + assert.deepEqual(writes, []) +}) + +// The counter-proof: the same board in a writable window keeps all four writes and still sends +// the two requests. A fix that only makes the read-only case pass by removing the controls for +// every window fails here. +test('counter-proof: a writable board keeps all four writes', async () => { + const open = task('task-open123456', 'open', { title: 'Open card', ownerBotId: 'a' }) + const working = task('task-working456789', 'working', { title: 'Working card', ownerBotId: 'a', progress: 40 }) + const calls = [] + const actions = { + closeBoard: () => {}, boardClose: () => {}, + tasks: query => Promise.resolve(query?.archive ? [] : [open, working]), + taskUpdate: async input => { calls.push(['update', input]); return { ...open, status: 'working' } }, + taskCreate: async input => { calls.push(['create', input]); return { ...open, ...input } }, + } + const board = mountBoard(actions) + board.draw() + await board.settle() + const buttons = all(board.tree).filter(node => node.type === 'button' && ['Add task', 'Start', 'Complete'].includes(textOf(node))).map(textOf) + assert.deepEqual(buttons, ['Add task', 'Start', 'Complete']) + assert.equal(byClass(board.tree, 'bt-board-add').length, 1) + const draggable = byClass(board.tree, 'bt-board-card').filter(node => node.props.draggable).map(node => node.props['data-task']).sort() + assert.deepEqual(draggable, ['task-open123456', 'task-working456789']) + const start = all(board.tree).find(node => node.type === 'button' && textOf(node) === 'Start') + start.props.onClick() + await board.settle() + assert.equal(calls.length, 1); assert.equal(calls[0][0], 'update'); assert.equal(calls[0][1].id, open.id); assert.equal(calls[0][1].column, 'in-progress') + // The form writes too: type a title, then submit it. + const input = all(byClass(board.tree, 'bt-board-add')[0]).find(node => node.type === 'input') + input.props.onChange({ target: { value: 'New card' } }) + board.draw() + byClass(board.tree, 'bt-board-add')[0].props.onSubmit({ preventDefault() {} }) + await board.settle() + assert.equal(calls.length, 2); assert.equal(calls[1][0], 'create'); assert.equal(calls[1][1].botId, 'a'); assert.equal(calls[1][1].title, 'New card'); assert.equal(calls[1][1].column, 'not-started') +}) From 0bb21f646de45f550ebc417e9c70d2ac11eae1a2 Mon Sep 17 00:00:00 2001 From: Danyang Chen Date: Tue, 3 Nov 2026 13:23:10 +0800 Subject: [PATCH 2/2] board: a read-only window draws no task-board write (#2248) Replay follow-up: drop the stray core-test.log the replay commit carried. --- core-test.log | 9629 ------------------------------------------------- 1 file changed, 9629 deletions(-) delete mode 100644 core-test.log diff --git a/core-test.log b/core-test.log deleted file mode 100644 index 3e2974b7a..000000000 --- a/core-test.log +++ /dev/null @@ -1,9629 +0,0 @@ -TAP version 13 -# Subtest: the page points at FlyBot: star, source code, release notes and the underlying harness -ok 1 - the page points at FlyBot: star, source code, release notes and the underlying harness - --- - duration_ms: 6.004756 - type: 'test' - ... -# Subtest: the version line adds the branch and commit of a git install, and stays plain without them -ok 2 - the version line adds the branch and commit of a git install, and stays plain without them - --- - duration_ms: 1.528299 - type: 'test' - ... -# Subtest: a git install that follows a branch says how it is updated, and how far behind it is once checked -ok 3 - a git install that follows a branch says how it is updated, and how far behind it is once checked - --- - duration_ms: 32.69084 - type: 'test' - ... -# Subtest: an install pinned to a commit shows the short commit, no branch, and says it is pinned (\#379) -ok 4 - an install pinned to a commit shows the short commit, no branch, and says it is pinned (\#379) - --- - duration_ms: 0.930584 - type: 'test' - ... -# Subtest: the new About wording has zh copy -ok 5 - the new About wording has zh copy - --- - duration_ms: 2.000052 - type: 'test' - ... -# node:internal/modules/cjs/loader:1430 -# const err = new Error(message); -# ^ -# Error: Cannot find module 'jsdom' -# Require stack: -# - /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Function._resolveFilename (node:internal/modules/cjs/loader:1430:15) -# at defaultResolveImpl (node:internal/modules/cjs/loader:1040:19) -# at defaultResolve (node:internal/modules/cjs/loader:1075:31) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:46:12) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) -# at resolveForCJSWithHooks (node:internal/modules/cjs/loader:1084:25) -# at Function._load (node:internal/modules/cjs/loader:1216:25) -# at wrapModuleLoad (node:internal/modules/cjs/loader:254:19) { -# code: 'MODULE_NOT_FOUND', -# requireStack: [ -# '/data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json' -# ] -# } -# Node.js v22.23.3 -# Subtest: test/activity-row-host.test.js -not ok 2 - test/activity-row-host.test.js - --- - duration_ms: 68.048648 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/activity-row-host.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: indexRoster indexes agents by id and by Session -ok 7 - indexRoster indexes agents by id and by Session - --- - duration_ms: 2.7154 - type: 'test' - ... -# Subtest: a roster without agents still answers the index reads -ok 8 - a roster without agents still answers the index reads - --- - duration_ms: 0.308318 - type: 'test' - ... -# Subtest: isAgentSession follows the roster first, the cache before it is ready -ok 9 - isAgentSession follows the roster first, the cache before it is ready - --- - duration_ms: 0.354419 - type: 'test' - ... -# Subtest: the plain flag maps to the mounted groups -ok 10 - the plain flag maps to the mounted groups - --- - duration_ms: 0.789711 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/agents.test.js -not ok 4 - test/agents.test.js - --- - duration_ms: 195.220701 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/agents.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/api-route.test.js -not ok 5 - test/api-route.test.js - --- - duration_ms: 112.188125 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/api-route.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/approval-binding.test.js -not ok 6 - test/approval-binding.test.js - --- - duration_ms: 204.323437 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/approval-binding.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/approval-notices.test.js -not ok 7 - test/approval-notices.test.js - --- - duration_ms: 140.336445 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/approval-notices.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: \#734: an approval is waiting for `pending` and `pending_approval`, and nothing else -ok 15 - \#734: an approval is waiting for `pending` and `pending_approval`, and nothing else - --- - duration_ms: 2.498885 - type: 'test' - ... -# Subtest: \#734: the held-reply card draws Approve and Reject for both waiting spellings only -ok 16 - \#734: the held-reply card draws Approve and Reject for both waiting spellings only - --- - duration_ms: 18.362237 - type: 'test' - ... -# Subtest: \#734: the dock card offers Approve and Reject for a `pending_approval` hold, not for a settled one -ok 17 - \#734: the dock card offers Approve and Reject for a `pending_approval` hold, not for a settled one - --- - duration_ms: 16.410116 - type: 'test' - ... -# Subtest: \#734: both call sites ask the shared predicate instead of comparing a literal status -ok 18 - \#734: both call sites ask the shared predicate instead of comparing a literal status - --- - duration_ms: 1.074098 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/archive-bot.test.js -not ok 9 - test/archive-bot.test.js - --- - duration_ms: 200.789015 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/archive-bot.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-session-reference' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/at-menu.test.js -not ok 10 - test/at-menu.test.js - --- - duration_ms: 85.836629 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/at-menu.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/authz.test.js -not ok 11 - test/authz.test.js - --- - duration_ms: 101.338182 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/authz.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/automation-default.test.js -not ok 12 - test/automation-default.test.js - --- - duration_ms: 193.287421 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/automation-default.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/blocking-question.test.js -not ok 13 - test/blocking-question.test.js - --- - duration_ms: 198.015064 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/blocking-question.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: a task card keeps its own id -ok 24 - a task card keeps its own id - --- - duration_ms: 1.399607 - type: 'test' - ... -# Subtest: the task card draws with the task skin and its identity -ok 25 - the task card draws with the task skin and its identity - --- - duration_ms: 0.873203 - type: 'test' - ... -# Subtest: each Bot gets its own partition, and only the shown tab is visible -ok 26 - each Bot gets its own partition, and only the shown tab is visible - --- - duration_ms: 5.489703 - type: 'test' - ... -# Subtest: a dragged panel moves the shown guest at once and the hidden ones after it settles -ok 27 - a dragged panel moves the shown guest at once and the hidden ones after it settles - --- - duration_ms: 263.497934 - type: 'test' - ... -# Subtest: openTab activates the new tab; closing the active one activates a neighbor -ok 28 - openTab activates the new tab; closing the active one activates a neighbor - --- - duration_ms: 2.132085 - type: 'test' - ... -# Subtest: a navigation before the guest is ready waits for dom-ready, and the address is saved -ok 29 - a navigation before the guest is ready waits for dom-ready, and the address is saved - --- - duration_ms: 4.22889 - type: 'test' - ... -# Subtest: the v1 one-page store migrates to one tab per Bot -ok 30 - the v1 one-page store migrates to one tab per Bot - --- - duration_ms: 1.028967 - type: 'test' - ... -# Subtest: a read reaches the Bot’s active tab -ok 31 - a read reaches the Bot’s active tab - --- - duration_ms: 1.903019 - type: 'test' - ... -# Subtest: a page that asks for a new window opens a new tab in the same Bot -ok 32 - a page that asks for a new window opens a new tab in the same Bot - --- - duration_ms: 6.636042 - type: 'test' - ... -# Subtest: past six live guests the least recently shown one is released; forget drops all of a Bot’s tabs -ok 33 - past six live guests the least recently shown one is released; forget drops all of a Bot’s tabs - --- - duration_ms: 3.209334 - type: 'test' - ... -# Subtest: retain forgets Bots that are gone, saved tabs included -ok 34 - retain forgets Bots that are gone, saved tabs included - --- - duration_ms: 1.875929 - type: 'test' - ... -# Subtest: a settled page leaves a text excerpt, shown or hidden, and no tab is ever captured -ok 35 - a settled page leaves a text excerpt, shown or hidden, and no tab is ever captured - --- - duration_ms: 34.214688 - type: 'test' - ... -# Subtest: serveBrowserReads answers each request once and re-polls when the open pages change -ok 36 - serveBrowserReads answers each request once and re-polls when the open pages change - --- - duration_ms: 4.299472 - type: 'test' - ... -# [ds-bot] browser result Error: offline -# at post (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/bot-browsers.test.js:328:42) -# at answer (file:///data/dsh/bot/workspace/replay-2261/merged/core/src/client/bot-browsers.js:499:11) -# Subtest: serveBrowserReads answers a resend from the cache when the first submit failed -ok 37 - serveBrowserReads answers a resend from the cache when the first submit failed - --- - duration_ms: 3.10361 - type: 'test' - ... -# Subtest: browserAddress opens hosts over https, local addresses over http, and searches the rest -ok 38 - browserAddress opens hosts over https, local addresses over http, and searches the rest - --- - duration_ms: 0.870982 - type: 'test' - ... -# Subtest: the page reader is one valid expression -ok 39 - the page reader is one valid expression - --- - duration_ms: 1.247242 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/bot-messages.test.js -not ok 16 - test/bot-messages.test.js - --- - duration_ms: 198.963388 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/bot-messages.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: \#366: a Bot row's hover title names the model it runs on -ok 41 - \#366: a Bot row's hover title names the model it runs on - --- - duration_ms: 1.55406 - type: 'test' - ... -# Subtest: \#366: the model a row names is the served name of the chosen model, else the one it last ran on -ok 42 - \#366: the model a row names is the served name of the chosen model, else the one it last ran on - --- - duration_ms: 1.298534 - type: 'test' - ... -# Subtest: \#366: every own Bot row (the tree draws the same row) takes that title; a friend's Bot keeps its own -ok 43 - \#366: every own Bot row (the tree draws the same row) takes that title; a friend's Bot keeps its own - --- - duration_ms: 2.512136 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/bot-tasks.test.js -not ok 18 - test/bot-tasks.test.js - --- - duration_ms: 196.010482 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/bot-tasks.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# flybot: menuItems failed Error: x -# at Object.menuItems (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/bot-tree.test.js:61:59) -# at pluginItems (file:///data/dsh/bot/workspace/replay-2261/merged/core/src/client/flybot-registry.js:212:27) -# at TestContext. (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/bot-tree.test.js:61:20) -# at async Test.run (node:internal/test_runner/test:1054:7) -# at async Test.processPendingSubtests (node:internal/test_runner/test:744:7) -# Subtest: botTree: Chief is the root; Bots without a known parent go under it; cycles are broken -ok 45 - botTree: Chief is the root; Bots without a known parent go under it; cycles are broken - --- - duration_ms: 3.389388 - type: 'test' - ... -# Subtest: sidebar tree toggle is a 28px hit target with a 16px chevron, hover, and focus ring -ok 46 - sidebar tree toggle is a 28px hit target with a 16px chevron, hover, and focus ring - --- - duration_ms: 2.557316 - type: 'test' - ... -# Subtest: sidebar Bot rows show a wait badge when pendingCount is set -ok 47 - sidebar Bot rows show a wait badge when pendingCount is set - --- - duration_ms: 2.007882 - type: 'test' - ... -# Subtest: sidebar tree draws the structure entry's nodeActions after each row -ok 48 - sidebar tree draws the structure entry's nodeActions after each row - --- - duration_ms: 0.943184 - type: 'test' - ... -# Subtest: row context menu renders the structure entry's menuItems -ok 49 - row context menu renders the structure entry's menuItems - --- - duration_ms: 2.568957 - type: 'test' - ... -# Subtest: \#2238: the row-menu contract carries the window's read-only flag -ok 50 - \#2238: the row-menu contract carries the window's read-only flag - --- - duration_ms: 1.397906 - type: 'test' - ... -# Subtest: sidebar brand is FlyBot with the FlyBot mark, not the whale -ok 51 - sidebar brand is FlyBot with the FlyBot mark, not the whale - --- - duration_ms: 3.903562 - type: 'test' - ... -# Subtest: Chinese copy maps FlyBot chrome, not DS Bot -ok 52 - Chinese copy maps FlyBot chrome, not DS Bot - --- - duration_ms: 0.336048 - type: 'test' - ... -# Subtest: FlyBot mark SVG matches the docs logo; tab title and favicon follow -ok 53 - FlyBot mark SVG matches the docs logo; tab title and favicon follow - --- - duration_ms: 1.079948 - type: 'test' - ... -# Subtest: \#250: an ended face-to-face room says closed in the tab instead of listing its members -ok 54 - \#250: an ended face-to-face room says closed in the tab instead of listing its members - --- - duration_ms: 1.723565 - type: 'test' - ... -# Subtest: \#1102: a live face-room tab leads with the number so both names stay in the title -ok 55 - \#1102: a live face-room tab leads with the number so both names stay in the title - --- - duration_ms: 0.358909 - type: 'test' - ... -# Subtest: \#173: the tab title follows a room the roster learns after it opened -ok 56 - \#173: the tab title follows a room the roster learns after it opened - --- - duration_ms: 0.527373 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-tools' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/browser-channel.test.js -not ok 21 - test/browser-channel.test.js - --- - duration_ms: 106.473315 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/browser-channel.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/busy-ack-arrival.test.js -not ok 22 - test/busy-ack-arrival.test.js - --- - duration_ms: 82.192905 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/busy-ack-arrival.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: pendingBusyPlacement is true for queued or steering submissions -ok 59 - pendingBusyPlacement is true for queued or steering submissions - --- - duration_ms: 1.736305 - type: 'test' - ... -# Subtest: busyAckVisible prefers host or pending ack and hides once spoken text streams -ok 60 - busyAckVisible prefers host or pending ack and hides once spoken text streams - --- - duration_ms: 0.356579 - type: 'test' - ... -# Subtest: \#1656: while the host ack is pending there is no text at all, and the host line shows when it lands -ok 61 - \#1656: while the host ack is pending there is no text at all, and the host line shows when it lands - --- - duration_ms: 0.508833 - type: 'test' - ... -# Subtest: \#1656: the canned sentence is not shipped anywhere in the client -ok 62 - \#1656: the canned sentence is not shipped anywhere in the client - --- - duration_ms: 16.004565 - type: 'test' - ... -# Subtest: a room ack is the running member's, keyed by the member the host noted (\#1646) -ok 63 - a room ack is the running member's, keyed by the member the host noted (\#1646) - --- - duration_ms: 1.670063 - type: 'test' - ... -# Subtest: a room ack shows its line, or the blinking dots while the person's line is still queued (\#1646) -ok 64 - a room ack shows its line, or the blinking dots while the person's line is still queued (\#1646) - --- - duration_ms: 0.320618 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/busy-ack-ledger.test.js -not ok 24 - test/busy-ack-ledger.test.js - --- - duration_ms: 86.670012 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/busy-ack-ledger.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/busy-ack.test.js -not ok 25 - test/busy-ack.test.js - --- - duration_ms: 97.01761 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/busy-ack.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/capabilities.test.js -not ok 26 - test/capabilities.test.js - --- - duration_ms: 198.201438 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/capabilities.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: parseOwnedPaths reads front-matter -ok 68 - parseOwnedPaths reads front-matter - --- - duration_ms: 3.222974 - type: 'test' - ... -# Subtest: pathMatchesOwned directory and exact -ok 69 - pathMatchesOwned directory and exact - --- - duration_ms: 0.505023 - type: 'test' - ... -# Subtest: loadSubsystemMap loads docs dir -ok 70 - loadSubsystemMap loads docs dir - --- - duration_ms: 9.391694 - type: 'test' - ... -# Subtest: empty diff passes -not ok 71 - empty diff passes - --- - duration_ms: 2.788712 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/check-arch-docs.test.js:39:1' - failureType: 'testCodeFailure' - error: 'cannot diff against HEAD' - code: 'ERR_TEST_FAILURE' - stack: |- - assertBaseRef (file:///data/dsh/bot/workspace/replay-2261/merged/core/scripts/check-arch-docs.mjs:81:11) - filesNeedDocs (file:///data/dsh/bot/workspace/replay-2261/merged/core/scripts/check-arch-docs.mjs:111:3) - TestContext. (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/check-arch-docs.test.js:41:13) - async Test.run (node:internal/test_runner/test:1054:7) - async Test.processPendingSubtests (node:internal/test_runner/test:744:7) - ... -# Subtest: invalid base ref fails closed -ok 72 - invalid base ref fails closed - --- - duration_ms: 3.886571 - type: 'test' - ... -# Subtest: \#1076: the refusal names both places the trailer has to appear -ok 73 - \#1076: the refusal names both places the trailer has to appear - --- - duration_ms: 0.878663 - type: 'test' - ... -# Subtest: the gate never runs git through a shell -not ok 74 - the gate never runs git through a shell - --- - duration_ms: 54.841064 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/check-arch-docs.test.js:73:1' - failureType: 'testCodeFailure' - error: "ENOENT: no such file or directory, open '/tmp/arch-shell-GBKx75/parent.txt'" - code: 'ENOENT' - stack: |- - readFileSync (node:fs:440:20) - TestContext. (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/check-arch-docs.test.js:111:18) - Test.runInAsyncScope (node:async_hooks:214:14) - Test.run (node:internal/test_runner/test:1047:25) - Test.processPendingSubtests (node:internal/test_runner/test:744:18) - Test.postRun (node:internal/test_runner/test:1173:19) - Test.run (node:internal/test_runner/test:1101:12) - async Test.processPendingSubtests (node:internal/test_runner/test:744:7) - ... -# Subtest: every repo path named in inline code on the root READMEs exists on disk -ok 75 - every repo path named in inline code on the root READMEs exists on disk - --- - duration_ms: 4.61906 - type: 'test' - ... -# Subtest: the tokenizer skips refs, URLs, globs, placeholders, npm scopes and absolute paths, and names a miss -ok 76 - the tokenizer skips refs, URLs, globs, placeholders, npm scopes and absolute paths, and names a miss - --- - duration_ms: 1.510469 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/claim-cue.test.js -not ok 29 - test/claim-cue.test.js - --- - duration_ms: 202.247553 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/claim-cue.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: client apply declares roster before effects that read it -ok 78 - client apply declares roster before effects that read it - --- - duration_ms: 1.685583 - type: 'test' - ... -# Subtest: client.js is the build of src/client -ok 79 - client.js is the build of src/client - --- - duration_ms: 209.576044 - type: 'test' - ... -# Subtest: client.js registers a factory that exports apply and inject -ok 80 - client.js registers a factory that exports apply and inject - --- - duration_ms: 160.91926 - type: 'test' - ... -# node:internal/modules/cjs/loader:1430 -# const err = new Error(message); -# ^ -# Error: Cannot find module 'jsdom' -# Require stack: -# - /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Function._resolveFilename (node:internal/modules/cjs/loader:1430:15) -# at defaultResolveImpl (node:internal/modules/cjs/loader:1040:19) -# at defaultResolve (node:internal/modules/cjs/loader:1075:31) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:46:12) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) -# at resolveForCJSWithHooks (node:internal/modules/cjs/loader:1084:25) -# at Function._load (node:internal/modules/cjs/loader:1216:25) -# at wrapModuleLoad (node:internal/modules/cjs/loader:254:19) { -# code: 'MODULE_NOT_FOUND', -# requireStack: [ -# '/data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json' -# ] -# } -# Node.js v22.23.3 -# Subtest: test/composer-label.test.js -not ok 32 - test/composer-label.test.js - --- - duration_ms: 65.785209 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/composer-label.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/connector-access.test.js -not ok 33 - test/connector-access.test.js - --- - duration_ms: 261.01487 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/connector-access.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: the picker shows the picked apps with their status, and a search box instead of a typed list -ok 83 - the picker shows the picked apps with their status, and a search box instead of a typed list - --- - duration_ms: 5.77745 - type: 'test' - ... -# Subtest: search results from Composio replace the common apps; an app it found is added by its slug -ok 84 - search results from Composio replace the common apps; an app it found is added by its slug - --- - duration_ms: 0.747269 - type: 'test' - ... -# Subtest: without a key to search with, or when the search fails, the common apps are searched by name -ok 85 - without a key to search with, or when the search fails, the common apps are searched by name - --- - duration_ms: 0.723179 - type: 'test' - ... -# Subtest: the connected row lists each picked app as ready or needing a sign-in, and nothing before Composio answers -ok 86 - the connected row lists each picked app as ready or needing a sign-in, and nothing before Composio answers - --- - duration_ms: 0.931724 - type: 'test' - ... -# Subtest: the owner switches only their own local Bots; on is the default, and only an explicit off reads as off -ok 87 - the owner switches only their own local Bots; on is the default, and only an explicit off reads as off - --- - duration_ms: 3.605383 - type: 'test' - ... -# Subtest: \#601: Bot settings show one switch per connected connector, also on a shared Bot -ok 88 - \#601: Bot settings show one switch per connected connector, also on a shared Bot - --- - duration_ms: 2.71057 - type: 'test' - ... -# Subtest: Bot settings show no Connectors card until a connector is connected -ok 89 - Bot settings show no Connectors card until a connector is connected - --- - duration_ms: 0.320679 - type: 'test' - ... -# Subtest: \#601: Connectors page: a summary line and one switch per Bot -ok 90 - \#601: Connectors page: a summary line and one switch per Bot - --- - duration_ms: 1.487888 - type: 'test' - ... -# Subtest: the connector switch and its host messages have zh copy -ok 91 - the connector switch and its host messages have zh copy - --- - duration_ms: 0.41774 - type: 'test' - ... -# Subtest: \#2027: Copy error hands the full stored text to the clipboard, then reads Copied -ok 92 - \#2027: Copy error hands the full stored text to the clipboard, then reads Copied - --- - duration_ms: 8.764418 - type: 'test' - ... -# Subtest: \#2027: no clipboard and a refused write both read Could not copy the error, never Copied -ok 93 - \#2027: no clipboard and a refused write both read Could not copy the error, never Copied - --- - duration_ms: 2.981047 - type: 'test' - ... -# Subtest: \#2027: only an error row offers Copy error; ready and off keep their own actions -ok 94 - \#2027: only an error row offers Copy error; ready and off keep their own actions - --- - duration_ms: 1.859378 - type: 'test' - ... -# Subtest: \#2027: both new labels speak Chinese too -ok 95 - \#2027: both new labels speak Chinese too - --- - duration_ms: 0.522104 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/connectors.test.js -not ok 37 - test/connectors.test.js - --- - duration_ms: 260.107666 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/connectors.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/constants.test.js -not ok 38 - test/constants.test.js - --- - duration_ms: 254.09549 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/constants.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/context-sharing.test.js -not ok 39 - test/context-sharing.test.js - --- - duration_ms: 236.581835 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/context-sharing.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: the form starts on the Main Bot's model, then the DSH default, then the first served one (\#230) -ok 99 - the form starts on the Main Bot's model, then the DSH default, then the first served one (\#230) - --- - duration_ms: 1.991012 - type: 'test' - ... -# Subtest: without a Main Bot the form starts on the DSH default model, else the first served one -ok 100 - without a Main Bot the form starts on the DSH default model, else the first served one - --- - duration_ms: 0.473083 - type: 'test' - ... -# Subtest: the payload carries the look and the chosen model, and never a brief (\#645) -ok 101 - the payload carries the look and the chosen model, and never a brief (\#645) - --- - duration_ms: 1.345945 - type: 'test' - ... -# Subtest: the suggested name skips taken names -ok 102 - the suggested name skips taken names - --- - duration_ms: 0.40545 - type: 'test' - ... -# Subtest: a failed first send still opens the new Bot and shows the failure -ok 103 - a failed first send still opens the new Bot and shows the failure - --- - duration_ms: 1.286013 - type: 'test' - ... -# Subtest: the new Bot is opened even when the composer had nothing typed, and a sent line reports nothing -ok 104 - the new Bot is opened even when the composer had nothing typed, and a sent line reports nothing - --- - duration_ms: 0.531713 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/dead-turn.test.js -not ok 41 - test/dead-turn.test.js - --- - duration_ms: 218.704721 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/dead-turn.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/decisions.test.js -not ok 42 - test/decisions.test.js - --- - duration_ms: 203.852835 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/decisions.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/delivery-write-failure.test.js -not ok 43 - test/delivery-write-failure.test.js - --- - duration_ms: 201.565106 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/delivery-write-failure.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/details-copy.test.js -not ok 44 - test/details-copy.test.js - --- - duration_ms: 82.548545 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/details-copy.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/diagnostics.test.js -not ok 45 - test/diagnostics.test.js - --- - duration_ms: 124.120895 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/diagnostics.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: the Settings dialog is a focus target: tabIndex -1 on the dialog container -ok 110 - the Settings dialog is a focus target: tabIndex -1 on the dialog container - --- - duration_ms: 27.496305 - type: 'test' - ... -# Subtest: opening moves focus into the dialog and closing gives it back to the still-connected opener -ok 111 - opening moves focus into the dialog and closing gives it back to the still-connected opener - --- - duration_ms: 5.550544 - type: 'test' - ... -# Subtest: the dialog keeps its role, aria-modal, aria-label and data-wide contract -ok 112 - the dialog keeps its role, aria-modal, aria-label and data-wide contract - --- - duration_ms: 11.467338 - type: 'test' - ... -# Subtest: an npm DSH shows the row while the verified version differs from the running one -ok 113 - an npm DSH shows the row while the verified version differs from the running one - --- - duration_ms: 1.93738 - type: 'test' - ... -# Subtest: a packaged app shows the row only when its own updater found the verified version -ok 114 - a packaged app shows the row only when its own updater found the verified version - --- - duration_ms: 0.425011 - type: 'test' - ... -# Subtest: a packaged app without a verified version shows nothing, whatever its updater found -ok 115 - a packaged app without a verified version shows nothing, whatever its updater found - --- - duration_ms: 0.263437 - type: 'test' - ... -# Subtest: sameVersion ignores a leading v and build metadata, and never matches an empty version -ok 116 - sameVersion ignores a leading v and build metadata, and never matches an empty version - --- - duration_ms: 0.297098 - type: 'test' - ... -# Subtest: the harness pin is the version every other copy must equal -ok 117 - the harness pin is the version every other copy must equal - --- - duration_ms: 1.834007 - type: 'test' - ... -# Subtest: the CI workflows install the pinned DSH, and the PR gate keeps its required job name -ok 118 - the CI workflows install the pinned DSH, and the PR gate keeps its required job name - --- - duration_ms: 1.052447 - type: 'test' - ... -# Subtest: the install help and the local CI install the pinned DSH -ok 119 - the install help and the local CI install the pinned DSH - --- - duration_ms: 0.656237 - type: 'test' - ... -# Subtest: every npx command in the READMEs runs the pinned DSH -ok 120 - every npx command in the READMEs runs the pinned DSH - --- - duration_ms: 1.690544 - type: 'test' - ... -# Subtest: the docs that tell people which DSH to run name the pinned version -ok 121 - the docs that tell people which DSH to run name the pinned version - --- - duration_ms: 0.964515 - type: 'test' - ... -# Subtest: the newest released bot declares the verified DSH, offered to an older npm install -ok 122 - the newest released bot declares the verified DSH, offered to an older npm install - --- - duration_ms: 7.444843 - type: 'test' - ... -# Subtest: a verified version older than the running one is still offered, for a broken release -ok 123 - a verified version older than the running one is still offered, for a broken release - --- - duration_ms: 1.336565 - type: 'test' - ... -# Subtest: without any verified version nothing is offered -ok 124 - without any verified version nothing is offered - --- - duration_ms: 1.091448 - type: 'test' - ... -# Subtest: the running version matching the verified one offers nothing -ok 125 - the running version matching the verified one offers nothing - --- - duration_ms: 2.476354 - type: 'test' - ... -# Subtest: a minBot newer than the running bot gates the DSH update until the bot goes first -ok 126 - a minBot newer than the running bot gates the DSH update until the bot goes first - --- - duration_ms: 2.223398 - type: 'test' - ... -# Subtest: a git or local install asks the public repo's latest release for its declaration -ok 127 - a git or local install asks the public repo's latest release for its declaration - --- - duration_ms: 10.609966 - type: 'test' - ... -# Subtest: a bundled package manager means the app owns the runtime: report only, never install -ok 128 - a bundled package manager means the app owns the runtime: report only, never install - --- - duration_ms: 1.271143 - type: 'test' - ... -# Subtest: without a running version there is nothing to compare against -ok 129 - without a running version there is nothing to compare against - --- - duration_ms: 1.507199 - type: 'test' - ... -# Subtest: a failed npm install reports why and can be tried again -ok 130 - a failed npm install reports why and can be tried again - --- - duration_ms: 2.104424 - type: 'test' - ... -# Subtest: P-393: a reaction picked on a message loaded from an earlier part is stored under that message -ok 131 - P-393: a reaction picked on a message loaded from an earlier part is stored under that message - --- - duration_ms: 43.849139 - type: 'test' - ... -# Subtest: P-393: the reply button on a message from an earlier part quotes it into the open chat -ok 132 - P-393: the reply button on a message from an earlier part quotes it into the open chat - --- - duration_ms: 3.07603 - type: 'test' - ... -# Subtest: P-393: a bubble in the current part keeps its own key and its own reply target -ok 133 - P-393: a bubble in the current part keeps its own key and its own reply target - --- - duration_ms: 2.072413 - type: 'test' - ... -# Subtest: \#2123: a message with no text paints no row at all — no avatar, no bubble -ok 134 - \#2123: a message with no text paints no row at all — no avatar, no bubble - --- - duration_ms: 2.552796 - type: 'test' - ... -# Subtest: \#2123: a group chat draws no row for an empty Bot line, and one for the same line with text -ok 135 - \#2123: a group chat draws no row for an empty Bot line, and one for the same line with text - --- - duration_ms: 2.484044 - type: 'test' - ... -# Subtest: \#2123: a friend's line with no text keeps its files and draws no empty bubble -ok 136 - \#2123: a friend's line with no text keeps its files and draws no empty bubble - --- - duration_ms: 2.540176 - type: 'test' - ... -# Subtest: check: must, mustNot and order, with a string as a case-insensitive substring -ok 137 - check: must, mustNot and order, with a string as a case-insensitive substring - --- - duration_ms: 3.410618 - type: 'test' - ... -# Subtest: specs are well formed and lookable up -ok 138 - specs are well formed and lookable up - --- - duration_ms: 0.40829 - type: 'test' - ... -# Subtest: run scores a text against a spec and records the grader hash -ok 139 - run scores a text against a spec and records the grader hash - --- - duration_ms: 3.09981 - type: 'test' - ... -# Subtest: parseVerdict reads a judge answer and rejects a malformed one -ok 140 - parseVerdict reads a judge answer and rejects a malformed one - --- - duration_ms: 0.637907 - type: 'test' - ... -# Subtest: grade: the deterministic check gates; the judge can only tighten -ok 141 - grade: the deterministic check gates; the judge can only tighten - --- - duration_ms: 1.576771 - type: 'test' - ... -# Subtest: judgePrompt names the journey and the checklist -ok 142 - judgePrompt names the journey and the checklist - --- - duration_ms: 0.345509 - type: 'test' - ... -# Subtest: guard: a touched grader file is not unchanged -ok 143 - guard: a touched grader file is not unchanged - --- - duration_ms: 1.575441 - type: 'test' - ... -# Subtest: exchangeText reads a stored line: no trace, no fence, and the paragraph breaks stay -ok 144 - exchangeText reads a stored line: no trace, no fence, and the paragraph breaks stay - --- - duration_ms: 107.644706 - type: 'test' - ... -# Subtest: the row shows the words, and the copy path copies exactly what it shows -ok 145 - the row shows the words, and the copy path copies exactly what it shows - --- - duration_ms: 44.136926 - type: 'test' - ... -# Subtest: lookup reads only the asked repo and never another repo directory -ok 146 - lookup reads only the asked repo and never another repo directory - --- - duration_ms: 14.592209 - type: 'test' - ... -# Subtest: a corrupt entry outside the asked scope is not read -ok 147 - a corrupt entry outside the asked scope is not read - --- - duration_ms: 3.623384 - type: 'test' - ... -# Subtest: lookup rejects a scope that would leave the root -ok 148 - lookup rejects a scope that would leave the root - --- - duration_ms: 2.070894 - type: 'test' - ... -# Subtest: check fails closed when a file disagrees with its directory -ok 149 - check fails closed when a file disagrees with its directory - --- - duration_ms: 4.115437 - type: 'test' - ... -# Subtest: a shared stack file that names a repo fails the check -ok 150 - a shared stack file that names a repo fails the check - --- - duration_ms: 2.962197 - type: 'test' - ... -# Subtest: the committed library isolates ThinkFlowLab/FlyBot from the shared node-host stack -ok 151 - the committed library isolates ThinkFlowLab/FlyBot from the shared node-host stack - --- - duration_ms: 2.409062 - type: 'test' - ... -# Subtest: harnessExperience is a read hook and leaves tiers unchanged -ok 152 - harnessExperience is a read hook and leaves tiers unchanged - --- - duration_ms: 2.539566 - type: 'test' - ... -# Subtest: the CLI writes one new entry file and refuses to overwrite it -ok 153 - the CLI writes one new entry file and refuses to overwrite it - --- - duration_ms: 259.659705 - type: 'test' - ... -# Subtest: the experience text bound counts code points, not UTF-16 units -ok 154 - the experience text bound counts code points, not UTF-16 units - --- - duration_ms: 3.384008 - type: 'test' - ... -# Subtest: \#305: a face room's "@" hides the shell's Session rows and their section titles, files and Bots stay -ok 155 - \#305: a face room's "@" hides the shell's Session rows and their section titles, files and Bots stay - --- - duration_ms: 3.405889 - type: 'test' - ... -# Subtest: \#305: the highlight never rests on a hidden Session row, whichever way the keys move -ok 156 - \#305: the highlight never rests on a hidden Session row, whichever way the keys move - --- - duration_ms: 0.737779 - type: 'test' - ... -# Subtest: \#305: a face-room menu with nothing but Session rows is out of view and dismissed, so Enter sends -ok 157 - \#305: a face-room menu with nothing but Session rows is out of view and dismissed, so Enter sends - --- - duration_ms: 0.751659 - type: 'test' - ... -# Subtest: \#305: the watcher styles the open menu, steers the highlight, dismisses, and cleans up -ok 158 - \#305: the watcher styles the open menu, steers the highlight, dismisses, and cleans up - --- - duration_ms: 1.766246 - type: 'test' - ... -# Subtest: a role label another home set is cut at 80 without splitting an emoji -ok 159 - a role label another home set is cut at 80 without splitting an emoji - --- - duration_ms: 1.601821 - type: 'test' - ... -# Subtest: \#1104: SelfA1025 and SelfB1025 share an initial, so a letter mark cannot tell the homes apart -ok 160 - \#1104: SelfA1025 and SelfB1025 share an initial, so a letter mark cannot tell the homes apart - --- - duration_ms: 3.652505 - type: 'test' - ... -# Subtest: \#1104: member rows draw each home's chat look, not the same initial -ok 161 - \#1104: member rows draw each home's chat look, not the same initial - --- - duration_ms: 5.534214 - type: 'test' - ... -# Subtest: \#1104: a seat with no stored look still draws a seeded character (\#1089) -ok 162 - \#1104: a seat with no stored look still draws a seeded character (\#1089) - --- - duration_ms: 2.519686 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/face-mentions.test.js -not ok 58 - test/face-mentions.test.js - --- - duration_ms: 112.067261 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/face-mentions.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: another person's face-room line is their own received bubble with name and person mark -ok 164 - another person's face-room line is their own received bubble with name and person mark - --- - duration_ms: 46.185359 - type: 'test' - ... -# Subtest: a shared room's subtitle counts remote Bots that are still in the room -ok 165 - a shared room's subtitle counts remote Bots that are still in the room - --- - duration_ms: 0.761639 - type: 'test' - ... -# Subtest: a face room lists people, each with the Bot they brought, named one way -ok 166 - a face room lists people, each with the Bot they brought, named one way - --- - duration_ms: 2.453353 - type: 'test' - ... -# Subtest: \#306: a face room counts people and Bots, not an ambiguous "members" -ok 167 - \#306: a face room counts people and Bots, not an ambiguous "members" - --- - duration_ms: 2.127885 - type: 'test' - ... -# Subtest: another home member's line shows their person mark and a received surface -ok 168 - another home member's line shows their person mark and a received surface - --- - duration_ms: 16.819597 - type: 'test' - ... -# Subtest: \#455: a line a running round already showed draws no second bubble, and a person's line keeps its line breaks -ok 169 - \#455: a line a running round already showed draws no second bubble, and a person's line keeps its line breaks - --- - duration_ms: 106.335962 - type: 'test' - ... -# Subtest: one entry per person, mine first, "(you)" only on the person, count = people -ok 170 - one entry per person, mine first, "(you)" only on the person, count = people - --- - duration_ms: 9.533798 - type: 'test' - ... -# Subtest: my own Bot reads "Chief (SelfB0056)" in the room, a plain name elsewhere -ok 171 - my own Bot reads "Chief (SelfB0056)" in the room, a plain name elsewhere - --- - duration_ms: 0.828951 - type: 'test' - ... -# Subtest: a sent mention stays bound to the Bot it named after that person leaves -ok 172 - a sent mention stays bound to the Bot it named after that person leaves - --- - duration_ms: 4.800274 - type: 'test' - ... -# Subtest: a Bot bubble header in a face room is "Bot (Person)", no handle and no lowercase id -ok 173 - a Bot bubble header in a face room is "Bot (Person)", no handle and no lowercase id - --- - duration_ms: 2.931786 - type: 'test' - ... -# Subtest: my own face-room line keeps one colour and has my name and person mark -ok 174 - my own face-room line keeps one colour and has my name and person mark - --- - duration_ms: 2.467095 - type: 'test' - ... -# Subtest: \#458: a face-room sidebar row leads with its number, so a cut title never hides it -ok 175 - \#458: a face-room sidebar row leads with its number, so a cut title never hides it - --- - duration_ms: 4.417615 - type: 'test' - ... -# Subtest: \#1102: a face-room row wraps its number-first title, and the session breadcrumb wraps too -ok 176 - \#1102: a face-room row wraps its number-first title, and the session breadcrumb wraps too - --- - duration_ms: 2.107995 - type: 'test' - ... -# Subtest: \#458: a face room's turns never take over its Bots' sidebar preview; other groups still show -ok 177 - \#458: a face room's turns never take over its Bots' sidebar preview; other groups still show - --- - duration_ms: 1.908639 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/feishu-channel.test.js -not ok 62 - test/feishu-channel.test.js - --- - duration_ms: 259.694726 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/feishu-channel.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: a replayed event_id starts one turn, and the second one says duplicate (\#1266) -ok 179 - a replayed event_id starts one turn, and the second one says duplicate (\#1266) - --- - duration_ms: 4.321972 - type: 'test' - ... -# Subtest: a ring this size still forgets the oldest id, so a fresh event is not refused (\#1266) -ok 180 - a ring this size still forgets the oldest id, so a fresh event is not refused (\#1266) - --- - duration_ms: 23.631464 - type: 'test' - ... -# Subtest: a message from anyone but the owner starts no turn (\#1266) -ok 181 - a message from anyone but the owner starts no turn (\#1266) - --- - duration_ms: 0.616336 - type: 'test' - ... -# Subtest: no owner and no open_id never compare equal (\#1266) -ok 182 - no owner and no open_id never compare equal (\#1266) - --- - duration_ms: 0.563104 - type: 'test' - ... -# Subtest: switched off, it dials nothing at all (\#1266) -ok 183 - switched off, it dials nothing at all (\#1266) - --- - duration_ms: 0.838122 - type: 'test' - ... -# Subtest: a failed connect is one redacted line in the row, not a thrown start (\#1266) -ok 184 - a failed connect is one redacted line in the row, not a thrown start (\#1266) - --- - duration_ms: 0.625876 - type: 'test' - ... -# Subtest: one socket per connector: a second start while it dials shares the first (\#1266) -ok 185 - one socket per connector: a second start while it dials shares the first (\#1266) - --- - duration_ms: 0.534474 - type: 'test' - ... -# Subtest: an event that is not a text message is logged and starts nothing (\#1266) -ok 186 - an event that is not a text message is logged and starts nothing (\#1266) - --- - duration_ms: 0.692188 - type: 'test' - ... -# Subtest: a text message drops the mention placeholders and names the chat after the conversation (\#1266) -ok 187 - a text message drops the mention placeholders and names the chat after the conversation (\#1266) - --- - duration_ms: 2.035773 - type: 'test' - ... -# Subtest: readEvent reads only the envelope phase 2 means to accept (\#1266) -ok 188 - readEvent reads only the envelope phase 2 means to accept (\#1266) - --- - duration_ms: 2.123715 - type: 'test' - ... -# Subtest: the app pair is one credential: it is the record's id and the saved secret, either half missing dials nothing (\#1266) -ok 189 - the app pair is one credential: it is the record's id and the saved secret, either half missing dials nothing (\#1266) - --- - duration_ms: 0.622646 - type: 'test' - ... -# Subtest: the view never carries either half of the app pair (\#1266) -ok 190 - the view never carries either half of the app pair (\#1266) - --- - duration_ms: 0.563084 - type: 'test' - ... -# Subtest: with no socket adapter installed it says so instead of pretending (\#1266) -ok 191 - with no socket adapter installed it says so instead of pretending (\#1266) - --- - duration_ms: 0.284867 - type: 'test' - ... -# Subtest: an adapter installed after the first start is the one the next start dials (\#1266) -ok 192 - an adapter installed after the first start is the one the next start dials (\#1266) - --- - duration_ms: 0.435351 - type: 'test' - ... -# Subtest: a stop while the socket dials hangs up the one that arrives and never reports ready (\#1266) -ok 193 - a stop while the socket dials hangs up the one that arrives and never reports ready (\#1266) - --- - duration_ms: 0.510283 - type: 'test' - ... -# Subtest: a message whose delivery throws is handed over again, not remembered as handled (\#1266) -ok 194 - a message whose delivery throws is handed over again, not remembered as handled (\#1266) - --- - duration_ms: 1.337445 - type: 'test' - ... -# Subtest: two copies of one event arriving together still start one turn (\#1266) -ok 195 - two copies of one event arriving together still start one turn (\#1266) - --- - duration_ms: 0.506393 - type: 'test' - ... -# Subtest: a sender the row allowed starts a turn; one it did not is refused (\#1266) -ok 196 - a sender the row allowed starts a turn; one it did not is refused (\#1266) - --- - duration_ms: 0.507473 - type: 'test' - ... -# Subtest: the refused list is one row per sender, bounded, and an allowed sender leaves it (\#1266) -ok 197 - the refused list is one row per sender, bounded, and an allowed sender leaves it (\#1266) - --- - duration_ms: 1.428507 - type: 'test' - ... -# Subtest: the SDK is imported at dial time, and its flattened event reaches the policy as Feishu sends it (\#1266) -ok 198 - the SDK is imported at dial time, and its flattened event reaches the policy as Feishu sends it (\#1266) - --- - duration_ms: 3.622724 - type: 'test' - ... -# Subtest: a package that is not installed is one readable line, not a stack (\#1266) -ok 199 - a package that is not installed is one readable line, not a stack (\#1266) - --- - duration_ms: 0.935515 - type: 'test' - ... -# Subtest: with no app pair saved nothing is imported and nothing dials (\#1266) -ok 200 - with no app pair saved nothing is imported and nothing dials (\#1266) - --- - duration_ms: 0.416371 - type: 'test' - ... -# Subtest: a socket that reports an error ends the start with that error (\#1266) -ok 201 - a socket that reports an error ends the start with that error (\#1266) - --- - duration_ms: 0.732799 - type: 'test' - ... -# Subtest: a socket that never opens is given up at the deadline instead of hanging the start (\#1266) -ok 202 - a socket that never opens is given up at the deadline instead of hanging the start (\#1266) - --- - duration_ms: 10.187645 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/feishu.test.js -not ok 65 - test/feishu.test.js - --- - duration_ms: 228.243378 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/feishu.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/fence-property.test.js -not ok 66 - test/fence-property.test.js - --- - duration_ms: 81.707193 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/fence-property.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/fence.test.js -not ok 67 - test/fence.test.js - --- - duration_ms: 76.082646 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/fence.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: the client registry orders entries, replaces by id, and notifies -ok 206 - the client registry orders entries, replaces by id, and notifies - --- - duration_ms: 3.85894 - type: 'test' - ... -# Subtest: new-chat action rows sit after New group chat and skip a failing plugin -ok 207 - new-chat action rows sit after New group chat and skip a failing plugin - --- - duration_ms: 0.935334 - type: 'test' - ... -# Subtest: mention candidates come from every plugin and one failing source is skipped -ok 208 - mention candidates come from every plugin and one failing source is skipped - --- - duration_ms: 0.641627 - type: 'test' - ... -# Subtest: the browser flybot service lists Bots and turns host changes into field events -ok 209 - the browser flybot service lists Bots and turns host changes into field events - --- - duration_ms: 1.318764 - type: 'test' - ... -# Subtest: remote members: @ rows insert the one name, the sidebar groups by home, bubbles show the fenced words -ok 210 - remote members: @ rows insert the one name, the sidebar groups by home, bubbles show the fenced words - --- - duration_ms: 15.741459 - type: 'test' - ... -# Subtest: every client bundle registers under its package name, as the DSH module loader looks it up -ok 211 - every client bundle registers under its package name, as the DSH module loader looks it up - --- - duration_ms: 11.199801 - type: 'test' - ... -# Subtest: field events keep flowing after a host restart (\#18) -ok 212 - field events keep flowing after a host restart (\#18) - --- - duration_ms: 11.970451 - type: 'test' - ... -# Subtest: client UI (\#19): every plugin slot renders inside an error boundary; approval copy is translated; the stack scrolls -ok 213 - client UI (\#19): every plugin slot renders inside an error boundary; approval copy is translated; the stack scrolls - --- - duration_ms: 1.288563 - type: 'test' - ... -# Subtest: the sidebar footer button opens Settings > Connectors as "Connect apps" -ok 214 - the sidebar footer button opens Settings > Connectors as "Connect apps" - --- - duration_ms: 2.270498 - type: 'test' - ... -# Subtest: the account menu keeps a Plugins row that opens the shell plugin panel -ok 215 - the account menu keeps a Plugins row that opens the shell plugin panel - --- - duration_ms: 2.117315 - type: 'test' - ... -# Subtest: the account menu names each destination as it is named elsewhere (\#392, \#393, \#394) -ok 216 - the account menu names each destination as it is named elsewhere (\#392, \#393, \#394) - --- - duration_ms: 1.960701 - type: 'test' - ... -# Subtest: a face-room sidebar row shows its full title on hover (\#304, \#1102) -ok 217 - a face-room sidebar row shows its full title on hover (\#304, \#1102) - --- - duration_ms: 3.932713 - type: 'test' - ... -# Subtest: a friend's Bot sidebar row is its one name, "Chief (Bob)", on one line, with a second line like own rows (\#384, \#498) -ok 218 - a friend's Bot sidebar row is its one name, "Chief (Bob)", on one line, with a second line like own rows (\#384, \#498) - --- - duration_ms: 3.140712 - type: 'test' - ... -# Subtest: a friend's Bot picked from the @ menu reads as its one name in the menu, the bubble and the preview (\#967) -ok 219 - a friend's Bot picked from the @ menu reads as its one name in the menu, the bubble and the preview (\#967) - --- - duration_ms: 57.814622 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/flybot-feed.test.js -not ok 69 - test/flybot-feed.test.js - --- - duration_ms: 216.022302 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/flybot-feed.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: \#818: the slot host leaves the wrapper empty for a section that renders null -ok 221 - \#818: the slot host leaves the wrapper empty for a section that renders null - --- - duration_ms: 11.52846 - type: 'test' - ... -# Subtest: \#818: an empty wrapper draws no separator, and a section with content keeps it -ok 222 - \#818: an empty wrapper draws no separator, and a section with content keeps it - --- - duration_ms: 4.288992 - type: 'test' - ... -# Subtest: \#818: the host still draws a wrapper for a section that has rows -ok 223 - \#818: the host still draws a wrapper for a section that has rows - --- - duration_ms: 2.517296 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/flybot.test.js -not ok 71 - test/flybot.test.js - --- - duration_ms: 263.486144 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/flybot.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/follow-through.test.js -not ok 72 - test/follow-through.test.js - --- - duration_ms: 213.872205 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/follow-through.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/fresh-part-model.test.js -not ok 73 - test/fresh-part-model.test.js - --- - duration_ms: 87.518794 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/fresh-part-model.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/friend-chat-awaiting.test.js -not ok 74 - test/friend-chat-awaiting.test.js - --- - duration_ms: 141.864895 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/friend-chat-awaiting.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: a friend's Bot reply carries its mark beside the bubble, the look its sidebar row shows -ok 228 - a friend's Bot reply carries its mark beside the bubble, the look its sidebar row shows - --- - duration_ms: 3.870591 - type: 'test' - ... -# Subtest: my own Bot's chat and a Not sent note have no friend mark -ok 229 - my own Bot's chat and a Not sent note have no friend mark - --- - duration_ms: 0.526483 - type: 'test' - ... -# Subtest: \#420: a friend's line in a Bot's chat that is not open marks that Bot unread once -ok 230 - \#420: a friend's line in a Bot's chat that is not open marks that Bot unread once - --- - duration_ms: 2.554347 - type: 'test' - ... -# Subtest: \#420: the first friend's line a Bot ever gets is news too, once this browser keeps a record -ok 231 - \#420: the first friend's line a Bot ever gets is news too, once this browser keeps a record - --- - duration_ms: 0.278017 - type: 'test' - ... -# Subtest: \#420: a line that arrives while its chat is on screen was seen live -ok 232 - \#420: a line that arrives while its chat is on screen was seen live - --- - duration_ms: 0.311978 - type: 'test' - ... -# Subtest: \#420: a browser with no record yet takes what is there as shown -ok 233 - \#420: a browser with no record yet takes what is there as shown - --- - duration_ms: 0.652347 - type: 'test' - ... -# Subtest: \#420: a friend's Bot chat and another member's shared Bot are not marked here -ok 234 - \#420: a friend's Bot chat and another member's shared Bot are not marked here - --- - duration_ms: 0.332818 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/group-bot-label.test.js -not ok 77 - test/group-bot-label.test.js - --- - duration_ms: 144.229386 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/group-bot-label.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/group-status.test.js -not ok 78 - test/group-status.test.js - --- - duration_ms: 207.640594 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/group-status.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/group-work.test.js -not ok 79 - test/group-work.test.js - --- - duration_ms: 207.165541 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/group-work.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/groups.test.js -not ok 80 - test/groups.test.js - --- - duration_ms: 132.894232 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/groups.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: Step 0 default harness names prompt, tools, model, step·retry, and verifiers -ok 239 - Step 0 default harness names prompt, tools, model, step·retry, and verifiers - --- - duration_ms: 2.025663 - type: 'test' - ... -# Subtest: default harness keeps the Step 0 shape -ok 240 - default harness keeps the Step 0 shape - --- - duration_ms: 1.452288 - type: 'test' - ... -# Subtest: unknown harness ids still throw -ok 241 - unknown harness ids still throw - --- - duration_ms: 0.737239 - type: 'test' - ... -# Subtest: tree prompt exception is listed outside the default harness file -ok 242 - tree prompt exception is listed outside the default harness file - --- - duration_ms: 0.77029 - type: 'test' - ... -# Subtest: lite, medium, and heavy load with distinct ordered budgets -ok 243 - lite, medium, and heavy load with distinct ordered budgets - --- - duration_ms: 0.869673 - type: 'test' - ... -# Subtest: tier tool budgets name tools the host registers -ok 244 - tier tool budgets name tools the host registers - --- - duration_ms: 4.99631 - type: 'test' - ... -# Subtest: triage routes one harness label and leaves every other label on default -ok 245 - triage routes one harness label and leaves every other label on default - --- - duration_ms: 1.021776 - type: 'test' - ... -# Subtest: HarnessPro checks a tier offline against CI, eval, and rsi-baseline -ok 246 - HarnessPro checks a tier offline against CI, eval, and rsi-baseline - --- - duration_ms: 2.035292 - type: 'test' - ... -# Subtest: install keeps the process harness on default and exposes routing -ok 247 - install keeps the process harness on default and exposes routing - --- - duration_ms: 1.046637 - type: 'test' - ... -# node:internal/modules/cjs/loader:1430 -# const err = new Error(message); -# ^ -# Error: Cannot find module 'jsdom' -# Require stack: -# - /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Function._resolveFilename (node:internal/modules/cjs/loader:1430:15) -# at defaultResolveImpl (node:internal/modules/cjs/loader:1040:19) -# at defaultResolve (node:internal/modules/cjs/loader:1075:31) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:46:12) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) -# at resolveForCJSWithHooks (node:internal/modules/cjs/loader:1084:25) -# at Function._load (node:internal/modules/cjs/loader:1216:25) -# at wrapModuleLoad (node:internal/modules/cjs/loader:254:19) { -# code: 'MODULE_NOT_FOUND', -# requireStack: [ -# '/data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json' -# ] -# } -# Node.js v22.23.3 -# Subtest: test/header-effects.test.js -not ok 82 - test/header-effects.test.js - --- - duration_ms: 72.034191 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/header-effects.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: the shell keeps its own conversation.session.header occupant -ok 249 - the shell keeps its own conversation.session.header occupant - --- - duration_ms: 2.936706 - type: 'test' - ... -# Subtest: the Bot pill is appended to conversation.session.header.utilities -ok 250 - the Bot pill is appended to conversation.session.header.utilities - --- - duration_ms: 0.636366 - type: 'test' - ... -# Subtest: \#803: the page effects are installed from apply, not parked in a slot -ok 251 - \#803: the page effects are installed from apply, not parked in a slot - --- - duration_ms: 0.585585 - type: 'test' - ... -# Subtest: a held Bot line is no bubble at all before Approve; its text stays in the approval card -ok 252 - a held Bot line is no bubble at all before Approve; its text stays in the approval card - --- - duration_ms: 3.922452 - type: 'test' - ... -# Subtest: only the held line is left out: other lines, and once the hold is decided, the line, are full bubbles -ok 253 - only the held line is left out: other lines, and once the hold is decided, the line, are full bubbles - --- - duration_ms: 3.593934 - type: 'test' - ... -# Subtest: \#456: a line the host is sending or Bot Social holds is not drawn; approved, it is a bubble -ok 254 - \#456: a line the host is sending or Bot Social holds is not drawn; approved, it is a bubble - --- - duration_ms: 1.123749 - type: 'test' - ... -# Subtest: \#456: a rejected line is one grey "Not sent" line, never its words, after a reload and in Past rooms -ok 255 - \#456: a rejected line is one grey "Not sent" line, never its words, after a reload and in Past rooms - --- - duration_ms: 1.859509 - type: 'test' - ... -# Subtest: \#456: a late post (no seq) is found by its Bot and its exact text; a stale send is drawn as before -ok 256 - \#456: a late post (no seq) is found by its Bot and its exact text; a stale send is drawn as before - --- - duration_ms: 0.666447 - type: 'test' - ... -# Subtest: the held text matches however the card cleaned it: spacing, the "To the room:" lead, the 800-character cap -ok 257 - the held text matches however the card cleaned it: spacing, the "To the room:" lead, the 800-character cap - --- - duration_ms: 0.503173 - type: 'test' - ... -# Subtest: the held line waits only for the Bot that sent it: another Bot saying the same words stays a full bubble -ok 258 - the held line waits only for the Bot that sent it: another Bot saying the same words stays a full bubble - --- - duration_ms: 1.210632 - type: 'test' - ... -# Subtest: only a Face-to-face room hides a held line, and only for a held room line -ok 259 - only a Face-to-face room hides a held line, and only for a held room line - --- - duration_ms: 0.312798 - type: 'test' - ... -# Subtest: the Not sent copy has a Chinese string -ok 260 - the Not sent copy has a Chinese string - --- - duration_ms: 1.883479 - type: 'test' - ... -# Subtest: the Not sent line is a quiet grey event line -ok 261 - the Not sent line is a quiet grey event line - --- - duration_ms: 10.0308 - type: 'test' - ... -# Subtest: a held message to a friend is no bubble at all: the Bot's send is not drawn, the card is the one place -ok 262 - a held message to a friend is no bubble at all: the Bot's send is not drawn, the card is the one place - --- - duration_ms: 0.999256 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/held-reply-seam.test.js -not ok 85 - test/held-reply-seam.test.js - --- - duration_ms: 227.821118 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/held-reply-seam.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: a waiting reply is drawn held, with the decision on it, naming the person who gets it -ok 264 - a waiting reply is drawn held, with the decision on it, naming the person who gets it - --- - duration_ms: 6.288433 - type: 'test' - ... -# Subtest: after the decision the reply says Sent or Not sent in place, and they differ -ok 265 - after the decision the reply says Sent or Not sent in place, and they differ - --- - duration_ms: 1.995892 - type: 'test' - ... -# Subtest: \#498: the card names the person who gets the reply, the same with or without the friend's chat; no held reply, no wrapper -ok 266 - \#498: the card names the person who gets the reply, the same with or without the friend's chat; no held reply, no wrapper - --- - duration_ms: 3.355447 - type: 'test' - ... -# Subtest: the list preview shows the friend's line, not a reply that was not sent; the host tags the turn -ok 267 - the list preview shows the friend's line, not a reply that was not sent; the host tags the turn - --- - duration_ms: 42.398491 - type: 'test' - ... -# Subtest: \#968: a terminal failure draws no Retry on the bubble, in any spelling; a retryable one does -ok 268 - \#968: a terminal failure draws no Retry on the bubble, in any spelling; a retryable one does - --- - duration_ms: 2.939266 - type: 'test' - ... -# Subtest: \#968: both spellings of a terminal failure answer false, and a retryable one answers true -ok 269 - \#968: both spellings of a terminal failure answer false, and a retryable one answers true - --- - duration_ms: 2.358732 - type: 'test' - ... -# Subtest: \#968: a record written before \#954 carries no flag, only the sentence, and is still terminal -ok 270 - \#968: a record written before \#954 carries no flag, only the sentence, and is still terminal - --- - duration_ms: 0.367769 - type: 'test' - ... -# Subtest: \#988: capability_not_granted is terminal only for the chat.public sentence -ok 271 - \#988: capability_not_granted is terminal only for the chat.public sentence - --- - duration_ms: 0.336209 - type: 'test' - ... -# Subtest: \#140: the context row hides FlyBot-removed tools, not other tool cells -ok 272 - \#140: the context row hides FlyBot-removed tools, not other tool cells - --- - duration_ms: 5.690638 - type: 'test' - ... -# Subtest: \#335: connector tools coming and going with a Bot's connector switch leave no notice in the chat -ok 273 - \#335: connector tools coming and going with a Bot's connector switch leave no notice in the chat - --- - duration_ms: 0.739449 - type: 'test' - ... -# Subtest: \#419: plugin tools a per-Bot mask takes away (tree) leave no Tool removed / Tool added line in any chat -ok 274 - \#419: plugin tools a per-Bot mask takes away (tree) leave no Tool removed / Tool added line in any chat - --- - duration_ms: 2.098044 - type: 'test' - ... -# Subtest: \#1101: product tool registration leaves no Tool added / Tool removed line -ok 275 - \#1101: product tool registration leaves no Tool added / Tool removed line - --- - duration_ms: 1.732735 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/history.test.js -not ok 89 - test/history.test.js - --- - duration_ms: 91.654191 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/history.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/home-lock.test.js -not ok 90 - test/home-lock.test.js - --- - duration_ms: 199.752259 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/home-lock.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/host-approval-status.test.js -not ok 91 - test/host-approval-status.test.js - --- - duration_ms: 196.063353 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/host-approval-status.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: every literal the client translates has a Chinese entry -ok 279 - every literal the client translates has a Chinese entry - --- - duration_ms: 19.23574 - type: 'test' - ... -# Subtest: copy follows the DSH language and stays English without a locale service -ok 280 - copy follows the DSH language and stays English without a locale service - --- - duration_ms: 3.232344 - type: 'test' - ... -# Subtest: \#1813: the Project board queue states read in Chinese -ok 281 - \#1813: the Project board queue states read in Chinese - --- - duration_ms: 0.293517 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/identity.test.js -not ok 93 - test/identity.test.js - --- - duration_ms: 207.12417 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/identity.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/images.test.js -not ok 94 - test/images.test.js - --- - duration_ms: 73.50117 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/images.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: a reply opening with a delegation trace shows without it -ok 284 - a reply opening with a delegation trace shows without it - --- - duration_ms: 6.606392 - type: 'test' - ... -# Subtest: ordinary text that merely mentions an arrow is left alone -ok 285 - ordinary text that merely mentions an arrow is left alone - --- - duration_ms: 0.36876 - type: 'test' - ... -# Subtest: the sidebar preview drops the trace too -ok 286 - the sidebar preview drops the trace too - --- - duration_ms: 2.444983 - type: 'test' - ... -# Subtest: an inbound friend's message uses the friend's sidebar Bot (avatar, name), else a stable look from its handle -ok 287 - an inbound friend's message uses the friend's sidebar Bot (avatar, name), else a stable look from its handle - --- - duration_ms: 2.120775 - type: 'test' - ... -# Subtest: a friend Bot's handle in a preview reads as its one name (\#71, \#967) -ok 288 - a friend Bot's handle in a preview reads as its one name (\#71, \#967) - --- - duration_ms: 3.031639 - type: 'test' - ... -# Subtest: a friend Bot's generated look is seeded by its handle: with or without its chat record, one look (\#84) -ok 289 - a friend Bot's generated look is seeded by its handle: with or without its chat record, one look (\#84) - --- - duration_ms: 0.580575 - type: 'test' - ... -# Subtest: lookBotForRemote seeds a distinct look from the handle when there is no chat record -ok 290 - lookBotForRemote seeds a distinct look from the handle when there is no chat record - --- - duration_ms: 0.866142 - type: 'test' - ... -# Subtest: room avatars include live remote face-to-face members -ok 291 - room avatars include live remote face-to-face members - --- - duration_ms: 0.803631 - type: 'test' - ... -# Subtest: \#1089: a face room with only the local Chief shows that Chief, not the grey you circle -ok 292 - \#1089: a face room with only the local Chief shows that Chief, not the grey you circle - --- - duration_ms: 2.260549 - type: 'test' - ... -# Subtest: handles equal modulo @ and case share one look; a stored look still wins -ok 293 - handles equal modulo @ and case share one look; a stored look still wins - --- - duration_ms: 1.383616 - type: 'test' - ... -# Subtest: \#236 follow-up: a friend's line Bot Social attested as typed by them is drawn as the person, not as their Bot -ok 294 - \#236 follow-up: a friend's line Bot Social attested as typed by them is drawn as the person, not as their Bot - --- - duration_ms: 1.890679 - type: 'test' - ... -# Subtest: \#275: a typed line from a friend has one short header: the person, then "via " only when that Bot is known -ok 295 - \#275: a typed line from a friend has one short header: the person, then "via " only when that Bot is known - --- - duration_ms: 1.015567 - type: 'test' - ... -# Subtest: \#420: a sender's first line in a Bot's own chat gets one quiet line naming who talks to which Bot -ok 296 - \#420: a sender's first line in a Bot's own chat gets one quiet line naming who talks to which Bot - --- - duration_ms: 0.731929 - type: 'test' - ... -# Subtest: a face room's remote Bot speaks with its seat's look, the one Members and the waiting tiles draw (\#182) -ok 297 - a face room's remote Bot speaks with its seat's look, the one Members and the waiting tiles draw (\#182) - --- - duration_ms: 1.073618 - type: 'test' - ... -# Subtest: a person's mark is their initial on a color from their name, the same on every home (\#182) -ok 298 - a person's mark is their initial on a color from their name, the same on every home (\#182) - --- - duration_ms: 1.54356 - type: 'test' - ... -# Subtest: a row the board paints Not started is not an In progress card in the Inbox (\#1739) -ok 299 - a row the board paints Not started is not an In progress card in the Inbox (\#1739) - --- - duration_ms: 2.528416 - type: 'test' - ... -# Subtest: both views read the same row the same way: In progress is exactly the board in-progress column -ok 300 - both views read the same row the same way: In progress is exactly the board in-progress column - --- - duration_ms: 0.490793 - type: 'test' - ... -# Subtest: a card age comes from the row clock: the moment it started, never its creation -ok 301 - a card age comes from the row clock: the moment it started, never its creation - --- - duration_ms: 0.513363 - type: 'test' - ... -# Subtest: \#1706: a failed run reaches the Inbox as one card naming graph, node and reason -ok 302 - \#1706: a failed run reaches the Inbox as one card naming graph, node and reason - --- - duration_ms: 1.567801 - type: 'test' - ... -# Subtest: \#1706 control: a run that is still running is not Inbox news -ok 303 - \#1706 control: a run that is still running is not Inbox news - --- - duration_ms: 1.015036 - type: 'test' - ... -# Subtest: \#1706 control: a failed run whose task card is gone still reaches the Inbox -ok 304 - \#1706 control: a failed run whose task card is gone still reaches the Inbox - --- - duration_ms: 0.446182 - type: 'test' - ... -# Subtest: \#1706: one card per graph, its newest failure, inside the 7-day window Done uses -ok 305 - \#1706: one card per graph, its newest failure, inside the 7-day window Done uses - --- - duration_ms: 0.569155 - type: 'test' - ... -# Subtest: \#1706: a missing Workflow plugin is the same Inbox, with no error line -ok 306 - \#1706: a missing Workflow plugin is the same Inbox, with no error line - --- - duration_ms: 1.027537 - type: 'test' - ... -# Subtest: \#1706: the sidebar badge counts the same failed run the dialog lists -ok 307 - \#1706: the sidebar badge counts the same failed run the dialog lists - --- - duration_ms: 1.887229 - type: 'test' - ... -# Subtest: \#1706: a workflow row has no chat, opens the Workflow graphs page, and answers nothing -ok 308 - \#1706: a workflow row has no chat, opens the Workflow graphs page, and answers nothing - --- - duration_ms: 2.847614 - type: 'test' - ... -# Subtest: \#1706: failed workflow rows share the one Needs you list -ok 309 - \#1706: failed workflow rows share the one Needs you list - --- - duration_ms: 12.692329 - type: 'test' - ... -# Subtest: the groups are Needs you, In progress and Done, in that order, each with an empty line -ok 310 - the groups are Needs you, In progress and Done, in that order, each with an empty line - --- - duration_ms: 2.944606 - type: 'test' - ... -# Subtest: Needs you: my own Bots' approvals, held messages, and tasks that wait for me or failed in the last 7 days -ok 311 - Needs you: my own Bots' approvals, held messages, and tasks that wait for me or failed in the last 7 days - --- - duration_ms: 1.14969 - type: 'test' - ... -# Subtest: a friend's Bot and another member's Bot never show, in any group -ok 312 - a friend's Bot and another member's Bot never show, in any group - --- - duration_ms: 0.323838 - type: 'test' - ... -# Subtest: In progress: running turns per chat and group, without the ones waiting for an approval, and open tasks -ok 313 - In progress: running turns per chat and group, without the ones waiting for an approval, and open tasks - --- - duration_ms: 0.333029 - type: 'test' - ... -# Subtest: Done: accepted and cancelled tasks and finished Bot chats from the last 7 days only -ok 314 - Done: accepted and cancelled tasks and finished Bot chats from the last 7 days only - --- - duration_ms: 0.545784 - type: 'test' - ... -# Subtest: every card carries assigner, owner and executing Bot; in step 1 the first two are me -ok 315 - every card carries assigner, owner and executing Bot; in step 1 the first two are me - --- - duration_ms: 0.325899 - type: 'test' - ... -# Subtest: every status has a word and an icon besides its color -ok 316 - every status has a word and an icon besides its color - --- - duration_ms: 0.467272 - type: 'test' - ... -# Subtest: a card shows exactly one status, as an icon and a word, and its full title on hover -ok 317 - a card shows exactly one status, as an icon and a word, and its full title on hover - --- - duration_ms: 5.274117 - type: 'test' - ... -# Subtest: an answerable approval has Reject, Allow once, the two Always allow choices (\#540) and Open; everything else only Open -ok 318 - an answerable approval has Reject, Allow once, the two Always allow choices (\#540) and Open; everything else only Open - --- - duration_ms: 2.282339 - type: 'test' - ... -# Subtest: the card buttons call back with the card and the choice -ok 319 - the card buttons call back with the card and the choice - --- - duration_ms: 1.643273 - type: 'test' - ... -# Subtest: Allow once in the inbox gives the same answer as the chat card (answerApproval), and Open goes to the chat -ok 320 - Allow once in the inbox gives the same answer as the chat card (answerApproval), and Open goes to the chat - --- - duration_ms: 18.766928 - type: 'test' - ... -# Subtest: the dialog draws the three groups with their headings, and an empty line where a group is empty -ok 321 - the dialog draws the three groups with their headings, and an empty line where a group is empty - --- - duration_ms: 0.827912 - type: 'test' - ... -# Subtest: the Inbox row shows how many cards need me and opens the inbox -ok 322 - the Inbox row shows how many cards need me and opens the inbox - --- - duration_ms: 1.15529 - type: 'test' - ... -# Subtest: the inbox has no second approval path and no native confirm dialog -ok 323 - the inbox has no second approval path and no native confirm dialog - --- - duration_ms: 1.15489 - type: 'test' - ... -# Subtest: the sidebar has one Inbox row at its top, and the dialog is an overlay -ok 324 - the sidebar has one Inbox row at its top, and the dialog is an overlay - --- - duration_ms: 0.7836 - type: 'test' - ... -# Subtest: a failed turn of my own Bot needs me while it is the latest turn in its chat and the Bot is not back at work there -ok 325 - a failed turn of my own Bot needs me while it is the latest turn in its chat and the Bot is not back at work there - --- - duration_ms: 1.111899 - type: 'test' - ... -# Subtest: a failure no longer needs me once the Bot works or waits there again -ok 326 - a failure no longer needs me once the Bot works or waits there again - --- - duration_ms: 2.820284 - type: 'test' - ... -# Subtest: a failed turn in a hidden Bot's own chat is not a Needs you card (\#1566) -ok 327 - a failed turn in a hidden Bot's own chat is not a Needs you card (\#1566) - --- - duration_ms: 3.108781 - type: 'test' - ... -# Subtest: each card has a one-line latest activity that never repeats its title or reason -ok 328 - each card has a one-line latest activity that never repeats its title or reason - --- - duration_ms: 3.717397 - type: 'test' - ... -# Subtest: a card shows its own place's tool-call count, from the running turn there or the last ended one (\#471) -ok 329 - a card shows its own place's tool-call count, from the running turn there or the last ended one (\#471) - --- - duration_ms: 0.785011 - type: 'test' - ... -# Subtest: a count of 0 or unknown draws no line; a counted card draws one `N tool calls` line, read-only -ok 330 - a count of 0 or unknown draws no line; a counted card draws one `N tool calls` line, read-only - --- - duration_ms: 1.657433 - type: 'test' - ... -# Subtest: a question asked about work handed out from a group is a Needs you card that opens the group (\#552) -ok 331 - a question asked about work handed out from a group is a Needs you card that opens the group (\#552) - --- - duration_ms: 2.271599 - type: 'test' - ... -# Subtest: an ask_user card and a listed policy approval are answered in the inbox, and that clears them (\#1140) -ok 332 - an ask_user card and a listed policy approval are answered in the inbox, and that clears them (\#1140) - --- - duration_ms: 12.108935 - type: 'test' - ... -# Subtest: a short answer survives a re-render, and a multi-select toggles until Submit (\#1140) -ok 333 - a short answer survives a re-render, and a multi-select toggles until Submit (\#1140) - --- - duration_ms: 2.152006 - type: 'test' - ... -# Subtest: a result card is accepted or sent back in place, with its evidence and the note (\#401) -ok 334 - a result card is accepted or sent back in place, with its evidence and the note (\#401) - --- - duration_ms: 3.429209 - type: 'test' - ... -# Subtest: a card names where its decision is written back, and one line when that failed (\#1154) -ok 335 - a card names where its decision is written back, and one line when that failed (\#1154) - --- - duration_ms: 1.239452 - type: 'test' - ... -# Subtest: a Needs you card shows the whole ask, and the phone clamp cannot cut it to two lines (\#1177) -ok 336 - a Needs you card shows the whole ask, and the phone clamp cannot cut it to two lines (\#1177) - --- - duration_ms: 1.783056 - type: 'test' - ... -# Subtest: \#1252: the Inbox asks for the settled rows, and they reach Done and Needs you -ok 337 - \#1252: the Inbox asks for the settled rows, and they reach Done and Needs you - --- - duration_ms: 5.503953 - type: 'test' - ... -# Subtest: \#2042: the model reports the Done total from before the cap, and Needs you and In progress do not read it -ok 338 - \#2042: the model reports the Done total from before the cap, and Needs you and In progress do not read it - --- - duration_ms: 1.842507 - type: 'test' - ... -# Subtest: \#2042: the Done group says how many rows the cap hid, and says nothing when it hid none -ok 339 - \#2042: the Done group says how many rows the cap hid, and says nothing when it hid none - --- - duration_ms: 3.721846 - type: 'test' - ... -# Subtest: \#2050: the model keeps the finished rows past the cap, in the order the Done group draws -ok 340 - \#2050: the model keeps the finished rows past the cap, in the order the Done group draws - --- - duration_ms: 1.111819 - type: 'test' - ... -# Subtest: \#2050: the Done group opens every row it counted, and folds back to the cap -ok 341 - \#2050: the Done group opens every row it counted, and folds back to the cap - --- - duration_ms: 5.871073 - type: 'test' - ... -# Subtest: nodeMeetsFloor: below the floor fails, the floor and newer majors pass -ok 342 - nodeMeetsFloor: below the floor fails, the floor and newer majors pass - --- - duration_ms: 2.278649 - type: 'test' - ... -# Subtest: checkPluginPackage: a missing package.json fails without throwing -ok 343 - checkPluginPackage: a missing package.json fails without throwing - --- - duration_ms: 1.366316 - type: 'test' - ... -# Subtest: checkPluginPackage: a wrong package name fails -ok 344 - checkPluginPackage: a wrong package name fails - --- - duration_ms: 1.485729 - type: 'test' - ... -# Subtest: checkPluginPackage: a declared but missing cordis patch fails -ok 345 - checkPluginPackage: a declared but missing cordis patch fails - --- - duration_ms: 1.068978 - type: 'test' - ... -# Subtest: checkPluginPackage: a valid fixture passes -ok 346 - checkPluginPackage: a valid fixture passes - --- - duration_ms: 2.037833 - type: 'test' - ... -# Subtest: checkPluginPackage: a JSON null body fails without throwing -ok 347 - checkPluginPackage: a JSON null body fails without throwing - --- - duration_ms: 1.050058 - type: 'test' - ... -# Subtest: checkPluginPackage: a numeric dsh.bundle.patch fails without throwing -ok 348 - checkPluginPackage: a numeric dsh.bundle.patch fails without throwing - --- - duration_ms: 0.952674 - type: 'test' - ... -# Subtest: buildInstallCommands: core, social, tree and workflow; timeline only on request (\#281) -ok 349 - buildInstallCommands: core, social, tree and workflow; timeline only on request (\#281) - --- - duration_ms: 0.431111 - type: 'test' - ... -# Subtest: runDoctor: the real repository passes on a Node version at the floor -ok 350 - runDoctor: the real repository passes on a Node version at the floor - --- - duration_ms: 2.957887 - type: 'test' - ... -# Subtest: runDoctor: the real repository fails on Node v20 -ok 351 - runDoctor: the real repository fails on Node v20 - --- - duration_ms: 1.857059 - type: 'test' - ... -# Subtest: runDoctor: an empty root fails the plugin checks -ok 352 - runDoctor: an empty root fails the plugin checks - --- - duration_ms: 1.136929 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/install.test.js -not ok 100 - test/install.test.js - --- - duration_ms: 273.71776 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/install.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: a hex colour is not an issue reference -ok 354 - a hex colour is not an issue reference - --- - duration_ms: 3.132781 - type: 'test' - ... -# Subtest: a language version is not an issue reference -ok 355 - a language version is not an issue reference - --- - duration_ms: 0.621756 - type: 'test' - ... -# Subtest: a version string is not an issue reference -ok 356 - a version string is not an issue reference - --- - duration_ms: 0.219916 - type: 'test' - ... -# Subtest: an identifier is not an issue reference -ok 357 - an identifier is not an issue reference - --- - duration_ms: 0.196516 - type: 'test' - ... -# Subtest: a number running into letters is not an issue reference -ok 358 - a number running into letters is not an issue reference - --- - duration_ms: 0.210645 - type: 'test' - ... -# Subtest: a URL fragment is not an issue reference -ok 359 - a URL fragment is not an issue reference - --- - duration_ms: 0.202556 - type: 'test' - ... -# Subtest: a bare number still names the issue: \#1360 -ok 360 - a bare number still names the issue: \#1360 - --- - duration_ms: 0.428382 - type: 'test' - ... -# Subtest: a repository-qualified number still names the issue: owner/repo\#1360 -ok 361 - a repository-qualified number still names the issue: owner/repo\#1360 - --- - duration_ms: 0.39422 - type: 'test' - ... -# Subtest: a github issue URL still names the issue: https://github.com/o/r/issues/1360 -ok 362 - a github issue URL still names the issue: https://github.com/o/r/issues/1360 - --- - duration_ms: 1.13749 - type: 'test' - ... -# Subtest: a github pull URL still names the issue: https://github.com/o/r/pull/1360 -ok 363 - a github pull URL still names the issue: https://github.com/o/r/pull/1360 - --- - duration_ms: 0.959545 - type: 'test' - ... -# Subtest: a number after a Bot mention still names the issue: @Dev-2 rebase \#1360 -ok 364 - a number after a Bot mention still names the issue: @Dev-2 rebase \#1360 - --- - duration_ms: 0.366439 - type: 'test' - ... -# Subtest: a number in a sentence still names the issue: please rebase \#1360 onto main -ok 365 - a number in a sentence still names the issue: please rebase \#1360 onto main - --- - duration_ms: 0.173214 - type: 'test' - ... -# Subtest: numbers in brackets and punctuation still names the issue: (\#1360), \#1361. -ok 366 - numbers in brackets and punctuation still names the issue: (\#1360), \#1361. - --- - duration_ms: 0.159784 - type: 'test' - ... -# Subtest: namesIssue answers the same question, so a colour cannot name an issue -ok 367 - namesIssue answers the same question, so a colour cannot name an issue - --- - duration_ms: 0.501563 - type: 'test' - ... -# Subtest: columns follow the task state and a card carries id, priority and progress -ok 368 - columns follow the task state and a card carries id, priority and progress - --- - duration_ms: 2.829813 - type: 'test' - ... -# Subtest: the board draws the three columns, nests the child, and moves only the owner's card -ok 369 - the board draws the three columns, nests the child, and moves only the owner's card - --- - duration_ms: 6.15181 - type: 'test' - ... -# Subtest: a group column nests subtasks under the overall task -ok 370 - a group column nests subtasks under the overall task - --- - duration_ms: 2.428753 - type: 'test' - ... -# Subtest: the task dialog has no delivery metrics panel (\#1363) -ok 371 - the task dialog has no delivery metrics panel (\#1363) - --- - duration_ms: 2.239468 - type: 'test' - ... -# Subtest: the task dialog shows task cards without a GitHub read (\#1363) -ok 372 - the task dialog shows task cards without a GitHub read (\#1363) - --- - duration_ms: 1.300654 - type: 'test' - ... -# Subtest: the dialog nests a group subtask under its overall task (\#1358) -ok 373 - the dialog nests a group subtask under its overall task (\#1358) - --- - duration_ms: 1.839438 - type: 'test' - ... -# Subtest: Start and Complete fire from the task board -ok 374 - Start and Complete fire from the task board - --- - duration_ms: 1.808357 - type: 'test' - ... -# Subtest: \#1252: a group board renders the newest finished cards, not the oldest -ok 375 - \#1252: a group board renders the newest finished cards, not the oldest - --- - duration_ms: 0.712209 - type: 'test' - ... -# Subtest: \#1252: a Bot board asks the host for that Bot's archive, not the whole scope -ok 376 - \#1252: a Bot board asks the host for that Bot's archive, not the whole scope - --- - duration_ms: 16.17511 - type: 'test' - ... -# Subtest: \#2045: a full archive page says how many rows were drawn and that there are more, on a Bot board and a group board -ok 377 - \#2045: a full archive page says how many rows were drawn and that there are more, on a Bot board and a group board - --- - duration_ms: 41.303903 - type: 'test' - ... -# Subtest: \#2045: a page that is not full still reads as the whole history, unchanged -ok 378 - \#2045: a page that is not full still reads as the whole history, unchanged - --- - duration_ms: 11.344925 - type: 'test' - ... -# Subtest: \#2045: a Bot whose share of a full group page is drawn reads as a lower bound, not a total -ok 379 - \#2045: a Bot whose share of a full group page is drawn reads as a lower bound, not a total - --- - duration_ms: 8.459889 - type: 'test' - ... -# Subtest: \#2045: the rail hedge follows the Bot's drawn done rows, not its total -ok 380 - \#2045: the rail hedge follows the Bot's drawn done rows, not its total - --- - duration_ms: 5.463892 - type: 'test' - ... -# Subtest: P-364: a room board rail counts the room's active cards, not only its archive page -ok 381 - P-364: a room board rail counts the room's active cards, not only its archive page - --- - duration_ms: 1.357456 - type: 'test' - ... -# Subtest: P-364: the rail counts the list the board draws, never the one the other scope left behind -ok 382 - P-364: the rail counts the list the board draws, never the one the other scope left behind - --- - duration_ms: 1.690914 - type: 'test' - ... -# Subtest: P-360: switching the rail re-reads the archive, and the new Bot draws its own Done page -ok 383 - P-360: switching the rail re-reads the archive, and the new Bot draws its own Done page - --- - duration_ms: 31.057967 - type: 'test' - ... -# Subtest: \#2069: a room board reached from a Bot board counts each active card once in the rail -ok 384 - \#2069: a room board reached from a Bot board counts each active card once in the rail - --- - duration_ms: 7.390522 - type: 'test' - ... -# Subtest: a Done card says when it finished, from the first terminal actor entry -ok 385 - a Done card says when it finished, from the first terminal actor entry - --- - duration_ms: 0.909653 - type: 'test' - ... -# Subtest: an In progress card carries no finish time -ok 386 - an In progress card carries no finish time - --- - duration_ms: 0.599245 - type: 'test' - ... -# Subtest: a Done card with no actor entry falls back to updatedAt -ok 387 - a Done card with no actor entry falls back to updatedAt - --- - duration_ms: 0.542434 - type: 'test' - ... -# Subtest: a Done card without a usable timestamp draws no time and no Invalid Date -ok 388 - a Done card without a usable timestamp draws no time and no Invalid Date - --- - duration_ms: 0.672347 - type: 'test' - ... -# Subtest: a room board Done card says when it finished too -ok 389 - a room board Done card says when it finished too - --- - duration_ms: 0.541544 - type: 'test' - ... -# Subtest: a cancelled card is terminal: it sits in Done and says when it was cancelled -ok 390 - a cancelled card is terminal: it sits in Done and says when it was cancelled - --- - duration_ms: 0.492283 - type: 'test' - ... -# Subtest: a failed card is terminal: it sits in Done and says when it failed -ok 391 - a failed card is terminal: it sits in Done and says when it failed - --- - duration_ms: 0.487653 - type: 'test' - ... -# Subtest: a blocked or result-ready card is not terminal and stays In progress -ok 392 - a blocked or result-ready card is not terminal and stays In progress - --- - duration_ms: 0.682498 - type: 'test' - ... -# Subtest: a non-terminal actor entry does not end a Done card, even when it comes first -ok 393 - a non-terminal actor entry does not end a Done card, even when it comes first - --- - duration_ms: 0.543585 - type: 'test' - ... -# Subtest: P-455: a read-only window draws no write on the task board -ok 394 - P-455: a read-only window draws no write on the task board - --- - duration_ms: 9.862396 - type: 'test' - ... -# Subtest: counter-proof: a writable board keeps all four writes -ok 395 - counter-proof: a writable board keeps all four writes - --- - duration_ms: 6.826678 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/kickoff-line.test.js -not ok 103 - test/kickoff-line.test.js - --- - duration_ms: 109.212967 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/kickoff-line.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: an emptied view returns to the friend chat it held, not the Main Bot -ok 397 - an emptied view returns to the friend chat it held, not the Main Bot - --- - duration_ms: 2.954387 - type: 'test' - ... -# Subtest: a part archived for a fresh one goes on in the fresh part -ok 398 - a part archived for a fresh one goes on in the fresh part - --- - duration_ms: 0.270447 - type: 'test' - ... -# Subtest: a blank New Session the user opened, a removed Bot, or no last chat goes to the Main Bot -ok 399 - a blank New Session the user opened, a removed Bot, or no last chat goes to the Main Bot - --- - duration_ms: 0.261577 - type: 'test' - ... -# Subtest: \#261: a roster that lost the Bot keeps the held chat whose session still exists -ok 400 - \#261: a roster that lost the Bot keeps the held chat whose session still exists - --- - duration_ms: 0.586005 - type: 'test' - ... -# Subtest: \#261: a session that is gone, or a New Session the user opened, still goes to the Main Bot -ok 401 - \#261: a session that is gone, or a New Session the user opened, still goes to the Main Bot - --- - duration_ms: 0.337279 - type: 'test' - ... -# Subtest: a navigation with no user activation behind it is noted, with where it went and from where; a click is not -ok 402 - a navigation with no user activation behind it is noted, with where it went and from where; a click is not - --- - duration_ms: 1.954271 - type: 'test' - ... -# Subtest: \#1306: a destination the session list does not know is never handed to the shell -ok 403 - \#1306: a destination the session list does not know is never handed to the shell - --- - duration_ms: 0.541764 - type: 'test' - ... -# Subtest: a reply that still carries a legacy color id paints in the renamed ink -ok 404 - a reply that still carries a legacy color id paints in the renamed ink - --- - duration_ms: 1.385386 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/legacy-state.test.js -not ok 106 - test/legacy-state.test.js - --- - duration_ms: 199.935703 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/legacy-state.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: values saved under the dsh-bot keys move to the ds-bot keys -ok 406 - values saved under the dsh-bot keys move to the ds-bot keys - --- - duration_ms: 2.943086 - type: 'test' - ... -# Subtest: the dsh-bot-team keys move too, and the newer name wins -ok 407 - the dsh-bot-team keys move too, and the newer name wins - --- - duration_ms: 0.430441 - type: 'test' - ... -# Subtest: a value already under the current key is never overwritten -ok 408 - a value already under the current key is never overwritten - --- - duration_ms: 0.601266 - type: 'test' - ... -# Subtest: every current key has its legacy keys, and unusable storage is no error -ok 409 - every current key has its legacy keys, and unusable storage is no error - --- - duration_ms: 0.736399 - type: 'test' - ... -# Subtest: a saved legacy grok theme becomes the mono theme -ok 410 - a saved legacy grok theme becomes the mono theme - --- - duration_ms: 0.632637 - type: 'test' - ... -# Subtest: \#892: a room a link opened is named by its own name; a friend's shared room still says who shared it -ok 411 - \#892: a room a link opened is named by its own name; a friend's shared room still says who shared it - --- - duration_ms: 2.157836 - type: 'test' - ... -# Subtest: \#892: the sidebar, the header, its effects, the drawer and the brand all name a room through roomTitle -ok 412 - \#892: the sidebar, the header, its effects, the drawer and the brand all name a room through roomTitle - --- - duration_ms: 3.100891 - type: 'test' - ... -# Subtest: a friend chat does not take a local Bot's id or session in the roster index (\#963) -ok 413 - a friend chat does not take a local Bot's id or session in the roster index (\#963) - --- - duration_ms: 2.163227 - type: 'test' - ... -# Subtest: a member id resolves to the local Bot when a friend shares that key (\#963) -ok 414 - a member id resolves to the local Bot when a friend shares that key (\#963) - --- - duration_ms: 0.535764 - type: 'test' - ... -# Subtest: an @Name chip keeps the local Bot's look when a friend has the same name (\#963) -ok 415 - an @Name chip keeps the local Bot's look when a friend has the same name (\#963) - --- - duration_ms: 2.544296 - type: 'test' - ... -# Subtest: @Chief in a bubble names the local Bot when a friend is listed first (\#963) -ok 416 - @Chief in a bubble names the local Bot when a friend is listed first (\#963) - --- - duration_ms: 1.17363 - type: 'test' - ... -# Subtest: a friend seat does not cover the local Bot in a group icon (\#963) -ok 417 - a friend seat does not cover the local Bot in a group icon (\#963) - --- - duration_ms: 2.549217 - type: 'test' - ... -# Subtest: a Bot with no look of its own never gets the whale, gray, brown, or black -ok 418 - a Bot with no look of its own never gets the whale, gray, brown, or black - --- - duration_ms: 8.295176 - type: 'test' - ... -# Subtest: the whale is only a stored look: the browser gives no Bot a look by its place in the team -ok 419 - the whale is only a stored look: the browser gives no Bot a look by its place in the team - --- - duration_ms: 1.329284 - type: 'test' - ... -# Subtest: the whole Settings dialog is Settings; one Bot opens as Edit Bot or Bot settings; nothing is called Team settings -ok 420 - the whole Settings dialog is Settings; one Bot opens as Edit Bot or Bot settings; nothing is called Team settings - --- - duration_ms: 34.967149 - type: 'test' - ... -# Subtest: a friend's Bot fallback look never matches one of my own Bots exactly (\#384) -ok 421 - a friend's Bot fallback look never matches one of my own Bots exactly (\#384) - --- - duration_ms: 2.065603 - type: 'test' - ... -# Subtest: a friend Bot that shares a display name does not wear that local Bot's look (\#1069) -ok 422 - a friend Bot that shares a display name does not wear that local Bot's look (\#1069) - --- - duration_ms: 1.792407 - type: 'test' - ... -# Subtest: fallback avoidance treats a named ink and its published hex as one color, and survives a full shape set (\#384) -ok 423 - fallback avoidance treats a named ink and its published hex as one color, and survives a full shape set (\#384) - --- - duration_ms: 1.126389 - type: 'test' - ... -# Subtest: indexing the roster registers own Bots, so every BotMark of a friend avoids them (\#384) -ok 424 - indexing the roster registers own Bots, so every BotMark of a friend avoids them (\#384) - --- - duration_ms: 1.181491 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/meetings-decide-paths.test.js -not ok 111 - test/meetings-decide-paths.test.js - --- - duration_ms: 197.261244 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/meetings-decide-paths.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/meetings-persist.test.js -not ok 112 - test/meetings-persist.test.js - --- - duration_ms: 195.475057 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/meetings-persist.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/meetings.test.js -not ok 113 - test/meetings.test.js - --- - duration_ms: 193.411184 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/meetings.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: two members get different identities via invite then redeem -ok 428 - two members get different identities via invite then redeem - --- - duration_ms: 26.19166 - type: 'test' - ... -# Subtest: authenticate ignores forged strings; only a live session token works -ok 429 - authenticate ignores forged strings; only a live session token works - --- - duration_ms: 6.683564 - type: 'test' - ... -# Subtest: an invitation token cannot be replayed and an expired one fails -ok 430 - an invitation token cannot be replayed and an expired one fails - --- - duration_ms: 7.195827 - type: 'test' - ... -# Subtest: removeMember and revokeSession invalidate authenticate; last owner stays -ok 431 - removeMember and revokeSession invalidate authenticate; last owner stays - --- - duration_ms: 15.261776 - type: 'test' - ... -# Subtest: tokens are stored only as hashes; plaintext never reaches state.json -ok 432 - tokens are stored only as hashes; plaintext never reaches state.json - --- - duration_ms: 6.024947 - type: 'test' - ... -# Subtest: removeMember refuses while the member still owns a Bot; has_bots after delete -ok 433 - removeMember refuses while the member still owns a Bot; has_bots after delete - --- - duration_ms: 10.76901 - type: 'test' - ... -# Subtest: concurrent removeMember calls cannot both pass the last-owner check -ok 434 - concurrent removeMember calls cannot both pass the last-owner check - --- - duration_ms: 13.819599 - type: 'test' - ... -# Subtest: a revoked invitation cannot be redeemed or revoked twice -ok 435 - a revoked invitation cannot be redeemed or revoked twice - --- - duration_ms: 6.694984 - type: 'test' - ... -# Subtest: authInviteAllowed: bootstrap opens the first invite, then a session is required -ok 436 - authInviteAllowed: bootstrap opens the first invite, then a session is required - --- - duration_ms: 4.529808 - type: 'test' - ... -# Subtest: the members line names who waits for an approval first, then who is at work -ok 437 - the members line names who waits for an approval first, then who is at work - --- - duration_ms: 5.108153 - type: 'test' - ... -# Subtest: a member at work in the group gets a row, the speaker first; approvals go on the line, work elsewhere nowhere -ok 438 - a member at work in the group gets a row, the speaker first; approvals go on the line, work elsewhere nowhere - --- - duration_ms: 2.802393 - type: 'test' - ... -# Subtest: a Bot's own chat shows the groups it is at work in, unless its own chat runs -ok 439 - a Bot's own chat shows the groups it is at work in, unless its own chat runs - --- - duration_ms: 0.983006 - type: 'test' - ... -# Subtest: the approval card offers Always allow for this Bot, and for this group when the ask came from one -ok 440 - the approval card offers Always allow for this Bot, and for this group when the ask came from one - --- - duration_ms: 1.391086 - type: 'test' - ... -# Subtest: every member at work in the group, the speaker too, gets the same left row with its step and time -ok 441 - every member at work in the group, the speaker too, gets the same left row with its step and time - --- - duration_ms: 1.686493 - type: 'test' - ... -# Subtest: a Bot at work in another room shows nothing in this room or face room, not even a hint (\#553) -ok 442 - a Bot at work in another room shows nothing in this room or face room, not even a hint (\#553) - --- - duration_ms: 1.221052 - type: 'test' - ... -# Subtest: a Bot busy in its own chat, or waiting for an approval elsewhere, is idle in this room (\#553) -ok 443 - a Bot busy in its own chat, or waiting for an approval elsewhere, is idle in this room (\#553) - --- - duration_ms: 0.435751 - type: 'test' - ... -# Subtest: work handed out from this room with message_bot shows here with its step, and nowhere else (\#553) -ok 444 - work handed out from this room with message_bot shows here with its step, and nowhere else (\#553) - --- - duration_ms: 1.336485 - type: 'test' - ... -# Subtest: the approval card action row wraps and stays right-aligned -ok 445 - the approval card action row wraps and stays right-aligned - --- - duration_ms: 1.120719 - type: 'test' - ... -# Subtest: the approval card command wraps and scrolls instead of being clipped to one line -ok 446 - the approval card command wraps and scrolls instead of being clipped to one line - --- - duration_ms: 1.245293 - type: 'test' - ... -# Subtest: every rule prelude in the member sheet is a selector, so the command rule survives -ok 447 - every rule prelude in the member sheet is a selector, so the command rule survives - --- - duration_ms: 1.264512 - type: 'test' - ... -# Subtest: the own-chat dock counts the rooms it drops past four instead of ending silently (\#2043) -ok 448 - the own-chat dock counts the rooms it drops past four instead of ending silently (\#2043) - --- - duration_ms: 2.089764 - type: 'test' - ... -# Subtest: the counted line does not look clickable, and the group line still does -ok 449 - the counted line does not look clickable, and the group line still does - --- - duration_ms: 1.392626 - type: 'test' - ... -# Subtest: \#2101: a blocked empty view says which folder could not be read -ok 450 - \#2101: a blocked empty view says which folder could not be read - --- - duration_ms: 1.94617 - type: 'test' - ... -# Subtest: \#2101: an ordinary empty view adds nothing -ok 451 - \#2101: an ordinary empty view adds nothing - --- - duration_ms: 0.277867 - type: 'test' - ... -# Subtest: \#2101: one broken folder behind both scopes is named once -ok 452 - \#2101: one broken folder behind both scopes is named once - --- - duration_ms: 0.288918 - type: 'test' - ... -# Subtest: \#2101: entries are not the empty state, however the folder was read -ok 453 - \#2101: entries are not the empty state, however the folder was read - --- - duration_ms: 0.247946 - type: 'test' - ... -# Subtest: \#2101: a refused scope is named above the list, whatever the other scope holds -ok 454 - \#2101: a refused scope is named above the list, whatever the other scope holds - --- - duration_ms: 0.522893 - type: 'test' - ... -# Subtest: \#2101: a list with nothing refused adds nothing -ok 455 - \#2101: a list with nothing refused adds nothing - --- - duration_ms: 0.270217 - type: 'test' - ... -# Subtest: a Chinese query finds a Chinese entry, with no word split -ok 456 - a Chinese query finds a Chinese entry, with no word split - --- - duration_ms: 3.295956 - type: 'test' - ... -# Subtest: a word stem matches across endings, and ranking is deterministic -ok 457 - a word stem matches across endings, and ranking is deterministic - --- - duration_ms: 1.52764 - type: 'test' - ... -# Subtest: an empty query, and a tokenization with nothing to keep, return no hits -ok 458 - an empty query, and a tokenization with nothing to keep, return no hits - --- - duration_ms: 0.317478 - type: 'test' - ... -# Subtest: a two-way [[topic]] link does not loop, and a self-link is ignored -ok 459 - a two-way [[topic]] link does not loop, and a self-link is ignored - --- - duration_ms: 1.13205 - type: 'test' - ... -# Subtest: an unknown start is empty, and a topic with no link has no neighbours -ok 460 - an unknown start is empty, and a topic with no link has no neighbours - --- - duration_ms: 0.35416 - type: 'test' - ... -# Subtest: termsOf keeps words, adds a trigram of longer words, and splits CJK runs -ok 461 - termsOf keeps words, adds a trigram of longer words, and splits CJK runs - --- - duration_ms: 2.147756 - type: 'test' - ... -# Subtest: searchIndex finds an entry whose wording differs from the query -ok 462 - searchIndex finds an entry whose wording differs from the query - --- - duration_ms: 1.618132 - type: 'test' - ... -# Subtest: searchIndex ranks the entry that shares the rarer word higher -ok 463 - searchIndex ranks the entry that shares the rarer word higher - --- - duration_ms: 0.529804 - type: 'test' - ... -# Subtest: buildGraph and relatedOf walk [[links]] and who wrote an entry -ok 464 - buildGraph and relatedOf walk [[links]] and who wrote an entry - --- - duration_ms: 19.390553 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/memory.test.js -not ok 119 - test/memory.test.js - --- - duration_ms: 205.709653 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/memory.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: the reported handle seed is a green moon, not the stored blue whale -ok 466 - the reported handle seed is a green moon, not the stored blue whale - --- - duration_ms: 1.317814 - type: 'test' - ... -# Subtest: a face-room @ row and mention chip draw the stored friend look, not the handle seed (\#1088) -ok 467 - a face-room @ row and mention chip draw the stored friend look, not the handle seed (\#1088) - --- - duration_ms: 9.589209 - type: 'test' - ... -# Subtest: a face-room seat look is drawn when the friend has no chat yet (\#1088) -ok 468 - a face-room seat look is drawn when the friend has no chat yet (\#1088) - --- - duration_ms: 1.885759 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/mention-rule.test.js -not ok 121 - test/mention-rule.test.js - --- - duration_ms: 148.144838 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/mention-rule.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: a bare name is ordinary text, even when a Bot has that name -ok 470 - a bare name is ordinary text, even when a Bot has that name - --- - duration_ms: 1.649663 - type: 'test' - ... -# Subtest: a Bot naming itself is not taken for a Bot whose name is a prefix of its own -ok 471 - a Bot naming itself is not taken for a Bot whose name is a prefix of its own - --- - duration_ms: 1.140439 - type: 'test' - ... -# Subtest: the longest name wins, and other Bots are still linked -ok 472 - the longest name wins, and other Bots are still linked - --- - duration_ms: 1.098079 - type: 'test' - ... -# Subtest: addresses, longer words and code are left alone -ok 473 - addresses, longer words and code are left alone - --- - duration_ms: 0.635966 - type: 'test' - ... -# Subtest: every phone rule sits inside one max-width media query at 640px -ok 474 - every phone rule sits inside one max-width media query at 640px - --- - duration_ms: 3.903051 - type: 'test' - ... -# Subtest: held-reply and floating approval buttons are touch-sized, Approve filled -ok 475 - held-reply and floating approval buttons are touch-sized, Approve filled - --- - duration_ms: 0.813581 - type: 'test' - ... -# Subtest: floating cards span the screen beside the icon rail, not over the top + or the account -ok 476 - floating cards span the screen beside the icon rail, not over the top + or the account - --- - duration_ms: 0.437972 - type: 'test' - ... -# Subtest: inbox cards wrap their actions under the text so the title stays readable -ok 477 - inbox cards wrap their actions under the text so the title stays readable - --- - duration_ms: 0.984966 - type: 'test' - ... -# Subtest: the client installs the phone styles after the shell styles they override -ok 478 - the client installs the phone styles after the shell styles they override - --- - duration_ms: 12.241318 - type: 'test' - ... -# Subtest: the mock treats the caller as admin from the system section, not the turn (\#917) -ok 479 - the mock treats the caller as admin from the system section, not the turn (\#917) - --- - duration_ms: 6.410636 - type: 'test' - ... -# Subtest: 长任务 writes text on every step when the step size is left out -ok 480 - 长任务 writes text on every step when the step size is left out - --- - duration_ms: 257.520059 - type: 'test' - ... -# Subtest: the first model choice shows provider groups and keeps each model route -ok 481 - the first model choice shows provider groups and keeps each model route - --- - duration_ms: 4.650831 - type: 'test' - ... -# Subtest: providers with the same display name stay distinct, and unnamed providers use their id -ok 482 - providers with the same display name stay distinct, and unnamed providers use their id - --- - duration_ms: 0.557045 - type: 'test' - ... -# Subtest: an unavailable model offers the same provider groups -ok 483 - an unavailable model offers the same provider groups - --- - duration_ms: 0.652897 - type: 'test' - ... -# Subtest: an empty catalog offers setup choices, and a ready model needs no choice dock -ok 484 - an empty catalog offers setup choices, and a ready model needs no choice dock - --- - duration_ms: 0.616216 - type: 'test' - ... -# Subtest: the Thinking section always offers Default, so a picked level can be cleared -ok 485 - the Thinking section always offers Default, so a picked level can be cleared - --- - duration_ms: 0.707448 - type: 'test' - ... -# Subtest: a friend's Bot never gets the lost-model picker; an ended share says why instead -ok 486 - a friend's Bot never gets the lost-model picker; an ended share says why instead - --- - duration_ms: 0.554414 - type: 'test' - ... -# Subtest: a run that failed for a missing API key offers the model setup right under it (\#405) -ok 487 - a run that failed for a missing API key offers the model setup right under it (\#405) - --- - duration_ms: 2.374192 - type: 'test' - ... -# Subtest: the DeepSeek key guide opens FlyBot's doc in a new tab (\#451) -ok 488 - the DeepSeek key guide opens FlyBot's doc in a new tab (\#451) - --- - duration_ms: 0.557775 - type: 'test' - ... -# Subtest: a passing test names the model and how long it took -ok 489 - a passing test names the model and how long it took - --- - duration_ms: 2.808163 - type: 'test' - ... -# Subtest: each failure code reads as a short, actionable reason, and an unknown code stays generic -ok 490 - each failure code reads as a short, actionable reason, and an unknown code stays generic - --- - duration_ms: 0.586786 - type: 'test' - ... -# Subtest: the row offers Test connection and says the request may be billed -ok 491 - the row offers Test connection and says the request may be billed - --- - duration_ms: 0.915064 - type: 'test' - ... -# Subtest: opened on purpose, the step opens the Models section and hands back -ok 492 - opened on purpose, the step opens the Models section and hands back - --- - duration_ms: 2.393362 - type: 'test' - ... -# Subtest: in first-run onboarding the step skips itself without opening Settings -ok 493 - in first-run onboarding the step skips itself without opening Settings - --- - duration_ms: 0.38937 - type: 'test' - ... -# Subtest: openHarnessModels asks the launcher seat for the FlyBot step, not plain Settings -ok 494 - openHarnessModels asks the launcher seat for the FlyBot step, not plain Settings - --- - duration_ms: 0.976546 - type: 'test' - ... -# Subtest: the step is registered and every models entry uses it (\#407) -ok 495 - the step is registered and every models entry uses it (\#407) - --- - duration_ms: 1.245072 - type: 'test' - ... -# Subtest: the default model is the DSH default when served, else the first served model -ok 496 - the default model is the DSH default when served, else the first served model - --- - duration_ms: 3.589053 - type: 'test' - ... -# Subtest: a model is named by its ref, or by an id or name only one provider serves -ok 497 - a model is named by its ref, or by an id or name only one provider serves - --- - duration_ms: 3.305966 - type: 'test' - ... -# Subtest: a Bot runs on its own model, else the one it last ran on, else the default -ok 498 - a Bot runs on its own model, else the one it last ran on, else the default - --- - duration_ms: 0.627367 - type: 'test' - ... -# Subtest: choosing a Bot model leaves the user's DSH default model as it was -ok 499 - choosing a Bot model leaves the user's DSH default model as it was - --- - duration_ms: 2.109025 - type: 'test' - ... -# Subtest: a Bot with no model yet changes nothing until the user picks one -ok 500 - a Bot with no model yet changes nothing until the user picks one - --- - duration_ms: 0.472412 - type: 'test' - ... -# Subtest: the catalog is every model DSH serves, with no lab -ok 501 - the catalog is every model DSH serves, with no lab - --- - duration_ms: 1.063628 - type: 'test' - ... -# Subtest: a fresh catalog sees a model list changed in DSH settings at once -ok 502 - a fresh catalog sees a model list changed in DSH settings at once - --- - duration_ms: 0.965305 - type: 'test' - ... -# Subtest: applying a Bot model leaves the DSH default as the user set it -ok 503 - applying a Bot model leaves the DSH default as the user set it - --- - duration_ms: 1.081828 - type: 'test' - ... -# Subtest: a Bot model applies its thinking level, and only re-selects on a change -ok 504 - a Bot model applies its thinking level, and only re-selects on a change - --- - duration_ms: 2.080264 - type: 'test' - ... -# Subtest: a settled record still re-selects a group Session left on another provider (\#1127) -ok 505 - a settled record still re-selects a group Session left on another provider (\#1127) - --- - duration_ms: 2.442444 - type: 'test' - ... -# Subtest: force-apply re-selects every group Session even when the record already matches (\#1127) -ok 506 - force-apply re-selects every group Session even when the record already matches (\#1127) - --- - duration_ms: 0.956574 - type: 'test' - ... -# Subtest: a drifted group Session that refuses the model marks the Bot stale (\#1127) -ok 507 - a drifted group Session that refuses the model marks the Bot stale (\#1127) - --- - duration_ms: 0.803681 - type: 'test' - ... -# Subtest: a group Session that did not take the model keeps the Bot stale and is retried (\#289) -ok 508 - a group Session that did not take the model keeps the Bot stale and is retried (\#289) - --- - duration_ms: 1.432677 - type: 'test' - ... -# Subtest: resolveEffort takes an id or a name, and refuses what the model has not -ok 509 - resolveEffort takes an id or a name, and refuses what the model has not - --- - duration_ms: 0.764389 - type: 'test' - ... -# Subtest: the catalog attaches thinking levels to models a Bot uses -ok 510 - the catalog attaches thinking levels to models a Bot uses - --- - duration_ms: 0.622986 - type: 'test' - ... -# Subtest: a model is applied once the provider of its Bot registers -ok 511 - a model is applied once the provider of its Bot registers - --- - duration_ms: 21.097168 - type: 'test' - ... -# Subtest: a Bot on the default model with its own thinking level leaves the default level as it was -ok 512 - a Bot on the default model with its own thinking level leaves the default level as it was - --- - duration_ms: 0.882273 - type: 'test' - ... -# Subtest: a connection test sends one tiny request on the Bot's own route and reports success -ok 513 - a connection test sends one tiny request on the Bot's own route and reports success - --- - duration_ms: 1.808547 - type: 'test' - ... -# Subtest: a reply cut off at the token limit still counts as a working connection -ok 514 - a reply cut off at the token limit still counts as a working connection - --- - duration_ms: 0.502383 - type: 'test' - ... -# Subtest: a failed test answers with a code only, never the provider text -ok 515 - a failed test answers with a code only, never the provider text - --- - duration_ms: 6.077458 - type: 'test' - ... -# Subtest: an aborted or throwing test is a timeout or a coded failure, not an exception -ok 516 - an aborted or throwing test is a timeout or a coded failure, not an exception - --- - duration_ms: 1.056987 - type: 'test' - ... -# Subtest: a Bot runs one test at a time, and a Bot with no model sends nothing -ok 517 - a Bot runs one test at a time, and a Bot with no model sends nothing - --- - duration_ms: 1.136299 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/mutate-writers.test.js -not ok 130 - test/mutate-writers.test.js - --- - duration_ms: 229.84318 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/mutate-writers.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: \#705: a narrow window shrinks the Details panel before it starves the conversation -ok 519 - \#705: a narrow window shrinks the Details panel before it starves the conversation - --- - duration_ms: 2.609058 - type: 'test' - ... -# Subtest: \#705: every pane the row flexes can shrink, and a long value wraps instead of widening it -ok 520 - \#705: every pane the row flexes can shrink, and a long value wraps instead of widening it - --- - duration_ms: 0.957845 - type: 'test' - ... -# Subtest: \#705: the client installs the pane rules after the shell styles it overrides, and ships them -ok 521 - \#705: the client installs the pane rules after the shell styles it overrides, and ships them - --- - duration_ms: 14.218059 - type: 'test' - ... -# Subtest: + menu: an action row puts its description under the title, always, so hovering never hides the title -ok 522 - + menu: an action row puts its description under the title, always, so hovering never hides the title - --- - duration_ms: 2.016962 - type: 'test' - ... -# Subtest: + menu: the inline hint is capped and ellipsized, the copy column and its subline wrap -ok 523 - + menu: the inline hint is capped and ellipsized, the copy column and its subline wrap - --- - duration_ms: 1.92259 - type: 'test' - ... -# Subtest: picker hides gone, hidden, and home-level remotes; labels include the owner -ok 524 - picker hides gone, hidden, and home-level remotes; labels include the owner - --- - duration_ms: 4.625241 - type: 'test' - ... -# Subtest: new-chat splits a friend's Bot out of local members into remote participants -ok 525 - new-chat splits a friend's Bot out of local members into remote participants - --- - duration_ms: 0.699908 - type: 'test' - ... -# Subtest: the sidebar + menu wires plugin actions in after New group chat -ok 526 - the sidebar + menu wires plugin actions in after New group chat - --- - duration_ms: 4.433755 - type: 'test' - ... -# Subtest: the sidebar + menu is a compact popover next to +, closed by a press outside (\#173) -ok 527 - the sidebar + menu is a compact popover next to +, closed by a press outside (\#173) - --- - duration_ms: 1.727345 - type: 'test' - ... -# Subtest: ungrantedLocalFix reads the host refusal defensively -ok 528 - ungrantedLocalFix reads the host refusal defensively - --- - duration_ms: 1.129529 - type: 'test' - ... -# Subtest: new-chat turns a refused group into a card with the invite and leave-out actions, never a dead end -ok 529 - new-chat turns a refused group into a card with the invite and leave-out actions, never a dead end - --- - duration_ms: 0.790091 - type: 'test' - ... -# Subtest: copiedToClipboard is true only when the clipboard really took the text -ok 530 - copiedToClipboard is true only when the clipboard really took the text - --- - duration_ms: 4.22292 - type: 'test' - ... -# Subtest: Copy invite link says copied only after a real copy, else shows the link to copy by hand -ok 531 - Copy invite link says copied only after a real copy, else shows the link to copy by hand - --- - duration_ms: 0.734559 - type: 'test' - ... -# Subtest: \#385: the + menu rows have their own marks, one verb style and short hints; a Bot menu has one way to edit it -ok 532 - \#385: the + menu rows have their own marks, one verb style and short hints; a Bot menu has one way to edit it - --- - duration_ms: 3.583243 - type: 'test' - ... -# Subtest: \#645: a line typed in the composer is the new Bot's first turn, not its instructions -ok 533 - \#645: a line typed in the composer is the new Bot's first turn, not its instructions - --- - duration_ms: 1.789467 - type: 'test' - ... -# Subtest: \#956: a row is kept for a share that ended, dropped for a hide the user set -ok 534 - \#956: a row is kept for a share that ended, dropped for a hide the user set - --- - duration_ms: 0.673668 - type: 'test' - ... -# Subtest: \#1363: the delivery board files are gone -ok 535 - \#1363: the delivery board files are gone - --- - duration_ms: 1.934111 - type: 'test' - ... -# Subtest: \#1363: the host does not serve delivery-board or delivery-probe -ok 536 - \#1363: the host does not serve delivery-board or delivery-probe - --- - duration_ms: 1.280703 - type: 'test' - ... -# Subtest: \#1363: the task board does not mount the delivery view -ok 537 - \#1363: the task board does not mount the delivery view - --- - duration_ms: 1.331485 - type: 'test' - ... -# Subtest: \#1376: the dead nesting helper is gone and nothing names it -ok 538 - \#1376: the dead nesting helper is gone and nothing names it - --- - duration_ms: 74.108435 - type: 'test' - ... -# Subtest: \#355: a reminder reaches the transport in Slack chat.postMessage shape -ok 539 - \#355: a reminder reaches the transport in Slack chat.postMessage shape - --- - duration_ms: 3.990093 - type: 'test' - ... -# Subtest: \#355: the same reminder handed over twice is one message -ok 540 - \#355: the same reminder handed over twice is one message - --- - duration_ms: 0.508613 - type: 'test' - ... -# (node:1237309) ExperimentalWarning: The MockTimers API is an experimental feature and might change at any time -# (Use `node --trace-warnings ...` to show where the warning was created) -# Subtest: \#355: a second send for a reminder already in flight joins it instead of starting another -ok 541 - \#355: a second send for a reminder already in flight joins it instead of starting another - --- - duration_ms: 11.136839 - type: 'test' - ... -# Subtest: \#355: a rate limit waits what Retry-After asks, then sends once -ok 542 - \#355: a rate limit waits what Retry-After asks, then sends once - --- - duration_ms: 3.347237 - type: 'test' - ... -# Subtest: \#355: a broken link backs off further on each attempt -ok 543 - \#355: a broken link backs off further on each attempt - --- - duration_ms: 1.002006 - type: 'test' - ... -# Subtest: \#355: a thrown transport error is a broken link, not a reason to give up -ok 544 - \#355: a thrown transport error is a broken link, not a reason to give up - --- - duration_ms: 2.159686 - type: 'test' - ... -# Subtest: \#355: three failed attempts end the delivery, and a later run may try again -ok 545 - \#355: three failed attempts end the delivery, and a later run may try again - --- - duration_ms: 1.711484 - type: 'test' - ... -# Subtest: \#355: Slack's own transient codes are retried, not remembered as permanent -ok 546 - \#355: Slack's own transient codes are retried, not remembered as permanent - --- - duration_ms: 1.484448 - type: 'test' - ... -# Subtest: \#355: a missing channel is a permanent failure and is not retried -ok 547 - \#355: a missing channel is a permanent failure and is not retried - --- - duration_ms: 1.309474 - type: 'test' - ... -# Subtest: \#355: a channel that is off makes no transport call at all -ok 548 - \#355: a channel that is off makes no transport call at all - --- - duration_ms: 1.191371 - type: 'test' - ... -# Subtest: \#355: switching a channel off stops a reminder that is waiting to retry -ok 549 - \#355: switching a channel off stops a reminder that is waiting to retry - --- - duration_ms: 5.107522 - type: 'test' - ... -# Subtest: \#355: a reminder needs a key and something to say -ok 550 - \#355: a reminder needs a key and something to say - --- - duration_ms: 1.238212 - type: 'test' - ... -# Subtest: \#254: the approvals overlay renders again with the same hooks when the first held message arrives -ok 551 - \#254: the approvals overlay renders again with the same hooks when the first held message arrives - --- - duration_ms: 32.603816 - type: 'test' - ... -# Subtest: \#260: one card per approval: a dock-drawn one is not repeated, and reads like the dock's card -ok 552 - \#260: one card per approval: a dock-drawn one is not repeated, and reads like the dock's card - --- - duration_ms: 1.5531 - type: 'test' - ... -# Subtest: \#260: an approval no open chat shows becomes a pointer to its chat, after a short wait -ok 553 - \#260: an approval no open chat shows becomes a pointer to its chat, after a short wait - --- - duration_ms: 3.024639 - type: 'test' - ... -# Subtest: \#271: no pointer for an approval whose chat is the open one, whatever the open chat draws -ok 554 - \#271: no pointer for an approval whose chat is the open one, whatever the open chat draws - --- - duration_ms: 1.764896 - type: 'test' - ... -# Subtest: \#998: the session dock tells a slot whether the chat is still blank -ok 555 - \#998: the session dock tells a slot whether the chat is still blank - --- - duration_ms: 1.102359 - type: 'test' - ... -# Subtest: \#1347: a blank Bot chat draws its own strip, and only while it is blank -ok 556 - \#1347: a blank Bot chat draws its own strip, and only while it is blank - --- - duration_ms: 1.414817 - type: 'test' - ... -# Subtest: \#968: a terminal failed approval draws no Retry in the dock card -ok 557 - \#968: a terminal failed approval draws no Retry in the dock card - --- - duration_ms: 1.54176 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/own-keys.test.js -not ok 137 - test/own-keys.test.js - --- - duration_ms: 216.932875 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/own-keys.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: \#1347: a trace indented with spaces is read as previewOf reads it -ok 559 - \#1347: a trace indented with spaces is read as previewOf reads it - --- - duration_ms: 8.709236 - type: 'test' - ... -# Subtest: \#1347: a trace split by tabs is read as previewOf reads it -ok 560 - \#1347: a trace split by tabs is read as previewOf reads it - --- - duration_ms: 1.241562 - type: 'test' - ... -# Subtest: \#1347: a trace with doubled spaces is read as previewOf reads it -ok 561 - \#1347: a trace with doubled spaces is read as previewOf reads it - --- - duration_ms: 0.928714 - type: 'test' - ... -# Subtest: \#1347: a trace with mixed indentation is read as previewOf reads it -ok 562 - \#1347: a trace with mixed indentation is read as previewOf reads it - --- - duration_ms: 0.830831 - type: 'test' - ... -# Subtest: \#1347: a trace after a header is read as previewOf reads it -ok 563 - \#1347: a trace after a header is read as previewOf reads it - --- - duration_ms: 1.365465 - type: 'test' - ... -# Subtest: \#1347: a wrapped multi-line line is read as previewOf reads it -ok 564 - \#1347: a wrapped multi-line line is read as previewOf reads it - --- - duration_ms: 1.386566 - type: 'test' - ... -# Subtest: \#1347: a fence fragment after a trace is read as previewOf reads it -ok 565 - \#1347: a fence fragment after a trace is read as previewOf reads it - --- - duration_ms: 4.23073 - type: 'test' - ... -# Subtest: \#1408: a trace inside a fence reads as its words -ok 566 - \#1408: a trace inside a fence reads as its words - --- - duration_ms: 0.621847 - type: 'test' - ... -# Subtest: \#1408: an ordinary arrow line is not a trace -ok 567 - \#1408: an ordinary arrow line is not a trace - --- - duration_ms: 2.126775 - type: 'test' - ... -# Subtest: \#1408: a known-name trace loses its routing, whole names only -ok 568 - \#1408: a known-name trace loses its routing, whole names only - --- - duration_ms: 1.585081 - type: 'test' - ... -# Subtest: \#1408: no names, no trace removal -ok 569 - \#1408: no names, no trace removal - --- - duration_ms: 0.534233 - type: 'test' - ... -# Subtest: previewOf falls back to an older turn when the newest turn is empty -ok 570 - previewOf falls back to an older turn when the newest turn is empty - --- - duration_ms: 0.556945 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/part-archive.test.js -not ok 139 - test/part-archive.test.js - --- - duration_ms: 222.250823 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/part-archive.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: a Bot's preset is set on its chat and its group Sessions -ok 572 - a Bot's preset is set on its chat and its group Sessions - --- - duration_ms: 3.195963 - type: 'test' - ... -# Subtest: a fresh Session gets the Bot's preset, and a Bot without one keeps the default -ok 573 - a fresh Session gets the Bot's preset, and a Bot without one keeps the default - --- - duration_ms: 0.38257 - type: 'test' - ... -# Subtest: an unknown preset is refused and the Bot keeps its own -ok 574 - an unknown preset is refused and the Bot keeps its own - --- - duration_ms: 1.133179 - type: 'test' - ... -# Subtest: the catalog lists the presets DSH offers, or nothing without the presets service -ok 575 - the catalog lists the presets DSH offers, or nothing without the presets service - --- - duration_ms: 0.707628 - type: 'test' - ... -# Subtest: Auto review is not offered or kept as a Bot's preset -ok 576 - Auto review is not offered or kept as a Bot's preset - --- - duration_ms: 0.77384 - type: 'test' - ... -# Subtest: a preset the Bot's own chat refuses is not kept -ok 577 - a preset the Bot's own chat refuses is not kept - --- - duration_ms: 0.397481 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/plugin-model.test.js -not ok 141 - test/plugin-model.test.js - --- - duration_ms: 90.215773 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/plugin-model.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/pre-step-compaction.test.js -not ok 142 - test/pre-step-compaction.test.js - --- - duration_ms: 92.01065 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/pre-step-compaction.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/project-assistant.test.js -not ok 143 - test/project-assistant.test.js - --- - duration_ms: 221.153265 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/project-assistant.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: \#1701: a board row shows the task title, its priority and the board that owns it -ok 581 - \#1701: a board row shows the task title, its priority and the board that owns it - --- - duration_ms: 56.920968 - type: 'test' - ... -# Subtest: \#1701: a board row draws the title and opens the board that owns the task -ok 582 - \#1701: a board row draws the title and opens the board that owns the task - --- - duration_ms: 32.163215 - type: 'test' - ... -# Subtest: \#1854: the Tasks dialog has no second entry to the Project board -ok 583 - \#1854: the Tasks dialog has no second entry to the Project board - --- - duration_ms: 34.702271 - type: 'test' - ... -# Subtest: \#1701: the three board columns have their own labels -ok 584 - \#1701: the three board columns have their own labels - --- - duration_ms: 20.105273 - type: 'test' - ... -# Subtest: \#1701: the Tasks board reads the task hash and lands on that board -ok 585 - \#1701: the Tasks board reads the task hash and lands on that board - --- - duration_ms: 28.365997 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-tools' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/project-board-levels.test.js -not ok 145 - test/project-board-levels.test.js - --- - duration_ms: 161.099444 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/project-board-levels.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/project-board-panels.test.js -not ok 146 - test/project-board-panels.test.js - --- - duration_ms: 229.901251 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/project-board-panels.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: the board groups rows by their source and keeps each task id -ok 588 - the board groups rows by their source and keeps each task id - --- - duration_ms: 4.653151 - type: 'test' - ... -# Subtest: \#P-167: a finished card keeps its title and priority with no task record to join -ok 589 - \#P-167: a finished card keeps its title and priority with no task record to join - --- - duration_ms: 3.353507 - type: 'test' - ... -# Subtest: \#2198: a finished card opens the board its row names, with no task record to join -ok 590 - \#2198: a finished card opens the board its row names, with no task record to join - --- - duration_ms: 1.396576 - type: 'test' - ... -# Subtest: a workflow row carries its run and node; other rows carry none -ok 591 - a workflow row carries its run and node; other rows carry none - --- - duration_ms: 0.611546 - type: 'test' - ... -# Subtest: a Project with nothing under it is an empty state, not an error -ok 592 - a Project with nothing under it is an empty state, not an error - --- - duration_ms: 1.135259 - type: 'test' - ... -# Subtest: the pane draws the grouped rows and both management buttons, owner or not (\#1749) -ok 593 - the pane draws the grouped rows and both management buttons, owner or not (\#1749) - --- - duration_ms: 2.262209 - type: 'test' - ... -# Subtest: an empty Project renders the empty text and no row -ok 594 - an empty Project renders the empty text and no row - --- - duration_ms: 1.013727 - type: 'test' - ... -# Subtest: a Project-less entry offers the page that creates one (\#1766) -ok 595 - a Project-less entry offers the page that creates one (\#1766) - --- - duration_ms: 16.257062 - type: 'test' - ... -# Subtest: \#1767: the view carries the decisions with their hash and the meetings apart -ok 596 - \#1767: the view carries the decisions with their hash and the meetings apart - --- - duration_ms: 2.004792 - type: 'test' - ... -# Subtest: \#1767: the pane draws the record under the cards, and a deliberating meeting is never a decision -ok 597 - \#1767: the pane draws the record under the cards, and a deliberating meeting is never a decision - --- - duration_ms: 2.797983 - type: 'test' - ... -# Subtest: \#1767: an empty record names the folder it read and the missing decision file -ok 598 - \#1767: an empty record names the folder it read and the missing decision file - --- - duration_ms: 0.78704 - type: 'test' - ... -# Subtest: \#1768: the view carries the three groups and the header counts -ok 599 - \#1768: the view carries the three groups and the header counts - --- - duration_ms: 1.093228 - type: 'test' - ... -# Subtest: \#1896: a sub-minute wait and a sub-minute median read in seconds, never 0 -ok 600 - \#1896: a sub-minute wait and a sub-minute median read in seconds, never 0 - --- - duration_ms: 1.616492 - type: 'test' - ... -# Subtest: \#1768: an unreadable count stays unknown and is never rendered as 0 -ok 601 - \#1768: an unreadable count stays unknown and is never rendered as 0 - --- - duration_ms: 0.810361 - type: 'test' - ... -# Subtest: \#1768: the pane draws each group and a blocked card shows its reason -ok 602 - \#1768: the pane draws each group and a blocked card shows its reason - --- - duration_ms: 2.150376 - type: 'test' - ... -# Subtest: \#2029: a blocked row says how long it has been stuck, and nothing when the host has no stamp -ok 603 - \#2029: a blocked row says how long it has been stuck, and nothing when the host has no stamp - --- - duration_ms: 2.144655 - type: 'test' - ... -# Subtest: \#1814: an open board reads on every tick, stops once a row opens its own board or the tab hides, and resumes -ok 604 - \#1814: an open board reads on every tick, stops once a row opens its own board or the tab hides, and resumes - --- - duration_ms: 48.861209 - type: 'test' - ... -# Subtest: \#1900: an open board reads the dossier once, never on a tick -ok 605 - \#1900: an open board reads the dossier once, never on a tick - --- - duration_ms: 8.803278 - type: 'test' - ... -# Subtest: \#1913: a refused dossier refresh keeps the rows the panel already had -ok 606 - \#1913: a refused dossier refresh keeps the rows the panel already had - --- - duration_ms: 4.475156 - type: 'test' - ... -# Subtest: \#1910: a refused dossier read at open is asked again on the next tick, then frozen -ok 607 - \#1910: a refused dossier read at open is asked again on the next tick, then frozen - --- - duration_ms: 7.452813 - type: 'test' - ... -# Subtest: \#1814: a failing poll keeps the board the last good read drew -ok 608 - \#1814: a failing poll keeps the board the last good read drew - --- - duration_ms: 4.799564 - type: 'test' - ... -# Subtest: \#1814: a read that lands after the board closed is dropped -ok 609 - \#1814: a read that lands after the board closed is dropped - --- - duration_ms: 6.100418 - type: 'test' - ... -# Subtest: \#1814: a second read moves one card to stalled and a waiting card in flight in the same render -ok 610 - \#1814: a second read moves one card to stalled and a waiting card in flight in the same render - --- - duration_ms: 4.666681 - type: 'test' - ... -# Subtest: the metric cards are the seven the issue fixed, each with a caption -ok 611 - the metric cards are the seven the issue fixed, each with a caption - --- - duration_ms: 0.515193 - type: 'test' - ... -# Subtest: an unavailable read says why and draws no number -ok 612 - an unavailable read says why and draws no number - --- - duration_ms: 0.319458 - type: 'test' - ... -# Subtest: a running row carries who, claim age, source and activity, and opens its board -ok 613 - a running row carries who, claim age, source and activity, and opens its board - --- - duration_ms: 0.481772 - type: 'test' - ... -# Subtest: \#1855: the view keeps finished cards out of the three groups and in one archive -ok 614 - \#1855: the view keeps finished cards out of the three groups and in one archive - --- - duration_ms: 4.722323 - type: 'test' - ... -# Subtest: \#1855: the archive is a collapsed group on first paint and the header keeps the count -ok 615 - \#1855: the archive is a collapsed group on first paint and the header keeps the count - --- - duration_ms: 5.854913 - type: 'test' - ... -# Subtest: \#2021: a decision total above the drawn rows draws one line and rides on the section -ok 616 - \#2021: a decision total above the drawn rows draws one line and rides on the section - --- - duration_ms: 1.15495 - type: 'test' - ... -# Subtest: \#2021: no total, or one that matches, draws no line — and each meeting list says its own -ok 617 - \#2021: no total, or one that matches, draws no line — and each meeting list says its own - --- - duration_ms: 2.237269 - type: 'test' - ... -# Subtest: \#2041: activating a decision row asks for that row and draws its text under it -ok 618 - \#2041: activating a decision row asks for that row and draws its text under it - --- - duration_ms: 7.542956 - type: 'test' - ... -# Subtest: \#2041: a second activation collapses the open decision, one row at a time -ok 619 - \#2041: a second activation collapses the open decision, one row at a time - --- - duration_ms: 5.969545 - type: 'test' - ... -# Subtest: \#2041: each refused answer reads its own sentence, never the markup it carries -ok 620 - \#2041: each refused answer reads its own sentence, never the markup it carries - --- - duration_ms: 12.031833 - type: 'test' - ... -# Subtest: \#2041: an answer that lands after another row opened is never drawn -ok 621 - \#2041: an answer that lands after another row opened is never drawn - --- - duration_ms: 5.454112 - type: 'test' - ... -# Subtest: \#2041: the overlay hands the board its own read, so a row opens through it -ok 622 - \#2041: the overlay hands the board its own read, so a row opens through it - --- - duration_ms: 4.361193 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/project-board.test.js -not ok 148 - test/project-board.test.js - --- - duration_ms: 207.955462 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/project-board.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/project-digest-authz.test.js -not ok 149 - test/project-digest-authz.test.js - --- - duration_ms: 218.166527 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/project-digest-authz.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/project-metrics-scope.test.js -not ok 150 - test/project-metrics-scope.test.js - --- - duration_ms: 257.599701 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/project-metrics-scope.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: the natural day is the reader zone, not UTC -ok 626 - the natural day is the reader zone, not UTC - --- - duration_ms: 33.130261 - type: 'test' - ... -# Subtest: a day count compares the field it documents -ok 627 - a day count compares the field it documents - --- - duration_ms: 1.744885 - type: 'test' - ... -# Subtest: an empty window is null, never zero, and median halves round -ok 628 - an empty window is null, never zero, and median halves round - --- - duration_ms: 0.888563 - type: 'test' - ... -# Subtest: durations are the last seven days only -ok 629 - durations are the last seven days only - --- - duration_ms: 1.260383 - type: 'test' - ... -# Subtest: no credential answers unavailable without a request -ok 630 - no credential answers unavailable without a request - --- - duration_ms: 1.374176 - type: 'test' - ... -# Subtest: a failed read degrades and is not cached -ok 631 - a failed read degrades and is not cached - --- - duration_ms: 1.275473 - type: 'test' - ... -# Subtest: a cache hit spends the source once -ok 632 - a cache hit spends the source once - --- - duration_ms: 4.449916 - type: 'test' - ... -# Subtest: a card claimed after a cached read still shows as running -ok 633 - a card claimed after a cached read still shows as running - --- - duration_ms: 2.966587 - type: 'test' - ... -# Subtest: a running row carries who, how long and where from -ok 634 - a running row carries who, how long and where from - --- - duration_ms: 1.066478 - type: 'test' - ... -# Subtest: the task median reads the store stamps only -ok 635 - the task median reads the store stamps only - --- - duration_ms: 1.615922 - type: 'test' - ... -# Subtest: \#1849: an unknown zone answers the named UTC fallback on every path -ok 636 - \#1849: an unknown zone answers the named UTC fallback on every path - --- - duration_ms: 4.118497 - type: 'test' - ... -# Subtest: \#1849: a valid zone keeps the day boundary and the answer it had -ok 637 - \#1849: a valid zone keeps the day boundary and the answer it had - --- - duration_ms: 2.012472 - type: 'test' - ... -# Subtest: a card that finished the way the host finishes cards is a done duration -ok 638 - a card that finished the way the host finishes cards is a done duration - --- - duration_ms: 0.957415 - type: 'test' - ... -# Subtest: only cancelled and failed cards is null, never zero -ok 639 - only cancelled and failed cards is null, never zero - --- - duration_ms: 0.603926 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/project-owner-gate.test.js -not ok 152 - test/project-owner-gate.test.js - --- - duration_ms: 199.651686 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/project-owner-gate.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/project-role-authz.test.js -not ok 153 - test/project-role-authz.test.js - --- - duration_ms: 201.32134 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/project-role-authz.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-tools' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/project-roles.test.js -not ok 154 - test/project-roles.test.js - --- - duration_ms: 114.193706 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/project-roles.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/project-run-seam.test.js -not ok 155 - test/project-run-seam.test.js - --- - duration_ms: 203.347612 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/project-run-seam.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: Settings lists a Projects page beside Bots and group chats, and draws it -ok 644 - Settings lists a Projects page beside Bots and group chats, and draws it - --- - duration_ms: 4.682662 - type: 'test' - ... -# Subtest: an install with no Project says so, and creating one re-reads the list -ok 645 - an install with no Project says so, and creating one re-reads the list - --- - duration_ms: 8.017738 - type: 'test' - ... -# Subtest: a row opens its board, a Bot binds with its Project id, and unbinding sends null -ok 646 - a row opens its board, a Bot binds with its Project id, and unbinding sends null - --- - duration_ms: 3.882581 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/project-state.test.js -not ok 157 - test/project-state.test.js - --- - duration_ms: 205.955399 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/project-state.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/project-team.test.js -not ok 158 - test/project-team.test.js - --- - duration_ms: 204.123372 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/project-team.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: the list draws each Project with the role the host answered (\#1828) -ok 649 - the list draws each Project with the role the host answered (\#1828) - --- - duration_ms: 3.022408 - type: 'test' - ... -# Subtest: an empty list and an unreadable one say so instead of drawing nothing (\#1828) -ok 650 - an empty list and an unreadable one say so instead of drawing nothing (\#1828) - --- - duration_ms: 0.561025 - type: 'test' - ... -# Subtest: a row opens its board by id, and the hash is the board entry point (\#1828) -ok 651 - a row opens its board by id, and the hash is the board entry point (\#1828) - --- - duration_ms: 0.42028 - type: 'test' - ... -# Subtest: the menu lists only switchable roles and marks the current one (\#1828) -ok 652 - the menu lists only switchable roles and marks the current one (\#1828) - --- - duration_ms: 0.866313 - type: 'test' - ... -# Subtest: the menu draws the current rank checked and disabled, and picking calls back (\#1828) -ok 653 - the menu draws the current rank checked and disabled, and picking calls back (\#1828) - --- - duration_ms: 0.736879 - type: 'test' - ... -# Subtest: a refusal is quoted with the host reason, and a switch says so (\#1828) -ok 654 - a refusal is quoted with the host reason, and a switch says so (\#1828) - --- - duration_ms: 0.450792 - type: 'test' - ... -# Subtest: the sidebar row carries the expand arrow and reports its state (\#1828) -ok 655 - the sidebar row carries the expand arrow and reports its state (\#1828) - --- - duration_ms: 0.997186 - type: 'test' - ... -# Subtest: the sidebar asks the host for `projects` and `project-role`, unprefixed (\#1854) -ok 656 - the sidebar asks the host for `projects` and `project-role`, unprefixed (\#1854) - --- - duration_ms: 14.041004 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/projects.test.js -not ok 160 - test/projects.test.js - --- - duration_ms: 201.793971 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/projects.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: Bots get a scoped progress rule without changing the private/group prompt prefix -ok 658 - Bots get a scoped progress rule without changing the private/group prompt prefix - --- - duration_ms: 3.317767 - type: 'test' - ... -# Subtest: the group relay and non-Bot sessions do not get progress instructions -ok 659 - the group relay and non-Bot sessions do not get progress instructions - --- - duration_ms: 1.066507 - type: 'test' - ... -# Subtest: a Bot stays idle until it is addressed or given a task (part B of \#645) -ok 660 - a Bot stays idle until it is addressed or given a task (part B of \#645) - --- - duration_ms: 1.54473 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/questions.test.js -not ok 162 - test/questions.test.js - --- - duration_ms: 230.931769 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/questions.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/quiet-hours.test.js -not ok 163 - test/quiet-hours.test.js - --- - duration_ms: 204.911472 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/quiet-hours.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/rate-limit-retry.test.js -not ok 164 - test/rate-limit-retry.test.js - --- - duration_ms: 195.521839 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/rate-limit-retry.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/reach-policy.test.js -not ok 165 - test/reach-policy.test.js - --- - duration_ms: 200.419446 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/reach-policy.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/cjs/loader:1430 -# const err = new Error(message); -# ^ -# Error: Cannot find module 'jsdom' -# Require stack: -# - /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Function._resolveFilename (node:internal/modules/cjs/loader:1430:15) -# at defaultResolveImpl (node:internal/modules/cjs/loader:1040:19) -# at defaultResolve (node:internal/modules/cjs/loader:1075:31) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:46:12) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) -# at resolveForCJSWithHooks (node:internal/modules/cjs/loader:1084:25) -# at Function._load (node:internal/modules/cjs/loader:1216:25) -# at wrapModuleLoad (node:internal/modules/cjs/loader:254:19) { -# code: 'MODULE_NOT_FOUND', -# requireStack: [ -# '/data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json' -# ] -# } -# Node.js v22.23.3 -# Subtest: test/read-page.test.js -not ok 166 - test/read-page.test.js - --- - duration_ms: 112.106392 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/read-page.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: \#2055: a link to a real directory is other, not a directory here -ok 666 - \#2055: a link to a real directory is other, not a directory here - --- - duration_ms: 8.743787 - type: 'test' - ... -# Subtest: \#2055: a link to a path that does not exist is other, not absent -ok 667 - \#2055: a link to a path that does not exist is other, not absent - --- - duration_ms: 3.744388 - type: 'test' - ... -# Subtest: \#2055: a plain file is other -ok 668 - \#2055: a plain file is other - --- - duration_ms: 2.001752 - type: 'test' - ... -# Subtest: \#2055: a real directory is real, and a path that is not there is absent -ok 669 - \#2055: a real directory is real, and a path that is not there is absent - --- - duration_ms: 1.691634 - type: 'test' - ... -# Subtest: \#2079: a leaf file is real, absent, or other, and a link is never a file here -ok 670 - \#2079: a leaf file is real, absent, or other, and a link is never a file here - --- - duration_ms: 3.218604 - type: 'test' - ... -# Subtest: \#P-hardlink: a temp name is writable only when it is absent or a plain file of its own -ok 671 - \#P-hardlink: a temp name is writable only when it is absent or a plain file of its own - --- - duration_ms: 1.238523 - type: 'test' - ... -# Subtest: \#2159: a hard-linked leaf is other, and a file of one name beside it stays real -ok 672 - \#2159: a hard-linked leaf is other, and a file of one name beside it stays real - --- - duration_ms: 2.797142 - type: 'test' - ... -# Subtest: \#1087: a friend DM wait says their approval is pending, not the thinking pool -ok 673 - \#1087: a friend DM wait says their approval is pending, not the thinking pool - --- - duration_ms: 2.515165 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/remote-chat.test.js -not ok 169 - test/remote-chat.test.js - --- - duration_ms: 89.69028 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/remote-chat.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/remote-room.test.js -not ok 170 - test/remote-room.test.js - --- - duration_ms: 210.159299 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/remote-room.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/repeated-delivery.test.js -not ok 171 - test/repeated-delivery.test.js - --- - duration_ms: 191.601647 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/repeated-delivery.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: the node-command reader finds a script and its line -ok 677 - the node-command reader finds a script and its line - --- - duration_ms: 2.614287 - type: 'test' - ... -# Subtest: every node command in the turn-split report names a script that exists at the tree root -ok 678 - every node command in the turn-split report names a script that exists at the tree root - --- - duration_ms: 1.448398 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/retired-bot-paths.test.js -not ok 173 - test/retired-bot-paths.test.js - --- - duration_ms: 226.712659 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/retired-bot-paths.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/retired-sessions.test.js -not ok 174 - test/retired-sessions.test.js - --- - duration_ms: 199.567184 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/retired-sessions.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/room-collaboration.test.js -not ok 175 - test/room-collaboration.test.js - --- - duration_ms: 198.909907 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/room-collaboration.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/room-context.test.js -not ok 176 - test/room-context.test.js - --- - duration_ms: 77.38382 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/room-context.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: an external Bot whose process dies answers with a failure and lands in the room, not in silence (\#198) -ok 683 - an external Bot whose process dies answers with a failure and lands in the room, not in silence (\#198) - --- - duration_ms: 45.934233 - type: 'test' - ... -# Subtest: an external Bot answers a room turn with the line its process writes (\#198) -ok 684 - an external Bot answers a room turn with the line its process writes (\#198) - --- - duration_ms: 39.579248 - type: 'test' - ... -# Subtest: a crashed external Bot starts a fresh process on its next turn (\#198) -ok 685 - a crashed external Bot starts a fresh process on its next turn (\#198) - --- - duration_ms: 73.807007 - type: 'test' - ... -# Subtest: a seat that is closed takes its process with it (\#198) -ok 686 - a seat that is closed takes its process with it (\#198) - --- - duration_ms: 81.048846 - type: 'test' - ... -# Subtest: a stop is asked for on the protocol before the signal, and a shell is not a program (\#198) -ok 687 - a stop is asked for on the protocol before the signal, and a shell is not a program (\#198) - --- - duration_ms: 124.575736 - type: 'test' - ... -# Subtest: a stop the child obeys is not reported to the room as a crash (\#198) -ok 688 - a stop the child obeys is not reported to the room as a crash (\#198) - --- - duration_ms: 324.406186 - type: 'test' - ... -# Subtest: a turn that times out comes back as no answer, not as a model failure (\#198) -ok 689 - a turn that times out comes back as no answer, not as a model failure (\#198) - --- - duration_ms: 246.544004 - type: 'test' - ... -# Subtest: a child that ignores the stop is killed after the grace (\#1164) -ok 690 - a child that ignores the stop is killed after the grace (\#1164) - --- - duration_ms: 602.340095 - type: 'test' - ... -# Subtest: a seat that was closed is never handed the next turn (\#1164) -ok 691 - a seat that was closed is never handed the next turn (\#1164) - --- - duration_ms: 97.721359 - type: 'test' - ... -# Subtest: the timeout state line says timed out (\#1164) -ok 692 - the timeout state line says timed out (\#1164) - --- - duration_ms: 202.752357 - type: 'test' - ... -# Subtest: a crash line carries the last words from stderr (\#1164) -ok 693 - a crash line carries the last words from stderr (\#1164) - --- - duration_ms: 84.430643 - type: 'test' - ... -# Subtest: a crash is reported when a grandchild holds the stdio open (\#1164) -ok 694 - a crash is reported when a grandchild holds the stdio open (\#1164) - --- - duration_ms: 186.502655 - type: 'test' - ... -# Subtest: a record may not carry a command line, only arguments (\#198) -ok 695 - a record may not carry a command line, only arguments (\#198) - --- - duration_ms: 1.703324 - type: 'test' - ... -# Subtest: \#876: the card names the room, its lead, its people and the deadline -ok 696 - \#876: the card names the room, its lead, its people and the deadline - --- - duration_ms: 2.850614 - type: 'test' - ... -# Subtest: \#876: `kind` only renames the hooks, so both surfaces draw this one tree -ok 697 - \#876: `kind` only renames the hooks, so both surfaces draw this one tree - --- - duration_ms: 1.097878 - type: 'test' - ... -# Subtest: \#876: a name a stranger wrote reaches the card as plain text -ok 698 - \#876: a name a stranger wrote reaches the card as plain text - --- - duration_ms: 1.005076 - type: 'test' - ... -# Subtest: \#876: nothing worth saying is no card, and a count is only what reads as one -ok 699 - \#876: nothing worth saying is no card, and a count is only what reads as one - --- - duration_ms: 0.3853 - type: 'test' - ... -# Subtest: \#876: the deadline line is shared copy, and an expired one says so -ok 700 - \#876: the deadline line is shared copy, and an expired one says so - --- - duration_ms: 1.040917 - type: 'test' - ... -# Subtest: \#876: a plugin row in the Members card gets the room and a host call for core endpoints -ok 701 - \#876: a plugin row in the Members card gets the room and a host call for core endpoints - --- - duration_ms: 55.610414 - type: 'test' - ... -# Subtest: \#876: the Members card draws the plugin rows only in a group that lives here -ok 702 - \#876: the Members card draws the plugin rows only in a group that lives here - --- - duration_ms: 0.847812 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/room-membership.test.js -not ok 180 - test/room-membership.test.js - --- - duration_ms: 198.023494 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/room-membership.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: a stale Bot still repairs through applyModel before it speaks (\#289) -ok 704 - a stale Bot still repairs through applyModel before it speaks (\#289) - --- - duration_ms: 4.359714 - type: 'test' - ... -# Subtest: opening an existing group session re-selects a route the record already calls applied (\#1127) -ok 705 - opening an existing group session re-selects a route the record already calls applied (\#1127) - --- - duration_ms: 2.558906 - type: 'test' - ... -# Subtest: DSH participant opens isolated room sessions and reuses persisted links -ok 706 - DSH participant opens isolated room sessions and reuses persisted links - --- - duration_ms: 1.623652 - type: 'test' - ... -# (node:1237989) ExperimentalWarning: The MockTimers API is an experimental feature and might change at any time -# (Use `node --trace-warnings ...` to show where the warning was created) -# Subtest: DSH participant waits for capabilities before opening completes -ok 707 - DSH participant waits for capabilities before opening completes - --- - duration_ms: 11.111599 - type: 'test' - ... -# Subtest: a new DSH session invalidates its old room cursor even if setup fails -ok 708 - a new DSH session invalidates its old room cursor even if setup fails - --- - duration_ms: 2.949767 - type: 'test' - ... -# Subtest: DSH participant preserves exchange attribution and releases completed waiters -ok 709 - DSH participant preserves exchange attribution and releases completed waiters - --- - duration_ms: 2.087875 - type: 'test' - ... -# Subtest: DSH participant yields for approval or earlier work without losing stop targets -ok 710 - DSH participant yields for approval or earlier work without losing stop targets - --- - duration_ms: 1.344475 - type: 'test' - ... -# Subtest: DSH events follow context rollover and only slow tools yield the room -ok 711 - DSH events follow context rollover and only slow tools yield the room - --- - duration_ms: 2.390252 - type: 'test' - ... -# Subtest: DSH failure, delivery failure and abort release the waiter without inventing success -ok 712 - DSH failure, delivery failure and abort release the waiter without inventing success - --- - duration_ms: 2.30375 - type: 'test' - ... -# Subtest: DSH cancellation distinguishes a round exchange from stopping member work -ok 713 - DSH cancellation distinguishes a round exchange from stopping member work - --- - duration_ms: 1.170091 - type: 'test' - ... -# Subtest: a group sidebar row shows an open question asked in that group (\#552) -ok 714 - a group sidebar row shows an open question asked in that group (\#552) - --- - duration_ms: 1.899799 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/room-text-bound.test.js -not ok 183 - test/room-text-bound.test.js - --- - duration_ms: 193.430584 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/room-text-bound.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/room-ticket-seat.test.js -not ok 184 - test/room-ticket-seat.test.js - --- - duration_ms: 99.973987 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/room-ticket-seat.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/roster.test.js -not ok 185 - test/roster.test.js - --- - duration_ms: 213.148046 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/roster.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/rounds.test.js -not ok 186 - test/rounds.test.js - --- - duration_ms: 215.190369 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/rounds.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/run-bot-tools.test.js -not ok 187 - test/run-bot-tools.test.js - --- - duration_ms: 244.040419 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/run-bot-tools.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/runbot-model.test.js -not ok 188 - test/runbot-model.test.js - --- - duration_ms: 194.666796 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/runbot-model.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: openPlugins closes the Settings dialog first, then opens the Plugins panel -ok 721 - openPlugins closes the Settings dialog first, then opens the Plugins panel - --- - duration_ms: 3.208934 - type: 'test' - ... -# Subtest: Settings → Scheduled tasks, with Automation tasks off, has one button and it opens Plugins -ok 722 - Settings → Scheduled tasks, with Automation tasks off, has one button and it opens Plugins - --- - duration_ms: 1.198721 - type: 'test' - ... -# Subtest: a Bot's Scheduled tasks card, with Automation tasks off, opens Plugins too -ok 723 - a Bot's Scheduled tasks card, with Automation tasks off, opens Plugins too - --- - duration_ms: 0.752889 - type: 'test' - ... -# Subtest: the hint reads the same in English and Chinese, and says Plugins page, not Harness settings -ok 724 - the hint reads the same in English and Chinese, and says Plugins page, not Harness settings - --- - duration_ms: 1.826578 - type: 'test' - ... -# Subtest: a task row offers Edit and Pause; a paused one reads Paused and offers Resume (\#354) -ok 725 - a task row offers Edit and Pause; a paused one reads Paused and offers Resume (\#354) - --- - duration_ms: 45.78454 - type: 'test' - ... -# Subtest: Edit opens the task form filled in, and saving updates that task (\#354) -ok 726 - Edit opens the task form filled in, and saving updates that task (\#354) - --- - duration_ms: 5.557294 - type: 'test' - ... -# Subtest: the form starts from the edited task: repeat interval, one time, cron kept -ok 727 - the form starts from the edited task: repeat interval, one time, cron kept - --- - duration_ms: 2.431703 - type: 'test' - ... -# Subtest: a repeat that is not a whole number of minutes reads as seconds, not rounded (\#1651 a, c) -ok 728 - a repeat that is not a whole number of minutes reads as seconds, not rounded (\#1651 a, c) - --- - duration_ms: 1.756436 - type: 'test' - ... -# Subtest: whole-minute and whole-hour repeats keep the words they had (\#1651 d) -ok 729 - whole-minute and whole-hour repeats keep the words they had (\#1651 d) - --- - duration_ms: 1.368885 - type: 'test' - ... -# Subtest: the edit form holds a non-whole-minute interval exactly (\#1651 a) -ok 730 - the edit form holds a non-whole-minute interval exactly (\#1651 a) - --- - duration_ms: 2.070714 - type: 'test' - ... -# Subtest: editing only the title sends the stored repeat back unchanged (\#1651 a, b) -ok 731 - editing only the title sends the stored repeat back unchanged (\#1651 a, b) - --- - duration_ms: 4.538268 - type: 'test' - ... -# Subtest: a row says how its last run went; only a failed run offers Retry, which runs the task now (\#473) -ok 732 - a row says how its last run went; only a failed run offers Retry, which runs the task now (\#473) - --- - duration_ms: 4.412435 - type: 'test' - ... -# Subtest: with quiet hours off the page says Off and offers to turn them on (\#1166) -ok 733 - with quiet hours off the page says Off and offers to turn them on (\#1166) - --- - duration_ms: 1.131499 - type: 'test' - ... -# Subtest: with quiet hours on the page shows the window, and a repeat task says it is not checked (\#1166) -ok 734 - with quiet hours on the page shows the window, and a repeat task says it is not checked (\#1166) - --- - duration_ms: 3.199833 - type: 'test' - ... -# Subtest: turning quiet hours on saves the default window as the settings write (\#1166) -ok 735 - turning quiet hours on saves the default window as the settings write (\#1166) - --- - duration_ms: 2.851635 - type: 'test' - ... -# Subtest: a once task sends its zone, so the host reads its wall clock (\#1166) -ok 736 - a once task sends its zone, so the host reads its wall clock (\#1166) - --- - duration_ms: 1.682303 - type: 'test' - ... -# Subtest: the repeat-task warning is the view flag, not the page scanning its tasks (\#1199) -ok 737 - the repeat-task warning is the view flag, not the page scanning its tasks (\#1199) - --- - duration_ms: 2.339101 - type: 'test' - ... -# Subtest: after the quiet-hours write the page reads the host view again, not a predicted flag (\#1199) -ok 738 - after the quiet-hours write the page reads the host view again, not a predicted flag (\#1199) - --- - duration_ms: 3.8196 - type: 'test' - ... -# Subtest: the quiet-hours copy has Chinese entries, including the refusal with the window end (\#1166) -ok 739 - the quiet-hours copy has Chinese entries, including the refusal with the window end (\#1166) - --- - duration_ms: 1.354795 - type: 'test' - ... -# Subtest: Copy asks for another chat and posts schedule-create with copyFrom (\#1287) -ok 740 - Copy asks for another chat and posts schedule-create with copyFrom (\#1287) - --- - duration_ms: 2.419503 - type: 'test' - ... -# Subtest: the copy picker opens with no target chosen, so one click cannot send it (\#1322) -ok 741 - the copy picker opens with no target chosen, so one click cannot send it (\#1322) - --- - duration_ms: 1.487708 - type: 'test' - ... -# Subtest: the new-task form opens with no target chosen, so one click cannot create it (\#1334) -ok 742 - the new-task form opens with no target chosen, so one click cannot create it (\#1334) - --- - duration_ms: 3.042319 - type: 'test' - ... -# Subtest: a task row offers Copy (\#1287) -ok 743 - a task row offers Copy (\#1287) - --- - duration_ms: 0.982866 - type: 'test' - ... -# Subtest: \#2024: a Bot whose tasks are all paused lists them, and the add-one empty state is gone -ok 744 - \#2024: a Bot whose tasks are all paused lists them, and the add-one empty state is gone - --- - duration_ms: 1.245822 - type: 'test' - ... -# Subtest: \#2024: each row answers when — Next: …, Paused, Finished -ok 745 - \#2024: each row answers when — Next: …, Paused, Finished - --- - duration_ms: 0.810491 - type: 'test' - ... -# Subtest: \#2024: a missing or malformed scheduledAt renders without throwing -ok 746 - \#2024: a missing or malformed scheduledAt renders without throwing - --- - duration_ms: 1.357375 - type: 'test' - ... -# Subtest: \#2024: a Bot with no tasks at all keeps the empty state and its add button -ok 747 - \#2024: a Bot with no tasks at all keeps the empty state and its add button - --- - duration_ms: 0.3706 - type: 'test' - ... -# Subtest: \#2030: five tasks draw three rows and the title says the real count -ok 748 - \#2030: five tasks draw three rows and the title says the real count - --- - duration_ms: 0.796101 - type: 'test' - ... -# Subtest: \#2030: the row after the three says how many are left and opens the list, not the new-task form -ok 749 - \#2030: the row after the three says how many are left and opens the list, not the new-task form - --- - duration_ms: 0.641197 - type: 'test' - ... -# Subtest: \#2030: three tasks keep the bare title and no more row; no tasks keep the empty state -ok 750 - \#2030: three tasks keep the bare title and no more row; no tasks keep the empty state - --- - duration_ms: 0.676708 - type: 'test' - ... -# Subtest: \#2035: a schedules view that has not been read yet draws no empty state and opens nothing -ok 751 - \#2035: a schedules view that has not been read yet draws no empty state and opens nothing - --- - duration_ms: 0.230926 - type: 'test' - ... -# Subtest: \#2035: a read that answers zero tasks keeps the empty state and its add button -ok 752 - \#2035: a read that answers zero tasks keeps the empty state and its add button - --- - duration_ms: 0.318048 - type: 'test' - ... -# Subtest: \#2035: five tasks keep the \#2030 shape — count in the title, three rows, one more row -ok 753 - \#2035: five tasks keep the \#2030 shape — count in the title, three rows, one more row - --- - duration_ms: 0.676848 - type: 'test' - ... -# Subtest: \#2039: a group chat's panel lists only the tasks that room owns -ok 754 - \#2039: a group chat's panel lists only the tasks that room owns - --- - duration_ms: 0.879713 - type: 'test' - ... -# Subtest: \#2039: a row and the more row in a room's panel open the list with no target -ok 755 - \#2039: a row and the more row in a room's panel open the list with no target - --- - duration_ms: 0.828292 - type: 'test' - ... -# Subtest: \#2039: a room with no tasks draws nothing at all -ok 756 - \#2039: a room with no tasks draws nothing at all - --- - duration_ms: 0.242886 - type: 'test' - ... -# Subtest: \#2039: a face-to-face room draws no schedule section -ok 757 - \#2039: a face-to-face room draws no schedule section - --- - duration_ms: 0.264686 - type: 'test' - ... -# Subtest: \#2039: an unread schedules view draws no room section either -ok 758 - \#2039: an unread schedules view draws no room section either - --- - duration_ms: 0.187284 - type: 'test' - ... -# Subtest: a failed read is a sentence on the page, not Loading… for good -ok 759 - a failed read is a sentence on the page, not Loading… for good - --- - duration_ms: 0.269637 - type: 'test' - ... -# Subtest: a Bot's card says the read failed, and the details line stays quiet -ok 760 - a Bot's card says the read failed, and the details line stays quiet - --- - duration_ms: 0.584185 - type: 'test' - ... -# Subtest: the failure sentence is null while there is nothing to say -ok 761 - the failure sentence is null while there is nothing to say - --- - duration_ms: 0.186965 - type: 'test' - ... -# Subtest: \#2112: a narrowed list says rows are hidden, not "No scheduled tasks yet." -ok 762 - \#2112: a narrowed list says rows are hidden, not "No scheduled tasks yet." - --- - duration_ms: 0.707648 - type: 'test' - ... -# Subtest: \#2112: with nothing dropped the page keeps "No scheduled tasks yet." -ok 763 - \#2112: with nothing dropped the page keeps "No scheduled tasks yet." - --- - duration_ms: 0.38237 - type: 'test' - ... -# Subtest: \#2112: the Bot details line says the list is narrowed, not that none exist -ok 764 - \#2112: the Bot details line says the list is narrowed, not that none exist - --- - duration_ms: 0.293137 - type: 'test' - ... -# Subtest: \#2232: a read-only window draws no scheduled-task write control -ok 765 - \#2232: a read-only window draws no scheduled-task write control - --- - duration_ms: 2.090865 - type: 'test' - ... -# Subtest: \#2232: a refused Pause, Resume or Delete says the host sentence in that row, once -ok 766 - \#2232: a refused Pause, Resume or Delete says the host sentence in that row, once - --- - duration_ms: 18.277465 - type: 'test' - ... -# Subtest: \#2232: a successful Pause speaks nothing and the page reads the host view again -ok 767 - \#2232: a successful Pause speaks nothing and the page reads the host view again - --- - duration_ms: 1.934591 - type: 'test' - ... -# Subtest: \#2232: a failed row keeps its Retry alert, in the same slot -ok 768 - \#2232: a failed row keeps its Retry alert, in the same slot - --- - duration_ms: 1.144539 - type: 'test' - ... -# Subtest: \#2232: Quiet hours and the form announce a refusal, not only print it -ok 769 - \#2232: Quiet hours and the form announce a refusal, not only print it - --- - duration_ms: 3.197463 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/schedules.test.js -not ok 190 - test/schedules.test.js - --- - duration_ms: 213.728151 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/schedules.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/secrets.test.js -not ok 191 - test/secrets.test.js - --- - duration_ms: 243.69624 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/secrets.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/session-identity.test.js -not ok 192 - test/session-identity.test.js - --- - duration_ms: 256.122733 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/session-identity.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: a refused write in Settings stays in view instead of scrolling away with the page (\#2194) -ok 773 - a refused write in Settings stays in view instead of scrolling away with the page (\#2194) - --- - duration_ms: 7.185136 - type: 'test' - ... -# Subtest: a flybot.settings.page entry is listed after Connectors and drawn with the host t, Section, Row and call -ok 774 - a flybot.settings.page entry is listed after Connectors and drawn with the host t, Section, Row and call - --- - duration_ms: 4.960119 - type: 'test' - ... -# Subtest: a page whose plugin is gone falls back to General, and without plugins the list is unchanged -ok 775 - a page whose plugin is gone falls back to General, and without plugins the list is unchanged - --- - duration_ms: 0.791681 - type: 'test' - ... -# Subtest: a switch row under a card of the same name shows only its hint; the switch keeps its label -ok 776 - a switch row under a card of the same name shows only its hint; the switch keeps its label - --- - duration_ms: 3.000448 - type: 'test' - ... -# Subtest: the Model and Main Bot cards do not repeat their title as a row label -ok 777 - the Model and Main Bot cards do not repeat their title as a row label - --- - duration_ms: 0.801511 - type: 'test' - ... -# Subtest: Create Bot has one back control: the dialog header, or the inline form's footer -ok 778 - Create Bot has one back control: the dialog header, or the inline form's footer - --- - duration_ms: 0.39373 - type: 'test' - ... -# Subtest: the account menu fits its longest item instead of cutting it -ok 779 - the account menu fits its longest item instead of cutting it - --- - duration_ms: 1.144029 - type: 'test' - ... -# Subtest: a read-only window says so in the Settings header, in the host's own words (\#2199) -ok 780 - a read-only window says so in the Settings header, in the host's own words (\#2199) - --- - duration_ms: 6.459307 - type: 'test' - ... -# Subtest: a writable window, a blank sentence and a missing one draw no read-only line at all (\#2199) -ok 781 - a writable window, a blank sentence and a missing one draw no read-only line at all (\#2199) - --- - duration_ms: 14.787295 - type: 'test' - ... -# Subtest: the standing read-only line stays above the refusal one pressed control adds (\#2199) -ok 782 - the standing read-only line stays above the refusal one pressed control adds (\#2199) - --- - duration_ms: 7.155316 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/settle.test.js -not ok 197 - test/settle.test.js - --- - duration_ms: 265.882196 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/settle.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: \#1086: the document and the app frame cannot scroll sideways -ok 784 - \#1086: the document and the app frame cannot scroll sideways - --- - duration_ms: 14.024764 - type: 'test' - ... -# Subtest: \#1086: a sideways offset on the page and the frame is cleared, a transcript scroller is not -ok 785 - \#1086: a sideways offset on the page and the frame is cleared, a transcript scroller is not - --- - duration_ms: 0.620446 - type: 'test' - ... -# Subtest: \#1086: typing in the composer puts the shell back; a code block keeps its own scroll -ok 786 - \#1086: typing in the composer puts the shell back; a code block keeps its own scroll - --- - duration_ms: 0.913474 - type: 'test' - ... -# Subtest: \#1086: a scrollLeft that lands after the composer focuses is put back -ok 787 - \#1086: a scrollLeft that lands after the composer focuses is put back - --- - duration_ms: 0.423141 - type: 'test' - ... -# Subtest: \#1086: the error toast is centered without a box that hangs past the viewport -ok 788 - \#1086: the error toast is centered without a box that hangs past the viewport - --- - duration_ms: 0.997696 - type: 'test' - ... -# Subtest: a read-only host keeps the wide sidebar sentence exactly as it was -ok 789 - a read-only host keeps the wide sidebar sentence exactly as it was - --- - duration_ms: 3.407339 - type: 'test' - ... -# Subtest: a read-only host says so in the sidebar rail, with the whole sentence as its tooltip -ok 790 - a read-only host says so in the sidebar rail, with the whole sentence as its tooltip - --- - duration_ms: 0.502543 - type: 'test' - ... -# Subtest: the rail clips the sentence to one line and the wide rule is untouched -ok 791 - the rail clips the sentence to one line and the wide rule is untouched - --- - duration_ms: 0.626326 - type: 'test' - ... -# Subtest: a writable window, or a host sentence of only whitespace, draws no read-only sentence in either shape -ok 792 - a writable window, or a host sentence of only whitespace, draws no read-only sentence in either shape - --- - duration_ms: 2.518845 - type: 'test' - ... -# Subtest: waveBytes writes a 16 kHz mono PCM16 WAV -ok 793 - waveBytes writes a 16 kHz mono PCM16 WAV - --- - duration_ms: 2.656599 - type: 'test' - ... -# Subtest: base64Of matches Buffer for large input -ok 794 - base64Of matches Buffer for large input - --- - duration_ms: 15.03046 - type: 'test' - ... -# Subtest: speechCatalog is usable only when the selected provider is ready -ok 795 - speechCatalog is usable only when the selected provider is ready - --- - duration_ms: 1.344065 - type: 'test' - ... -# Subtest: transcribeWave sends the selection and returns trimmed text -ok 796 - transcribeWave sends the selection and returns trimmed text - --- - duration_ms: 0.588005 - type: 'test' - ... -# Subtest: transcribeWave rejects audio over the limit and service failures -ok 797 - transcribeWave rejects audio over the limit and service failures - --- - duration_ms: 0.933174 - type: 'test' - ... -# Subtest: turnDetector ends a turn after a pause that follows speech -ok 798 - turnDetector ends a turn after a pause that follows speech - --- - duration_ms: 0.3611 - type: 'test' - ... -# Subtest: a group lists only the grants the signed-in person gave, and all of them before anyone signs in -ok 799 - a group lists only the grants the signed-in person gave, and all of them before anyone signs in - --- - duration_ms: 2.107255 - type: 'test' - ... -# Subtest: Remove revokes that one grant on its Bot or group, and an empty list draws nothing -ok 800 - Remove revokes that one grant on its Bot or group, and an empty list draws nothing - --- - duration_ms: 0.951705 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/state-journal.test.js -not ok 202 - test/state-journal.test.js - --- - duration_ms: 202.561721 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/state-journal.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: the English run counts say "1 turn" and "1 step" -ok 802 - the English run counts say "1 turn" and "1 step" - --- - duration_ms: 1.861008 - type: 'test' - ... -# Subtest: other keys and translated copy pass through unchanged -ok 803 - other keys and translated copy pass through unchanged - --- - duration_ms: 0.37224 - type: 'test' - ... -# Subtest: the footer is the shell's own entry, drawn with the plural t and the shell's inject -ok 804 - the footer is the shell's own entry, drawn with the plural t and the shell's inject - --- - duration_ms: 0.732769 - type: 'test' - ... -# Subtest: the counts pill is wrapped under every id a shell has used for it -ok 805 - the counts pill is wrapped under every id a shell has used for it - --- - duration_ms: 1.54146 - type: 'test' - ... -# Subtest: the client registers the footer over the shell's run-stats dock entries -ok 806 - the client registers the footer over the shell's run-stats dock entries - --- - duration_ms: 0.811481 - type: 'test' - ... -# Subtest: the harness still writes "{turns} turns {steps} steps" in a dock entry FlyBot wraps -ok 807 - the harness still writes "{turns} turns {steps} steps" in a dock entry FlyBot wraps # SKIP no @deepseek-ai/dsh-client-ui-chat in the harness - --- - duration_ms: 0.881483 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/steering-interrupt.test.js -not ok 204 - test/steering-interrupt.test.js - --- - duration_ms: 223.720731 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/steering-interrupt.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/steward-retry.test.js -not ok 205 - test/steward-retry.test.js - --- - duration_ms: 208.771143 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/steward-retry.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: the lines follow the model: its window less the room for its reply -ok 810 - the lines follow the model: its window less the room for its reply - --- - duration_ms: 2.801463 - type: 'test' - ... -# Subtest: a model without a window counts as the default, and odd settings fall back -ok 811 - a model without a window counts as the default, and odd settings fall back - --- - duration_ms: 0.594426 - type: 'test' - ... -# Subtest: the steward's answer is read from its JSON, and nothing else counts -ok 812 - the steward's answer is read from its JSON, and nothing else counts - --- - duration_ms: 0.571725 - type: 'test' - ... -# Subtest: the steward reads the latest messages oldest first, within a budget -ok 813 - the steward reads the latest messages oldest first, within a budget - --- - duration_ms: 3.513881 - type: 'test' - ... -# Subtest: a long message shows the steward its start and its end, and says the middle was left out -ok 814 - a long message shows the steward its start and its end, and says the middle was left out - --- - duration_ms: 1.408906 - type: 'test' - ... -# Subtest: checkpoints are counted from the summary the backend wrapped, not from user text -ok 815 - checkpoints are counted from the summary the backend wrapped, not from user text - --- - duration_ms: 0.904244 - type: 'test' - ... -# Subtest: a checkpoint keeps the messages to the Bot word for word after the summary -ok 816 - a checkpoint keeps the messages to the Bot word for word after the summary - --- - duration_ms: 0.437421 - type: 'test' - ... -# Subtest: the checkpoint also reads the messages the backend keeps after it -ok 817 - the checkpoint also reads the messages the backend keeps after it - --- - duration_ms: 1.154 - type: 'test' - ... -# Subtest: P-1993: the quoted first line of the kept tail is cut on a code point at 80 -ok 818 - P-1993: the quoted first line of the kept tail is cut on a code point at 80 - --- - duration_ms: 1.367486 - type: 'test' - ... -# Subtest: the checkpoint records unanswered requests as remaining, and does not answer them -ok 819 - the checkpoint records unanswered requests as remaining, and does not answer them - --- - duration_ms: 1.041147 - type: 'test' - ... -# Subtest: a failed state write rejects and leaves the saved file unchanged -ok 820 - a failed state write rejects and leaves the saved file unchanged - --- - duration_ms: 23.0761 - type: 'test' - ... -# Subtest: a failed migration write warns but load() still resolves -ok 821 - a failed migration write warns but load() still resolves - --- - duration_ms: 5.212005 - type: 'test' - ... -# Subtest: a failed state rename rejects and preserves the saved file -ok 822 - a failed state rename rejects and preserves the saved file - --- - duration_ms: 6.744605 - type: 'test' - ... -# Subtest: malformed state is backed up before a later save -ok 823 - malformed state is backed up before a later save - --- - duration_ms: 4.478856 - type: 'test' - ... -# Subtest: malformed state stays read-only when its backup cannot be copied -ok 824 - malformed state stays read-only when its backup cannot be copied - --- - duration_ms: 4.426555 - type: 'test' - ... -# Subtest: a state from a newer version remains untouched -ok 825 - a state from a newer version remains untouched - --- - duration_ms: 3.258825 - type: 'test' - ... -# Subtest: a read error keeps the existing state read-only -ok 826 - a read error keeps the existing state read-only - --- - duration_ms: 2.411193 - type: 'test' - ... -# Subtest: refresh adopts a fixed state file and clears read-only mode -ok 827 - refresh adopts a fixed state file and clears read-only mode - --- - duration_ms: 7.205817 - type: 'test' - ... -# Subtest: an unusable state lock warns and keeps the team saving -ok 828 - an unusable state lock warns and keeps the team saving - --- - duration_ms: 5.824121 - type: 'test' - ... -# Subtest: a queued save rejects after another host takes the lock -ok 829 - a queued save rejects after another host takes the lock - --- - duration_ms: 6.445388 - type: 'test' - ... -# Subtest: a read-only host resolves awaited saves without writing -ok 830 - a read-only host resolves awaited saves without writing - --- - duration_ms: 4.552449 - type: 'test' - ... -# Subtest: dispose waits for a pending save and prevents later writes -ok 831 - dispose waits for a pending save and prevents later writes - --- - duration_ms: 4.436015 - type: 'test' - ... -# Subtest: a member that loses its seat closes its external process (\#198) -ok 832 - a member that loses its seat closes its external process (\#198) - --- - duration_ms: 2.842674 - type: 'test' - ... -# Subtest: a roster id that is not an own key finds no Bot and no group (\#1704) -ok 833 - a roster id that is not an own key finds no Bot and no group (\#1704) - --- - duration_ms: 6.208672 - type: 'test' - ... -# Subtest: a linked state temp name does not take the save; the state file stays a plain file -ok 834 - a linked state temp name does not take the save; the state file stays a plain file - --- - duration_ms: 2.899085 - type: 'test' - ... -# Subtest: a link at the state file itself is replaced, not written through -ok 835 - a link at the state file itself is replaced, not written through - --- - duration_ms: 3.652825 - type: 'test' - ... -# Subtest: a hard link at the state temp name is refused; the save never reaches the shared file -ok 836 - a hard link at the state temp name is refused; the save never reaches the shared file - --- - duration_ms: 3.310196 - type: 'test' - ... -# Subtest: Bot mode mounts both groups; Agent mode mounts neither -ok 837 - Bot mode mounts both groups; Agent mode mounts neither - --- - duration_ms: 2.607538 - type: 'test' - ... -# Subtest: a plain Bot-mode view keeps the shell but drops the conversation -ok 838 - a plain Bot-mode view keeps the shell but drops the conversation - --- - duration_ms: 0.250937 - type: 'test' - ... -# Subtest: the saved surface mode survives reloads and defaults to bot -ok 839 - the saved surface mode survives reloads and defaults to bot - --- - duration_ms: 0.427661 - type: 'test' - ... -# Subtest: switching to Agent mode withdraws the conversation before the shell, last entry first -ok 840 - switching to Agent mode withdraws the conversation before the shell, last entry first - --- - duration_ms: 1.246222 - type: 'test' - ... -# Subtest: a throwing disposer does not stop the rest, and the group can be installed again -ok 841 - a throwing disposer does not stop the rest, and the group can be installed again - --- - duration_ms: 1.12116 - type: 'test' - ... -# Subtest: unloading the plugin disposes every group even when a disposer throws -ok 842 - unloading the plugin disposes every group even when a disposer throws - --- - duration_ms: 0.485983 - type: 'test' - ... -# Subtest: a group whose install throws stays unmounted and is tried again -ok 843 - a group whose install throws stays unmounted and is tried again - --- - duration_ms: 0.665157 - type: 'test' - ... -# Subtest: readMode falls back to bot when storage throws -ok 844 - readMode falls back to bot when storage throws - --- - duration_ms: 0.288207 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/task-audit.test.js -not ok 209 - test/task-audit.test.js - --- - duration_ms: 210.846227 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/task-audit.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/task-contract.test.js -not ok 210 - test/task-contract.test.js - --- - duration_ms: 208.829274 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/task-contract.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/task-drive.test.js -not ok 211 - test/task-drive.test.js - --- - duration_ms: 222.798057 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/task-drive.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/task-handoff-route.test.js -not ok 212 - test/task-handoff-route.test.js - --- - duration_ms: 202.183322 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/task-handoff-route.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/task-queue-lease.test.js -not ok 213 - test/task-queue-lease.test.js - --- - duration_ms: 230.109807 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/task-queue-lease.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/task-queue.test.js -not ok 214 - test/task-queue.test.js - --- - duration_ms: 200.000025 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/task-queue.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/task-route.test.js -not ok 215 - test/task-route.test.js - --- - duration_ms: 193.100305 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/task-route.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/tasks.test.js -not ok 216 - test/tasks.test.js - --- - duration_ms: 217.958111 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/tasks.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: the teardown removes the home once and asserts it is gone (\#1983) -ok 853 - the teardown removes the home once and asserts it is gone (\#1983) - --- - duration_ms: 2.950407 - type: 'test' - ... -# Subtest: a remover that leaves the directory behind fails the teardown (\#1983) -ok 854 - a remover that leaves the directory behind fails the teardown (\#1983) - --- - duration_ms: 1.742095 - type: 'test' - ... -# Subtest: an error from the removal surfaces unchanged (\#1983) -ok 855 - an error from the removal surfaces unchanged (\#1983) - --- - duration_ms: 0.440981 - type: 'test' - ... -# Subtest: a lone high surrogate in the input comes back as U+FFFD -ok 856 - a lone high surrogate in the input comes back as U+FFFD - --- - duration_ms: 1.596882 - type: 'test' - ... -# Subtest: a lone low surrogate in the input comes back as U+FFFD -ok 857 - a lone low surrogate in the input comes back as U+FFFD - --- - duration_ms: 0.264047 - type: 'test' - ... -# Subtest: a lone surrogate is repaired before the bound, not after it -ok 858 - a lone surrogate is repaired before the bound, not after it - --- - duration_ms: 0.267407 - type: 'test' - ... -# Subtest: well-formed input keeps its exact prefix and flag -ok 859 - well-formed input keeps its exact prefix and flag - --- - duration_ms: 1.671583 - type: 'test' - ... -# Subtest: codePoints counts one character as one whatever its UTF-16 width (\#1895) -ok 860 - codePoints counts one character as one whatever its UTF-16 width (\#1895) - --- - duration_ms: 2.124135 - type: 'test' - ... -# Subtest: textOf joins the text blocks only -ok 861 - textOf joins the text blocks only - --- - duration_ms: 0.348479 - type: 'test' - ... -# Subtest: normalize and unquote -ok 862 - normalize and unquote - --- - duration_ms: 0.537484 - type: 'test' - ... -# Subtest: splitRef splits at the first slash -ok 863 - splitRef splits at the first slash - --- - duration_ms: 1.16831 - type: 'test' - ... -# Subtest: isColor takes avatar inks, extra inks, and \#rrggbb -ok 864 - isColor takes avatar inks, extra inks, and \#rrggbb - --- - duration_ms: 0.423381 - type: 'test' - ... -# Subtest: escapeRegExp makes a literal pattern -ok 865 - escapeRegExp makes a literal pattern - --- - duration_ms: 0.423601 - type: 'test' - ... -# Subtest: excerpt keeps the match in view -ok 866 - excerpt keeps the match in view - --- - duration_ms: 0.723408 - type: 'test' - ... -# Subtest: estimateTokens counts CJK as one token and other text as a third -ok 867 - estimateTokens counts CJK as one token and other text as a third - --- - duration_ms: 0.354309 - type: 'test' - ... -# Subtest: clip cuts long text and says where the rest is -ok 868 - clip cuts long text and says where the rest is - --- - duration_ms: 0.911523 - type: 'test' - ... -# Subtest: clip says only that it cut when it is given no reason (\#1918) -ok 869 - clip says only that it cut when it is given no reason (\#1918) - --- - duration_ms: 1.019207 - type: 'test' - ... -# Subtest: clip keeps the reason it is given byte for byte (\#1918) -ok 870 - clip keeps the reason it is given byte for byte (\#1918) - --- - duration_ms: 0.432751 - type: 'test' - ... -# Subtest: clip never leaves half of a surrogate pair behind -ok 871 - clip never leaves half of a surrogate pair behind - --- - duration_ms: 2.158206 - type: 'test' - ... -# Subtest: excerpt never starts inside a surrogate pair -ok 872 - excerpt never starts inside a surrogate pair - --- - duration_ms: 0.364729 - type: 'test' - ... -# Subtest: createClock formats month, day, and 24-hour time -ok 873 - createClock formats month, day, and 24-hour time - --- - duration_ms: 28.942501 - type: 'test' - ... -# Subtest: \#1624: a settled step shows a line of its reasoning in the closed row, not a bare 思考过程 strip -ok 874 - \#1624: a settled step shows a line of its reasoning in the closed row, not a bare 思考过程 strip - --- - duration_ms: 3.566693 - type: 'test' - ... -# Subtest: \#1624: the peek line is capped, so one long line cannot fill the row -ok 875 - \#1624: the peek line is capped, so one long line cannot fill the row - --- - duration_ms: 25.266197 - type: 'test' - ... -# Subtest: \#1624: the row still holds the whole reasoning once opened -ok 876 - \#1624: the row still holds the whole reasoning once opened - --- - duration_ms: 0.428741 - type: 'test' - ... -# Subtest: \#1624: a step that is still thinking draws no row at all -ok 877 - \#1624: a step that is still thinking draws no row at all - --- - duration_ms: 0.633176 - type: 'test' - ... -# Subtest: \#1624: reasoning that is only whitespace draws no row at all -ok 878 - \#1624: reasoning that is only whitespace draws no row at all - --- - duration_ms: 0.331228 - type: 'test' - ... -# Subtest: \#1636: an opened row hides its preview, so its first line is not printed twice -ok 879 - \#1636: an opened row hides its preview, so its first line is not printed twice - --- - duration_ms: 10.742929 - type: 'test' - ... -# Subtest: \#1642: a fence or a rule is not the peek line; the first prose line is -ok 880 - \#1642: a fence or a rule is not the peek line; the first prose line is - --- - duration_ms: 0.620087 - type: 'test' - ... -# Subtest: \#1642: a cut preview keeps whole characters and says it was cut -ok 881 - \#1642: a cut preview keeps whole characters and says it was cut - --- - duration_ms: 2.235888 - type: 'test' - ... -# Subtest: \#1642: reasoning that is only markup gets a neutral summary, never a bare fence or an empty row -ok 882 - \#1642: reasoning that is only markup gets a neutral summary, never a bare fence or an empty row - --- - duration_ms: 1.51244 - type: 'test' - ... -1..9 -# Error: A resource generated asynchronous activity after the test ended. This activity created the error "Error: Cannot find module 'jsdom'\\nRequire stack:\\n- /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json" which triggered an uncaughtException event, caught by the test runner. -# Subtest: test/thinking-row.test.js -not ok 220 - test/thinking-row.test.js - --- - duration_ms: 249.177123 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/thinking-row.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/time-context.test.js -not ok 221 - test/time-context.test.js - --- - duration_ms: 78.862478 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/time-context.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# (node:1239040) ExperimentalWarning: SQLite is an experimental feature and might change at any time -# (Use `node --trace-warnings ...` to show where the warning was created) -# Subtest: the report matches hand-computed sums, with cache reads kept apart -ok 885 - the report matches hand-computed sums, with cache reads kept apart - --- - duration_ms: 93.249132 - type: 'test' - ... -# Subtest: the window, the Bot filter and a missing ledger -ok 886 - the window, the Bot filter and a missing ledger - --- - duration_ms: 447.052612 - type: 'test' - ... -# Subtest: an impossible date is an error, never an empty report -ok 887 - an impossible date is an error, never an empty report - --- - duration_ms: 348.299677 - type: 'test' - ... -# Subtest: a day a zone falls back is 25 hours, and --to covers all of it -ok 888 - a day a zone falls back is 25 hours, and --to covers all of it - --- - duration_ms: 338.106282 - type: 'test' - ... -# Subtest: every row of the committed report carries its provenance -ok 889 - every row of the committed report carries its provenance - --- - duration_ms: 2.109945 - type: 'test' - ... -# Subtest: every call ToolCell draws shows the same nested in a PTC program as on its own -ok 890 - every call ToolCell draws shows the same nested in a PTC program as on its own - --- - duration_ms: 22.227267 - type: 'test' - ... -# Subtest: a program draws every known sub-call in dispatch order and each call once -ok 891 - a program draws every known sub-call in dispatch order and each call once - --- - duration_ms: 2.135795 - type: 'test' - ... -# Subtest: nested group relays keep their own replies in order, each once -ok 892 - nested group relays keep their own replies in order, each once - --- - duration_ms: 1.128009 - type: 'test' - ... -# Subtest: cards and replies still show when the program's own call head left the loaded history -ok 893 - cards and replies still show when the program's own call head left the loaded history - --- - duration_ms: 1.085889 - type: 'test' - ... -# Subtest: each sub-call shows its own state, not its program's -ok 894 - each sub-call shows its own state, not its program's - --- - duration_ms: 2.214297 - type: 'test' - ... -# Subtest: a program with no known sub-call draws nothing, as before -ok 895 - a program with no known sub-call draws nothing, as before - --- - duration_ms: 0.339749 - type: 'test' - ... -# Subtest: a hidden Bot-to-Bot turn draws none of its sub-calls -ok 896 - a hidden Bot-to-Bot turn draws none of its sub-calls - --- - duration_ms: 0.807011 - type: 'test' - ... -# Subtest: a message line opens the exchange of the chat's Bot, from any part -ok 897 - a message line opens the exchange of the chat's Bot, from any part - --- - duration_ms: 0.887343 - type: 'test' - ... -# Subtest: the live note follows the running sub-call of a program -ok 898 - the live note follows the running sub-call of a program - --- - duration_ms: 2.990188 - type: 'test' - ... -# Subtest: a cell tells the docks which card calls it draws, until it unmounts -ok 899 - a cell tells the docks which card calls it draws, until it unmounts - --- - duration_ms: 1.682044 - type: 'test' - ... -# Subtest: a card whose call is not drawn waits in the dock; a drawn one shows only at its call -ok 900 - a card whose call is not drawn waits in the dock; a drawn one shows only at its call - --- - duration_ms: 3.165302 - type: 'test' - ... -# Subtest: the docks hold a card back while the history loads, and keep cards without a call -ok 901 - the docks hold a card back while the history loads, and keep cards without a call - --- - duration_ms: 2.794642 - type: 'test' - ... -# Subtest: a card from an earlier part waits in the dock even when a call here has the same id -ok 902 - a card from an earlier part waits in the dock even when a call here has the same id - --- - duration_ms: 0.711389 - type: 'test' - ... -# Subtest: a secret in a hidden turn shows in the dock instead of nowhere -ok 903 - a secret in a hidden turn shows in the dock instead of nowhere - --- - duration_ms: 0.506643 - type: 'test' - ... -# Subtest: a PTC group relay shows its replies from the sub-call, live and after reload -ok 904 - a PTC group relay shows its replies from the sub-call, live and after reload - --- - duration_ms: 18.975122 - type: 'test' - ... -# Subtest: PTC secret and question cards show at their sub-calls and act on their own requests -ok 905 - PTC secret and question cards show at their sub-calls and act on their own requests - --- - duration_ms: 2.335011 - type: 'test' - ... -# Subtest: \#278: a Face-to-face room drops the old "Waiting for the owner's approval" line but keeps its other notices -ok 906 - \#278: a Face-to-face room drops the old "Waiting for the owner's approval" line but keeps its other notices - --- - duration_ms: 0.879543 - type: 'test' - ... -# Subtest: \#1103: a closed face room draws the short leave only when the banner does not cover it -ok 907 - \#1103: a closed face room draws the short leave only when the banner does not cover it - --- - duration_ms: 0.906434 - type: 'test' - ... -# Subtest: the scope editor offers all my Bots, chosen Bots, or none, and shows the current one -ok 908 - the scope editor offers all my Bots, chosen Bots, or none, and shows the current one - --- - duration_ms: 1.755746 - type: 'test' - ... -# Subtest: a finished call that carries its name and arguments only under `call` is still read -ok 909 - a finished call that carries its name and arguments only under `call` is still read - --- - duration_ms: 4.118717 - type: 'test' - ... -# Subtest: a running call is read from its own name and raw arguments -ok 910 - a running call is read from its own name and raw arguments - --- - duration_ms: 0.433872 - type: 'test' - ... -# Subtest: a node with an argument reader uses the reader -ok 911 - a node with an argument reader uses the reader - --- - duration_ms: 0.39771 - type: 'test' - ... -# Subtest: an empty name falls back to the call, and unreadable arguments read as absent -ok 912 - an empty name falls back to the call, and unreadable arguments read as absent - --- - duration_ms: 0.316088 - type: 'test' - ... -# Subtest: a relay between steps attaches to the step that follows it only -ok 913 - a relay between steps attaches to the step that follows it only - --- - duration_ms: 0.838762 - type: 'test' - ... -# Subtest: a relay before a tool-only step attaches to the next step that renders -ok 914 - a relay before a tool-only step attaches to the next step that renders - --- - duration_ms: 0.299188 - type: 'test' - ... -# Subtest: a relay before the first step attaches to it -ok 915 - a relay before the first step attaches to it - --- - duration_ms: 0.504964 - type: 'test' - ... -# Subtest: the step is found by its number when the cell holds a different copy -ok 916 - the step is found by its number when the cell holds a different copy - --- - duration_ms: 0.443341 - type: 'test' - ... -# Subtest: a relay sharing the previous step’s time attaches to the next step -ok 917 - a relay sharing the previous step’s time attaches to the next step - --- - duration_ms: 1.046467 - type: 'test' - ... -# Subtest: relayPart puts the line in the step’s first cell -ok 918 - relayPart puts the line in the step’s first cell - --- - duration_ms: 1.119959 - type: 'test' - ... -# Subtest: two relays before one step both return, in order -ok 919 - two relays before one step both return, in order - --- - duration_ms: 0.469412 - type: 'test' - ... -# Subtest: non-relay context and ds-bot package sources are ignored -ok 920 - non-relay context and ds-bot package sources are ignored - --- - duration_ms: 0.511784 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-tools' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/tool-schema.test.js -not ok 225 - test/tool-schema.test.js - --- - duration_ms: 200.329414 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/tool-schema.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/turn-origin.test.js -not ok 226 - test/turn-origin.test.js - --- - duration_ms: 97.473512 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/turn-origin.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: a long tool Turn shows its reasoning once, on the first step, in order -ok 923 - a long tool Turn shows its reasoning once, on the first step, in order - --- - duration_ms: 2.186997 - type: 'test' - ... -# Subtest: the row sits on the first step with reasoning -ok 924 - the row sits on the first step with reasoning - --- - duration_ms: 1.166471 - type: 'test' - ... -# Subtest: reasoning still in progress stays out until its step settles -ok 925 - reasoning still in progress stays out until its step settles - --- - duration_ms: 0.38662 - type: 'test' - ... -# Subtest: a step outside the loaded Turn list shows only its own reasoning -ok 926 - a step outside the loaded Turn list shows only its own reasoning - --- - duration_ms: 0.284628 - type: 'test' - ... -# Subtest: a turn separates its task from the history that came before it -ok 927 - a turn separates its task from the history that came before it - --- - duration_ms: 4.966429 - type: 'test' - ... -# Subtest: a tool result is its own part, never folded into the history -ok 928 - a tool result is its own part, never folded into the history - --- - duration_ms: 0.735839 - type: 'test' - ... -# Subtest: the fixed block is the intercept of the Session's prompt fit -ok 929 - the fixed block is the intercept of the Session's prompt fit - --- - duration_ms: 0.625436 - type: 'test' - ... -# Subtest: a Session with too few calls gets no fit instead of a guess -ok 930 - a Session with too few calls gets no fit instead of a guess - --- - duration_ms: 0.37478 - type: 'test' - ... -# Subtest: a split accounts for the whole prompt and never claims the fixed block twice -ok 931 - a split accounts for the whole prompt and never claims the fixed block twice - --- - duration_ms: 0.74567 - type: 'test' - ... -# Subtest: the frame walker finds every frame of a concatenated log -ok 932 - the frame walker finds every frame of a concatenated log - --- - duration_ms: 2.3342 - type: 'test' - ... -# Subtest: the CLI prints a split for the sampled turn -ok 933 - the CLI prints a split for the sampled turn - --- - duration_ms: 104.046113 - type: 'test' - ... -# Subtest: the --days table divides each day by the same measured fixed block -ok 934 - the --days table divides each day by the same measured fixed block - --- - duration_ms: 116.2718 - type: 'test' - ... -# Subtest: a missing session root is an error that names the path -ok 935 - a missing session root is an error that names the path - --- - duration_ms: 89.839664 - type: 'test' - ... -# Subtest: \#1989: a Session id is the directory name under either path separator -ok 936 - \#1989: a Session id is the directory name under either path separator - --- - duration_ms: 0.956325 - type: 'test' - ... -# Subtest: every row of the committed split report carries its provenance -ok 937 - every row of the committed split report carries its provenance - --- - duration_ms: 1.665964 - type: 'test' - ... -# Subtest: \#1259: the report and the CLI name the moment each fixed-block number is measured at -ok 938 - \#1259: the report and the CLI name the moment each fixed-block number is measured at - --- - duration_ms: 131.615859 - type: 'test' - ... -# Subtest: \#1259: the committed report says which moment §2 and §4 each measure -ok 939 - \#1259: the committed report says which moment §2 and §4 each measure - --- - duration_ms: 0.521713 - type: 'test' - ... -# Subtest: \#1259: a fit with no characters-per-token figure does not crash the summary -ok 940 - \#1259: a fit with no characters-per-token figure does not crash the summary - --- - duration_ms: 166.69554 - type: 'test' - ... -# Subtest: \#1259: an unknown --tz is refused by name instead of an uncaught RangeError -ok 941 - \#1259: an unknown --tz is refused by name instead of an uncaught RangeError - --- - duration_ms: 94.016722 - type: 'test' - ... -# Subtest: \#1259: --stats re-derives the §5, §7 and §8 numbers from one command -ok 942 - \#1259: --stats re-derives the §5, §7 and §8 numbers from one command - --- - duration_ms: 117.81548 - type: 'test' - ... -# Subtest: \#1259: --stats says which command measures §7 when no room is named -ok 943 - \#1259: --stats says which command measures §7 when no room is named - --- - duration_ms: 115.033608 - type: 'test' - ... -# Subtest: a reply that closes its turn links the files the turn changed or delivered -ok 944 - a reply that closes its turn links the files the turn changed or delivered - --- - duration_ms: 3.664725 - type: 'test' - ... -# Subtest: a reply that does not close its turn, or one still running, links nothing -ok 945 - a reply that does not close its turn, or one still running, links nothing - --- - duration_ms: 0.733209 - type: 'test' - ... -# Subtest: the turn tail entry notes when the turn ended and shows the pause before the next one -ok 946 - the turn tail entry notes when the turn ended and shows the pause before the next one - --- - duration_ms: 30.455161 - type: 'test' - ... -# Subtest: a reply to a line the friend typed themselves is drawn as the person, not as the Bot -ok 947 - a reply to a line the friend typed themselves is drawn as the person, not as the Bot - --- - duration_ms: 1.785517 - type: 'test' - ... -# Subtest: \#275: a friend's line that came while away has the NEW divider; the settled visit has none -ok 948 - \#275: a friend's line that came while away has the NEW divider; the settled visit has none - --- - duration_ms: 0.943015 - type: 'test' - ... -# Subtest: \#275: the reply to a line I saw begin, finished while away, loses its divider when the visit settles -ok 949 - \#275: the reply to a line I saw begin, finished while away, loses its divider when the visit settles - --- - duration_ms: 0.665027 - type: 'test' - ... -# Subtest: \#275: only a shown turn that began after the visit opened moves the chat on -ok 950 - \#275: only a shown turn that began after the visit opened moves the chat on - --- - duration_ms: 0.583495 - type: 'test' - ... -# Subtest: \#275: a visit with nothing unread, or no record, is left as it is -ok 951 - \#275: a visit with nothing unread, or no record, is left as it is - --- - duration_ms: 0.267676 - type: 'test' - ... -# Subtest: \#275: the new-message pills settle the visit once the divider was seen and the chat moved on -ok 952 - \#275: the new-message pills settle the visit once the divider was seen and the chat moved on - --- - duration_ms: 1.790786 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/turns-tool-result.test.js -not ok 230 - test/turns-tool-result.test.js - --- - duration_ms: 109.847673 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/turns-tool-result.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: \#1347: a settings row never breaks its own label or its control words -ok 954 - \#1347: a settings row never breaks its own label or its control words - --- - duration_ms: 2.983927 - type: 'test' - ... -# Subtest: \#1347: the panel is a container, and below 300px the row stacks instead of clipping -ok 955 - \#1347: the panel is a container, and below 300px the row stacks instead of clipping - --- - duration_ms: 2.370202 - type: 'test' - ... -# Subtest: \#1347: a preview shows the words of a line, never its fence -ok 956 - \#1347: a preview shows the words of a line, never its fence - --- - duration_ms: 1.339485 - type: 'test' - ... -# Subtest: \#1347: both sidebar row kinds read their preview through that helper -ok 957 - \#1347: both sidebar row kinds read their preview through that helper - --- - duration_ms: 2.465894 - type: 'test' - ... -# Subtest: \#1347: the details drawer copies, says so, and names the button for what it does -ok 958 - \#1347: the details drawer copies, says so, and names the button for what it does - --- - duration_ms: 1.875258 - type: 'test' - ... -# Subtest: \#1347: the mode word beside the title does not look like a control -ok 959 - \#1347: the mode word beside the title does not look like a control - --- - duration_ms: 1.330134 - type: 'test' - ... -# Subtest: \#1347: a Bot chat with nothing said yet draws its own header -ok 960 - \#1347: a Bot chat with nothing said yet draws its own header - --- - duration_ms: 0.913214 - type: 'test' - ... -# Subtest: \#1347: a blank column says why it is blank, and only while it is blank -ok 961 - \#1347: a blank column says why it is blank, and only while it is blank - --- - duration_ms: 1.379315 - type: 'test' - ... -# Subtest: \#1347: a provider refusal reads as a sentence that says what to change -ok 962 - \#1347: a provider refusal reads as a sentence that says what to change - --- - duration_ms: 3.230154 - type: 'test' - ... -# Subtest: \#1347: the thread cannot paint above a dialog, a sheet or a scrim -ok 963 - \#1347: the thread cannot paint above a dialog, a sheet or a scrim - --- - duration_ms: 11.5644 - type: 'test' - ... -# Subtest: \#1347: the built bundle carries these rules, so a page reload shows them -ok 964 - \#1347: the built bundle carries these rules, so a page reload shows them - --- - duration_ms: 12.185596 - type: 'test' - ... -# Subtest: \#1750: the Project board overlay covers the shell behind its scrim -ok 965 - \#1750: the Project board overlay covers the shell behind its scrim - --- - duration_ms: 13.103521 - type: 'test' - ... -# Subtest: Bot settings draws Sharing as a titled card right after Instructions (\#406) -ok 966 - Bot settings draws Sharing as a titled card right after Instructions (\#406) - --- - duration_ms: 3.438389 - type: 'test' - ... -# Subtest: group settings and Bot settings both end with a "More" card (\#406) -ok 967 - group settings and Bot settings both end with a "More" card (\#406) - --- - duration_ms: 0.704248 - type: 'test' - ... -# Subtest: the composer focus border is stronger than its hover border (\#406) -ok 968 - the composer focus border is stronger than its hover border (\#406) - --- - duration_ms: 1.695794 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/update-bot.test.js -not ok 233 - test/update-bot.test.js - --- - duration_ms: 282.355614 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/update-bot.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: versions compare in semver order and lose their v and build metadata -ok 970 - versions compare in semver order and lose their v and build metadata - --- - duration_ms: 20.473202 - type: 'test' - ... -# Subtest: the install source decides where a newer version is looked for -ok 971 - the install source decides where a newer version is looked for - --- - duration_ms: 3.07584 - type: 'test' - ... -# Subtest: a 40-hex ref in the spec is a commit, not a branch or a tag (\#379) -ok 972 - a 40-hex ref in the spec is a commit, not a branch or a tag (\#379) - --- - duration_ms: 0.76833 - type: 'test' - ... -# Subtest: a registry install finds the newest version on the next registry and installs it from there -ok 973 - a registry install finds the newest version on the next registry and installs it from there - --- - duration_ms: 4.99196 - type: 'test' - ... -# Subtest: a private registry of pnpm's own is asked alone, and an answer stands for a while -ok 974 - a private registry of pnpm's own is asked alone, and an answer stands for a while - --- - duration_ms: 1.840418 - type: 'test' - ... -# Subtest: a versioned GitHub install follows the latest release tag and keeps its path -ok 975 - a versioned GitHub install follows the latest release tag and keeps its path - --- - duration_ms: 1.92696 - type: 'test' - ... -# Subtest: a versioned GitHub install follows the release to the repository's current address -ok 976 - a versioned GitHub install follows the release to the repository's current address - --- - duration_ms: 1.613172 - type: 'test' - ... -# Subtest: a linked checkout, an unversioned git install, or a disabled check never asks the network -ok 977 - a linked checkout, an unversioned git install, or a disabled check never asks the network - --- - duration_ms: 1.661073 - type: 'test' - ... -# Subtest: the star count comes from the repository, is kept for an hour, and survives a failed answer -ok 978 - the star count comes from the repository, is kept for an hour, and survives a failed answer - --- - duration_ms: 1.483219 - type: 'test' - ... -# Subtest: without a source from the plugin manager, the profile's own dependency entry decides -ok 979 - without a source from the plugin manager, the profile's own dependency entry decides - --- - duration_ms: 2.835114 - type: 'test' - ... -# Subtest: a check that finds nothing clears the version a check before it found -ok 980 - a check that finds nothing clears the version a check before it found - --- - duration_ms: 2.047504 - type: 'test' - ... -# Subtest: a failed install reports why and can be tried again -ok 981 - a failed install reports why and can be tried again - --- - duration_ms: 1.92066 - type: 'test' - ... -# Subtest: the commit a git install runs is read from the package's real path, and a wrong one is never guessed -ok 982 - the commit a git install runs is read from the package's real path, and a wrong one is never guessed - --- - duration_ms: 1.104339 - type: 'test' - ... -# Subtest: the commit pnpm locked for ds-bot is read from the profile lockfile, and only for ds-bot (\#379) -ok 983 - the commit pnpm locked for ds-bot is read from the profile lockfile, and only for ds-bot (\#379) - --- - duration_ms: 1.855518 - type: 'test' - ... -# Subtest: the commit comes from the spec first, then the lockfile, then the real path -ok 984 - the commit comes from the spec first, then the lockfile, then the real path - --- - duration_ms: 0.471432 - type: 'test' - ... -# Subtest: a hoisted git install shows the commit from the profile lockfile and compares it with its branch (\#379) -ok 985 - a hoisted git install shows the commit from the profile lockfile and compares it with its branch (\#379) - --- - duration_ms: 1.652333 - type: 'test' - ... -# Subtest: an install pinned to a commit shows the commit, is no branch, and asks GitHub for nothing (\#379) -ok 986 - an install pinned to a commit shows the commit, is no branch, and asks GitHub for nothing (\#379) - --- - duration_ms: 0.937775 - type: 'test' - ... -# Subtest: a git install on a branch reports its branch and commit, and how many commits the branch is ahead -ok 987 - a git install on a branch reports its branch and commit, and how many commits the branch is ahead - --- - duration_ms: 1.854548 - type: 'test' - ... -# Subtest: without a commit in the path a branch install still names its branch and compares nothing; other sources have no build -ok 988 - without a commit in the path a branch install still names its branch and compares nothing; other sources have no build - --- - duration_ms: 0.923394 - type: 'test' - ... -# Subtest: the package names FlyBot's own repository, not the upstream DS Bot -ok 989 - the package names FlyBot's own repository, not the upstream DS Bot - --- - duration_ms: 0.271608 - type: 'test' - ... -# Subtest: buckets end at the current hour, day, week, or month, after as many before them -ok 990 - buckets end at the current hour, day, week, or month, after as many before them - --- - duration_ms: 3.707516 - type: 'test' - ... -# Subtest: a summary sums the range, the span before it, and each owner, model, and stack -ok 991 - a summary sums the range, the span before it, and each owner, model, and stack - --- - duration_ms: 1.425917 - type: 'test' - ... -# Subtest: a picked span sums by hour, day, week, or month by its length -ok 992 - a picked span sums by hour, day, week, or month by its length - --- - duration_ms: 2.266449 - type: 'test' - ... -# Subtest: a picked span compares with as many days just before it and ignores the days after -ok 993 - a picked span compares with as many days just before it and ignores the days after - --- - duration_ms: 0.880663 - type: 'test' - ... -# Subtest: counts read short and shares round -ok 994 - counts read short and shares round - --- - duration_ms: 0.851772 - type: 'test' - ... -# Subtest: withUsageFields fills harness, issue·PR, toolCalls, wallMs, and keeps tokens -ok 995 - withUsageFields fills harness, issue·PR, toolCalls, wallMs, and keeps tokens - --- - duration_ms: 2.315431 - type: 'test' - ... -# Subtest: missing any of the five usage fields is red -ok 996 - missing any of the five usage fields is red - --- - duration_ms: 0.486563 - type: 'test' - ... -# Subtest: foldCalls counts tool/call events and wall clock from the attempt -ok 997 - foldCalls counts tool/call events and wall clock from the attempt - --- - duration_ms: 1.444117 - type: 'test' - ... -# Subtest: foldCalls records a routed harness and leaves the resume state unchanged -ok 998 - foldCalls records a routed harness and leaves the resume state unchanged - --- - duration_ms: 1.640153 - type: 'test' - ... -# Subtest: noteUsageHarness keeps a triage label and clears back to default -ok 999 - noteUsageHarness keeps a triage label and clears back to default - --- - duration_ms: 1.184861 - type: 'test' - ... -# Subtest: extractIssuePr prefers PR refs over bare issue numbers -ok 1000 - extractIssuePr prefers PR refs over bare issue numbers - --- - duration_ms: 0.412991 - type: 'test' - ... -# Subtest: fixture usage.sqlite has one real calls row with all five fields -not ok 1001 - fixture usage.sqlite has one real calls row with all five fields - --- - duration_ms: 3.669355 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/usage-fields.test.js:88:1' - failureType: 'testCodeFailure' - error: |- - Expected values to be strictly equal: - - null !== 0 - - code: 'ERR_ASSERTION' - name: 'AssertionError' - expected: 0 - actual: ~ - operator: 'strictEqual' - stack: |- - TestContext. (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/usage-fields.test.js:106:10) - Test.runInAsyncScope (node:async_hooks:214:14) - Test.run (node:internal/test_runner/test:1047:25) - Test.processPendingSubtests (node:internal/test_runner/test:744:18) - Test.postRun (node:internal/test_runner/test:1173:19) - Test.run (node:internal/test_runner/test:1101:12) - async Test.processPendingSubtests (node:internal/test_runner/test:744:7) - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/usage.test.js -not ok 237 - test/usage.test.js - --- - duration_ms: 198.64221 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/usage.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: every rule that writes in the user ink paints the user surface under it -ok 1003 - every rule that writes in the user ink paints the user surface under it - --- - duration_ms: 12.565656 - type: 'test' - ... -# Subtest: no ds-bot text color sits on a surface that a skin owns -ok 1004 - no ds-bot text color sits on a surface that a skin owns - --- - duration_ms: 20.084232 - type: 'test' - ... -# Subtest: ds-bot leaves the host bubble variables to the host and its skins -ok 1005 - ds-bot leaves the host bubble variables to the host and its skins - --- - duration_ms: 5.644807 - type: 'test' - ... -# Subtest: the user ink reads on the user surface in every built-in theme and mode -ok 1006 - the user ink reads on the user surface in every built-in theme and mode - --- - duration_ms: 2.321801 - type: 'test' - ... -# Subtest: a user message stays readable when a dark skin repaints the host bubble -ok 1007 - a user message stays readable when a dark skin repaints the host bubble - --- - duration_ms: 15.029371 - type: 'test' - ... -# Subtest: the surface wins over the host bubble rule that reads the skin variable -ok 1008 - the surface wins over the host bubble rule that reads the skin variable - --- - duration_ms: 1.992492 - type: 'test' - ... -# Subtest: \#457: my own face-room line is never drawn as held, so its colour does not flip -ok 1009 - \#457: my own face-room line is never drawn as held, so its colour does not flip - --- - duration_ms: 0.746889 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/voice-speech.test.js -not ok 239 - test/voice-speech.test.js - --- - duration_ms: 121.789214 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/voice-speech.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/web-search.test.js -not ok 240 - test/web-search.test.js - --- - duration_ms: 104.988467 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/web-search.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/work-dir.test.js -not ok 241 - test/work-dir.test.js - --- - duration_ms: 200.440536 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/work-dir.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/work-dispatch.test.js -not ok 242 - test/work-dispatch.test.js - --- - duration_ms: 219.934433 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/work-dispatch.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: a definition saves to canonical bytes and reads back unchanged -ok 1014 - a definition saves to canonical bytes and reads back unchanged - --- - duration_ms: 5.505673 - type: 'test' - ... -# Subtest: the same definition in a different key order saves to the same bytes -ok 1015 - the same definition in a different key order saves to the same bytes - --- - duration_ms: 0.605425 - type: 'test' - ... -# Subtest: a preset copy differs from its preset only in id and name, and the preset file is untouched -ok 1016 - a preset copy differs from its preset only in id and name, and the preset file is untouched - --- - duration_ms: 2.143295 - type: 'test' - ... -# Subtest: an id is a file name: lowercase, digits and hyphens, and a preset id is never one of ours -ok 1017 - an id is a file name: lowercase, digits and hyphens, and a preset id is never one of ours - --- - duration_ms: 0.501283 - type: 'test' - ... -# Subtest: a blank copy keeps its nodes and edges and nothing else moves -ok 1018 - a blank copy keeps its nodes and edges and nothing else moves - --- - duration_ms: 0.662957 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/workflow-node-connectors.test.js -not ok 244 - test/workflow-node-connectors.test.js - --- - duration_ms: 225.058416 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/workflow-node-connectors.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: a stale verdict prints the producer sentence with both revisions and no pass -ok 1020 - a stale verdict prints the producer sentence with both revisions and no pass - --- - duration_ms: 3.43729 - type: 'test' - ... -# Subtest: a fact that could not be read is named, and a reader that answered nothing says so -ok 1021 - a fact that could not be read is named, and a reader that answered nothing says so - --- - duration_ms: 1.237232 - type: 'test' - ... -# Subtest: a check nobody implemented refuses instead of being read as present -ok 1022 - a check nobody implemented refuses instead of being read as present - --- - duration_ms: 0.472402 - type: 'test' - ... -# Subtest: a node with no guards and a node that does not exist both answer plainly -ok 1023 - a node with no guards and a node that does not exist both answer plainly - --- - duration_ms: 1.620853 - type: 'test' - ... -# Subtest: \#1524: gated() logic - ephemeral with deferred MUST be gated (the fix) -ok 1024 - \#1524: gated() logic - ephemeral with deferred MUST be gated (the fix) - --- - duration_ms: 1.713534 - type: 'test' - ... -# Subtest: \#1524: tombstone logic - post-removal late reply MUST be gated and denied -ok 1025 - \#1524: tombstone logic - post-removal late reply MUST be gated and denied - --- - duration_ms: 0.434371 - type: 'test' - ... -# Subtest: \#1524: normal (non-ephemeral) bot behavior unchanged -ok 1026 - \#1524: normal (non-ephemeral) bot behavior unchanged - --- - duration_ms: 0.438432 - type: 'test' - ... -# Subtest: \#1524: ephemeral node reply is not delivered to Main Bot chat -ok 1027 - \#1524: ephemeral node reply is not delivered to Main Bot chat - --- - duration_ms: 45.199844 - type: 'test' - ... -# Subtest: \#1524: persistent Bot-to-Bot replies are NOT blocked -ok 1028 - \#1524: persistent Bot-to-Bot replies are NOT blocked - --- - duration_ms: 1.039027 - type: 'test' - ... -# Subtest: \#1524: ephemeral Bot replies do NOT leak, middleware runs for stepResult, tombstone works -ok 1029 - \#1524: ephemeral Bot replies do NOT leak, middleware runs for stepResult, tombstone works - --- - duration_ms: 0.953345 - type: 'test' - ... -# Subtest: the repo-dev preset is data, and it validates with the roles this team has -ok 1030 - the repo-dev preset is data, and it validates with the roles this team has - --- - duration_ms: 7.893875 - type: 'test' - ... -# Subtest: the columns are the definition s, and a node that says column: false draws none (\#1265) -ok 1031 - the columns are the definition s, and a node that says column: false draws none (\#1265) - --- - duration_ms: 2.359372 - type: 'test' - ... -# Subtest: a definition that states no column keeps step 1 s answer, the node id -ok 1032 - a definition that states no column keeps step 1 s answer, the node id - --- - duration_ms: 0.976585 - type: 'test' - ... -# Subtest: a column the board does not have, and a guard check nobody implements, are each refused by name -ok 1033 - a column the board does not have, and a guard check nobody implements, are each refused by name - --- - duration_ms: 1.893009 - type: 'test' - ... -# Subtest: a guard whose check nobody implements refuses instead of passing on a guess (\#1291 debt) -ok 1034 - a guard whose check nobody implements refuses instead of passing on a guess (\#1291 debt) - --- - duration_ms: 1.286024 - type: 'test' - ... -# Subtest: a fact is keyed by its parsed spec, so "text: draft" and "text:draft" are one fact (\#1291 debt) -ok 1035 - a fact is keyed by its parsed spec, so "text: draft" and "text:draft" are one fact (\#1291 debt) - --- - duration_ms: 0.948295 - type: 'test' - ... -# Subtest: one word for one thing: a node names a role, and the older spelling is not read (\#1291 debt) -ok 1036 - one word for one thing: a node names a role, and the older spelling is not read (\#1291 debt) - --- - duration_ms: 0.708558 - type: 'test' - ... -# Subtest: an edge carries its artifact once, and says so (\#1291 debt) -ok 1037 - an edge carries its artifact once, and says so (\#1291 debt) - --- - duration_ms: 0.37444 - type: 'test' - ... -# Subtest: the gate s refusal is the merge gate s own sentence, byte for byte (acceptance 9) -ok 1038 - the gate s refusal is the merge gate s own sentence, byte for byte (acceptance 9) - --- - duration_ms: 2.218598 - type: 'test' - ... -# Subtest: the gate starts only when every fact it reads is present, current and says the right thing -ok 1039 - the gate starts only when every fact it reads is present, current and says the right thing - --- - duration_ms: 1.836768 - type: 'test' - ... -# Subtest: a fact nobody could read is unreadable, and no fact is guessed (acceptance 10) -ok 1040 - a fact nobody could read is unreadable, and no fact is guessed (acceptance 10) - --- - duration_ms: 2.264529 - type: 'test' - ... -# Subtest: a check run with no conclusion is unreadable, not a fact whose value is null (\#1298) -ok 1041 - a check run with no conclusion is unreadable, not a fact whose value is null (\#1298) - --- - duration_ms: 0.347649 - type: 'test' - ... -# Subtest: a job instantiates exactly one node card, parented to the job and queued by role -ok 1042 - a job instantiates exactly one node card, parented to the job and queued by role - --- - duration_ms: 8.348037 - type: 'test' - ... -# Subtest: a missing input creates no card and the refusal is enterNode's own sentence -ok 1043 - a missing input creates no card and the refusal is enterNode's own sentence - --- - duration_ms: 2.002782 - type: 'test' - ... -# Subtest: the card is queued for the node's role and carries no assignee -ok 1044 - the card is queued for the node's role and carries no assignee - --- - duration_ms: 1.674463 - type: 'test' - ... -# Subtest: two passes on the same facts open one card, and a replayed tick after a restart opens none -ok 1045 - two passes on the same facts open one card, and a replayed tick after a restart opens none - --- - duration_ms: 1.695254 - type: 'test' - ... -# Subtest: node two opens only when node one's output is present and current -ok 1046 - node two opens only when node one's output is present and current - --- - duration_ms: 1.54145 - type: 'test' - ... -# Subtest: two ready nodes open together, with no second limit in the plan -ok 1047 - two ready nodes open together, with no second limit in the plan - --- - duration_ms: 0.465102 - type: 'test' - ... -# Subtest: another job's card is not this job's record, in the plan or in completions -ok 1048 - another job's card is not this job's record, in the plan or in completions - --- - duration_ms: 1.093008 - type: 'test' - ... -# Subtest: a stale revision refuses and says both revisions, leaving the open card alone -ok 1049 - a stale revision refuses and says both revisions, leaving the open card alone - --- - duration_ms: 0.7383 - type: 'test' - ... -# Subtest: a held job opens nothing on any node, in the definition's own sentence -ok 1050 - a held job opens nothing on any node, in the definition's own sentence - --- - duration_ms: 2.061393 - type: 'test' - ... -# Subtest: a blank hold is not a hold: it plans exactly like no hold at all (\#1337) -ok 1051 - a blank hold is not a hold: it plans exactly like no hold at all (\#1337) - --- - duration_ms: 3.141091 - type: 'test' - ... -# Subtest: a hold with no name is read as not held, deliberately (\#1337) -ok 1052 - a hold with no name is read as not held, deliberately (\#1337) - --- - duration_ms: 3.84295 - type: 'test' - ... -# Subtest: an unreadable fact creates no card and is marked unreadable -ok 1053 - an unreadable fact creates no card and is marked unreadable - --- - duration_ms: 0.942874 - type: 'test' - ... -# Subtest: completions are append-only and replay adds nothing -ok 1054 - completions are append-only and replay adds nothing - --- - duration_ms: 1.094638 - type: 'test' - ... -# Subtest: an edited definition does not rewrite a card's past nodes -ok 1055 - an edited definition does not rewrite a card's past nodes - --- - duration_ms: 0.566625 - type: 'test' - ... -# Subtest: a job is done only when its terminal node's output is current -ok 1056 - a job is done only when its terminal node's output is current - --- - duration_ms: 1.042268 - type: 'test' - ... -# Subtest: the module holds no clock, no timer, no fetch and no host import -ok 1057 - the module holds no clock, no timer, no fetch and no host import - --- - duration_ms: 0.980305 - type: 'test' - ... -# node:internal/modules/package_json_reader:314 -# throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); -# ^ -# Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/dsh-llm' imported from /data/dsh/bot/workspace/replay-2261/merged/deepseek-harness/package.json -# at Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9) -# at packageResolve (node:internal/modules/esm/resolve:772:81) -# at moduleResolve (node:internal/modules/esm/resolve:859:18) -# at defaultResolve (node:internal/modules/esm/resolve:989:11) -# at \#cachedDefaultResolve (node:internal/modules/esm/loader:747:20) -# at \#resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:783:38) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolve (file:///data/dsh/bot/workspace/replay-2261/merged/core/test/harness-resolve.mjs:44:14) -# at nextStep (node:internal/modules/customization_hooks:189:26) -# at resolveWithHooks (node:internal/modules/customization_hooks:417:10) { -# code: 'ERR_MODULE_NOT_FOUND' -# } -# Node.js v22.23.3 -# Subtest: test/workflow-store.test.js -not ok 250 - test/workflow-store.test.js - --- - duration_ms: 116.834765 - type: 'test' - location: '/data/dsh/bot/workspace/replay-2261/merged/core/test/workflow-store.test.js:1:1' - failureType: 'testCodeFailure' - exitCode: 1 - signal: ~ - error: 'test failed' - code: 'ERR_TEST_FAILURE' - ... -# Subtest: an artifact spec is a kind, and the kinds that name a fact need the name -ok 1059 - an artifact spec is a kind, and the kinds that name a fact need the name - --- - duration_ms: 3.056899 - type: 'test' - ... -# Subtest: a revision is part of the artifact, and a SHA compares case-insensitively -ok 1060 - a revision is part of the artifact, and a SHA compares case-insensitively - --- - duration_ms: 0.849192 - type: 'test' - ... -# Subtest: present and current are two questions, and an unreadable fact is not a pass -ok 1061 - present and current are two questions, and an unreadable fact is not a pass - --- - duration_ms: 0.707558 - type: 'test' - ... -# Subtest: the blank preset validates with its own team, and names a Bot on every node -ok 1062 - the blank preset validates with its own team, and names a Bot on every node - --- - duration_ms: 5.500463 - type: 'test' - ... -# Subtest: the columns are the definition s, not a built-in list -ok 1063 - the columns are the definition s, not a built-in list - --- - duration_ms: 2.769672 - type: 'test' - ... -# Subtest: the flowchart is generated: one box per node, one edge per edges[] row -ok 1064 - the flowchart is generated: one box per node, one edge per edges[] row - --- - duration_ms: 2.752092 - type: 'test' - ... -# Subtest: an input nothing produces is refused, unless the workflow declares it as a starting point -ok 1065 - an input nothing produces is refused, unless the workflow declares it as a starting point - --- - duration_ms: 0.976926 - type: 'test' - ... -# Subtest: an output nothing consumes is refused, unless it is a declared deliverable -ok 1066 - an output nothing consumes is refused, unless it is a declared deliverable - --- - duration_ms: 0.573655 - type: 'test' - ... -# Subtest: one fact has one producer, and two producers are refused by name -ok 1067 - one fact has one producer, and two producers are refused by name - --- - duration_ms: 1.245832 - type: 'test' - ... -# Subtest: a node without a role is refused, and so is a role that names nobody on the team -ok 1068 - a node without a role is refused, and so is a role that names nobody on the team - --- - duration_ms: 2.239948 - type: 'test' - ... -# Subtest: a cycle that is not declared is refused; a declared loop is how work goes back -ok 1069 - a cycle that is not declared is refused; a declared loop is how work goes back - --- - duration_ms: 1.311234 - type: 'test' - ... -# Subtest: a spelling the engine does not know, or an edge that does not line up, is refused on its own -ok 1070 - a spelling the engine does not know, or an edge that does not line up, is refused on its own - --- - duration_ms: 0.582215 - type: 'test' - ... -# Subtest: a missing input refuses in the node s own words, and moves nothing -ok 1071 - a missing input refuses in the node s own words, and moves nothing - --- - duration_ms: 0.910434 - type: 'test' - ... -# Subtest: a stale input refuses with both revisions, so a card reads without asking anyone -ok 1072 - a stale input refuses with both revisions, so a card reads without asking anyone - --- - duration_ms: 1.044207 - type: 'test' - ... -# Subtest: a fact is looked up by its parsed spec, not by the spelling the definition used (\#1298) -ok 1073 - a fact is looked up by its parsed spec, not by the spelling the definition used (\#1298) - --- - duration_ms: 1.256723 - type: 'test' - ... -# Subtest: a guard is a predicate over a fact, and its refusal says what the fact said -ok 1074 - a guard is a predicate over a fact, and its refusal says what the fact said - --- - duration_ms: 0.560854 - type: 'test' - ... -# Subtest: the ids are data: renaming them changes nothing but the strings -ok 1075 - the ids are data: renaming them changes nothing but the strings - --- - duration_ms: 1.16095 - type: 'test' - ... -# Subtest: a fact whose source revision is unreadable refuses, whether the key is missing or null (\#1291 INC) -ok 1076 - a fact whose source revision is unreadable refuses, whether the key is missing or null (\#1291 INC) - --- - duration_ms: 0.444842 - type: 'test' - ... -# Subtest: the unreadable sentence names the fact it read and never fills the source revision with an empty slot (\#1291 INC) -ok 1077 - the unreadable sentence names the fact it read and never fills the source revision with an empty slot (\#1291 INC) - --- - duration_ms: 0.351899 - type: 'test' - ... -# Subtest: the card and the gate say the same thing about an unreadable input (\#1291 INC) -ok 1078 - the card and the gate say the same thing about an unreadable input (\#1291 INC) - --- - duration_ms: 0.492473 - type: 'test' - ... -# Subtest: the page is not a file-path tutorial, even while it is still reading -ok 1079 - the page is not a file-path tutorial, even while it is still reading - --- - duration_ms: 4.928948 - type: 'test' - ... -# Subtest: a settled read lists factory pipelines and your own, and opens the flowchart -ok 1080 - a settled read lists factory pipelines and your own, and opens the flowchart - --- - duration_ms: 7.186497 - type: 'test' - ... -# Subtest: \#1789: a node the run skipped is named Skipped, the word the Room uses -ok 1081 - \#1789: a node the run skipped is named Skipped, the word the Room uses - --- - duration_ms: 2.28414 - type: 'test' - ... -# Subtest: \#2017: a node avatar takes the first code point, so an emoji name is whole -ok 1082 - \#2017: a node avatar takes the first code point, so an emoji name is whole - --- - duration_ms: 1.277463 - type: 'test' - ... -# Subtest: an empty list and a failed read are settled states, not a permanent reading line -ok 1083 - an empty list and a failed read are settled states, not a permanent reading line - --- - duration_ms: 0.906473 - type: 'test' - ... -# Subtest: a read that never returns becomes an error, and a good payload opens as ready -ok 1084 - a read that never returns becomes an error, and a good payload opens as ready - --- - duration_ms: 18.599824 - type: 'test' - ... -# Subtest: a missing workflow plugin is an enable hint, not the host endpoint string (\#1381) -ok 1085 - a missing workflow plugin is an enable hint, not the host endpoint string (\#1381) - --- - duration_ms: 1.854818 - type: 'test' - ... -# Subtest: editing the graph moves a node, draws an edge, drops a local Bot and removes one -ok 1086 - editing the graph moves a node, draws an edge, drops a local Bot and removes one - --- - duration_ms: 0.843932 - type: 'test' - ... -# Subtest: a drag on the open flowchart commits the moved graph -ok 1087 - a drag on the open flowchart commits the moved graph - --- - duration_ms: 1.846218 - type: 'test' - ... -# Subtest: edit mode sets a node system prompt and the commit keeps the edges -ok 1088 - edit mode sets a node system prompt and the commit keeps the edges - --- - duration_ms: 2.951086 - type: 'test' - ... -# Subtest: a factory preset with a live copy keeps the Use this entry (\#1396) -ok 1089 - a factory preset with a live copy keeps the Use this entry (\#1396) - --- - duration_ms: 1.319785 - type: 'test' - ... -# Subtest: Use this on a preset with a live copy hands the factory id to onUse (\#1396) -ok 1090 - Use this on a preset with a live copy hands the factory id to onUse (\#1396) - --- - duration_ms: 0.884263 - type: 'test' - ... -# Subtest: only a factory-backed graph offers Use this (\#1396) -ok 1091 - only a factory-backed graph offers Use this (\#1396) - --- - duration_ms: 1.037907 - type: 'test' - ... -# Subtest: a parallel frame encloses a member stored lower than its partner (\#1752) -ok 1092 - a parallel frame encloses a member stored lower than its partner (\#1752) - --- - duration_ms: 0.962735 - type: 'test' - ... -# Subtest: the Settings graph fits its plane into the canvas width (\#1752) -ok 1093 - the Settings graph fits its plane into the canvas width (\#1752) - --- - duration_ms: 0.720669 - type: 'test' - ... -# Subtest: a fitted graph keeps the right-hand card and the wire into it inside the canvas (\#1752) -ok 1094 - a fitted graph keeps the right-hand card and the wire into it inside the canvas (\#1752) - --- - duration_ms: 0.359769 - type: 'test' - ... -# Subtest: a graph wider than the canvas is fitted at half size with a reachable left edge (\#1769) -ok 1095 - a graph wider than the canvas is fitted at half size with a reachable left edge (\#1769) - --- - duration_ms: 0.37326 - type: 'test' - ... -# Subtest: the fitted stage carries the left offset and the plane is the same size as the helper says (\#1769) -ok 1096 - the fitted stage carries the left offset and the plane is the same size as the helper says (\#1769) - --- - duration_ms: 0.886303 - type: 'test' - ... -# Subtest: a graph that fits keeps the \#1752 scale and no left offset (\#1769) -ok 1097 - a graph that fits keeps the \#1752 scale and no left offset (\#1769) - --- - duration_ms: 0.888423 - type: 'test' - ... -# Subtest: the measured width is the canvas clientWidth, the same box the scroll range is read in (\#1769) -ok 1098 - the measured width is the canvas clientWidth, the same box the scroll range is read in (\#1769) - --- - duration_ms: 0.39138 - type: 'test' - ... -# Subtest: \#1810: a running workflow is read again every 2 s and the chip follows the run -ok 1099 - \#1810: a running workflow is read again every 2 s and the chip follows the run - --- - duration_ms: 15.514563 - type: 'test' - ... -# Subtest: \#1810: nothing running means one read in ten seconds, not a poll -ok 1100 - \#1810: nothing running means one read in ten seconds, not a poll - --- - duration_ms: 1.487018 - type: 'test' - ... -# Subtest: \#1810: an edit suspends the poll and finishing it brings the poll back -ok 1101 - \#1810: an edit suspends the poll and finishing it brings the poll back - --- - duration_ms: 4.132368 - type: 'test' - ... -# Subtest: \#1810: a page that unmounts stops asking -ok 1102 - \#1810: a page that unmounts stops asking - --- - duration_ms: 1.628702 - type: 'test' - ... -# Subtest: \#1810: a failed poll shows the error line and Retry, not an empty page -ok 1103 - \#1810: a failed poll shows the error line and Retry, not an empty page - --- - duration_ms: 2.052903 - type: 'test' - ... -# Subtest: \#2122: every wire leaves a port and never cuts through a card -ok 1104 - \#2122: every wire leaves a port and never cuts through a card - --- - duration_ms: 6.216912 - type: 'test' - ... -# Subtest: \#2122: a back edge is a visible loop outside the cards, not a stub -ok 1105 - \#2122: a back edge is a visible loop outside the cards, not a stub - --- - duration_ms: 1.208552 - type: 'test' - ... -# Subtest: \#2122: no two wires share one stroke for more than 20px -ok 1106 - \#2122: no two wires share one stroke for more than 20px - --- - duration_ms: 22.797292 - type: 'test' - ... -# Subtest: \#2122: the dashed parallel frame is built from the measured cards, not 72px -ok 1107 - \#2122: the dashed parallel frame is built from the measured cards, not 72px - --- - duration_ms: 1.456548 - type: 'test' - ... -# Subtest: \#2122: a card between two cards on one column sends the wire round it -ok 1108 - \#2122: a card between two cards on one column sends the wire round it - --- - duration_ms: 0.859322 - type: 'test' - ... -# Subtest: P-395: every wire joins two named cards, and a hit path names them -ok 1109 - P-395: every wire joins two named cards, and a hit path names them - --- - duration_ms: 1.15435 - type: 'test' - ... -# Subtest: P-395: hovering one wire points at it and dims the others, then lets them all go -ok 1110 - P-395: hovering one wire points at it and dims the others, then lets them all go - --- - duration_ms: 2.372412 - type: 'test' - ... -# Subtest: P-395: a read-only graph commits nothing when a wire is hovered or clicked -ok 1111 - P-395: a read-only graph commits nothing when a wire is hovered or clicked - --- - duration_ms: 2.069154 - type: 'test' - ... -# Subtest: \#2138: a back edge out of a parallel layer clears the card beside it -ok 1112 - \#2138: a back edge out of a parallel layer clears the card beside it - --- - duration_ms: 6.1428 - type: 'test' - ... -# Subtest: \#2138: a back edge that leaves a parallel layer clears the card beside it -ok 1113 - \#2138: a back edge that leaves a parallel layer clears the card beside it - --- - duration_ms: 3.646865 - type: 'test' - ... -# Subtest: \#2151: a loop across one parallel layer clears the middle card -ok 1114 - \#2151: a loop across one parallel layer clears the middle card - --- - duration_ms: 2.648319 - type: 'test' - ... -# Subtest: \#2151: a skip across one row clears the middle card -ok 1115 - \#2151: a skip across one row clears the middle card - --- - duration_ms: 2.6787 - type: 'test' - ... -# Subtest: a forward edge to the next row clears a taller card beside its source (\#2160) -ok 1116 - a forward edge to the next row clears a taller card beside its source (\#2160) - --- - duration_ms: 0.966386 - type: 'test' - ... -# Subtest: a forward edge to the next row clears taller cards on both sides of its source (\#2160) -ok 1117 - a forward edge to the next row clears taller cards on both sides of its source (\#2160) - --- - duration_ms: 1.014596 - type: 'test' - ... -# Subtest: a forward edge into the next row keeps the factory row pitch clear (\#2164) -ok 1118 - a forward edge into the next row keeps the factory row pitch clear (\#2164) - --- - duration_ms: 1.394996 - type: 'test' - ... -# Subtest: a forward edge into the next row turns in the corridor under a taller neighbour (\#2164) -ok 1119 - a forward edge into the next row turns in the corridor under a taller neighbour (\#2164) - --- - duration_ms: 0.678778 - type: 'test' - ... -# Subtest: a forward edge into the next row turns above the tallest CJK named card (\#2164) -ok 1120 - a forward edge into the next row turns above the tallest CJK named card (\#2164) - --- - duration_ms: 0.526354 - type: 'test' - ... -# Subtest: \#2176: a read-only window renders the host sentence instead of Edit and offers no rename or delete -ok 1121 - \#2176: a read-only window renders the host sentence instead of Edit and offers no rename or delete - --- - duration_ms: 0.966815 - type: 'test' - ... -# Subtest: \#2176: a read-only window never asks the host to save a graph the user drags -ok 1122 - \#2176: a read-only window never asks the host to save a graph the user drags - --- - duration_ms: 13.184612 - type: 'test' - ... -# Subtest: \#2176: a window that is not read-only keeps Edit, rename and delete -ok 1123 - \#2176: a window that is not read-only keeps Edit, rename and delete - --- - duration_ms: 0.885273 - type: 'test' - ... -# Subtest: \#2176: a read-only window offers no Use this on a preset and never creates a copy -ok 1124 - \#2176: a read-only window offers no Use this on a preset and never creates a copy - --- - duration_ms: 2.664369 - type: 'test' - ... -# Subtest: \#2176: a window that is not read-only keeps Use this and copies the preset once -ok 1125 - \#2176: a window that is not read-only keeps Use this and copies the preset once - --- - duration_ms: 2.658589 - type: 'test' - ... -1..1125 -# tests 1125 -# suites 0 -# pass 999 -# fail 125 -# cancelled 0 -# skipped 1 -# todo 0 -# duration_ms 21014.930402