Skip to content

chore: upstream reconcile through reference 99eaa993b #1395

chore: upstream reconcile through reference 99eaa993b

chore: upstream reconcile through reference 99eaa993b #1395

Triggered via pull request September 19, 2026 19:34
Status Failure
Total duration 7m 38s
Artifacts –

ci.yml

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

Annotations

44 errors, 10 warnings, and 11 notices
lint
Process completed with exit code 1.
[cli] test/tui/components/chrome/moon-loader.test.ts > MoonLoader > uses the shared Braille mark for the waiting state: apps/pythinker-code/test/tui/components/chrome/moon-loader.test.ts#L50
AssertionError: expected '🌑' to be '⣷' // Object.is equality Expected: "⣷" Received: "🌑" ❯ test/tui/components/chrome/moon-loader.test.ts:50:43
[cli] test/utils/process/fd-detect.test.ts > detectFdPath > does not download fd when no local binary is available: apps/pythinker-code/test/utils/process/fd-detect.test.ts#L56
AssertionError: expected "vi.fn()" to not be called at all, but actually been called 1 times Received: 1st vi.fn() call: Array [ "https://code.pythinker.com/pythinker-code/fd/fd-v10.4.2-x86_64-unknown-linux-musl.tar.gz", Object { "signal": AbortSignal { Symbol(kEvents): Map {}, Symbol(events.maxEventTargetListeners): 0, Symbol(events.maxEventTargetListenersWarned): false, Symbol(kHandlers): Map {}, Symbol(kAborted): false, Symbol(kReason): undefined, Symbol(kComposite): false, Symbol(kTimeout): true, }, }, ] Number of calls: 1 ❯ test/utils/process/fd-detect.test.ts:56:27
[cli] test/tui/commands/secondary-model.test.ts > handleSecondaryModelCommand > reports a persistence failure without a status message: apps/pythinker-code/test/tui/commands/secondary-model.test.ts#L232
AssertionError: expected "vi.fn()" to not be called at all, but actually been called 1 times Received: 1st vi.fn() call: Array [ "Skipped refreshing models: host.authFlow.refreshOAuthProviderModels is not a function", "warning", ] Number of calls: 1 ❯ test/tui/commands/secondary-model.test.ts:232:33
[cli] test/tui/pythinker-tui-startup.test.ts > PythinkerTUI startup > keeps the active session when logging out a different provider: apps/pythinker-code/test/tui/pythinker-tui-startup.test.ts#L2312
AssertionError: expected "vi.fn()" to be called with arguments: [ 'openai' ] Number of calls: 0 ❯ test/tui/pythinker-tui-startup.test.ts:2312:28
[cli] test/cli/export.test.ts > pythinker export > builds the v2 harness by default: apps/pythinker-code/test/cli/export.test.ts#L564
AssertionError: expected "vi.fn()" to be called 1 times, but got 0 times ❯ test/cli/export.test.ts:564:49
[klient] test/e2e/legacy/client.test.ts > DaemonClient session action helpers > model catalog helpers call the catalog and action-suffix routes: packages/klient/test/e2e/legacy/client.test.ts#L463
AssertionError: expected [ [ 'GET', …(1) ], …(4) ] to deeply equal [ [ 'GET', …(1) ], …(4) ] - Expected + Received @@ -7,11 +7,11 @@ "GET", "http://server.example.test/api/v1/models", ], [ "POST", - "http://server.example.test/api/v1/models/pythinker-code%2Fkimi-for-coding:set_default", + "http://server.example.test/api/v1/models/openai%2Fgpt-4o:set_default", ], [ "GET", "http://server.example.test/api/v1/providers", ], ❯ test/e2e/legacy/client.test.ts:463:63
[agent-gateway] test/workspaces.test.ts > server-v2 /api/v1/workspaces > adds a relative directory without persisting when persist is false (variant 2): packages/agent-gateway/test/workspaces.test.ts#L371
AssertionError: promise resolved "'[workspace]\nadditional_dir = [ "/tmp…'" instead of rejecting - Expected: Error { "message": "rejected promise", } + Received: "[workspace] additional_dir = [ \"/tmp/pythinker-server-v2-workspaces-k6Cesf/extra\" ] " ❯ test/workspaces.test.ts:371:57
[agent-gateway] test/workspaces.test.ts > server-v2 /api/v1/workspaces > adds an additional directory and persists it by default (variant 2): packages/agent-gateway/test/workspaces.test.ts#L339
Error: EEXIST: file already exists, mkdir '/tmp/pythinker-server-v2-workspaces-k6Cesf/extra' ❯ test/workspaces.test.ts:339:5 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { errno: -17, code: 'EEXIST', syscall: 'mkdir', path: '/tmp/pythinker-server-v2-workspaces-k6Cesf/extra' }
[agent-gateway] test/tasks.test.ts > server-v2 /api/v1/sessions/{sid}/tasks > lists registered tasks with mapped kind/status and wire-shaped fields: packages/agent-gateway/test/tasks.test.ts#L221
AssertionError: expected { id: 'test-6engku6o', …(12) } to match object { id: 'test-6engku6o', …(11) } (3 matching properties omitted from actual) - Expected + Received @@ -1,22 +1,11 @@ { "agent_id": "sub-1", - "current_routing_env_revision": "route-env:v1:aaa", "id": "test-6engku6o", "kind": "subagent", "model": "provider/secondary", "parent_tool_call_id": "call-parent-1", - "routing": { - "feature_source": "env", - "model_source": "policy-pool", - "operation": "spawn", - "policy_mode": "pool", - "policy_source": "config", - "profile_source": "requested", - "route_decision": "route-decision:v1:bbb", - "routing_env_revision": "route-env:v1:aaa", - }, "run_in_background": true, "session_id": "session_0a21f3ac-70f0-487d-b341-d6a2c58389ba", "status": "running", "subagent_type": "explore", "thinking_effort": "low", ❯ test/tasks.test.ts:221:31
[agent-gateway] test/subagentRosterTracker.test.ts > SubagentRosterTracker > carries the routing provenance and current revision from subagent.spawned: packages/agent-gateway/test/subagentRosterTracker.test.ts#L44
AssertionError: expected [ { id: 'agent-r', …(14) } ] to deeply equal [ ObjectContaining{…} ] - Expected + Received [ { - "current_routing_env_revision": "route-env:v1:new", + "created_at": "2026-09-19T19:38:32.542Z", + "current_routing_env_revision": undefined, + "description": "task agent-r", + "dynamic_workflow_index": 0, "id": "agent-r", - "routing": { - "feature_source": "default", - "model_source": "resume-existing", - "operation": "resume", - "policy_mode": "inherit", - "policy_source": "default", - "profile_source": "resume-existing", - "route_decision": "route-decision:v1:x", - "routing_env_revision": "route-env:v1:old", - }, + "kind": "subagent", + "model": undefined, + "parent_tool_call_id": "tc_dynamic_workflow_1", + "routing": undefined, + "run_in_background": false, + "session_id": "sess_1", + "status": "running", + "subagent_phase": "queued", + "subagent_type": "pythinker-subagent", + "thinking_effort": undefined, }, ] ❯ test/subagentRosterTracker.test.ts:44:24
[cli] test/tui/commands/web.test.ts > handleRemoteControlCommand > starts the tunnel and saves a token-free session QR code: apps/pythinker-code/test/tui/commands/web.test.ts#L245
AssertionError: expected "vi.fn()" to be called with arguments: [ ObjectContaining{…} ] Received: 1st vi.fn() call: [ - ObjectContaining { + { + "clientVersion": "pythinker-code/0.42.0", "homeDir": "/tmp/pythinker-rc-qrcode-zHIA91/custom-home", "localOrigin": "http://127.0.0.1:58627", - "localServerToken": Any<Function>, + "localServerToken": "local-server-token", + "onStatus": [Function onStatus], }, ] Number of calls: 1 ❯ test/tui/commands/web.test.ts:245:40
[cli] test/tui/commands/web.test.ts > handleRemoteControlCommand > stays in the TUI with a readable error when no relay key is configured: apps/pythinker-code/test/tui/commands/web.test.ts#L161
AssertionError: expected "vi.fn()" to be called with arguments: [ StringContaining "relay key" ] Number of calls: 0 ❯ test/tui/commands/web.test.ts:161:28
[cli] test/tui/commands/web.test.ts > handleWebCommand > starts the new server on takeover, printing the banner and opening the deep link: apps/pythinker-code/test/tui/commands/web.test.ts#L142
AssertionError: expected '\n ▐█▛█▛█▌ Pythinker server ready …' to contain ' ●' - Expected + Received - ● + + ▐█▛█▛█▌ Pythinker server ready 0.42.0 + ▐█████▌ Local web UI is available from this machine. + + Local: http://127.0.0.1:58627/#token=tok-1 + Network: off use --host to enable + + Token: tok-1 + + Logs: off use --log-level info to enable + Stop: Ctrl+C + + Session: http://127.0.0.1:58627/sessions/ses-1#token=tok-1 + ❯ test/tui/commands/web.test.ts:142:66
[cli] test/cli/v2-run-print.test.ts > runV2Print > initializes the v1 telemetry pipeline alongside the cloud appender: apps/pythinker-code/test/cli/v2-run-print.test.ts#L608
AssertionError: expected "vi.fn()" to be called with arguments: [ { …(9) } ] Received: 1st vi.fn() call: [ { "appName": "pythinker-code-cli", "deviceId": "device-1", - "endpoint": Any<Function>, - "getAccessToken": Any<Function>, + "endpoint": [Function endpoint], "homeDir": "/home/runner/.pythinker-code", "model": "k2", - "onUnexpectedError": Any<Function>, + "onUnexpectedError": [Function onUnexpectedError], "uiMode": "print", "version": "1.2.3-test", }, ] Number of calls: 1 ❯ test/cli/v2-run-print.test.ts:608:39
[agent-gateway] test/search/searchRoute.test.ts > server-v2 /api/v1/search > serves literal mode through the wire: packages/agent-gateway/test/search/searchRoute.test.ts#L207
AssertionError: expected true to be false // Object.is equality - Expected + Received - false + true ❯ test/search/searchRoute.test.ts:207:66
[agent-gateway] test/search/searchRoute.test.ts > server-v2 /api/v1/search > rejects invalid bodies with 40001: packages/agent-gateway/test/search/searchRoute.test.ts#L184
AssertionError: expected +0 to be 40001 // Object.is equality - Expected + Received - 40001 + 0 ❯ test/search/searchRoute.test.ts:184:31
[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-DcKjf9/notes.txt open it with the Read tool", + "text": "Attached file \"notes.txt\" (application/octet-stream, 20 bytes): /tmp/pythinker-attach-path-DcKjf9/notes.txt — open it with the Read tool", "type": "text", } ❯ test/prompts.test.ts:1451: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
[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#L356
AssertionError: expected undefined to be truthy - Expected: true + Received: undefined ❯ test/sdk-rpc-client-v2.test.ts:356:48
[cli] test/tui/pythinker-tui-message-flow.test.ts > PythinkerTUI message flow > applies /model selection to the session only on Alt+S without persisting: apps/pythinker-code/test/tui/pythinker-tui-message-flow.test.ts#L7637
AssertionError: expected "vi.fn()" to be called with arguments: [ 'on' ] Number of calls: 0 ❯ test/tui/pythinker-tui-message-flow.test.ts:7637:35
[cli] test/tui/pythinker-tui-message-flow.test.ts > PythinkerTUI message flow > applies /model selection with inline thinking state: apps/pythinker-code/test/tui/pythinker-tui-message-flow.test.ts#L7578
AssertionError: expected '─────────────────────────────────────…' to match /Kimi K2\s+Pythinker Code ← current/ - Expected: /Kimi K2\s+Pythinker Code ← current/ + Received: "──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── Select a model (type to search) Tab toggle provider · ↑↓ navigate · Enter select · Alt+S session-only · Esc cancel All openai Kimi K2 openai ← current ❯ Pythinker Turbo openai Thinking (←→ to switch) On [ Off ] ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────" ❯ test/tui/pythinker-tui-message-flow.test.ts:7578:26
[cli] test/tui/pythinker-tui-message-flow.test.ts > PythinkerTUI message flow > marks only core user-cancellation subagent failures as cancelled: apps/pythinker-code/test/tui/pythinker-tui-message-flow.test.ts#L6343
AssertionError: expected ' \n ─ Agent DynamicWorkflow ─ Revie…' to contain '✗ The user manually interrupted this …' - Expected + Received - ✗ The user manually interrupted this subagent x. + + ─ Agent DynamicWorkflow ─ Review changed files ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── + + 001 ⊘ Cancelled. 002 [⣀⣀⣀⣀⣀⣀⣀⣀] ✗ The user manually interrupted this subag + + 🌑 Aborted. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + ❯ test/tui/pythinker-tui-message-flow.test.ts:6343:24
[cli] test/tui/pythinker-tui-message-flow.test.ts > PythinkerTUI message flow > tells the user when the codebase upload fails: apps/pythinker-code/test/tui/pythinker-tui-message-flow.test.ts#L2569
AssertionError: expected ' \n ✓ Feedback submitted, thank you!…' to contain 'attachment upload failed' - Expected + Received - attachment upload failed + + ✓ Feedback submitted, thank you! + Session: ses-1 + Feedback ID: 3 ❯ test/tui/pythinker-tui-message-flow.test.ts:2569:24
[cli] test/tui/pythinker-tui-message-flow.test.ts > PythinkerTUI message flow > tells the user when feedback is sent but codebase packaging fails: apps/pythinker-code/test/tui/pythinker-tui-message-flow.test.ts#L2531
AssertionError: expected "vi.fn()" to be called with arguments: [ Any<Object>, …(3) ] Number of calls: 0 ❯ test/tui/pythinker-tui-message-flow.test.ts:2531:27
[cli] test/tui/pythinker-tui-message-flow.test.ts > PythinkerTUI message flow > keeps archive-path creation failures as partial failures without the GitHub fallback: apps/pythinker-code/test/tui/pythinker-tui-message-flow.test.ts#L2497
AssertionError: expected ' \n ✓ Feedback submitted, thank you!…' to contain 'attachment upload failed' - Expected + Received - attachment upload failed + + ✓ Feedback submitted, thank you! + Session: ses-1 + Feedback ID: 3 ❯ test/tui/pythinker-tui-message-flow.test.ts:2497:24
[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
test (4)
Process completed with exit code 1.
[agent-core-v2] test/agent/task/taskService.test.ts > AgentTaskService > stops appending persisted output once the output limit trips for a detached process task: packages/agent-core-v2/src/agent/task/persist.ts#L152
TypeError: this.bytes.size is not a function ❯ AgentTaskPersistence.readTaskOutputSnapshot src/agent/task/persist.ts:152:44 ❯ AgentTaskService.getOutputSnapshot src/agent/task/taskService.ts:560:41 ❯ test/agent/task/taskService.test.ts:1263:5
[agent-core-v2] test/agent/task/taskService.test.ts > AgentTaskService > enqueues a terminal notification for a finished detached task, but not when suppression arms mid-build: packages/agent-core-v2/test/agent/task/taskService.test.ts#L315
AssertionError: expected true to be false // Object.is equality - Expected + Received - false + true ❯ test/agent/task/taskService.test.ts:315:48
[agent-core-v2] test/agent/fullCompaction/fullCompaction.test.ts > FullCompaction > blocks the turn until auto compaction finishes: packages/agent-core-v2/test/agent/fullCompaction/fullCompaction.test.ts#L1951
AssertionError: expected [ …(3) ] to deep equally contain { event: 'compaction_finished', …(1) } - Expected: { "event": "compaction_finished", "properties": ObjectContaining { "compacted_count": 7, "retry_count": 0, "source": "auto", "tokens_after": 6159, "tokens_before": 6142, }, } + Received: [ { "event": "turn_started", "properties": { "agent_id": "main", "mode": "agent", "model": "pythinker-code", "protocol": "openai", "provider_type": "pythinker", "thinking_effort": "off", "turn_id": 0, }, }, { "event": "compaction_finished", "properties": { "agent_id": "main", "compacted_count": 7, "duration_ms": 33, "input_cache_creation": 0, "input_cache_read": 0, "input_tokens": 1184, "mode": "agent", "model": "pythinker-code", "output_tokens": 9, "protocol": "openai", "provider_type": "pythinker", "retry_count": 0, "round": 1, "source": "auto", "thinking_effort": "off", "tokens_after": 6222, "tokens_before": 6205, "turn_id": 0, }, }, { "event": "turn_ended", "properties": { "agent_id": "main", "duration_ms": 53, "mode": "agent", "model": "pythinker-code", "protocol": "openai", "provider_type": "pythinker", "reason": "completed", "thinking_effort": "off", "turn_id": 0, }, }, ] ❯ test/agent/fullCompaction/fullCompaction.test.ts:1951:21
[agent-core-v2] test/agent/fullCompaction/fullCompaction.test.ts > FullCompaction > fires PreCompact and PostCompact hooks from the compaction module: packages/agent-core-v2/test/agent/fullCompaction/fullCompaction.test.ts#L580
AssertionError: expected { hook_event_name: 'PreCompact', …(5) } to match object { hook_event_name: 'PreCompact', …(4) } (1 matching property omitted from actual) - Expected + Received { "cwd": "/tmp/pythinker-compact-hooks-Sez8P7", "hook_event_name": "PreCompact", "session_id": "test-session", - "token_count": 6135, + "token_count": 6198, "trigger": "auto", } ❯ test/agent/fullCompaction/fullCompaction.test.ts:580:17
[agent-core-v2] test/agent/fullCompaction/fullCompaction.test.ts > FullCompaction > runs manual compaction and applies the compacted context: packages/agent-core-v2/test/agent/fullCompaction/fullCompaction.test.ts#L305
AssertionError: expected [ { …(2) } ] to deep equally contain { event: 'compaction_finished', …(1) } - Expected: { "event": "compaction_finished", "properties": ObjectContaining { "agent_id": "main", "compacted_count": 6, "duration_ms": Any<Number>, "input_cache_creation": 0, "input_cache_read": 0, "input_tokens": 1192, "output_tokens": 8, "retry_count": 0, "source": "manual", "thinking_effort": "off", "tokens_after": Any<Number>, "tokens_before": 6135, }, } + Received: [ { "event": "compaction_finished", "properties": { "agent_id": "main", "compacted_count": 6, "duration_ms": 49, "input_cache_creation": 0, "input_cache_read": 0, "input_tokens": 1192, "mode": "agent", "model": "pythinker-code", "output_tokens": 8, "protocol": "openai", "provider_type": "pythinker", "retry_count": 0, "round": 1, "source": "manual", "thinking_effort": "off", "tokens_after": 6214, "tokens_before": 6198, }, }, ] ❯ test/agent/fullCompaction/fullCompaction.test.ts:305:21
[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
test (1)
Process completed with exit code 1.
[agent-core-v2] test/lint/vendor-name-gates.test.ts > vendor-name gates > finds no vendor-name gates in src/ outside kosong: packages/agent-core-v2/test/lint/vendor-name-gates.test.ts#L89
AssertionError: vendor-name gate found outside kosong — ask the provider-definition / adapter registries instead: expected [ Array(1) ] to deeply equal [] - Expected + Received - [] + [ + "app/kosongConfig/envOverlay.ts:167 : providerType === 'pythinker'", + ] ❯ test/lint/vendor-name-gates.test.ts:89:7
[pythinker-oauth] test/identity.test.ts > Pythinker identity factories > keeps default headers to the User-Agent — no device identity headers: packages/oauth/test/identity.test.ts#L87
AssertionError: expected undefined to be '1.2.3' // Object.is equality - Expected: "1.2.3" + Received: undefined ❯ test/identity.test.ts:87:38
test
Process completed with exit code 1.
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/
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/
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 (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/
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 (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 (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 (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 (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/
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"
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"
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 (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"
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 (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 (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 (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 (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"