[PR #4061] feat(windows): support Windows ARM64 native controls and provider boundaries #6028

Open
opened 2026-10-31 01:11:17 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/4061
Author: @Rami9112
Created: 10/15/2026
Status: 🔄 Open

Base: main ← Head: feat/windows-arm64-support


📝 Commits (8)

  • 042d985 feat(windows): support Windows ARM64 native controls and provider boundaries
  • ca842c4 fix(windows): address review feedback on ARM64 manifest and verifiers
  • 87ee61a fix(windows): bind preserved native artifacts to sourceSha256 and host fixture selection
  • 2c37ebe fix(windows): declare sourceSha256 in windowsNativeManifestSchema
  • 4e65119 fix(windows): require sourceSha256 when native sources are present
  • cb4bc32 chore(windows): merge upstream/main and align Windows Ghidra verifier limitations
  • afe89ec docs(windows): include ARM64 addon in checkout restore recipe
  • f6a0f7a chore(windows): merge upstream/main and update Windows ARM64 Ghidra installation test

📊 Changes

31 files changed (+705 additions, -187 deletions)

View changed files

📝 CONTRIBUTING.md (+6 -4)
📝 README.md (+1 -1)
📝 docs/android-analysis.md (+7 -5)
📝 docs/installation.md (+2 -2)
📝 docs/windows-ghidra-p0.md (+14 -9)
📝 native/windows/README.md (+19 -10)
📝 native/windows/src/process.cc (+4 -0)
📝 package.json (+1 -0)
📝 scripts/build-windows-native.mjs (+112 -15)
📝 scripts/verify-packaged-ghidra-windows.mjs (+6 -3)
📝 scripts/verify-real-ghidra-windows.mjs (+6 -3)
📝 scripts/verify-windows-native-artifact.mjs (+92 -18)
📝 scripts/verify-windows-native-inspection.mjs (+34 -4)
📝 scripts/verify-windows-native.mjs (+5 -2)
📝 scripts/verify-windows-package.mjs (+14 -1)
📝 src/android/JadxConfiguration.ts (+7 -4)
📝 src/android/JadxRelease.ts (+2 -2)
📝 src/application/CapabilityInventory.ts (+1 -1)
📝 src/application/Doctor.test.ts (+23 -30)
📝 src/application/DoctorDiagnostics.ts (+3 -2)

...and 11 more files

📄 Description

Summary

On Windows 11 ARM64 hosts running native ARM64 Node.js, REA rejected Windows native controls, Android JADX subprocess ownership, Ghidra win_arm_64 installation admission, and Windows native build/verifier lanes because host and artifact checks only admitted x64.

This PR extends the Windows native build, loader, verifier, doctor, Android JADX, and Ghidra P0 installation boundaries to support win32/arm64 alongside win32/x64, while keeping admission fail-closed and preserving existing x64 behavior.

Problem and expected behavior

  • Before:
    • loadWindowsNativeAuthority and isWindowsNativeHost only admitted win32/x64, 0x8664 PE32+ images, and rea-windows-x64.node; native/windows/src/process.cc reported hardcoded "x64".
    • scripts/build-windows-native.mjs and the Windows native/package/Ghidra verifier scripts hardcoded x64 and rea-windows-x64.node, overwrote manifest.json without preserving per-architecture entries, and did not pass llvm-dlltool (-l) + linker delay-load flags (-Wl,--delayload=node.exe -ldelayimp) required by aarch64-w64-mingw32.
    • GhidraInstallation.ts mapped win32 only to win_x86_64, rejecting Windows ARM64 installations even when Ghidra/Features/Decompiler/os/win_arm_64/decompile.exe and a matching aarch64 JDK were present.
    • JadxConfiguration.ts, DoctorDiagnostics.ts, and remediation strings rejected or misdirected win32/arm64 hosts.
  • After:
    • WindowsNativeLoader admits x64 and arm64 Windows hosts, requiring the manifest architecture (or per-architecture artifacts table entry), artifact (rea-windows-x64.node or rea-windows-arm64.node), SHA-256 digest, PE32+ machine (0x8664 or 0xaa64), and native self-inspection architecture to match the host before granting authority.
    • native/windows/src/process.cc reports "arm64" when compiled under __aarch64__ or _M_ARM64, and "x64" otherwise.
    • scripts/build-windows-native.mjs accepts --arch=arm64 (defaulting to x64), builds rea-windows-arm64.node with aarch64-w64-mingw32 using -l, -Wl,--delayload=node.exe, and -ldelayimp, and records the target in manifest.json while preserving same-version architecture entries under artifacts.
    • Windows native/package/Ghidra verifier scripts validate all declared artifacts in manifest.json and report the runtime host architecture on both x64 and arm64 Windows hosts.
    • GhidraInstallation.ts maps win32/arm64 to win_arm_64, requiring the native win_arm_64 decompiler and matching aarch64 JDK.
    • JadxConfiguration.ts and DoctorDiagnostics.ts share isWindowsNativeHost, and remediation messages accurately reference Windows x64 or ARM64 packages.

Change and scope

Follow the contribution scope.
This PR extends existing Windows host admission, native artifact verification, and provider readiness boundaries to win32/arm64 without introducing new providers, capabilities, or mutation authority (not applicable for a new capability scope decision; related to #3602).

  • native/windows/src/process.cc: report "arm64" on __aarch64__ / _M_ARM64.
  • src/windows/WindowsNativeLoader.ts, src/process/WindowsAuthority.ts, src/windows/WindowsOwnedProcess.ts: add arm64 (0xaa64, rea-windows-arm64.node) host/manifest/PE/inspection checks, multi-architecture manifest.artifacts admission, isWindowsNativeHost, and architecture-aware missing-file and remediation diagnostics.
  • scripts/build-windows-native.mjs, scripts/verify-windows-native-artifact.mjs, scripts/verify-windows-native-inspection.mjs, scripts/verify-windows-native.mjs, scripts/verify-windows-package.mjs, scripts/verify-real-ghidra-windows.mjs, scripts/verify-packaged-ghidra-windows.mjs, package.json: support --arch=arm64 builds (llvm-dlltool -l, --delayload=node.exe, -ldelayimp), per-architecture manifest.artifacts preservation, and manifest-driven artifact verification.
  • src/ghidra/GhidraInstallation.ts, src/ghidra/GhidraProviderCapabilities.ts, src/android/JadxConfiguration.ts, src/android/JadxRelease.ts, src/application/DoctorDiagnostics.ts, src/application/CapabilityInventory.ts, src/server/registerSessionTools.ts: admit win32/arm64 with matching native controls and win_arm_64 decompiler/JDK checks.
  • Documentation and unit/behavior tests updated across CONTRIBUTING.md, README.md, docs/, native/windows/README.md, and src/.

Contract and boundary impact

  • Semantic owner and earliest changed stage: WindowsNativeLoader (loadWindowsNativeAuthority) and GhidraInstallation (NATIVE_PLATFORMS).
  • Contribution scope fit and linked maintainer decision: not applicable (extends existing Windows x64 controls and readiness checks to Windows ARM64 with identical fail-closed invariants).
  • CLI and MCP/tool-catalog contract: none changed; remediation strings now name Windows x64 or ARM64.
  • Provider, bridge, target-format, or platform compatibility: win32/x64 is unchanged; win32/arm64 is admitted when rea-windows-arm64.node and manifest.json match the host and pass self-inspection.
  • Evidence, artifact, provenance, or reconstruction contract: none changed.
  • Target selection, authority, upstream behavior, and cleanup details (if applicable): unchanged; Windows native DACL, reparse-safe path admission, and Job Object process ownership remain mandatory on both x64 and arm64.
  • Generated metadata (docs/public/product-catalog.json), package, or installation impact: package.json files includes native/windows/build/rea-windows-arm64.node; no generated build outputs or native binaries are committed.

Expected effects (check known effects; use documentation-only on its own).
Unchecked items do not establish absence; leave uncertainties visible.

  • Read existing files or captured data.
  • Launch or attach to a process.
  • Inject instrumentation or run scripts/code.
  • Change process memory, registers, files, or configuration.
  • Contact network services.
  • Recover protected code or work around protections.
  • Documentation or usability only; no target interaction.
  • Not sure yet; investigation or maintainer guidance needed.

Evidence and regression coverage

  • Tests added or updated:
    • src/windows/WindowsNativeLoader.test.ts: verifies ARM64 host admission with 0xaa64 PE32+ and rea-windows-arm64.node, multi-architecture manifest.artifacts admission and inconsistency rejection, and bidirectional (x64 and arm64) rejection of cross-architecture manifests, crossed artifact filenames, mismatched PE32+ machine types, and mismatched native self-inspection architectures.
    • src/ghidra/GhidraInstallation.test.ts: verifies Windows ARM64 admission when win_arm_64\decompile.exe and an aarch64 JDK match.
    • src/application/Doctor.test.ts, src/ghidra/GhidraDoctor.test.ts, src/ghidra/GhidraProvider.behavior.test.ts, tests/boundary/android/jadxDoctor.test.ts: verifies win32 x64/arm64/ia32 host boundary and updated remediation guidance.
  • Base reproduction or other evidence:
    • Executed on a real Windows 11 Home 24H2 ARM64 host (Snapdragon X Elite, NTFS, Node.js v24.21.0 arm64, non-elevated medium-integrity token 8192).
    • Also caught and verified that aarch64-w64-mingw32 (llvm-mingw) requires llvm-dlltool -l plus -Wl,--delayload=node.exe -ldelayimp so renamedHostNodeApi (rea-renamed-node.exe) succeeds without eager node.exe imports.
  • User-visible CLI/MCP output (if applicable):
    • node scripts/rea.mjs doctor --json reports {"name":"host","ok":true,"classification":"healthy","detail":"win32 arm64"}.
  • Remaining proof gaps:
    • Real Windows Ghidra end-to-end execution (verify:ghidra:windows) was not run on this host because a local win_arm_64 Ghidra installation was not configured.

For evidence-bearing changes:

  • Observed, derived, and inferred claims remain distinguishable.
  • Artifact identity, source provenance, and failed attempts remain preserved.
  • Unsupported, incomplete, unavailable, or uncertain outcomes remain visible.

Validation performed

  • npx vitest run src/windows/WindowsNativeLoader.test.ts src/ghidra/GhidraInstallation.test.ts src/ghidra/GhidraProvider.behavior.test.ts src/ghidra/GhidraDoctor.test.ts — 4 test files passed (180 passed, 1 skipped).
  • npx vitest run src/application/Doctor.test.ts — 33 passed, 1 failed (checks the canonical user install after the system launcher, pre-existing POSIX /fixture/home path expectation when run on Windows).
  • npm run check:fast — passed (typecheck and lint, 2/2 tasks successful).
  • npm run check — passed (typecheck, lint:built, format:check, knip, metadata:check, verify:module-boundaries, and verify:architecture-guards across 1426 source files).
  • npm run docs:check — passed (docs:check:built and tests/conformance/readmeConsistency.test.ts, 5 passed).
  • node scripts/verify-windows-native-artifact.mjs (with rea-windows-arm64.node built via llvm-mingw aarch64-w64-mingw32-g++) — passed ({"ok":true,"packageVersion":"6.5.0","platform":"win32","architecture":"arm64","abiVersion":1,"nodeApiVersion":8,"artifact":"rea-windows-arm64.node","artifactBytes":678400}).
  • node scripts/verify-windows-native.mjs . <arm64 process-boundary.exe> — passed (ok: true, including renamedHostNodeApi: true, volumeRootAdmissionWithAppendHandle: true, inPlaceAncestorReparseDenied: true, breakawayDenied: true, childOwnerNormalizedWithoutChangingCaller: true, windowsEnvironmentSemantics: true, callerAffinityBoundsOwnedProcessOrRefusesToWiden: true, ownerForcedExitKillsOwnedChild: true, protocolInput, and jobMemoryLimit).
  • node scripts/verify-windows-native-inspection.mjs — passed (ok: true, all retained-owner, rollback, retry, and teardown checks passed on Windows ARM64 NTFS).
  • npm run verify:package:windows — passed (ok: true, package: "rea-agents-6.5.0.tgz", tools: 207, setup_idempotent: true, uninstall: true).
  • npm pack --dry-run — passed.

Compatibility, safety, and release

  • Breaking changes or migration steps: none.
  • Real Hopper/Ghidra, browser, or OS coverage: verified on a real Windows 11 ARM64 host for the native control lane, inspection-failure lane, and Windows package lane; real Ghidra win_arm_64 runtime was not exercised locally.
  • Package or release metadata impact: adds native/windows/build/rea-windows-arm64.node to package.json files.
  • Security, privacy, process, or containment review: fail-closed admission is preserved; arm64 hosts require exact version, ABI, architecture, SHA-256 digest, 0xaa64 PE32+ header, and self-inspection agreement before loading.

Author readiness

Human owner: @Rami9112

  • I reviewed the final diff and relevant existing code, understand the change and its edge cases, and take responsibility for the complete PR, including AI-assisted work.
  • I checked the evidence above, confirmed it supports the current change, and recorded meaningful validation gaps.
  • I declare this PR ready for initial maintainer review.

Before merge

  • This PR addresses a concrete problem or an agreed enhancement.
  • Material scope and authority questions are resolved, and any required maintainer scope decision covers the final diff.
  • The PR has one focused outcome and the title follows type(scope): outcome.
  • Related issue is linked, or the reason for not linking one is stated above.
  • Tests cover changed observable behavior and meaningful failure paths.
  • Owning docs, contracts, and generated metadata are updated where needed.
  • User-visible CLI/MCP changes include representative output.
  • I checked the final diff for secrets, unrelated cleanup, and unsupported claims.

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/morluto/rea/pull/4061 **Author:** [@Rami9112](https://github.com/Rami9112) **Created:** 10/15/2026 **Status:** 🔄 Open **Base:** `main` ← **Head:** `feat/windows-arm64-support` --- ### 📝 Commits (8) - [`042d985`](https://github.com/morluto/rea/commit/042d985be961437427e12dcebfaf9dff3f342257) feat(windows): support Windows ARM64 native controls and provider boundaries - [`ca842c4`](https://github.com/morluto/rea/commit/ca842c4d262e215da0e38b30ca9be48f3aa619aa) fix(windows): address review feedback on ARM64 manifest and verifiers - [`87ee61a`](https://github.com/morluto/rea/commit/87ee61a8167883e04f005379f3295b0b43506d97) fix(windows): bind preserved native artifacts to sourceSha256 and host fixture selection - [`2c37ebe`](https://github.com/morluto/rea/commit/2c37ebe063b681b93ec4b94078c03c70c9972674) fix(windows): declare sourceSha256 in windowsNativeManifestSchema - [`4e65119`](https://github.com/morluto/rea/commit/4e65119da876eae8694193d11e26ea7f3ece0caf) fix(windows): require sourceSha256 when native sources are present - [`cb4bc32`](https://github.com/morluto/rea/commit/cb4bc325553c5c9e760208ab956e4ac1d86ea4b2) chore(windows): merge upstream/main and align Windows Ghidra verifier limitations - [`afe89ec`](https://github.com/morluto/rea/commit/afe89ec87ede017030cceb325d9f6e70319329de) docs(windows): include ARM64 addon in checkout restore recipe - [`f6a0f7a`](https://github.com/morluto/rea/commit/f6a0f7a023e068aadef2e2fe57199982a63baaea) chore(windows): merge upstream/main and update Windows ARM64 Ghidra installation test ### 📊 Changes **31 files changed** (+705 additions, -187 deletions) <details> <summary>View changed files</summary> 📝 `CONTRIBUTING.md` (+6 -4) 📝 `README.md` (+1 -1) 📝 `docs/android-analysis.md` (+7 -5) 📝 `docs/installation.md` (+2 -2) 📝 `docs/windows-ghidra-p0.md` (+14 -9) 📝 `native/windows/README.md` (+19 -10) 📝 `native/windows/src/process.cc` (+4 -0) 📝 `package.json` (+1 -0) 📝 `scripts/build-windows-native.mjs` (+112 -15) 📝 `scripts/verify-packaged-ghidra-windows.mjs` (+6 -3) 📝 `scripts/verify-real-ghidra-windows.mjs` (+6 -3) 📝 `scripts/verify-windows-native-artifact.mjs` (+92 -18) 📝 `scripts/verify-windows-native-inspection.mjs` (+34 -4) 📝 `scripts/verify-windows-native.mjs` (+5 -2) 📝 `scripts/verify-windows-package.mjs` (+14 -1) 📝 `src/android/JadxConfiguration.ts` (+7 -4) 📝 `src/android/JadxRelease.ts` (+2 -2) 📝 `src/application/CapabilityInventory.ts` (+1 -1) 📝 `src/application/Doctor.test.ts` (+23 -30) 📝 `src/application/DoctorDiagnostics.ts` (+3 -2) _...and 11 more files_ </details> ### 📄 Description ## Summary On Windows 11 ARM64 hosts running native ARM64 Node.js, REA rejected Windows native controls, Android JADX subprocess ownership, Ghidra `win_arm_64` installation admission, and Windows native build/verifier lanes because host and artifact checks only admitted `x64`. This PR extends the Windows native build, loader, verifier, doctor, Android JADX, and Ghidra P0 installation boundaries to support `win32`/`arm64` alongside `win32`/`x64`, while keeping admission fail-closed and preserving existing `x64` behavior. ## Problem and expected behavior - **Before:** - `loadWindowsNativeAuthority` and `isWindowsNativeHost` only admitted `win32`/`x64`, `0x8664` PE32+ images, and `rea-windows-x64.node`; `native/windows/src/process.cc` reported hardcoded `"x64"`. - `scripts/build-windows-native.mjs` and the Windows native/package/Ghidra verifier scripts hardcoded `x64` and `rea-windows-x64.node`, overwrote `manifest.json` without preserving per-architecture entries, and did not pass `llvm-dlltool` (`-l`) + linker delay-load flags (`-Wl,--delayload=node.exe -ldelayimp`) required by `aarch64-w64-mingw32`. - `GhidraInstallation.ts` mapped `win32` only to `win_x86_64`, rejecting Windows ARM64 installations even when `Ghidra/Features/Decompiler/os/win_arm_64/decompile.exe` and a matching `aarch64` JDK were present. - `JadxConfiguration.ts`, `DoctorDiagnostics.ts`, and remediation strings rejected or misdirected `win32`/`arm64` hosts. - **After:** - `WindowsNativeLoader` admits `x64` and `arm64` Windows hosts, requiring the manifest `architecture` (or per-architecture `artifacts` table entry), `artifact` (`rea-windows-x64.node` or `rea-windows-arm64.node`), SHA-256 digest, PE32+ machine (`0x8664` or `0xaa64`), and native self-inspection `architecture` to match the host before granting authority. - `native/windows/src/process.cc` reports `"arm64"` when compiled under `__aarch64__` or `_M_ARM64`, and `"x64"` otherwise. - `scripts/build-windows-native.mjs` accepts `--arch=arm64` (defaulting to `x64`), builds `rea-windows-arm64.node` with `aarch64-w64-mingw32` using `-l`, `-Wl,--delayload=node.exe`, and `-ldelayimp`, and records the target in `manifest.json` while preserving same-version architecture entries under `artifacts`. - Windows native/package/Ghidra verifier scripts validate all declared artifacts in `manifest.json` and report the runtime host architecture on both `x64` and `arm64` Windows hosts. - `GhidraInstallation.ts` maps `win32`/`arm64` to `win_arm_64`, requiring the native `win_arm_64` decompiler and matching `aarch64` JDK. - `JadxConfiguration.ts` and `DoctorDiagnostics.ts` share `isWindowsNativeHost`, and remediation messages accurately reference Windows x64 or ARM64 packages. ## Change and scope Follow the [contribution scope](https://github.com/morluto/rea/blob/main/CONTRIBUTING.md#contribution-scope). This PR extends existing Windows host admission, native artifact verification, and provider readiness boundaries to `win32`/`arm64` without introducing new providers, capabilities, or mutation authority (not applicable for a new capability scope decision; related to #3602). - `native/windows/src/process.cc`: report `"arm64"` on `__aarch64__` / `_M_ARM64`. - `src/windows/WindowsNativeLoader.ts`, `src/process/WindowsAuthority.ts`, `src/windows/WindowsOwnedProcess.ts`: add `arm64` (`0xaa64`, `rea-windows-arm64.node`) host/manifest/PE/inspection checks, multi-architecture `manifest.artifacts` admission, `isWindowsNativeHost`, and architecture-aware missing-file and remediation diagnostics. - `scripts/build-windows-native.mjs`, `scripts/verify-windows-native-artifact.mjs`, `scripts/verify-windows-native-inspection.mjs`, `scripts/verify-windows-native.mjs`, `scripts/verify-windows-package.mjs`, `scripts/verify-real-ghidra-windows.mjs`, `scripts/verify-packaged-ghidra-windows.mjs`, `package.json`: support `--arch=arm64` builds (`llvm-dlltool -l`, `--delayload=node.exe`, `-ldelayimp`), per-architecture `manifest.artifacts` preservation, and manifest-driven artifact verification. - `src/ghidra/GhidraInstallation.ts`, `src/ghidra/GhidraProviderCapabilities.ts`, `src/android/JadxConfiguration.ts`, `src/android/JadxRelease.ts`, `src/application/DoctorDiagnostics.ts`, `src/application/CapabilityInventory.ts`, `src/server/registerSessionTools.ts`: admit `win32`/`arm64` with matching native controls and `win_arm_64` decompiler/JDK checks. - Documentation and unit/behavior tests updated across `CONTRIBUTING.md`, `README.md`, `docs/`, `native/windows/README.md`, and `src/`. ## Contract and boundary impact - Semantic owner and earliest changed stage: `WindowsNativeLoader` (`loadWindowsNativeAuthority`) and `GhidraInstallation` (`NATIVE_PLATFORMS`). - Contribution scope fit and linked maintainer decision: not applicable (extends existing Windows x64 controls and readiness checks to Windows ARM64 with identical fail-closed invariants). - CLI and MCP/tool-catalog contract: none changed; remediation strings now name `Windows x64 or ARM64`. - Provider, bridge, target-format, or platform compatibility: `win32`/`x64` is unchanged; `win32`/`arm64` is admitted when `rea-windows-arm64.node` and `manifest.json` match the host and pass self-inspection. - Evidence, artifact, provenance, or reconstruction contract: none changed. - Target selection, authority, upstream behavior, and cleanup details (if applicable): unchanged; Windows native DACL, reparse-safe path admission, and Job Object process ownership remain mandatory on both `x64` and `arm64`. - Generated metadata (`docs/public/product-catalog.json`), package, or installation impact: `package.json` `files` includes `native/windows/build/rea-windows-arm64.node`; no generated build outputs or native binaries are committed. Expected effects (check known effects; use documentation-only on its own). Unchecked items do not establish absence; leave uncertainties visible. - [x] Read existing files or captured data. - [x] Launch or attach to a process. - [ ] Inject instrumentation or run scripts/code. - [ ] Change process memory, registers, files, or configuration. - [ ] Contact network services. - [ ] Recover protected code or work around protections. - [ ] Documentation or usability only; no target interaction. - [ ] Not sure yet; investigation or maintainer guidance needed. ## Evidence and regression coverage - Tests added or updated: - `src/windows/WindowsNativeLoader.test.ts`: verifies ARM64 host admission with `0xaa64` PE32+ and `rea-windows-arm64.node`, multi-architecture `manifest.artifacts` admission and inconsistency rejection, and bidirectional (`x64` and `arm64`) rejection of cross-architecture manifests, crossed artifact filenames, mismatched PE32+ machine types, and mismatched native self-inspection architectures. - `src/ghidra/GhidraInstallation.test.ts`: verifies Windows ARM64 admission when `win_arm_64\decompile.exe` and an `aarch64` JDK match. - `src/application/Doctor.test.ts`, `src/ghidra/GhidraDoctor.test.ts`, `src/ghidra/GhidraProvider.behavior.test.ts`, `tests/boundary/android/jadxDoctor.test.ts`: verifies `win32` `x64`/`arm64`/`ia32` host boundary and updated remediation guidance. - Base reproduction or other evidence: - Executed on a real Windows 11 Home 24H2 ARM64 host (Snapdragon X Elite, NTFS, Node.js v24.21.0 `arm64`, non-elevated medium-integrity token `8192`). - Also caught and verified that `aarch64-w64-mingw32` (`llvm-mingw`) requires `llvm-dlltool -l` plus `-Wl,--delayload=node.exe -ldelayimp` so `renamedHostNodeApi` (`rea-renamed-node.exe`) succeeds without eager `node.exe` imports. - User-visible CLI/MCP output (if applicable): - `node scripts/rea.mjs doctor --json` reports `{"name":"host","ok":true,"classification":"healthy","detail":"win32 arm64"}`. - Remaining proof gaps: - Real Windows Ghidra end-to-end execution (`verify:ghidra:windows`) was not run on this host because a local `win_arm_64` Ghidra installation was not configured. For evidence-bearing changes: - [x] Observed, derived, and inferred claims remain distinguishable. - [x] Artifact identity, source provenance, and failed attempts remain preserved. - [x] Unsupported, incomplete, unavailable, or uncertain outcomes remain visible. ## Validation performed - `npx vitest run src/windows/WindowsNativeLoader.test.ts src/ghidra/GhidraInstallation.test.ts src/ghidra/GhidraProvider.behavior.test.ts src/ghidra/GhidraDoctor.test.ts` — 4 test files passed (180 passed, 1 skipped). - `npx vitest run src/application/Doctor.test.ts` — 33 passed, 1 failed (`checks the canonical user install after the system launcher`, pre-existing POSIX `/fixture/home` path expectation when run on Windows). - `npm run check:fast` — passed (`typecheck` and `lint`, 2/2 tasks successful). - `npm run check` — passed (`typecheck`, `lint:built`, `format:check`, `knip`, `metadata:check`, `verify:module-boundaries`, and `verify:architecture-guards` across 1426 source files). - `npm run docs:check` — passed (`docs:check:built` and `tests/conformance/readmeConsistency.test.ts`, 5 passed). - `node scripts/verify-windows-native-artifact.mjs` (with `rea-windows-arm64.node` built via `llvm-mingw` `aarch64-w64-mingw32-g++`) — passed (`{"ok":true,"packageVersion":"6.5.0","platform":"win32","architecture":"arm64","abiVersion":1,"nodeApiVersion":8,"artifact":"rea-windows-arm64.node","artifactBytes":678400}`). - `node scripts/verify-windows-native.mjs . <arm64 process-boundary.exe>` — passed (`ok: true`, including `renamedHostNodeApi: true`, `volumeRootAdmissionWithAppendHandle: true`, `inPlaceAncestorReparseDenied: true`, `breakawayDenied: true`, `childOwnerNormalizedWithoutChangingCaller: true`, `windowsEnvironmentSemantics: true`, `callerAffinityBoundsOwnedProcessOrRefusesToWiden: true`, `ownerForcedExitKillsOwnedChild: true`, `protocolInput`, and `jobMemoryLimit`). - `node scripts/verify-windows-native-inspection.mjs` — passed (`ok: true`, all retained-owner, rollback, retry, and teardown checks passed on Windows ARM64 NTFS). - `npm run verify:package:windows` — passed (`ok: true`, `package: "rea-agents-6.5.0.tgz"`, `tools: 207`, `setup_idempotent: true`, `uninstall: true`). - `npm pack --dry-run` — passed. ## Compatibility, safety, and release - Breaking changes or migration steps: none. - Real Hopper/Ghidra, browser, or OS coverage: verified on a real Windows 11 ARM64 host for the native control lane, inspection-failure lane, and Windows package lane; real Ghidra `win_arm_64` runtime was not exercised locally. - Package or release metadata impact: adds `native/windows/build/rea-windows-arm64.node` to `package.json` `files`. - Security, privacy, process, or containment review: fail-closed admission is preserved; `arm64` hosts require exact version, ABI, architecture, SHA-256 digest, `0xaa64` PE32+ header, and self-inspection agreement before loading. ## Author readiness Human owner: @Rami9112 - [x] I reviewed the final diff and relevant existing code, understand the change and its edge cases, and take responsibility for the complete PR, including AI-assisted work. - [x] I checked the evidence above, confirmed it supports the current change, and recorded meaningful validation gaps. - [x] I declare this PR ready for initial maintainer review. ## Before merge - [x] This PR addresses a concrete problem or an agreed enhancement. - [ ] Material scope and authority questions are resolved, and any required maintainer scope decision covers the final diff. - [x] The PR has one focused outcome and the title follows `type(scope): outcome`. - [x] Related issue is linked, or the reason for not linking one is stated above. - [x] Tests cover changed observable behavior and meaningful failure paths. - [x] Owning docs, contracts, and generated metadata are updated where needed. - [x] User-visible CLI/MCP changes include representative output. - [x] I checked the final diff for secrets, unrelated cleanup, and unsupported claims. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
morluto/rea#6028
No description provided.