Skip to content

ci(release): Windows arm64 desktop build ~37% faster on windows-11-arm - #1

Open
jahands wants to merge 19 commits into
mainfrom
ci/win-arm-speed
Open

jahands wants to merge 19 commits into
mainfrom
ci/win-arm-speed

Conversation

@jahands

@jahands jahands commented Oct 20, 2026 •

Copy link
Copy Markdown

Result: Windows arm64 release job 486–496s → 300–316s (−37%)

Paired runs on this fork (same commit, same time, warm caches), job duration on windows-11-arm. Unsigned, because the fork has no Azure signing secrets:

Baseline This PR Change
Whole job 486s, 496s 300s, 316s −37%
vp install 200–212s 45–48s −~160s
Pin PowerShell 7.4 ~50s 5–8s −~44s
Checkout ~31s 23–27s −~6s
New: disk setup — 7–14s +~10s

The Windows arm64 desktop release job (GitHub windows-11-arm, 4 vCPU) took 610–780s on upstream nightlies, against ~234s for Windows x64, which made it the critical path of every release. Blacksmith has no Windows ARM runners, so this keeps the job on windows-11-arm and removes what made it slow there.

Step (arm64) Before After Why
vp install 170–280s 41–48s Workspace + pnpm store moved off the OS disk onto the runner's unused local NVMe disk (NTFS), with a Defender exclusion; PNPM_MAX_WORKERS=4; --os=current skips ~90 Linux-only natives
Pin PowerShell 7.4 47–69s 5–8s curl + Windows tar.exe instead of PowerShell 5.1 Invoke-WebRequest/Expand-Archive
Checkout 30–47s 17–27s Writes to the NVMe volume
Wait for Linux arm64 CLI archive — — Linux jobs now build and upload the CLI archive before the AppImage (Linux arm64 upload at ~+100s instead of ~+194s), and Windows builds its own CLI archive in that window

Notes / implications:

  • The Defender exclusion needs WMI, whose first call takes 35–125s on these VMs; it runs as a background step overlapping checkout/setup, and the install waits for it.
  • A ReFS Dev Drive was tried first: link time swung 9–45s and fsutil devdrv trust failed intermittently, so the volume is plain NTFS.
  • The CLI archive is now built before the desktop artifact on every platform. The resource monitor is built explicitly on a cache miss, and web branding is applied before the CLI build so the archive's client/ is unchanged. On macOS this moves the CLI signing keychain import before electron-builder; electron-builder signs from its own explicit keychain, but this path was not exercised here (the fork has no signing secrets).
  • 7-Zip payload compression (~54s) is CPU-bound on 4 vCPU and is left as is; changing it would change the installer users download.

Built with Claude Opus 5.5 via Claude Code.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L labels Oct 20, 2026
@github-actions

github-actions Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ℹ️ No successful main baseline artifact is available yet. This run establishes the initial measurement.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire — 5.0 KiB — 6.8 KiB ✅
Codex Thread snapshot wire — 3.8 KiB — 4.9 KiB ✅
Codex Live turn WebSocket wire — 1.2 KiB — 2.0 KiB ✅
Codex Live turn WebSocket decoded — 20.9 KiB — 29.3 KiB ✅
Codex Live turn messages — 2 — 8 ✅
Claude Total thread wire — 5.0 KiB — 6.8 KiB ✅
Claude Thread snapshot wire — 3.8 KiB — 4.9 KiB ✅
Claude Live turn WebSocket wire — 1.2 KiB — 2.0 KiB ✅
Claude Live turn WebSocket decoded — 21.2 KiB — 29.3 KiB ✅
Claude Live turn messages — 2 — 8 ✅

Baseline: unavailable · PR result: 77450b8 · Source CI: failure

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 108.5 KiB
  • Claude decoded thread snapshot: 108.8 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@github-actions github-actions Bot added size:XL and removed size:L labels Oct 20, 2026
@github-actions github-actions Bot added size:XXL and removed size:XL labels Oct 20, 2026
@jahands jahands changed the title ci(release): faster Windows arm64 desktop build ci(release): Windows arm64 desktop build ~37% faster on windows-11-arm Oct 20, 2026
@jahands
jahands marked this pull request as ready for review October 20, 2026 15:57
@github-actions github-actions Bot added size:L and removed size:XXL labels Oct 20, 2026
@coderabbitai

coderabbitai Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Path: .coderabbit.config.ts
  • Review profile: CHILL
  • Plan: Essentials
  • Run ID: e61fce60-364a-43eb-8226-72adf3711ad5
📥 Commits

Reviewing files that changed from the base of the PR and between 67c0fc0 and 77450b8.

📒 Files selected for processing: 1
  • .github/workflows/release-desktop.yml

Included review availability: This review used your included allowance. 4 included reviews remain after this review. Your included PR review attempts over the past 7 days set your current allowance at 5 reviews per hour.

📝 Walkthrough

The desktop release workflow adds Windows ARM64 runner preparation, moves optional CLI packaging before Linux desktop-library setup, and makes desktop builds reuse the resource monitor regardless of cache status.

Changes: Desktop release workflow

Layer / File(s) Summary
Windows ARM64 runner preparation
.github/workflows/release-desktop.yml
The workflow relocates the Windows ARM64 workspace to a raw local NVMe disk, configures pnpm, and starts a Defender exclusion before dependency installation. It downloads and verifies PowerShell 7.4, and adjusts Windows ARM64 dependency installation to use --os=current.
Resource monitor and CLI packaging
.github/workflows/release-desktop.yml
The workflow builds the resource monitor before optional CLI packaging. When enabled, CLI packaging applies branding, builds and signs the executable and archive, stages the resource monitor, smoke-tests the archive, and uploads it. Linux desktop-library setup follows packaging. The former packaging block is removed from its previous location.
Desktop resource-monitor reuse
.github/workflows/release-desktop.yml
Desktop artifact builds now set T3CODE_DESKTOP_REUSE_RESOURCE_MONITOR to true, independent of the resource-monitor cache result.

Priority: ➖ Normal

Estimated code review effort: 4 (Complex) | ~45 minutes

Change: Other

Suggested reviewers: t3dotgg

Merge Risk: ⚪ Minimal · up to 77450

This change reorders and speeds up the desktop release workflow: it relocates the Windows arm64 workspace, runs Defender setup in the background, and builds the CLI archive earlier. No concrete defect remains after review. The macOS signing path has not been run end to end, but the repository's signing configuration indicates it is unaffected. The change appears ready to merge.

Pre-merge checks: Passed 3 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Description check Warning The description provides detailed performance results, implementation changes, verification data, limitations, and agent information. It does not include the required "## Scope and approval" section o… Add the required template sections. Document the triaged issue or explicit maintainer approval with a link and approval comment. If no prior approval is required, explain why this focused change qualifies for an exemption. Organize the exis…
Passed Passed checks: 3 passed
Check name Status Explanation
Title check Passed The title clearly identifies the CI release workflow change and the primary result: a faster Windows ARM64 desktop build.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description provides detailed performance results, implementation changes, verification data, limitations, and agent information. It does not include the required "## Scope and approval" section or a triaged issue, maintainer approval comment, or documented exemption. It also does not use the required Problem, Change, and Verification headings.

Resolution

Add the required template sections. Document the triaged issue or explicit maintainer approval with a link and approval comment. If no prior approval is required, explain why this focused change qualifies for an exemption. Organize the existing problem, change, and verification details under the corresponding headings; retain the reported test results and untested signing-path limitation.

  • Fix all pre-merge checks with AI
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant