Skip to content

[Feat] Prepare HoloDesktop for native Windows ARM64 - #8

Open
h-kaiy wants to merge 9 commits into
mainfrom
kai/windows-arm64-runtime
Open

[Feat] Prepare HoloDesktop for native Windows ARM64#8
h-kaiy wants to merge 9 commits into
mainfrom
kai/windows-arm64-runtime

Conversation

@h-kaiy

@h-kaiy h-kaiy commented Jul 15, 2026

Copy link
Copy Markdown
Collaborator

Why

HoloDesktop detects native Windows ARM64 as windows-arm64, but the managed runtime, installer, CI, and qualification workflows previously covered only Windows x86_64. Users therefore received a generic missing-artifact failure, and the release pipeline had no contract requiring the ARM64 binary to ship with the client.

What

  • Adds a placeholder windows-arm64 managed-runtime entry and SHA sidecar. The next runtime pin bump must replace it with a real digest.
  • Collapses absent and placeholder platforms into the actionable RuntimeArtifactUnavailable path.
  • Teaches install.ps1 to distinguish X64 from Arm64 using the qualified RuntimeInformation type.
  • Adds the official uv 0.9.18 Windows ARM64 asset and SHA to the installer manifest.
  • Resolves the uv-managed Python executable, verifies that its architecture matches the selected platform, and installs Holo with that exact interpreter.
  • Builds current cryptography against a current static OpenSSL in native ARM CI. Upstream stopped publishing Windows ARM64 wheels after 46.0.3; pinning that wheel would embed a vulnerable pre-security-update OpenSSL.
  • Adds native windows-11-arm unit and fresh-installer CI. Before the runtime is published, the installer job validates the CLI path while deliberately skipping runtime bootstrap; after the real SHA lands, the same job exercises the managed runtime.
  • Adds a manual windows-arm64 full-E2E selector while keeping it out of the all release matrix until the real runtime is pinned.
  • Makes E2E artifact names architecture-specific so Windows x86_64 and ARM64 cannot overwrite each other.
  • Refuses a tagged HoloDesktop release while any managed runtime SHA is still a placeholder.
  • Adds a post-release Windows ARM64 installer smoke against install.hcompany.ai.

Ship-together contract

Companion runtime PR: hcompai/hai#12375.

Merge this client scaffold before cutting the next runtime/v* tag. The HAI release workflow will then publish the Windows ARM64 artifact and open a pin-bump PR containing all four platform digests. Do not cut a HoloDesktop v* release from this placeholder state.

The Holo distribution release also needs to publish a current Windows ARM64 cryptography wheel (or adopt an equivalent supported binary dependency path). CI can build it from source because the hosted image has MSVC, Rust, and vcpkg; a clean customer machine cannot be required to have that toolchain.

Validation

  • uv run ruff format --check .
  • uv run ruff check .
  • uv run mypy src/
  • uv run pytest -q (442 passed, 16 skipped)
  • actionlint .github/workflows/*.yml
  • uv 0.9.18 verified to support python find --managed-python
  • Official uv-aarch64-pc-windows-msvc.zip SHA verified from the uv 0.9.18 release
  • Hosted fresh Windows ARM64 installer: passed
  • Hosted Windows ARM64 Python/test matrix: passed

Promotion state

  • Native CLI and installer implementation: green on the hosted ARM runner.
  • Native managed runtime: green in hcompai/hai#12375; pending the next runtime release and SHA pin.
  • Customer-installable cryptography binary dependency: pending the Holo distribution release.
  • Native live smoke and eight-task qualification: intentionally pending the real runtime pin.

Comment thread shas/windows-arm64.txt Outdated
@@ -0,0 +1 @@
windows-arm64=0000000000000000000000000000000000000000000000000000000000000000

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@cm2435-hcomp please, when works

# Placeholder digest (bump_runtime.py needs a hex literal anchor); the release pipeline fills it in.
"windows-arm64": _artifact(
"hai-agent-runtime-windows-arm64.zip",
"0000000000000000000000000000000000000000000000000000000000000000",

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@cm2435-hcomp please

@h-kaiy
h-kaiy marked this pull request as ready for review July 15, 2026 09:21
h-kaiy and others added 2 commits July 23, 2026 10:57
…nd a friendly unavailable error

Windows ARM64 users previously hit a bare RuntimeError; every unpublished
platform (absent or placeholder) now raises RuntimeArtifactUnavailable with
the PATH / download-env-override guidance. The placeholder entry makes the
next runtime release require a windows-arm64 sha, so client and pipeline
ship together.

Co-authored-by: Cursor <cursoragent@cursor.com>
@cm2435-hcomp
cm2435-hcomp force-pushed the kai/windows-arm64-runtime branch from 4919556 to 5da6f1f Compare July 23, 2026 09:10
@cm2435-hcomp cm2435-hcomp changed the title [Feat] windows-arm64 runtime manifest entry with a friendly unavailable error [Feat] Prepare HoloDesktop for native Windows ARM64 Jul 23, 2026
* Spike Windows ARM64 desktop readiness

* Route readiness spike through full E2E workflow

* Close hosted Windows first-run surfaces

* Require Windows OOBE broker to exit

* Probe rendered Windows privacy experience

* Remove Windows readiness spike routing

* ci: complete Windows ARM privacy OOBE before e2e

* ci: walk Windows privacy OOBE to completion

* ci: click through hosted Windows privacy OOBE

* ci: gate Windows privacy state on visible UI

* ci: allow an idle Windows desktop without foreground

* ci: prepare Windows desktop immediately before e2e

* style: format Windows readiness workflow test

* ci: isolate Windows ARM64 installer smoke
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants