Files
imccyu 1276a8e13a ci: split pull-request CI into Linux, Windows, and Python workflows (#6898)
* ci: run native Windows PR jobs in a separate workflow

GitHub re-runs failed jobs only after a whole run finishes, so slow Windows jobs blocked re-running failed Linux jobs. CI Windows now owns the native Windows jobs and the Windows x64 Python runtime target, with its own required 'windows checks passed' verdict.

Refs #6893

* ci: run Python PR jobs in a separate workflow

Python rarely fails while the Windows lanes run long, so the Python SDK suite and the Linux/Windows x64 runtime matrix move into CI Python. The three pull-request workflows can now be re-run without waiting for each other, and branch protection gains "python checks passed" beside the existing verdicts.

Refs #6893

* docs: record the three PR verdicts in the failover runbook

* test: pin the shared environment across the PR workflows

* test: read the python SDK lane from CI Python

* test(sdk): parse session JSONL frames in the keyless smoke

Node 24.19 returned only the first frame of a concatenated zstd log, so the single JSON.parse saw just the header; 24.22 returns every frame and the JSONL body broke the parse. Read frames explicitly and select the main session by its header so both versions agree.
2026-10-22 04:09:35 +00:00

2.1 KiB

AGENTS.md — GitHub Actions

Run jobs on Windows runners (windows-* labels) under native pwsh. Native Windows pull-request jobs live in ci-windows.yml and Python pull-request jobs in ci-python.yml, so each PR workflow can be re-run independently; their checks feed the required windows checks passed and python checks passed verdicts, as Linux jobs in ci.yml feed all checks passed; Wine runs Windows Node on hosted Linux only in ci-master.yml. Python runtime CI checks Linux/Windows x64 on pull requests and Linux ARM64 plus both macOS architectures on master pushes; releases retain all five targets (platform policy). ci.yml, ci-windows.yml, and ci-python.yml are pull-request-only. Master-only platform checks, Linux/Windows self-hosted standbys, and manual runner benchmarks live in ci-master.yml, which listens to master pushes and workflow_dispatch, not pull_request; separating workflow triggers keeps master-only jobs out of PR check panels. The master standbys validate the self-hosted failover targets; preserve the existing per-platform switches (values selfhosted for the in-house standbys and blacksmith for Blacksmith's hosted runners) and the Dependabot hosted fallback under the selfhosted values (failover runbook, blacksmith failover leg note).

The manual Windows packaging workflow uses the dedicated self-hosted Windows x64 label dsh-win-package-trial under native pwsh; preserve this routing separately from the automatic CI lanes.

The manual Desktop publication workflow selects a successful package run and attempt, then routes each retained build through DESKTOP_PUBLISH_RUNNERS to its original machine's unique label. Keep Windows run steps on native PowerShell and Mac run steps on the default POSIX shell; shared entrypoints are Node scripts. Test and production jobs use separate desktop-test and desktop-production approval Environments after a credential-free preparation job.