Skip to content

chore: upstream reconcile through reference 99eaa993b #1369

chore: upstream reconcile through reference 99eaa993b

chore: upstream reconcile through reference 99eaa993b #1369

Triggered via pull request September 19, 2026 18:04
Status Failure
Total duration 3m 40s
Artifacts –

ci.yml

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

Annotations

60 errors, 20 warnings, and 11 notices
typecheck
Process completed with exit code 2.
typecheck: packages/agent-core-v2/src/agent/toolExecutor/toolExecutorService.ts#L928
This comparison appears to be unintentional because the types '"executed" | "preflight-rejected" | "resolution-failed" | "skipped" | "synthetic" | "vetoed"' and '"cancelled"' have no overlap.
typecheck: packages/agent-core-v2/src/agent/toolExecutor/toolExecutorService.ts#L495
Object literal may only specify known properties, and 'error' does not exist in type '{ readonly status: "rejected"; readonly index: number; readonly reason: unknown; }'.
typecheck: packages/agent-core-v2/src/agent/toolExecutor/toolExecutorService.ts#L483
Property 'effectsSettled' does not exist on type 'ToolExecutionRunResult'.
typecheck: packages/agent-core-v2/src/agent/toolExecutor/toolExecutorService.ts#L483
Property 'effectsSettled' does not exist on type 'ToolExecutionRunResult'.
typecheck: packages/agent-core-v2/src/agent/toolExecutor/toolExecutorService.ts#L269
Object literal may only specify known properties, and 'error' does not exist in type '{ readonly status: "rejected"; readonly reason: unknown; }'.
typecheck: packages/agent-core-v2/src/agent/toolExecutor/toolExecutorService.ts#L239
Object literal may only specify known properties, and 'error' does not exist in type '{ readonly type: "timedRejected"; readonly reason: unknown; }'.
build
Process completed with exit code 1.
build
This comparison appears to be unintentional because the types '"skipped" | "vetoed" | "executed" | "preflight-rejected" | "resolution-failed" | "synthetic"' and '"cancelled"' have no overlap.
build
Object literal may only specify known properties, and 'error' does not exist in type '{ readonly status: "rejected"; readonly index: number; readonly reason: unknown; }'.
build
Property 'effectsSettled' does not exist on type 'ToolExecutionRunResult'.
build
Property 'effectsSettled' does not exist on type 'ToolExecutionRunResult'.
build
Object literal may only specify known properties, and 'error' does not exist in type '{ readonly status: "rejected"; readonly reason: unknown; }'.
build
Object literal may only specify known properties, and 'error' does not exist in type '{ readonly type: "timedRejected"; readonly reason: unknown; }'.
test (1)
Process completed with exit code 1.
[agent-core-v2] test/agent/toolExecutor/toolExecutor.test.ts > AgentToolExecutorService > does not start a queued conflicting tool after abort: packages/agent-core-v2/test/agent/toolExecutor/toolExecutor.test.ts#L797
AssertionError: expected Map{ 'call_first' => 'aborted', …(1) } to deeply equal Map{ 'call_first' => 'executed', …(1) } - Expected + Received Map { - "call_first" => "executed", + "call_first" => "aborted", "call_second" => "aborted", } ❯ test/agent/toolExecutor/toolExecutor.test.ts:797:22
[agent-core-v2] test/agent/toolExecutor/toolExecutor.test.ts > AgentToolExecutorService > holds the resource lease past the abort grace until the ignored execution settles: packages/agent-core-v2/test/agent/toolExecutor/toolExecutor.test.ts#L762
AssertionError: expected [ { turnId: +0, …(7) } ] to have a length of +0 but got 1 - Expected + Received - 0 + 1 ❯ test/agent/toolExecutor/toolExecutor.test.ts:762:30
[vis-web] test/renderers.test.ts > wire renderers > renders a tracked record with a missing entry without throwing: apps/vis/web/test/renderers.test.ts#L134
TypeError: Cannot read properties of undefined (reading 'headline') ❯ test/renderers.test.ts:134:31
[vis-web] test/renderers.test.ts > wire renderers > renders a checkpoint with array entries without throwing: apps/vis/web/test/renderers.test.ts#L113
TypeError: Cannot read properties of undefined (reading 'headline') ❯ test/renderers.test.ts:113:31
[vis-web] test/renderers.test.ts > wire renderers > renders a checkpoint with scalar entries without throwing: apps/vis/web/test/renderers.test.ts#L113
TypeError: Cannot read properties of undefined (reading 'headline') ❯ test/renderers.test.ts:113:31
[vis-web] test/renderers.test.ts > wire renderers > renders a checkpoint with null entries without throwing: apps/vis/web/test/renderers.test.ts#L113
TypeError: Cannot read properties of undefined (reading 'headline') ❯ test/renderers.test.ts:113:31
[vis-web] test/renderers.test.ts > wire renderers > renders a checkpoint with missing entries without throwing: apps/vis/web/test/renderers.test.ts#L113
TypeError: Cannot read properties of undefined (reading 'headline') ❯ test/renderers.test.ts:113:31
[vis-web] test/renderers.test.ts > wire renderers > distinguishes oversized snapshots from files that did not exist: apps/vis/web/test/renderers.test.ts#L85
TypeError: Cannot read properties of undefined (reading 'headline') ❯ test/renderers.test.ts:85:40
[vis-web] test/renderers.test.ts > wire renderers > covers every durable record in the current core-v2 wire manifest: apps/vis/web/test/renderers.test.ts#L77
AssertionError: expected [ 'config.update', …(56) ] to deeply equal [ 'config.update', …(58) ] - Expected + Received @@ -8,12 +8,10 @@ "cron.add", "cron.cursor", "cron.delete", "dynamic_workflow_mode.enter", "dynamic_workflow_mode.exit", - "file_history.checkpoint", - "file_history.tracked", "forked", "full_compaction.begin", "full_compaction.cancel", "full_compaction.complete", "goal.clear", ❯ test/renderers.test.ts:77:34
[agent-gateway] test/plugins.test.ts > server-v2 /api/v1 plugins > serves an empty marketplace when no URL is configured: packages/agent-gateway/test/plugins.test.ts#L454
AssertionError: expected [ { id: 'superpowers', …(7) } ] to deeply equal [] - Expected + Received - [] + [ + { + "description": "Planning, TDD, debugging, and delivery workflows for coding agents.", + "displayName": "Superpowers", + "homepage": "https://github.com/obra/superpowers", + "id": "superpowers", + "keywords": [ + "skills", + "planning", + "tdd", + "debugging", + "code-review", + ], + "source": "https://code.pythinker.com/pythinker-code/plugins/curated/superpowers.zip", + "tier": "curated", + "version": "6.2.0", + }, + ] ❯ test/plugins.test.ts:454:31
[agent-gateway] test/modelCatalogCatalog.test.ts > server-v2 /api/v1 catalog browse + import endpoints > adopts a usable global default_model from a registry import on a fresh setup: packages/agent-gateway/test/modelCatalogCatalog.test.ts#L618
AssertionError: expected null to be 'acme-claude/claude-opus' // Object.is equality - Expected: "acme-claude/claude-opus" + Received: null ❯ test/modelCatalogCatalog.test.ts:618:42
[agent-gateway] test/modelCatalogCatalog.test.ts > server-v2 /api/v1 catalog browse + import endpoints > adopts a usable global default_model on a fresh setup: packages/agent-gateway/test/modelCatalogCatalog.test.ts#L358
AssertionError: expected null to be 'openai/gpt-4.1' // Object.is equality - Expected: "openai/gpt-4.1" + Received: null ❯ test/modelCatalogCatalog.test.ts:358:42
[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/modelCatalogProviderWrite.test.ts > server-v2 /api/v1 provider write endpoints > rejects replacing an OAuth-managed provider with 40003: packages/agent-gateway/test/modelCatalogProviderWrite.test.ts#L804
AssertionError: expected 40412 to be 40003 // Object.is equality - Expected + Received - 40003 + 40412 ❯ test/modelCatalogProviderWrite.test.ts:804:23
[agent-gateway] test/modelCatalogProviderWrite.test.ts > server-v2 /api/v1 provider write endpoints > rejects deleting an OAuth-managed provider with 40003: packages/agent-gateway/test/modelCatalogProviderWrite.test.ts#L495
AssertionError: expected 40412 to be 40003 // Object.is equality - Expected + Received - 40003 + 40412 ❯ test/modelCatalogProviderWrite.test.ts:495:24
[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
[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-izpgHv/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-izpgHv/extra' ❯ test/workspaces.test.ts:339:5 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { errno: -17, code: 'EEXIST', syscall: 'mkdir', path: '/tmp/pythinker-server-v2-workspaces-izpgHv/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-3ly5oob3', …(12) } to match object { id: 'test-3ly5oob3', …(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-3ly5oob3", "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_05b2edd8-0389-424c-aa8e-f3a9fc57135f", "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-19T18:06:15.869Z", + "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
[agent-gateway] test/search/searchService.test.ts > GlobalSearchService > reports indexState building before the first full sync and ready after: packages/agent-gateway/test/search/searchService.test.ts#L446
AssertionError: expected 1 to be 2 // Object.is equality - Expected + Received - 2 + 1 ❯ test/search/searchService.test.ts:446:40
[agent-gateway] test/search/searchService.test.ts > GlobalSearchService > paginates with an opaque cursor and rejects changed conditions: packages/agent-gateway/test/search/searchService.test.ts#L416
AssertionError: promise resolved "{ items: [ { …(10) } ], …(5) }" instead of rejecting - Expected + Received - Error { - "message": "rejected promise", + { + "hasMore": false, + "incomplete": undefined, + "indexState": { + "degraded": undefined, + "documents": 3, + "indexedSessions": 1, + "stale": true, + "state": "ready", + "totalSessions": 1, + }, + "items": [ + { + "agentId": "main", + "role": "user", + "score": 0.5493061443340548, + "sessionId": "s1", + "sessionTitle": "", + "snippet": "zh three", + "stepId": undefined, + "time": 1700000200000, + "turn": 2, + "workspaceId": "ws_test", + }, + ], + "pageToken": undefined, + "source": "index", } ❯ test/search/searchService.test.ts:416:5
[agent-gateway] test/search/searchService.test.ts > GlobalSearchService > indexes user and assistant text and finds Chinese and English terms: packages/agent-gateway/test/search/searchService.test.ts#L300
AssertionError: expected '' to be 'zh' // Object.is equality - Expected + Received - zh ❯ test/search/searchService.test.ts:300:32
[agent-gateway] test/capabilities.test.ts > server-v2 /api/v1 capabilities > rejects pythinker-cu install on unsupported platforms with 40925: packages/agent-gateway/test/capabilities.test.ts#L82
AssertionError: expected 40418 to be 40925 // Object.is equality - Expected + Received - 40925 + 40418 ❯ test/capabilities.test.ts:82:25
[agent-gateway] test/capabilities.test.ts > server-v2 /api/v1 capabilities > gets a single capability and 40418s on an unknown id: packages/agent-gateway/test/capabilities.test.ts#L58
AssertionError: expected 40418 to be +0 // Object.is equality - Expected + Received - 0 + 40418 ❯ test/capabilities.test.ts:58:23
[agent-gateway] test/capabilities.test.ts > server-v2 /api/v1 capabilities > lists both built-in capabilities with the documented shape: packages/agent-gateway/test/capabilities.test.ts#L38
AssertionError: expected [] to deeply equal [ 'pythinker-cu', …(1) ] - Expected + Received - [ - "pythinker-cu", - "pythinker-webbridge", - ] + [] ❯ test/capabilities.test.ts:38:17
[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
Process completed with exit code 1.
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-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/
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 (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 (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 (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 (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/
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-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"
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 (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 (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 (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 (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
"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"