Skip to content

chore: upstream reconcile through reference 99eaa993b #1388

chore: upstream reconcile through reference 99eaa993b

chore: upstream reconcile through reference 99eaa993b #1388

Triggered via pull request September 19, 2026 19:05
Status Failure
Total duration 14m 17s
Artifacts –

ci.yml

on: pull_request
Matrix: test
Fit to window
Zoom out
Zoom in

Annotations

44 errors, 20 warnings, and 11 notices
[agent-gateway] test/prompts.test.ts > server-v2 /api/v1 prompts > attaches a server-local file by path without copying it: packages/agent-gateway/test/prompts.test.ts#L1451
AssertionError: expected { type: 'text', …(1) } to deeply equal { type: 'text', …(1) } - Expected + Received { - "text": "Attached file \"notes.txt\" (application/octet-stream, 20 bytes): /tmp/pythinker-attach-path-Za4nYK/notes.txt open it with the Read tool", + "text": "Attached file \"notes.txt\" (application/octet-stream, 20 bytes): /tmp/pythinker-attach-path-Za4nYK/notes.txt — open it with the Read tool", "type": "text", } ❯ test/prompts.test.ts:1451:26
[agent-gateway] test/prompts.test.ts > server-v2 /api/v1 prompts > sanitizes an attachment file name before materializing it: packages/agent-gateway/test/prompts.test.ts#L1320
AssertionError: expected null not to be null ❯ attachedPathFrom test/prompts.test.ts:1320:23 ❯ test/prompts.test.ts:1425:26
[agent-gateway] test/prompts.test.ts > server-v2 /api/v1 prompts > persists an inline base64 image in an unsupported format as a path-referenced attachment: packages/agent-gateway/test/prompts.test.ts#L1320
AssertionError: expected null not to be null ❯ attachedPathFrom test/prompts.test.ts:1320:23 ❯ test/prompts.test.ts:1404:26
[agent-gateway] test/prompts.test.ts > server-v2 /api/v1 prompts > materializes an uploaded SVG image as a path-referenced attachment: packages/agent-gateway/test/prompts.test.ts#L1320
AssertionError: expected null not to be null ❯ attachedPathFrom test/prompts.test.ts:1320:23 ❯ test/prompts.test.ts:1371:26
[agent-gateway] test/prompts.test.ts > server-v2 /api/v1 prompts > materializes an arbitrary file attachment into the session attachments dir: packages/agent-gateway/test/prompts.test.ts#L1320
AssertionError: expected null not to be null ❯ attachedPathFrom test/prompts.test.ts:1320:23 ❯ test/prompts.test.ts:1346:26
[agent-gateway] test/codex-login.test.ts > Codex login routes > maps invalid input and unknown login ids to stable wire codes: packages/agent-gateway/test/codex-login.test.ts#L129
AssertionError: expected { …(3) } to match object { code: 40001 } (3 matching properties omitted from actual) - Expected + Received { - "code": 40001, + "error": "Not Found", + "message": "Route POST:/api/v1/auth/codex/login-1:submit_code not found", + "statusCode": 404, } ❯ test/codex-login.test.ts:129:28
[agent-gateway] test/codex-login.test.ts > Codex login routes > matches the web start, poll, submit, and cancel contract: packages/agent-gateway/test/codex-login.test.ts#L86
AssertionError: expected { …(3) } to match object { code: +0, data: { …(2) } } (3 matching properties omitted from actual) - Expected + Received { - "code": 0, - "data": { - "login_id": "login-1", - "loopback": true, - }, + "error": "Not Found", + "message": "Route POST:/api/v1/auth/codex:start not found", + "statusCode": 404, } ❯ test/codex-login.test.ts:86:26
[agent-gateway] test/boot.test.ts > server-v2 boot > seeds default Pythinker identity headers from hostIdentity that opts.seeds can override: packages/agent-gateway/test/boot.test.ts#L136
AssertionError: expected undefined to be '0.0.0-test' // Object.is equality - Expected: "0.0.0-test" + Received: undefined ❯ test/boot.test.ts:136:47
[agent-gateway] test/boot.test.ts > server-v2 boot > boots agent-core-v2 and serves the basic /api/v1 routes: packages/agent-gateway/test/boot.test.ts#L84
AssertionError: expected 404 to be 200 // Object.is equality - Expected + Received - 200 + 404 ❯ test/boot.test.ts:84:30
[pythinker-sdk] test/sdk-rpc-client-v2.test.ts > SDKRpcClientV2 (agent-core-v2 wiring) > seeds the host request headers (User-Agent + X-Msh-*) into the engine: packages/node-sdk/test/sdk-rpc-client-v2.test.ts#L355
AssertionError: expected undefined to be 'pythinker_code_cli' // Object.is equality - Expected: "pythinker_code_cli" + Received: undefined ❯ test/sdk-rpc-client-v2.test.ts:355:41
[extension] test/pythinker-harness.integration.test.ts > VS Code Pythinker harness integration (shares one in-process SDK home) > removes stored stdio environment variables when the structured edit omits them: packages/node-sdk/src/sdk-rpc-client-v2.ts#L2829
PythinkerError: MCP management is disabled; enable the mcp-management experimental flag ❯ restateEngineError ../../packages/node-sdk/src/sdk-rpc-client-v2.ts:2829:10 ❯ SDKRpcClientV2.mcpManagement ../../packages/node-sdk/src/sdk-rpc-client-v2.ts:2504:13 ❯ SDKRpcClientV2.addGlobalMcpServer ../../packages/node-sdk/src/sdk-rpc-client-v2.ts:2554:21 ❯ test/pythinker-harness.integration.test.ts:816:5 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { code: 'request.invalid', details: undefined }
[extension] test/pythinker-harness.integration.test.ts > VS Code Pythinker harness integration (shares one in-process SDK home) > removes stored stdio arguments when the structured edit omits them: packages/node-sdk/src/sdk-rpc-client-v2.ts#L2829
PythinkerError: MCP management is disabled; enable the mcp-management experimental flag ❯ restateEngineError ../../packages/node-sdk/src/sdk-rpc-client-v2.ts:2829:10 ❯ SDKRpcClientV2.mcpManagement ../../packages/node-sdk/src/sdk-rpc-client-v2.ts:2504:13 ❯ SDKRpcClientV2.addGlobalMcpServer ../../packages/node-sdk/src/sdk-rpc-client-v2.ts:2554:21 ❯ test/pythinker-harness.integration.test.ts:786:5 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { code: 'request.invalid', details: undefined }
[extension] test/pythinker-harness.integration.test.ts > VS Code Pythinker harness integration (shares one in-process SDK home) > preserves existing HTTP MCP headers when the released form updates the server: packages/node-sdk/src/sdk-rpc-client-v2.ts#L2829
PythinkerError: MCP management is disabled; enable the mcp-management experimental flag ❯ restateEngineError ../../packages/node-sdk/src/sdk-rpc-client-v2.ts:2829:10 ❯ SDKRpcClientV2.mcpManagement ../../packages/node-sdk/src/sdk-rpc-client-v2.ts:2504:13 ❯ SDKRpcClientV2.addGlobalMcpServer ../../packages/node-sdk/src/sdk-rpc-client-v2.ts:2554:21 ❯ test/pythinker-harness.integration.test.ts:757:5 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { code: 'request.invalid', details: undefined }
[extension] test/pythinker-harness.integration.test.ts > VS Code Pythinker harness integration (shares one in-process SDK home) > replaces a stdio credential when the Webview submits a new literal value: packages/node-sdk/src/sdk-rpc-client-v2.ts#L2829
PythinkerError: MCP management is disabled; enable the mcp-management experimental flag ❯ restateEngineError ../../packages/node-sdk/src/sdk-rpc-client-v2.ts:2829:10 ❯ SDKRpcClientV2.mcpManagement ../../packages/node-sdk/src/sdk-rpc-client-v2.ts:2504:13 ❯ SDKRpcClientV2.addGlobalMcpServer ../../packages/node-sdk/src/sdk-rpc-client-v2.ts:2554:21 ❯ test/pythinker-harness.integration.test.ts:727:5 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { code: 'request.invalid', details: undefined }
[extension] test/pythinker-harness.integration.test.ts > VS Code Pythinker harness integration (shares one in-process SDK home) > replaces an HTTP credential when the Webview submits a new literal value: packages/node-sdk/src/sdk-rpc-client-v2.ts#L2829
PythinkerError: MCP management is disabled; enable the mcp-management experimental flag ❯ restateEngineError ../../packages/node-sdk/src/sdk-rpc-client-v2.ts:2829:10 ❯ SDKRpcClientV2.mcpManagement ../../packages/node-sdk/src/sdk-rpc-client-v2.ts:2504:13 ❯ SDKRpcClientV2.addGlobalMcpServer ../../packages/node-sdk/src/sdk-rpc-client-v2.ts:2554:21 ❯ test/pythinker-harness.integration.test.ts:697:5 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { code: 'request.invalid', details: undefined }
[extension] test/pythinker-harness.integration.test.ts > VS Code Pythinker harness integration (shares one in-process SDK home) > preserves an unchanged masked stdio credential in the host configuration: packages/node-sdk/src/sdk-rpc-client-v2.ts#L2829
PythinkerError: MCP management is disabled; enable the mcp-management experimental flag ❯ restateEngineError ../../packages/node-sdk/src/sdk-rpc-client-v2.ts:2829:10 ❯ SDKRpcClientV2.mcpManagement ../../packages/node-sdk/src/sdk-rpc-client-v2.ts:2504:13 ❯ SDKRpcClientV2.addGlobalMcpServer ../../packages/node-sdk/src/sdk-rpc-client-v2.ts:2554:21 ❯ test/pythinker-harness.integration.test.ts:648:5 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { code: 'request.invalid', details: undefined }
[extension] test/pythinker-harness.integration.test.ts > VS Code Pythinker harness integration (shares one in-process SDK home) > preserves an unchanged masked HTTP credential without exposing it in the response or broadcast: packages/node-sdk/src/sdk-rpc-client-v2.ts#L2829
PythinkerError: MCP management is disabled; enable the mcp-management experimental flag ❯ restateEngineError ../../packages/node-sdk/src/sdk-rpc-client-v2.ts:2829:10 ❯ SDKRpcClientV2.mcpManagement ../../packages/node-sdk/src/sdk-rpc-client-v2.ts:2504:13 ❯ SDKRpcClientV2.addGlobalMcpServer ../../packages/node-sdk/src/sdk-rpc-client-v2.ts:2554:21 ❯ test/pythinker-harness.integration.test.ts:596:5 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { code: 'request.invalid', details: undefined }
[extension] test/pythinker-harness.integration.test.ts > VS Code Pythinker harness integration (shares one in-process SDK home) > keeps project-layer servers in the list refreshed after every mutation: packages/node-sdk/src/sdk-rpc-client-v2.ts#L2829
PythinkerError: MCP management is disabled; enable the mcp-management experimental flag ❯ restateEngineError ../../packages/node-sdk/src/sdk-rpc-client-v2.ts:2829:10 ❯ SDKRpcClientV2.mcpManagement ../../packages/node-sdk/src/sdk-rpc-client-v2.ts:2504:13 ❯ SDKRpcClientV2.listGlobalMcpServers ../../packages/node-sdk/src/sdk-rpc-client-v2.ts:2511:21 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { code: 'request.invalid', details: undefined }
[extension] test/pythinker-harness.integration.test.ts > VS Code Pythinker harness integration (shares one in-process SDK home) > passes the management-plane tags through to the Webview payload: packages/node-sdk/src/sdk-rpc-client-v2.ts#L2829
PythinkerError: MCP management is disabled; enable the mcp-management experimental flag ❯ restateEngineError ../../packages/node-sdk/src/sdk-rpc-client-v2.ts:2829:10 ❯ SDKRpcClientV2.mcpManagement ../../packages/node-sdk/src/sdk-rpc-client-v2.ts:2504:13 ❯ SDKRpcClientV2.addGlobalMcpServer ../../packages/node-sdk/src/sdk-rpc-client-v2.ts:2554:21 ❯ test/pythinker-harness.integration.test.ts:509:5 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { code: 'request.invalid', details: undefined }
[extension] test/pythinker-harness.integration.test.ts > VS Code Pythinker harness integration (shares one in-process SDK home) > masks credential-valued MCP fields at the Webview list boundary while leaving ordinary values visible: packages/node-sdk/src/sdk-rpc-client-v2.ts#L2829
PythinkerError: MCP management is disabled; enable the mcp-management experimental flag ❯ restateEngineError ../../packages/node-sdk/src/sdk-rpc-client-v2.ts:2829:10 ❯ SDKRpcClientV2.mcpManagement ../../packages/node-sdk/src/sdk-rpc-client-v2.ts:2504:13 ❯ SDKRpcClientV2.addGlobalMcpServer ../../packages/node-sdk/src/sdk-rpc-client-v2.ts:2554:21 ❯ test/pythinker-harness.integration.test.ts:459:5 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { code: 'request.invalid', details: undefined }
[cli] test/cli/upgrade.test.ts > handleUpgrade > returns a failing exit code when a non-interactive native stage fails: apps/pythinker-code/test/cli/upgrade.test.ts#L156
AssertionError: expected +0 to be 1 // Object.is equality - Expected + Received - 1 + 0 ❯ test/cli/upgrade.test.ts:156:66
[cli] test/cli/upgrade.test.ts > handleUpgrade > stages a native update without prompting when not interactive: apps/pythinker-code/test/cli/upgrade.test.ts#L141
AssertionError: expected "vi.fn()" to be called with arguments: [ 'native', '0.5.0', 'darwin' ] Number of calls: 0 ❯ test/cli/upgrade.test.ts:141:32
[cli] test/cli/run-shell.test.ts > runShell > tracks exit and prints resume instructions from the TUI exit handler: apps/pythinker-code/test/cli/run-shell.test.ts#L839
AssertionError: expected "vi.fn()" to be called with arguments: [ [ Socket{ …(22), …(15) }, …(1) ] ] Number of calls: 0 ❯ test/cli/run-shell.test.ts:839:32
[cli] test/tui/pythinker-tui-message-flow.test.ts > PythinkerTUI message flow > uploads session logs when codebase scanning fails but the session directory is available: apps/pythinker-code/test/tui/pythinker-tui-message-flow.test.ts#L2466
AssertionError: expected "vi.fn()" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0 ❯ test/tui/pythinker-tui-message-flow.test.ts:2466:35
[cli] test/tui/pythinker-tui-message-flow.test.ts > PythinkerTUI message flow > waits for the codebase upload to finish before returning: apps/pythinker-code/test/tui/pythinker-tui-message-flow.test.ts#L2420
AssertionError: expected "vi.fn()" to be called 2 times, but got 0 times ❯ test/tui/pythinker-tui-message-flow.test.ts:2420:29
[cli] test/tui/pythinker-tui-message-flow.test.ts > PythinkerTUI message flow > submits text feedback before preparing requested attachments: apps/pythinker-code/test/tui/pythinker-tui-message-flow.test.ts#L2350
AssertionError: expected "vi.fn()" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0 ❯ test/tui/pythinker-tui-message-flow.test.ts:2350:37
[cli] test/tui/pythinker-tui-message-flow.test.ts > PythinkerTUI message flow > prints the sign-up page and GitHub Issues links when not signed in: apps/pythinker-code/test/tui/pythinker-tui-message-flow.test.ts#L2250
AssertionError: expected ' You\'re not signed in. Sign up or …' to contain 'https://www.code.pythinker.com' - Expected + Received - https://www.code.pythinker.com + You're not signed in. Sign up or leave feedback on GitHub: + https://www.pythinker.com/code + https://github.com/PyModel/pythinker-code/issues ❯ test/tui/pythinker-tui-message-flow.test.ts:2250:24
[cli] test/migration/migration-screen.test.ts > MigrationScreenComponent — result phase > lists sibling-file contents in the config-fallback warning so the user knows what to merge: apps/pythinker-code/test/migration/migration-screen.test.ts#L515
AssertionError: expected '─────────────────────────────────────…' to contain 'config.migrated-from-pythinker-cli.to…' - Expected + Received - config.migrated-from-pythinker-cli.toml + ──────────────────────────────────────────────────────────────────────────────── + Migration complete + + ✓ 50 sessions migrated + ✓ config · REPL history + ⚠ 2 pythinker-cli plugins — not yet supported for migration + ⚠ config.toml could not be parsed — review config.migrated-from-pythinker-c... + contains: 2 providers, 1 model, 3 hooks + + Old data kept at /x/.pythinker — pythinker-cli still works. + + ⏎ continue to pythinker-code + ──────────────────────────────────────────────────────────────────────────────── ❯ test/migration/migration-screen.test.ts:515:17
[cli] test/migration/migration-screen.test.ts > MigrationScreenComponent — result phase > surfaces conflict and failure warnings on the result screen: apps/pythinker-code/test/migration/migration-screen.test.ts#L470
AssertionError: expected '─────────────────────────────────────…' to contain 'config.migrated-from-pythinker-cli.to…' - Expected + Received - config.migrated-from-pythinker-cli.toml + ──────────────────────────────────────────────────────────────────────────────── + Migration complete + + ✓ 50 sessions migrated + ✓ config · MCP · REPL history + ⚠ 2 pythinker-cli plugins — not yet supported for migration + ⚠ config.toml could not be parsed — review config.migrated-from-pythinker-c... + ⚠ mcp.json unreadable — review mcp.migrated-from-pythinker-cli.json + ⚠ 1 sessions failed to migrate + + Old data kept at /x/.pythinker — pythinker-cli still works. + + ⏎ continue to pythinker-code + ──────────────────────────────────────────────────────────────────────────────── ❯ test/migration/migration-screen.test.ts:470:17
[cli] test/cli/options.test.ts > CLI options parsing > sub-commands > registers the visible sub-commands: apps/pythinker-code/test/cli/options.test.ts#L583
AssertionError: expected [ 'export', 'fork', 'provider', …(11) ] to deeply equal [ 'export', 'fork', 'provider', …(11) ] - Expected + Received @@ -3,12 +3,12 @@ "fork", "provider", "session", "acp", "web", - "server", "rc", + "server", "login", "doctor", "vis", "install-app", "migrate", ❯ test/cli/options.test.ts:583:28
[agent-gateway] test/apiSurface.snapshot.test.ts > API surface snapshot > matches the documented v2 route table and meta endpoints: packages/agent-gateway/test/apiSurface.snapshot.test.ts#L82
Error: Snapshot `API surface snapshot > matches the documented v2 route table and meta endpoints 1` mismatched - Expected + Received @@ -21,14 +21,10 @@ "DELETE", "/api/v1/files/{file_id}", ], [ "DELETE", - "/api/v1/auth/login", - ], - [ - "DELETE", "/api/v1/providers/{provider_id}", ], [ "DELETE", "/api/v1/workspaces/{workspace_id}", @@ -137,26 +133,10 @@ "GET", "/api/v1/models", ], [ "GET", - "/api/v1/auth/login", - ], - [ - "GET", - "/api/v1/oauth/region", - ], - [ - "GET", - "/api/v1/auth/status", - ], - [ - "GET", - "/api/v1/auth/status", - ], - [ - "GET", "/api/v1/plugins", ], [ "GET", "/api/v1/plugins/marketplace", @@ -377,18 +357,10 @@ "POST", "/api/v1/models/{tail}", ], [ "POST", - "/api/v1/auth/login", - ], - [ - "POST", - "/api/v1/auth/logout", - ], - [ - "POST", "/api/v1/plugins", ], [ "POST", "/api/v1/plugins/{tail}", ❯ test/apiSurface.snapshot.test.ts:82:30
[pyaos] test/local.test.ts > LocalPyaos > readText errors parameter (Python compat) > drops invalid bytes with errors="ignore": packages/pyaos/test/local.test.ts#L375
AssertionError: expected '中文' to be 'zh' // Object.is equality Expected: "zh" Received: "中文" ❯ test/local.test.ts:375:23
[pyaos] test/local.test.ts > LocalPyaos > readText errors parameter (Python compat) > returns U+FFFD replacement characters with errors="replace": packages/pyaos/test/local.test.ts#L366
AssertionError: expected '中\ufffd文' to contain 'zh' Expected: "zh" Received: "中�文" ❯ test/local.test.ts:366:23
test (1)
Process completed with exit code 1.
test
Process completed with exit code 1.
build
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
test-minidb
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
test-pi-tui
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
lint
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
eslint-plugin-unicorn(catch-error-name): packages/agent-core-v2/src/_base/errors/unexpectedError.ts#L28
The catch parameter "err" should be named "error"
eslint-plugin-unicorn(catch-error-name): packages/agent-core-v2/src/_base/errors/unexpectedError.ts#L20
The catch parameter "handlerErr" should be named "error"
eslint-plugin-import(no-duplicates): packages/agent-core-v2/src/_base/di/scope.ts#L3
Module './instantiation' is imported more than once in this file
eslint(no-loop-func): packages/agent-core-v2/src/_base/event.ts#L211
Function declared in a loop contains unsafe references to variable(s)
eslint(no-loop-func): packages/agent-core-v2/src/_base/event.ts#L206
Function declared in a loop contains unsafe references to variable(s)
typecheck
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
test (5)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
test (3)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
test (4)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
test (2)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
test (1)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
build
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
test-minidb
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
test-pi-tui
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
lint
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
typecheck
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
test (5)
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
test (3)
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
test (4)
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
test (2)
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
test (1)
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
test
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"