Problem
The current unit-windows job runs bun turbo test:ci as one advisory Windows signal. After #125, the aggregate ci / check gate stays green, but Windows failures still appear as a noisy red JUnit check and the single full-suite job makes package-level timeout diagnosis hard.
Current evidence
Recent dev runs after #125 show ci completed successfully while unit-windows failed. The latest failure was in @opencode-ai/desktop-electron tests, while the #125 merge run failed in opencode tests. This means the Windows signal is useful, but too coarse.
Proposed change
Replace unit-windows with three advisory jobs: unit-windows-app runs bun turbo test:ci --filter=@opencode-ai/app, unit-windows-desktop runs bun turbo test:ci --filter=@opencode-ai/desktop-electron, and unit-windows-opencode runs bun turbo test:ci --filter=opencode. All three jobs should use windows-latest, timeout-minutes: 20, continue-on-error: true, upload package-specific JUnit artifacts, and stay outside the aggregate check.needs list.
Reporting behavior
Do not publish separate failing unit results (windows *) GitHub checks from these advisory jobs. Keep the job result and uploaded artifact in Actions so failures remain inspectable without making commit or PR checks noisy.
Acceptance criteria
- The old
unit-windows full-suite job is removed.
- Three package-level Windows advisory jobs exist for app, desktop, and opencode.
- Each Windows package job has a 20 minute timeout and
continue-on-error: true.
- No Windows package job is included in the required
ci / check aggregate.
- Windows package jobs upload their own JUnit artifacts.
- Windows package jobs do not create extra failing JUnit report checks on commits or PRs.
packages/opencode/test/github/ci-workflow.test.ts covers the new workflow contract.
Problem
The current
unit-windowsjob runsbun turbo test:cias one advisory Windows signal. After #125, the aggregateci / checkgate stays green, but Windows failures still appear as a noisy red JUnit check and the single full-suite job makes package-level timeout diagnosis hard.Current evidence
Recent
devruns after #125 showcicompleted successfully whileunit-windowsfailed. The latest failure was in@opencode-ai/desktop-electrontests, while the #125 merge run failed inopencodetests. This means the Windows signal is useful, but too coarse.Proposed change
Replace
unit-windowswith three advisory jobs:unit-windows-apprunsbun turbo test:ci --filter=@opencode-ai/app,unit-windows-desktoprunsbun turbo test:ci --filter=@opencode-ai/desktop-electron, andunit-windows-opencoderunsbun turbo test:ci --filter=opencode. All three jobs should usewindows-latest,timeout-minutes: 20,continue-on-error: true, upload package-specific JUnit artifacts, and stay outside the aggregatecheck.needslist.Reporting behavior
Do not publish separate failing
unit results (windows *)GitHub checks from these advisory jobs. Keep the job result and uploaded artifact in Actions so failures remain inspectable without making commit or PR checks noisy.Acceptance criteria
unit-windowsfull-suite job is removed.continue-on-error: true.ci / checkaggregate.packages/opencode/test/github/ci-workflow.test.tscovers the new workflow contract.