2026-10-25T22:08:06.367Z ##[warning]The platform stopped this job's container while step "Build" ran. The job can only read (no secrets, deployment environment or token that can write), so Diffinery started the job again from the beginning on a new runner (restart 1 of 2). 2026-10-25T22:08:19.435Z Diffinery runner: job test (Unit tests (1/2)) for codician/diffinery@86148f73cd8b 2026-10-25T22:08:19.447Z Runner: image diffinery-runner:4d3bf17f06575e64ab4155b3, in cdg07, WEUR, container a5c45ce493d7f9c0dacb49a9ef0e8b3fdb1704853ccf3c0e160196ea58b695bb 2026-10-25T22:08:19.447Z Runner size: large (4 vCPU, 12 GiB of memory, 20 GB of disk), this job uses what a smaller runner doesn't have; runs-on: diffinery-large (or -medium, -small, -tiny) sets a size 2026-10-25T22:08:19.447Z Host: AMD EPYC (family 25, model 17), 4 vCPUs, 2550 MHz 2026-10-25T22:08:19.448Z Workspace: /workspace/diffinery 2026-10-25T22:08:19.484Z ##[group]Run actions/checkout@v4 2026-10-25T22:08:19.484Z ##[endgroup] 2026-10-25T22:08:19.486Z Syncing repository: codician/diffinery 2026-10-25T22:08:19.537Z Fetching the repository (depth 1) 2026-10-25T22:08:20.621Z remote: Enumerating objects: 909, done. 2026-10-25T22:08:20.946Z Receiving objects: 0% (1/909) Receiving objects: 1% (10/909) Receiving objects: 2% (19/909) Receiving objects: 3% (28/909) Receiving objects: 4% (37/909) Receiving objects: 5% (46/909) Receiving objects: 6% (55/909) Receiving objects: 7% (64/909) Receiving objects: 8% (73/909) Receiving objects: 9% (82/909) Receiving objects: 10% (91/909) Receiving objects: 11% (100/909) Receiving objects: 12% (110/909) Receiving objects: 13% (119/909) Receiving objects: 14% (128/909) Receiving objects: 15% (137/909) Receiving objects: 16% (146/909) Receiving objects: 17% (155/909) Receiving objects: 18% (164/909) Receiving objects: 19% (173/909) Receiving objects: 20% (182/909) Receiving objects: 21% (191/909) Receiving objects: 22% (200/909) Receiving objects: 23% (210/909) Receiving objects: 24% (219/909) Receiving objects: 25% (228/909) Receiving objects: 26% (237/909) Receiving objects: 27% (246/909) Receiving objects: 28% (255/909) Receiving objects: 29% (264/909) Receiving objects: 30% (273/909) Receiving objects: 31% (282/909) Receiving objects: 32% (291/909) Receiving objects: 33% (300/909) Receiving objects: 34% (310/909) Receiving objects: 35% (319/909) Receiving objects: 36% (328/909) Receiving objects: 37% (337/909) Receiving objects: 38% (346/909) Receiving objects: 39% (355/909) Receiving objects: 40% (364/909) Receiving objects: 41% (373/909) Receiving objects: 42% (382/909) Receiving objects: 43% (391/909) Receiving objects: 44% (400/909) Receiving objects: 45% (410/909) Receiving objects: 46% (419/909) Receiving objects: 47% (428/909) Receiving objects: 48% (437/909) Receiving objects: 49% (446/909) Receiving objects: 50% (455/909) Receiving objects: 51% (464/909) Receiving objects: 52% (473/909) Receiving objects: 53% (482/909) Receiving objects: 54% (491/909) Receiving objects: 55% (500/909) Receiving objects: 56% (510/909) Receiving objects: 57% (519/909) Receiving objects: 58% (528/909) Receiving objects: 59% (537/909) Receiving objects: 60% (546/909) Receiving objects: 61% (555/909) Receiving objects: 62% (564/909) Receiving objects: 63% (573/909) Receiving objects: 64% (582/909) Receiving objects: 65% (591/909) Receiving objects: 66% (600/909) Receiving objects: 67% (610/909) Receiving objects: 68% (619/909) Receiving objects: 69% (628/909) Receiving objects: 70% (637/909) Receiving objects: 71% (646/909) Receiving objects: 72% (655/909) Receiving objects: 73% (664/909) Receiving objects: 74% (673/909) Receiving objects: 75% (682/909) Receiving objects: 76% (691/909) Receiving objects: 77% (700/909) Receiving objects: 78% (710/909) Receiving objects: 79% (719/909) Receiving objects: 80% (728/909) Receiving objects: 81% (737/909) Receiving objects: 82% (746/909) Receiving objects: 83% (755/909) Receiving objects: 84% (764/909) Receiving objects: 85% (773/909) Receiving objects: 86% (782/909) Receiving objects: 87% (791/909) Receiving objects: 88% (800/909) Receiving objects: 89% (810/909) Receiving objects: 90% (819/909) Receiving objects: 91% (828/909) Receiving objects: 92% (837/909) Receiving objects: 93% (846/909) Receiving objects: 94% (855/909) Receiving objects: 95% (864/909) Receiving objects: 96% (873/909) remote: Total 909 (delta 0), reused 909 (delta 0) 2026-10-25T22:08:20.948Z Receiving objects: 97% (882/909) Receiving objects: 98% (891/909) Receiving objects: 99% (900/909) Receiving objects: 100% (909/909) Receiving objects: 100% (909/909), 5.76 MiB | 28.10 MiB/s, done. 2026-10-25T22:08:21.021Z From https://diffinery.com/codician/diffinery 2026-10-25T22:08:21.022Z * [new ref] 86148f73cd8b3215ae82063fabbb9a5bde718327 -> origin/main 2026-10-25T22:08:21.126Z Switched to a new branch 'main' 2026-10-25T22:08:21.130Z HEAD is now at 86148f73cd8b3215ae82063fabbb9a5bde718327 2026-10-25T22:08:21.217Z Download action repository 'pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1' 2026-10-25T22:08:21.577Z ##[group]Run pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 2026-10-25T22:08:21.577Z with: 2026-10-25T22:08:21.577Z dest: ~/setup-pnpm 2026-10-25T22:08:21.577Z run_install: null 2026-10-25T22:08:21.577Z cache: false 2026-10-25T22:08:21.577Z cache_dependency_path: pnpm-lock.yaml 2026-10-25T22:08:21.577Z package_json_file: package.json 2026-10-25T22:08:21.577Z standalone: false 2026-10-25T22:08:21.577Z ##[endgroup] 2026-10-25T22:08:21.756Z ##[group]Running self-installer... 2026-10-25T22:08:22.417Z Progress: resolved 1, reused 0, downloaded 0, added 0 2026-10-25T22:08:22.424Z Packages: +1 2026-10-25T22:08:22.424Z + 2026-10-25T22:08:22.920Z Progress: resolved 1, reused 0, downloaded 1, added 1, done 2026-10-25T22:08:22.945Z 2026-10-25T22:08:22.945Z dependencies: 2026-10-25T22:08:22.945Z + pnpm 10.28.0 (12.15.0 is available) 2026-10-25T22:08:22.945Z 2026-10-25T22:08:22.947Z Done in 966ms 2026-10-25T22:08:22.965Z ##[endgroup] 2026-10-25T22:08:22.965Z Installation Completed! 2026-10-25T22:08:23.039Z ##[group]Run actions/setup-node@v4 2026-10-25T22:08:23.039Z with: 2026-10-25T22:08:23.039Z node-version: 22 2026-10-25T22:08:23.039Z cache: pnpm 2026-10-25T22:08:23.039Z ##[endgroup] 2026-10-25T22:08:23.045Z Found in cache @ 22.22.0 (pre-installed node satisfies '22') 2026-10-25T22:08:23.967Z Cache Size: ~216 MB (226934503 B) 2026-10-25T22:08:28.213Z Cache restored from key: node-cache-Linux-x64-pnpm-42d02c0263a3b5f911ed6ae8e9210922b97166ca02e60b2c70c55dfa1f00371b 2026-10-25T22:08:28.296Z ##[group]Run pnpm install --frozen-lockfile 2026-10-25T22:08:28.296Z ##[endgroup] 2026-10-25T22:08:28.779Z Scope: all 8 workspace projects 2026-10-25T22:08:28.836Z Lockfile is up to date, resolution step is skipped 2026-10-25T22:08:28.877Z Progress: resolved 1, reused 0, downloaded 0, added 0 2026-10-25T22:08:28.908Z Packages: +251 2026-10-25T22:08:28.908Z ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2026-10-25T22:08:29.878Z Progress: resolved 251, reused 245, downloaded 0, added 244 2026-10-25T22:08:30.187Z Progress: resolved 251, reused 245, downloaded 0, added 251, done 2026-10-25T22:08:30.316Z .../esbuild@0.28.1/node_modules/esbuild postinstall$ node install.js 2026-10-25T22:08:30.317Z .../esbuild@0.25.12/node_modules/esbuild postinstall$ node install.js 2026-10-25T22:08:30.317Z .../node_modules/workerd postinstall$ node install.js 2026-10-25T22:08:30.318Z .../node_modules/workerd postinstall$ node install.js 2026-10-25T22:08:30.337Z .../esbuild@0.25.11/node_modules/esbuild postinstall$ node install.js 2026-10-25T22:08:30.545Z .../node_modules/workerd postinstall: Done 2026-10-25T22:08:30.546Z .../esbuild@0.25.11/node_modules/esbuild postinstall: Done 2026-10-25T22:08:30.555Z .../esbuild@0.28.1/node_modules/esbuild postinstall: Done 2026-10-25T22:08:30.557Z .../esbuild@0.28.2/node_modules/esbuild postinstall$ node install.js 2026-10-25T22:08:30.572Z .../esbuild@0.25.12/node_modules/esbuild postinstall: Done 2026-10-25T22:08:30.681Z .../node_modules/workerd postinstall: Done 2026-10-25T22:08:30.684Z .../esbuild@0.28.2/node_modules/esbuild postinstall: Done 2026-10-25T22:08:31.133Z 2026-10-25T22:08:31.133Z devDependencies: 2026-10-25T22:08:31.133Z + turbo 2.11.7 2026-10-25T22:08:31.133Z + typescript 5.9.3 2026-10-25T22:08:31.133Z 2026-10-25T22:08:31.600Z Done in 3.1s using pnpm v10.28.0 2026-10-25T22:08:32.078Z ##[group]Run pnpm -r --if-present build 2026-10-25T22:08:32.078Z ##[endgroup] 2026-10-25T22:08:32.392Z Scope: 7 of 8 workspace projects 2026-10-25T22:08:32.396Z apps/cli build$ esbuild src/bin.ts --bundle --platform=node --target=node22 --format=esm --outfile=dist/diffinery.mjs "--banner:js=#!/usr/bin/env node 2026-10-25T22:08:32.396Z import { createRequire as __diffineryCreateRequire } from 'node:module'; const require = __diffineryCreateRequire(import.meta.url);" 2026-10-25T22:08:32.396Z apps/diffinery build$ node islands/build.mjs && node scripts/build-docs.mjs 2026-10-25T22:08:32.396Z containers/runner build$ esbuild src/main.ts --bundle --platform=node --target=node22 --format=esm --outfile=dist/agent.mjs --external:bufferutil --external:utf-8-validate "--banner:js=import { createRequire as __diffineryCreateRequire } from 'node:module'; const require = __diffineryCreateRequire(import.meta.url);" 2026-10-25T22:08:32.486Z apps/cli build: dist/diffinery.mjs 473.3kb 2026-10-25T22:08:32.490Z apps/cli build: ⚡ Done in 74ms 2026-10-25T22:08:32.493Z containers/runner build: dist/agent.mjs 684.1kb 2026-10-25T22:08:32.494Z containers/runner build: ⚡ Done in 73ms 2026-10-25T22:08:32.496Z containers/runner build: Done 2026-10-25T22:08:32.497Z apps/cli build: Done 2026-10-25T22:08:34.385Z apps/diffinery build: islands: kumo.js 466 KB, kumo.css 149 KB, terminal.js 286 KB 2026-10-25T22:08:34.722Z apps/diffinery build: docs: 84 pages (+2 generated at runtime), 20 site pages, 15 images, CLI 0.1.0 (254 KiB), editor extension 0.1.2 (26 KiB), JetBrains plugin 0.1.1 (70 KiB), Claude Code plugins diffinery 0.1.4, diffinery-ci 0.2.4 2026-10-25T22:08:34.735Z apps/diffinery build: Done 2026-10-25T22:08:34.838Z ##[group]Run pnpm -r --if-present run test --shard=1/2 2026-10-25T22:08:34.838Z ##[endgroup] 2026-10-25T22:08:35.136Z Scope: 7 of 8 workspace projects 2026-10-25T22:08:35.139Z apps/vscode test$ vitest run --shard=1/2 2026-10-25T22:08:35.140Z packages/git-core test$ vitest run --shard=1/2 2026-10-25T22:08:35.140Z packages/workflow-yaml test$ vitest run --shard=1/2 2026-10-25T22:08:37.972Z apps/vscode test: (!) Your Vite config uses features that are unsupported by `configLoader: 'native'`, which is planned to become the default in a future major version of Vite: 2026-10-25T22:08:37.972Z apps/vscode test: - ESM syntax in a file loaded as CommonJS (vitest.config.ts:1:1). Use a `.mjs` extension or set `"type": "module"` in the closest package.json 2026-10-25T22:08:37.972Z apps/vscode test: - ESM syntax in a file loaded as CommonJS (../../vitest.shared.ts:10:1). Use a `.mjs` extension or set `"type": "module"` in the closest package.json 2026-10-25T22:08:37.972Z apps/vscode test: Set `VITE_CONFIG_NATIVE_IGNORE_WARNING=true` to suppress this warning. 2026-10-25T22:08:37.972Z packages/git-core test: (!) Your Vite config uses features that are unsupported by `configLoader: 'native'`, which is planned to become the default in a future major version of Vite: 2026-10-25T22:08:37.972Z packages/git-core test: - import "../../vitest.shared" without a file extension (vitest.config.ts:2:26). Add the file extension 2026-10-25T22:08:37.974Z packages/git-core test: - ESM syntax in a file loaded as CommonJS (../../vitest.shared.ts:10:1). Use a `.mjs` extension or set `"type": "module"` in the closest package.json 2026-10-25T22:08:37.974Z packages/git-core test: Set `VITE_CONFIG_NATIVE_IGNORE_WARNING=true` to suppress this warning. 2026-10-25T22:08:37.975Z packages/workflow-yaml test: (!) Your Vite config uses features that are unsupported by `configLoader: 'native'`, which is planned to become the default in a future major version of Vite: 2026-10-25T22:08:37.975Z packages/workflow-yaml test: - import "../../vitest.shared" without a file extension (vitest.config.ts:2:26). Add the file extension 2026-10-25T22:08:37.975Z packages/workflow-yaml test: - ESM syntax in a file loaded as CommonJS (../../vitest.shared.ts:10:1). Use a `.mjs` extension or set `"type": "module"` in the closest package.json 2026-10-25T22:08:37.975Z packages/workflow-yaml test: Set `VITE_CONFIG_NATIVE_IGNORE_WARNING=true` to suppress this warning. 2026-10-25T22:08:37.995Z packages/workflow-yaml test: RUN v4.1.11 /workspace/diffinery/packages/workflow-yaml 2026-10-25T22:08:37.998Z apps/vscode test: RUN v4.1.11 /workspace/diffinery/apps/vscode 2026-10-25T22:08:38.000Z packages/git-core test: RUN v4.1.11 /workspace/diffinery/packages/git-core 2026-10-25T22:08:38.448Z apps/vscode test: ✓ test/repos.test.ts (6 tests) 12ms 2026-10-25T22:08:38.460Z apps/vscode test: ✓ test/package.test.ts (2 tests) 91ms 2026-10-25T22:08:38.468Z apps/vscode test: Test Files 2 passed (2) 2026-10-25T22:08:38.468Z apps/vscode test: Tests 8 passed (8) 2026-10-25T22:08:38.468Z apps/vscode test: Start at 22:08:38 2026-10-25T22:08:38.468Z apps/vscode test: Duration 455ms (transform 176ms, setup 0ms, import 271ms, tests 103ms, environment 0ms) 2026-10-25T22:08:38.485Z apps/vscode test: Done 2026-10-25T22:08:38.673Z packages/workflow-yaml test: ✓ test/expr.test.ts (48 tests) 19ms 2026-10-25T22:08:38.676Z packages/workflow-yaml test: ✓ test/cron.test.ts (23 tests) 34ms 2026-10-25T22:08:38.726Z packages/workflow-yaml test: ✓ test/parse.test.ts (31 tests) 70ms 2026-10-25T22:08:38.739Z packages/workflow-yaml test: Test Files 3 passed (3) 2026-10-25T22:08:38.739Z packages/workflow-yaml test: Tests 102 passed (102) 2026-10-25T22:08:38.739Z packages/workflow-yaml test: Start at 22:08:38 2026-10-25T22:08:38.739Z packages/workflow-yaml test: Duration 729ms (transform 523ms, setup 0ms, import 1.01s, tests 123ms, environment 0ms) 2026-10-25T22:08:38.782Z packages/workflow-yaml test: Done 2026-10-25T22:08:39.251Z packages/git-core test: ✓ test/merge-base.test.ts (3 tests) 504ms 2026-10-25T22:08:39.251Z packages/git-core test: ✓ is a best common ancestor, the only one when there is one, on random histories with and without clock skew 470ms 2026-10-25T22:08:39.339Z packages/git-core test: ✓ test/diff-budget.test.ts (5 tests) 592ms 2026-10-25T22:08:39.339Z packages/git-core test: ✓ a three-way merge too large to compute is a conflict, quickly 391ms 2026-10-25T22:08:39.558Z packages/git-core test: ✓ test/pack-stream.test.ts (3 tests) 119ms 2026-10-25T22:08:44.163Z packages/git-core test: ✓ test/pack-limits.test.ts (6 tests) 5414ms 2026-10-25T22:08:44.163Z packages/git-core test: ✓ resolves a long delta chain in one pass, whatever order the pack lists it in 3581ms 2026-10-25T22:08:44.163Z packages/git-core test: ✓ counts what each object costs in memory, not only its content 1200ms 2026-10-25T22:08:44.164Z packages/git-core test: ✓ refuses a small pack whose objects inflate past the memory budget 609ms 2026-10-25T22:08:44.166Z packages/git-core test: Test Files 4 passed (4) 2026-10-25T22:08:44.166Z packages/git-core test: Tests 17 passed (17) 2026-10-25T22:08:44.166Z packages/git-core test: Start at 22:08:38 2026-10-25T22:08:44.166Z packages/git-core test: Duration 6.16s (transform 841ms, setup 0ms, import 1.24s, tests 6.63s, environment 0ms) 2026-10-25T22:08:44.195Z packages/git-core test: Done 2026-10-25T22:08:44.196Z apps/cli test$ vitest run --shard=1/2 2026-10-25T22:08:44.196Z apps/diffinery test$ vitest run --passWithNoTests --exclude 'test/e2e/**' --shard=1/2 2026-10-25T22:08:44.197Z containers/runner test$ vitest run --shard=1/2 2026-10-25T22:08:44.499Z apps/cli test: (!) Your Vite config uses features that are unsupported by `configLoader: 'native'`, which is planned to become the default in a future major version of Vite: 2026-10-25T22:08:44.500Z apps/cli test: - import "../../vitest.shared" without a file extension (vitest.config.ts:2:26). Add the file extension 2026-10-25T22:08:44.500Z apps/cli test: - ESM syntax in a file loaded as CommonJS (../../vitest.shared.ts:10:1). Use a `.mjs` extension or set `"type": "module"` in the closest package.json 2026-10-25T22:08:44.500Z apps/cli test: Set `VITE_CONFIG_NATIVE_IGNORE_WARNING=true` to suppress this warning. 2026-10-25T22:08:44.510Z containers/runner test: (!) Your Vite config uses features that are unsupported by `configLoader: 'native'`, which is planned to become the default in a future major version of Vite: 2026-10-25T22:08:44.517Z containers/runner test: - import "../../vitest.shared" without a file extension (vitest.config.ts:2:26). Add the file extension 2026-10-25T22:08:44.517Z containers/runner test: - ESM syntax in a file loaded as CommonJS (../../vitest.shared.ts:10:1). Use a `.mjs` extension or set `"type": "module"` in the closest package.json 2026-10-25T22:08:44.517Z containers/runner test: Set `VITE_CONFIG_NATIVE_IGNORE_WARNING=true` to suppress this warning. 2026-10-25T22:08:44.526Z apps/diffinery test: (!) Your Vite config uses features that are unsupported by `configLoader: 'native'`, which is planned to become the default in a future major version of Vite: 2026-10-25T22:08:44.526Z apps/diffinery test: - import "../../vitest.shared" without a file extension (vitest.config.ts:3:26). Add the file extension 2026-10-25T22:08:44.526Z apps/diffinery test: - ESM syntax in a file loaded as CommonJS (../../vitest.shared.ts:10:1). Use a `.mjs` extension or set `"type": "module"` in the closest package.json 2026-10-25T22:08:44.526Z apps/diffinery test: Set `VITE_CONFIG_NATIVE_IGNORE_WARNING=true` to suppress this warning. 2026-10-25T22:08:44.531Z apps/cli test: RUN v4.1.11 /workspace/diffinery/apps/cli 2026-10-25T22:08:44.540Z containers/runner test: RUN v4.1.11 /workspace/diffinery/containers/runner 2026-10-25T22:08:44.556Z apps/diffinery test: RUN v4.1.11 /workspace/diffinery/apps/diffinery 2026-10-25T22:08:45.152Z apps/diffinery test: (node:596) ExperimentalWarning: SQLite is an experimental feature and might change at any time 2026-10-25T22:08:45.152Z apps/diffinery test: (Use `node --trace-warnings ...` to show where the warning was created) 2026-10-25T22:08:45.227Z apps/diffinery test: (node:602) ExperimentalWarning: SQLite is an experimental feature and might change at any time 2026-10-25T22:08:45.227Z apps/diffinery test: (Use `node --trace-warnings ...` to show where the warning was created) 2026-10-25T22:08:45.328Z containers/runner test: ✓ test/jail.test.ts (12 tests) 198ms 2026-10-25T22:08:45.582Z apps/diffinery test: ✓ test/unit/usage.test.ts (23 tests) 186ms 2026-10-25T22:08:45.981Z apps/diffinery test: (node:656) ExperimentalWarning: SQLite is an experimental feature and might change at any time 2026-10-25T22:08:45.983Z apps/diffinery test: (Use `node --trace-warnings ...` to show where the warning was created) 2026-10-25T22:08:46.422Z containers/runner test: ✓ test/relay.test.ts (4 tests) 671ms 2026-10-25T22:08:46.422Z containers/runner test: ✓ answers a streamed PATCH (docker) like the registry would, then completes with an empty PUT 369ms 2026-10-25T22:08:47.186Z apps/diffinery test: stderr | test/unit/stuck-runs.test.ts > runs stuck after their jobs finished > a lost job event is sent again, so the run's workflow carries on and the next run in the group starts 2026-10-25T22:08:47.186Z apps/diffinery test: failed to notify workflow Error: network connection lost 2026-10-25T22:08:47.186Z apps/diffinery test: at Object.sendEvent (/workspace/diffinery/apps/diffinery/test/unit/stuck-runs.test.ts:85:31) 2026-10-25T22:08:47.186Z apps/diffinery test: at Actions.completeJob (/workspace/diffinery/apps/diffinery/src/repo/actions.ts:2739:22) 2026-10-25T22:08:47.186Z apps/diffinery test: at Object.runTest (/workspace/diffinery/apps/diffinery/test/unit/stuck-runs.test.ts:102:5) 2026-10-25T22:08:47.186Z apps/diffinery test: at /workspace/diffinery/apps/diffinery/test/unit/stuck-runs.test.ts:119:5 2026-10-25T22:08:47.186Z apps/diffinery test: at async file:///workspace/diffinery/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:1903:20 2026-10-25T22:08:47.196Z apps/diffinery test: stderr | test/unit/stuck-runs.test.ts > runs stuck after their jobs finished > a lost job event is sent again, so the run's workflow carries on and the next run in the group starts 2026-10-25T22:08:47.196Z apps/diffinery test: run stuck after its jobs finished: sending their completion events again dfac8b12752a46c2bc7a5f64ab9346e6 waiting 2026-10-25T22:08:47.227Z apps/cli test: ✓ test/pr.test.ts (21 tests) 1112ms 2026-10-25T22:08:47.227Z apps/cli test: ✓ pr checks --watch waits for the first check right after a push, and gives up after 2 minutes 343ms 2026-10-25T22:08:47.278Z apps/cli test: ✓ test/migrate.test.ts (4 tests) 1170ms 2026-10-25T22:08:47.279Z apps/cli test: ✓ creates the repo, pushes branches and tags, and copies issues, PRs, variables and secret names 435ms 2026-10-25T22:08:47.279Z apps/cli test: ✓ repo clone authenticates for that command only 344ms 2026-10-25T22:08:47.375Z apps/diffinery test: stderr | test/unit/stuck-runs.test.ts > runs stuck after their jobs finished > a run whose workflow failed is finished, failing and naming the jobs that never started; the late workflow changes nothing 2026-10-25T22:08:47.375Z apps/diffinery test: run stuck after its jobs finished: finishing it c168332e0cdb46808bb2711513ec8404 errored 2026-10-25T22:08:47.441Z apps/diffinery test: ✓ test/unit/runner-sizes.test.ts (22 tests) 405ms 2026-10-25T22:08:47.541Z apps/diffinery test: stderr | test/unit/stuck-runs.test.ts > runs stuck after their jobs finished > a run still stuck STUCK_RUN_FINISH_MS after its jobs finished is finished, though its workflow looks alive 2026-10-25T22:08:47.541Z apps/diffinery test: run stuck after its jobs finished: sending their completion events again 2e7eac3799f447aaacce24a7047dca90 waiting 2026-10-25T22:08:47.541Z apps/diffinery test: stderr | test/unit/stuck-runs.test.ts > runs stuck after their jobs finished > a run still stuck STUCK_RUN_FINISH_MS after its jobs finished is finished, though its workflow looks alive 2026-10-25T22:08:47.541Z apps/diffinery test: run stuck after its jobs finished: finishing it 2e7eac3799f447aaacce24a7047dca90 waiting 2026-10-25T22:08:47.629Z apps/diffinery test: stderr | test/unit/stuck-runs.test.ts > runs stuck after their jobs finished > a waiting run in the group repairs the stuck one when it plans: a cancelled run whose jobs ended long ago frees the group 2026-10-25T22:08:47.629Z apps/diffinery test: run stuck after its jobs finished: sending their completion events again c7f8c6b4dfb6457097e9653310a63ead waiting 2026-10-25T22:08:47.629Z apps/diffinery test: stderr | test/unit/stuck-runs.test.ts > runs stuck after their jobs finished > a waiting run in the group repairs the stuck one when it plans: a cancelled run whose jobs ended long ago frees the group 2026-10-25T22:08:47.629Z apps/diffinery test: run stuck after its jobs finished: finishing it c7f8c6b4dfb6457097e9653310a63ead waiting 2026-10-25T22:08:47.898Z apps/diffinery test: ✓ test/unit/stuck-runs.test.ts (7 tests) 881ms 2026-10-25T22:08:47.979Z apps/diffinery test: ✓ test/unit/auto-merge.test.ts (28 tests) 1158ms 2026-10-25T22:08:48.016Z apps/diffinery test: (node:1472) ExperimentalWarning: SQLite is an experimental feature and might change at any time 2026-10-25T22:08:48.016Z apps/diffinery test: (Use `node --trace-warnings ...` to show where the warning was created) 2026-10-25T22:08:48.177Z apps/cli test: ✓ test/login.test.ts (12 tests) 466ms 2026-10-25T22:08:48.212Z apps/cli test: ✓ test/misc.test.ts (9 tests) 260ms 2026-10-25T22:08:48.217Z apps/diffinery test: stderr | test/unit/suppression.test.ts > Email Sending's answer to a send > puts a refused recipient on the list (source send) and audits it; temporary failures change nothing 2026-10-25T22:08:48.218Z apps/diffinery test: email failed test Ann@Example.com E_RECIPIENT_SUPPRESSED: recipient is suppressed 2026-10-25T22:08:48.218Z apps/diffinery test: stderr | test/unit/suppression.test.ts > Email Sending's answer to a send > puts a refused recipient on the list (source send) and audits it; temporary failures change nothing 2026-10-25T22:08:48.218Z apps/diffinery test: email failed test bob@example.com E_DAILY_LIMIT_EXCEEDED: nope 2026-10-25T22:08:48.251Z apps/diffinery test: ✓ test/unit/suppression.test.ts (11 tests) 231ms 2026-10-25T22:08:48.354Z apps/diffinery test: (node:1624) ExperimentalWarning: SQLite is an experimental feature and might change at any time 2026-10-25T22:08:48.354Z apps/diffinery test: (Use `node --trace-warnings ...` to show where the warning was created) 2026-10-25T22:08:48.483Z apps/diffinery test: stderr | test/unit/moderation.test.ts > suspension > refuses tokens and sessions at once, stops Actions, and unsuspending restores the tokens 2026-10-25T22:08:48.483Z apps/diffinery test: mail queue not bound; dropping 1 email(s) 2026-10-25T22:08:48.484Z apps/diffinery test: stderr | test/unit/moderation.test.ts > suspension > refuses tokens and sessions at once, stops Actions, and unsuspending restores the tokens 2026-10-25T22:08:48.484Z apps/diffinery test: mail queue not bound; dropping 1 email(s) 2026-10-25T22:08:48.506Z apps/diffinery test: ✓ test/unit/review.test.ts (19 tests) 28ms 2026-10-25T22:08:48.512Z apps/diffinery test: ✓ test/unit/moderation.test.ts (9 tests) 160ms 2026-10-25T22:08:48.551Z apps/cli test: ✓ test/setup.test.ts (19 tests) 2432ms 2026-10-25T22:08:48.551Z apps/cli test: ✓ checks each part with the token from the environment, clones, reports, and writes no token to disk 531ms 2026-10-25T22:08:48.551Z apps/cli test: ✓ names the token that's missing or refused, with where to get a new one 301ms 2026-10-25T22:08:48.552Z apps/cli test: Test Files 5 passed (5) 2026-10-25T22:08:48.552Z apps/cli test: Tests 65 passed (65) 2026-10-25T22:08:48.552Z apps/cli test: Start at 22:08:44 2026-10-25T22:08:48.553Z apps/cli test: Duration 4.01s (transform 2.54s, setup 0ms, import 4.27s, tests 5.44s, environment 0ms) 2026-10-25T22:08:48.569Z apps/diffinery test: ✓ test/unit/today.test.ts (14 tests) 19ms 2026-10-25T22:08:48.605Z apps/cli test: Done 2026-10-25T22:08:48.778Z apps/diffinery test: (node:1919) ExperimentalWarning: SQLite is an experimental feature and might change at any time 2026-10-25T22:08:48.778Z apps/diffinery test: (Use `node --trace-warnings ...` to show where the warning was created) 2026-10-25T22:08:48.783Z apps/diffinery test: ✓ test/unit/job-permissions.test.ts (8 tests) 27ms 2026-10-25T22:08:49.005Z apps/diffinery test: stderr | test/unit/rate-limit.test.ts > rate limit checks > lets requests through when no limiter is configured or the limiter fails 2026-10-25T22:08:49.005Z apps/diffinery test: rate limiter failed RL_ANON Error: down 2026-10-25T22:08:49.005Z apps/diffinery test: at Object.limit (/workspace/diffinery/apps/diffinery/test/unit/rate-limit.test.ts:91:67) 2026-10-25T22:08:49.005Z apps/diffinery test: at overLimit (/workspace/diffinery/apps/diffinery/src/lib/rate-limit.ts:73:22) 2026-10-25T22:08:49.005Z apps/diffinery test: at /workspace/diffinery/apps/diffinery/test/unit/rate-limit.test.ts:92:18 2026-10-25T22:08:49.005Z apps/diffinery test: at process.processTicksAndRejections (node:internal/process/task_queues:105:5) 2026-10-25T22:08:49.074Z containers/runner test: ✓ test/import.test.ts (7 tests) 3737ms 2026-10-25T22:08:49.074Z containers/runner test: ✓ pushes history in chunks under a size limit the server enforces, then every ref, and cleans up 2304ms 2026-10-25T22:08:49.074Z containers/runner test: ✓ pushes every version of a large file first and whole, so the server never rebuilds one from a delta 934ms 2026-10-25T22:08:49.074Z containers/runner test: ✓ splits a refused batch of a large commit's files again, rather than retrying it whole 484ms 2026-10-25T22:08:49.245Z apps/diffinery test: ✓ test/unit/apps.test.ts (8 tests) 464ms 2026-10-25T22:08:49.461Z apps/diffinery test: (node:2111) ExperimentalWarning: SQLite is an experimental feature and might change at any time 2026-10-25T22:08:49.461Z apps/diffinery test: (Use `node --trace-warnings ...` to show where the warning was created) 2026-10-25T22:08:49.588Z apps/diffinery test: stderr | test/unit/killswitch.test.ts > kill switches > counts repositories that couldn't be stopped, and needs a reason 2026-10-25T22:08:49.588Z apps/diffinery test: kill switch: stopping work in repository broken failed Error: gone 2026-10-25T22:08:49.588Z apps/diffinery test: at Object.stopActions (/workspace/diffinery/apps/diffinery/test/unit/killswitch.test.ts:24:36) 2026-10-25T22:08:49.588Z apps/diffinery test: at worker (/workspace/diffinery/apps/diffinery/src/lib/killswitch.ts:155:63) 2026-10-25T22:08:49.588Z apps/diffinery test: at Function.from () 2026-10-25T22:08:49.588Z apps/diffinery test: at stopIn (/workspace/diffinery/apps/diffinery/src/lib/killswitch.ts:166:27) 2026-10-25T22:08:49.588Z apps/diffinery test: at changePause (/workspace/diffinery/apps/diffinery/src/lib/killswitch.ts:225:21) 2026-10-25T22:08:49.588Z apps/diffinery test: at process.processTicksAndRejections (node:internal/process/task_queues:105:5) 2026-10-25T22:08:49.588Z apps/diffinery test: at /workspace/diffinery/apps/diffinery/test/unit/killswitch.test.ts:123:12 2026-10-25T22:08:49.588Z apps/diffinery test: at async file:///workspace/diffinery/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:1903:20 2026-10-25T22:08:49.593Z apps/diffinery test: ✓ test/unit/killswitch.test.ts (5 tests) 132ms 2026-10-25T22:08:51.409Z apps/diffinery test: ✓ test/unit/coordinator.test.ts (8 tests) 12ms 2026-10-25T22:08:52.590Z apps/diffinery test: ✓ test/unit/secret-scan.test.ts (7 tests) 822ms 2026-10-25T22:08:52.590Z apps/diffinery test: ✓ scans a large file in slices, never as one string, with the same results 586ms 2026-10-25T22:08:53.039Z apps/diffinery test: ✓ test/unit/job-graph.test.ts (12 tests) 24ms 2026-10-25T22:08:53.237Z apps/diffinery test: (node:2500) ExperimentalWarning: SQLite is an experimental feature and might change at any time 2026-10-25T22:08:53.239Z apps/diffinery test: (Use `node --trace-warnings ...` to show where the warning was created) 2026-10-25T22:08:53.377Z apps/diffinery test: stderr | test/unit/rate-limit.test.ts > model requests per paying person (phase 5a) > counts per person, and lets requests through without a binding or when it fails 2026-10-25T22:08:53.379Z apps/diffinery test: model rate limiter failed Error: down 2026-10-25T22:08:53.379Z apps/diffinery test: at Object.limit (/workspace/diffinery/apps/diffinery/test/unit/rate-limit.test.ts:132:61) 2026-10-25T22:08:53.379Z apps/diffinery test: at modelRateLimited (/workspace/diffinery/apps/diffinery/src/lib/rate-limit.ts:92:33) 2026-10-25T22:08:53.380Z apps/diffinery test: at /workspace/diffinery/apps/diffinery/test/unit/rate-limit.test.ts:133:18 2026-10-25T22:08:53.380Z apps/diffinery test: at process.processTicksAndRejections (node:internal/process/task_queues:105:5) 2026-10-25T22:08:53.380Z apps/diffinery test: at async file:///workspace/diffinery/node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/chunk-artifact.js:1903:20 2026-10-25T22:08:53.381Z apps/diffinery test: ✓ test/unit/rate-limit.test.ts (10 tests) 4400ms 2026-10-25T22:08:53.381Z apps/diffinery test: ✓ answers 429 with retry-after once an anonymous address is over its limit 4371ms 2026-10-25T22:08:53.584Z apps/diffinery test: ✓ test/unit/job-token.test.ts (7 tests) 91ms 2026-10-25T22:08:53.670Z apps/diffinery test: (node:2637) ExperimentalWarning: SQLite is an experimental feature and might change at any time 2026-10-25T22:08:53.670Z apps/diffinery test: (Use `node --trace-warnings ...` to show where the warning was created) 2026-10-25T22:08:53.754Z apps/diffinery test: ✓ test/unit/visibility.test.ts (3 tests) 82ms 2026-10-25T22:08:54.038Z apps/diffinery test: (node:2710) ExperimentalWarning: SQLite is an experimental feature and might change at any time 2026-10-25T22:08:54.042Z apps/diffinery test: (Use `node --trace-warnings ...` to show where the warning was created) 2026-10-25T22:08:54.114Z apps/diffinery test: ✓ test/unit/role-grants.test.ts (2 tests) 74ms 2026-10-25T22:08:54.240Z containers/runner test: ✓ test/docker-wrapper.test.ts (4 tests) 8347ms 2026-10-25T22:08:54.241Z containers/runner test: ✓ lets docker commands that arrive while the daemon is starting through, with the head start on 1271ms 2026-10-25T22:08:54.241Z containers/runner test: ✓ gives up with a message, not a hang, when the daemon never comes up 2272ms 2026-10-25T22:08:54.241Z containers/runner test: ✓ starts the registry relay and the daemon together 2556ms 2026-10-25T22:08:54.241Z containers/runner test: ✓ starts the daemon again without the relay when the relay never comes up 2242ms 2026-10-25T22:08:54.473Z apps/diffinery test: ✓ test/unit/reusable.test.ts (4 tests) 13ms 2026-10-25T22:08:55.004Z apps/diffinery test: ✓ test/unit/today-view.test.ts (5 tests) 25ms 2026-10-25T22:08:55.123Z apps/diffinery test: ✓ test/unit/markdown-safety.test.ts (31 tests) 1929ms 2026-10-25T22:08:55.124Z apps/diffinery test: ✓ bounds the lookahead for many such paragraphs 374ms 2026-10-25T22:08:55.124Z apps/diffinery test: ✓ renders many comment openers in linear time 830ms 2026-10-25T22:08:55.369Z apps/diffinery test: ✓ test/unit/fsck.test.ts (16 tests) 396ms 2026-10-25T22:08:55.370Z apps/diffinery test: ✓ refuses a tree too large to check, before reading its names 377ms 2026-10-25T22:08:55.564Z apps/diffinery test: ✓ test/unit/rpc.test.ts (5 tests) 8ms 2026-10-25T22:08:55.596Z apps/diffinery test: ✓ test/unit/deploy-log-notes.test.ts (2 tests) 50ms 2026-10-25T22:08:55.738Z apps/diffinery test: ✓ test/unit/required.test.ts (11 tests) 9ms 2026-10-25T22:08:55.930Z apps/diffinery test: ✓ test/unit/redirects.test.ts (9 tests) 7ms 2026-10-25T22:08:55.963Z apps/diffinery test: ✓ test/unit/registry-upload.test.ts (2 tests) 515ms 2026-10-25T22:08:55.964Z apps/diffinery test: ✓ hash each chunk as it arrives, so the final request doesn't read the blob back 472ms 2026-10-25T22:08:55.988Z apps/diffinery test: ✓ test/unit/push-retry.test.ts (5 tests) 11ms 2026-10-25T22:08:56.203Z apps/diffinery test: ✓ test/unit/timing.test.ts (2 tests) 32ms 2026-10-25T22:08:56.353Z apps/diffinery test: ✓ test/unit/claude-plugins.test.ts (5 tests) 112ms 2026-10-25T22:08:56.530Z apps/diffinery test: ✓ test/unit/memory-pool.test.ts (3 tests) 11ms 2026-10-25T22:08:56.605Z apps/diffinery test: ✓ test/unit/wait-timer.test.ts (5 tests) 8ms 2026-10-25T22:08:56.764Z apps/diffinery test: ✓ test/unit/stages.test.ts (3 tests) 7ms 2026-10-25T22:08:56.798Z apps/diffinery test: ✓ test/unit/org-variables.test.ts (2 tests) 6ms 2026-10-25T22:08:56.911Z apps/diffinery test: ✓ test/unit/upload-pack.test.ts (1 test) 781ms 2026-10-25T22:08:56.911Z apps/diffinery test: ✓ sends each object as it is read, in side-band packets, never the whole pack at once 779ms 2026-10-25T22:08:56.940Z apps/diffinery test: ✓ test/unit/d1.test.ts (3 tests) 5ms 2026-10-25T22:08:57.022Z apps/diffinery test: ✓ test/unit/environment-secrets.test.ts (4 tests) 4ms 2026-10-25T22:08:57.150Z apps/diffinery test: ✓ test/unit/receive-head.test.ts (2 tests) 17ms 2026-10-25T22:08:57.206Z apps/diffinery test: ✓ test/unit/job-secrets.test.ts (4 tests) 5ms 2026-10-25T22:08:57.336Z apps/diffinery test: ✓ test/unit/tree-names.test.ts (5 tests) 5ms 2026-10-25T22:08:57.383Z apps/diffinery test: ✓ test/unit/mcp-registry-auth.test.ts (2 tests) 4ms 2026-10-25T22:08:57.478Z apps/diffinery test: ✓ test/unit/archive-stream.test.ts (3 tests) 350ms 2026-10-25T22:08:57.521Z apps/diffinery test: (node:3091) ExperimentalWarning: SQLite is an experimental feature and might change at any time 2026-10-25T22:08:57.522Z apps/diffinery test: (Use `node --trace-warnings ...` to show where the warning was created) 2026-10-25T22:08:57.555Z apps/diffinery test: ✓ test/unit/inflight.test.ts (1 test) 28ms 2026-10-25T22:08:57.640Z apps/diffinery test: ✓ test/unit/terminal-command.test.ts (1 test) 5ms 2026-10-25T22:08:57.753Z apps/diffinery test: ✓ test/unit/unpack-failure.test.ts (2 tests) 3ms 2026-10-25T22:08:57.823Z apps/diffinery test: ✓ test/unit/graphql.test.ts (3 tests) 7ms 2026-10-25T22:08:57.828Z apps/diffinery test: Test Files 46 passed (46) 2026-10-25T22:08:57.828Z apps/diffinery test: Tests 344 passed (344) 2026-10-25T22:08:57.828Z apps/diffinery test: Start at 22:08:44 2026-10-25T22:08:57.829Z apps/diffinery test: Duration 13.24s (transform 10.45s, setup 0ms, import 16.13s, tests 13.55s, environment 11ms) 2026-10-25T22:08:57.887Z apps/diffinery test: Done 2026-10-25T22:08:59.267Z containers/runner test: ✓ test/prefetch.test.ts (4 tests) 12461ms 2026-10-25T22:08:59.267Z containers/runner test: ✓ installs Go while the job's first steps run, and setup-go uses it 1637ms 2026-10-25T22:08:59.267Z containers/runner test: ✓ leaves nothing behind when a download doesn't match its published checksum 10569ms 2026-10-25T22:09:12.146Z containers/runner test: ✓ test/docker.test.ts (4 tests) 18327ms 2026-10-25T22:09:12.146Z containers/runner test: ✓ runs steps and JavaScript actions in a job container next to a service container 8778ms 2026-10-25T22:09:12.146Z containers/runner test: ✓ runs docker:// steps and Dockerfile actions with inputs, outputs, args and post entrypoints 4743ms 2026-10-25T22:09:12.147Z containers/runner test: ✓ fails a service that never gets healthy, and cleans up 4448ms 2026-10-25T22:09:12.147Z containers/runner test: ✓ explains that containers need Docker 356ms 2026-10-25T22:09:12.151Z containers/runner test: Test Files 6 passed (6) 2026-10-25T22:09:12.151Z containers/runner test: Tests 35 passed (35) 2026-10-25T22:09:12.151Z containers/runner test: Start at 22:08:44 2026-10-25T22:09:12.151Z containers/runner test: Duration 27.60s (transform 1.37s, setup 0ms, import 6.94s, tests 43.74s, environment 1ms) 2026-10-25T22:09:12.176Z containers/runner test: Done 2026-10-25T22:09:12.282Z Cache hit occurred on the primary key node-cache-Linux-x64-pnpm-42d02c0263a3b5f911ed6ae8e9210922b97166ca02e60b2c70c55dfa1f00371b, not saving cache. 2026-10-25T22:09:12.508Z Pruning is unnecessary. 2026-10-25T22:09:12.582Z Removing persisted credentials 2026-10-25T22:09:12.624Z Host: 0% of the vCPUs' time went to other work on the host (steal) 2026-10-25T22:09:12.624Z Job completed with conclusion: success 2026-10-25T22:09:12.625Z Resources: 1.7 of 4 vCPUs busy on average (3.9 at the 95th percentile), peak memory 2.0 GiB of 11.9 GiB, peak disk 2.3 GB of 19.2 GB