mirror of
https://github.com/morluto/rea.git
synced 2026-11-05 06:45:22 +00:00
Open
opened 2026-10-31 01:09:54 +00:00 by bsakaguchi
·
0 comments
No Branch/Tag specified
main
codex/procedure-reference-stacked
release-please--branches--main--components--rea-agents
release-please--branches--main--components--rea-agents--release-notes
codex/kuna-independent-retry
codex/byte-search-overlay-coverage
codex/open-failure-target-receipt
codex/kuna-xref-evidence
codex/ghidra-ambiguous-procedure-recovery
codex/function-source-bundle
codex/trace-function-integration-prototype
codex/snapshot-source-closure
codex/recorded-evidence-array-pages
codex/evidence-recovery-redesign
codex/trace-feature-address-scope
codex/call-discovery-scope
codex/ghidra-literal-candidate-evidence
codex/decompile-directory-independent-retry
codex/retry-provenance-base
codex/value-flow-capability-experiment
codex/ghidra-containing-instruction
cursor/readme-discord-button-ef9f
dependabot/github_actions/actions/setup-node-7.1.0
dependabot/github_actions/actions/upload-artifact-7.0.2
dependabot/npm_and_yarn/npm-minor-and-patch-d8d97ce6df
codex/kuna-1989
fix/8559-native-ui-fixture-ownership
fix/8555-go-verifier-mcp-ownership
codex/provider-capability-recovery
fix/8642-rizin-target-stdin
codex/ghidra-memory-effect-scope
codex/ghidra-annotation-entry-selector
codex/ghidra-readonly-recovery
codex/ghidra-regex-verifier-recovery
codex/evidence-discovery-view-guidance
fix/8545-bulk-append-overflow
fix/8428-navigation-refusal-alternatives
codex/address-context-recovery
codex/matching-member-limitations
codex/unknown-scope-contract
codex/evidence-view-guidance
feat/8373-native-trace-views
codex/ghidra-snapshot-verifier-binding
codex/elf-export-visibility
codex/evidence-view-recovery
codex/native-reference-cli-help
codex/provider-candidate-observation-scope
codex/kuna-session-verification
codex/ghidra-switch-lifetime-guidance
codex/pseudocode-paging-discovery
codex/clarify-evidence-view-support
codex/kuna-xrefs-selector-recovery
codex/context-capacity-recovery
codex/evidence-closure-large-links
codex/same-function-evidence-identity
codex/ghidra-verifier-inspected-jdk
codex/audit-guided-workflows
codex/crash-prompt-retained-dossiers
codex/analysis-view-error-recovery
codex/kuna-verifier-target-selection
codex/ghidra-selected-project-call-coverage
codex/docs-native-analysis-scope
codex/ghidra-java-socket-boundary
codex/ghidra-retained-snapshot-verifier
codex/ghidra-search-inventory-facts
fix/8284-zero-argument-parameter-bindings
fix/8198-ui-action-handler-offset
fix/8257-elf-entry-label-identity
fix/8304-deferred-output-schema-projection
fix/8277-call-path-computed-target-uncertainty
fix/pr-8089-conflicts
fix/ci-static-duplicate-export
dependabot/npm_and_yarn/lint-staged-17.6.0
dependabot/github_actions/actions/download-artifact-8.0.2
dependabot/npm_and_yarn/write-file-atomic-8.0.0
dependabot/npm_and_yarn/canonicalize-5.1.0
dependabot/github_actions/actions/cache/restore-6.1.0
dependabot/npm_and_yarn/toon-format/toon-4.4.0
dependabot/github_actions/actions/deploy-pages-5.0.1
codex/review-fixes-pr-2403
codex/review-fixes-pr-2400
codex/process-terminal-width
codex/test-brittleness-cleanup
verify/7167-browser-connect-macos
fix/7167-browser-connect
feat/native-matching-allowance-setting
feat/browser-scenario-dry-run
test/managed-caller-parameters-20261024
codex/parser-fortythird-boundaries
fix/6926-pinvoke-platform-decorations-20261023
fix/6889-har-body-encoding-20261023
fix/6888-sqlite-schema-budget-20261023
fix/dependency-security-gates-6708
cursor/evidence-overwrite-rebase-b4ac
feat/4057-verify-native-exports
fix/windows-acl-observer-overhead-20261022
cursor/erlang-beam-restack-4476
cursor/pe-certificate-review-bf32
fix/6116-javascript-application-fs-errors
fix/6061-unmapped-runtime-script-unknown
feat/browser-scenario-summary
fix/pe-certificates
codex/verify-3407
cursor/rebase-5699
cursor/rebase-5352
cursor/rebase-5600
cursor/fix-cli-schema-omission-10a8
codex/audit-hopper-shutdown-reasons-20261021
fix/demangle-swift-omitted-record
fix/nib-boolean-value-types
cursor/cancellation-partial-observation-a5ac
fix/ib-object-limit-reasons
fix/electron-fuse-limit-advice
fix/kuna-doctor-dangling-cache
fix/fixed-budget-refusal-advice
fix/js-ipc-listener-dedup
fix/js-return-member-provenance
fix/dmg-integrity-retry-advice
fix/ida-doctor-readiness
fix/kuna-version-probe-output-drain
fix/legacy-swift-runtime-name-matching
fix/dylib-lazy-load-commands
fix/browser-scenario-startup-cancel
fix/swift-nested-punycode-classification
fix/compare-unselected-scopes
fix/objc-method-budget-coverage
fix/dmg-mounted-root-observations
audit/ci-tests-20261019-round2
release/6.7.0
fix/wabt-cleanup-retry-resolution
fix/electron-fuse-elf-pe-architecture
fix/native-plist-descriptor-ownership
fix/kuna-caller-cleanup-ownership
experiment/atomic-codemode-20261016
review/first-contributor-3776
fix/call-resolution-full-read-cycles
fix/member-mutation-selection-repeat
experiment/atomic-re-tools-20261015
perf/member-mutation-lazy-origins
perf/static-network-mutation-index
fix/hopper-startup-lifecycle
audit/3050-windows-proof-20261015
feat/windows-window-capture-2183
audit/3049-windows-proof-20261015
audit/3735-macos-fixtures-20261015
fix/batch-decompile-null-pseudocode
fix/kuna-inventory-honors-jobs
experiment/browser-codemode-tool-design-20261015
fix/hopper-clean-runtime-argv
codex/review-2049-27f1b367
review-fixes/pr-2787-routing
fix/3360-scoped-this-emitters
fix/3367-replaced-global-effects
fix/3838-compact-any-value-items
test/hopper-download-probe-20261015
codex/windows-runtime-creation-red-green-20261015
codex/windows-readonly-root-red-green-20261015
codex/windows-root-share-red-green-20261015
codex/exp-1685-win-mcp-startup
codex/bug-sweep-20261015
investigate/2190-windows-package-phases
investigate/3543-macos-cli-deadline
perf/3281-reverse-tools-feedback-quality
fix/3406-hopper-doctor-fixture
fix/3341-wrapper-require-test-context
fix/3301-owned-uninstall-fixtures
fix/3164-compiler-input-ownership
fix/pcap-cleanup-stdout-newline-20261014
perf/interface-builder-summary
codex/review-fixes-pr-1977
fix/ghidra-effective-jvm-platform
fix/docs-turkish-rust-link-20261013
fix/main-maintenance-ci-20261010
fix/recover-binary-session-process-effects
codex/review-fixes-pr-2457
codex/ci-required-cancellation-gate
fix/main-format-baseline-20261013
fix/setup-preserve-entry-fields
cursor/restore-main-checks-1ffc
fix/ghidra-bridge-hashmap-import
codex/shared-ci-jadx-json-default-20261013
codex/shared-ci-ghidra-test-groups-20261013
codex/shared-ci-java-fixture-format-20261013
codex/fix-intrinsic-invocation-boundaries
test/release-preflight-reusable-jobs
test/js-parameter-provenance-expectation
fix/linux-hopper-verification-current
test/2419-ghidra-elf-probe-size
followup/pr-1544-native-ida
codex/fold-pr-2230-contribution
docs/readme-responsible-use
fix/issue-2064
fix/issue-2050
fix/issue-2053
fix/issue-1968
fix/issue-1945
experiment/codemode-bridge-20261011
fix/tool-effects-negative-wording-1904-20261012
fix/1842-electron-interop-provenance
feat/recover-javascript-multi-input
refactor/website-i18n-prep
fix/nativeaot-pe-virtual-extent
fix/browser-verifier-ci-hang
fix/pe-resources-input-selection
docs/beginner-friendly-guides
docs/beginner-setup-guide
fix/javascript-analysis-worker-1563
fix/1649-ghidra-duplicate-names
fix/javascript-export-keys-integration-1369
test/maintenance-boundary-contracts-20261011
review/javascript-export-keys-1369
review/process-live-progress-1483
test/javascript-1495-growth-ratio
fix/ci-escape-timing
docs/normalized-terminal-geometry-1450
release/6.3.0
archive/release-6.3.0-pr1381
release/6.2.0
fix/electron-preload-dynamic-override
fix/javascript-self-referential-bundler-edges
release/6.1.0
cursor/grok-client-cherry-pick-0b56
feat/signature-posture
feat/dyld-shared-cache
feat/artifact-integrity-policy
feat/pkg-inventory
release/6.0.0
chore/sync-release-5.0.0
release/5.0.0
cursor/cloud-agent-node-787e
fix/javascript-xhr-open-endpoints
review/pr-711-realpath-fallback-wording
cleanup/replay-confinement
codex/test-suite-performance
codex/issue-foundations
codex/address-open-issues-2026-07-20
agent/javascript-vite-rollup-esbuild-adapters
agent/process-cleanup
agent/triage-integration
agent/unknown-commands-registry
feat/mcp-identity-metadata
morlvps/issue_cleanup
codex/installer-redesign
morl/roadmap-investigation-core
morl/roadmap-investigation-docs
release-please--branches--main--components--rea
rea-agents-6.8.0
rea-agents-6.7.0
rea-agents-6.6.0
experiment/atomic-codemode-wait-runtime-20261016
rea-agents-6.5.0
rea-agents-6.4.0
rea-agents-6.3.0
rea-agents-6.2.0
rea-agents-6.1.0
rea-agents-6.0.0
rea-agents-5.0.0
rea-agents-4.1.0
rea-agents-4.0.1
rea-agents-4.0.0
rea-agents-3.2.1
rea-agents-3.2.0
rea-agents-3.1.0
rea-agents-3.0.0
rea-agents-2.7.0
rea-agents-2.6.0
rea-agents-2.5.1
rea-agents-2.5.0
rea-agents-2.4.0
rea-agents-2.3.0
rea-agents-2.2.0
rea-agents-2.1.0
rea-agents-2.0.0
rea-agents-1.7.0
rea-agents-1.6.0
rea-agents-1.5.0
rea-agents-1.4.0
rea-agents-1.3.0
rea-agents-1.2.0
rea-agents-1.1.0
rea-agents-1.0.0
rea-agents-0.5.0
rea-agents-0.4.0
rea-agents-0.3.0
rea-0.2.1
rea-0.2.0
Labels
Clear labels
area: bridge
area: bridge
area: build
area: build
area: build
area: cli
area: domain
area: evidence
area: mcp
area: native
area: providers
area: runtime
area: server
area: setup
area: tests
bug
design
documentation
enhancement
enhancement
enhancement
experiment
help wanted
i18n
invalid
P0: critical
P1: high
P2: medium
P2: medium
P2: medium
P3: low
performance
provider-request
pull-request
Mirrored from GitHub Pull Request
question
roadmap
triage
No labels
area: bridge
area: bridge
area: build
area: build
area: build
area: cli
area: domain
area: evidence
area: mcp
area: native
area: providers
area: runtime
area: server
area: setup
area: tests
bug
design
documentation
enhancement
enhancement
enhancement
experiment
help wanted
i18n
invalid
P0: critical
P1: high
P2: medium
P2: medium
P2: medium
P3: low
performance
provider-request
pull-request
question
roadmap
triage
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
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#5849
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/morluto/rea/pull/3602
Author: @chanasia
Created: 10/14/2026
Status: 🔄 Open
Base:
main← Head:feat/windows-arm64-native-controls📝 Commits (10+)
bef00b0feat(windows): admit arm64 hosts for the bundled native controls0c4744btest(windows): pin each manifest target check independently65e3cc6feat(android): admit Windows arm64 hosts for JADX subprocess ownershipb6c3cd2Merge remote-tracking branch 'origin/main' into sweep/3602a0a0c66fix(windows): align doctor and remediation text with arm64 admission4205b52feat(ghidra): admit Windows arm64 hosts with win_arm_64 native tools1171423Merge remote-tracking branch 'origin/main' into feat/windows-arm64-native-controls6fc7034Merge remote-tracking branch 'origin/main' into feat/windows-arm64-native-controlseb38dddMerge remote-tracking branch 'origin/main' into feat/windows-arm64-native-controls943a542Merge remote-tracking branch 'origin/main' into feat/windows-arm64-native-controls📊 Changes
19 files changed (+270 additions, -115 deletions)
View changed files
📝
docs/installation.md(+4 -3)📝
native/windows/src/process.cc(+4 -0)📝
src/android/JadxConfiguration.ts(+6 -3)📝
src/android/JadxRelease.ts(+2 -2)📝
src/application/Doctor.test.ts(+23 -29)📝
src/application/DoctorDiagnostics.ts(+3 -2)📝
src/domain/windowsNativeArtifact.ts(+38 -23)📝
src/ghidra/GhidraDoctor.test.ts(+9 -2)📝
src/ghidra/GhidraInstallation.test.ts(+41 -0)📝
src/ghidra/GhidraInstallation.ts(+3 -3)📝
src/ghidra/GhidraProvider.behavior.test.ts(+2 -2)📝
src/ghidra/GhidraProviderCapabilities.ts(+3 -3)📝
src/process/WindowsAuthority.ts(+5 -4)📝
src/windows/WindowsNativeLoader.test.ts(+67 -7)📝
src/windows/WindowsNativeLoader.ts(+48 -24)📝
src/windows/WindowsOwnedProcess.ts(+2 -2)📝
tests/boundary/android/jadxDoctor.test.ts(+1 -1)📝
tests/fixtures/windowsNativeArtifact.ts(+8 -4)📝
tests/process-global/windowsNativeControlCapability.test.ts(+1 -1)📄 Description
Summary
On Windows on Arm with native arm64 Node.js, every operation that needs the
bundled Windows native controls fails at host admission. JavaScript/Electron
static analysis is one example:
This PR makes the loader admit an arm64 build of the same addon, with the same
identity checks as x64. On a real arm64 host, the existing native conformance
lane passes and the analysis above completes.
The PR also opens the JADX host gate on arm64. JADX uses these controls to
own its Java subprocess. On arm64 it failed at
requireSupportedHostwithunsupported_host, even with a JDK and the JADX jar configured, because thegate admitted only
win32/x64. arm64 now goes through the same checks asx64: the native authority must load and report owned protocol stdin, or the
gate fails closed as before. On the same arm64 host, Android package
inspection, class search and method decompilation through MCP complete.
The last commit (
4205b52) extends the arm64 admission to Windows Ghidra P0.Ghidra 12.1 already maps an arm64 JVM to
Ghidra/Features/Decompiler/os/win_arm_64and its Gradle native build targets that platform, but the release archive ships
no
win_arm_64natives, and REA's installation check knew onlywin32/x64, soan arm64 host was rejected with
unsupported_hostbefore Ghidra started. REA nowmaps
win32/arm64towin_arm_64. The existing executable-header admissionand the JDK
os.archcross-check still apply, so an x64 decompiler or anemulated x64 JDK is still reported as incompatible. REA still does not build or
install native tools.
This PR does not yet build or package an arm64 artifact. See Open
questions. No issue is linked; this PR carries the proposal and the
questions it needs answered.
Problem and expected behavior
loadWindowsNativeAuthorityadmits onlywin32/x64. Themanifest, inspection schema and PE check accept only x64.
process.ccreports a hardcoded
"x64".(
src/domain/windowsNativeArtifact.ts, introduced onmainin3d565fa)owns one table mapping each admitted architecture (
x64,arm64) to itsartifact name (
rea-windows-<arch>.node) and PE machine (0x8664,0xAA64). The loader passes the host architecture to it. The checks are:architectureandartifactmust match the host beforethe artifact is read;
Change and scope
native/windows/src/process.cc: reportarchitecturefrom_M_ARM64/__aarch64__. The existing"x64"stays in#else. This wasthe only architecture-specific line in the native sources.
src/domain/windowsNativeArtifact.ts(18e08f1,195e814):WINDOWS_NATIVE_TARGETSmaps
x64/arm64to the artifact name and PE machine.parseWindowsNativeManifesttakes the host architecture as an optionalthird argument. Its default is
WINDOWS_NATIVE_ARTIFACT.architecture(
x64), so the build and verify scripts keep their x64 contract unchanged.validateWindowsNativeArtifactchecks the PE machine of the manifest'sarchitecture, inside
main's declared optional-header checks (a486cfe).WINDOWS_NATIVE_ARTIFACTandcreateWindowsNativeManifeststay x64.src/windows/WindowsNativeLoader.ts: host admission, passing the hostarchitecture to the shared contract, the inspection schema and its
architecture cross-check, and
readArtifact/loadArtifacttaking theselected artifact name.
src/android/JadxConfiguration.ts:requireSupportedHostadmitswin32/arm64as well aswin32/x64, through the same path:systemWindowsNativeAuthority()must load and its inspection must reportprotocolStdin: true. Anything else still throws. The two remediationmessages in this file no longer say x64 only.
src/windows/WindowsNativeLoader.test.ts: new tests:or loaded, with separate cases for architecture only, artifact only, and
both (the reason now comes from the shared contract: "has an invalid
architecture" or "has an invalid artifact");
The previous
arm64 → hostrejection case now usesia32.tests/fixtures/windowsNativeArtifact.ts(abfa130):main's shared PEfixture takes an optional architecture (default
x64), so the arm64 loadercases reuse it. Its other callers keep x64.
src/application/DoctorDiagnostics.ts(a0a0c66): the informationalhostcheck admits
win32/arm64as well aswin32/x64and still rejectsother Windows architectures. Without this,
rea doctorcalled the samehost unsupported that the loader and the JADX gate admit.
Remediation (
a0a0c66):WindowsAuthority.ts,WindowsOwnedProcess.tsandJadxRelease.tsname the package whose bundled native artifact matches thehost architecture instead of "Windows x64". The artifact-stage message is
the first one an arm64 user with today's x64-only package hits. The
Ghidra-specific strings were left for the Ghidra commit below.
Ghidra (
4205b52):src/ghidra/GhidraInstallation.ts:NATIVE_PLATFORMSmapswin32/arm64towin_arm_64; the two host remediation strings nameWindows arm64.
src/ghidra/GhidraProviderCapabilities.ts: the Windows P0 limitation saysthe matching native addon may be x64 or arm64.
docs/installation.md: Windows x64/arm64 P0, andwin_arm_64besidelinux_arm_64as a native directory that release archives may lack.Intentionally not included. These stay x64-only, fail-closed, until each is
verified:
files,verify-windows-native-artifact.mjs,verify-windows-package.mjsand CI (the build and verify scripts call theshared contract with its x64 default)
Open questions
(
aarch64-w64-mingw32-clang++,llvm-dlltool -m arm64). The GNUMinGW-w64 aarch64 target is not mature yet.
windows-11-armrunner. The prototypeused this toolchain (details below).
rea-agentswith per-architecturemanifests, or use per-architecture optional packages. This PR keeps one
manifest.jsondescribing whichever artifact was built.verify:windows-nativeonwindows-11-armalongside the x64lane.
Remediation text: resolved ina0a0c66(see Change and scope),following review feedback.
Q1–Q3 do not affect whether this PR is safe to merge: x64 is unchanged, and
arm64 hosts with today's x64-only package fail at the artifact stage with a
clearer message. They block shipping arm64 to users. Q1 (build lane) comes
first; Q2 (packaging) and Q3 (CI) follow from it.
Contract and boundary impact
WindowsNativeLoaderhostadmission decides the host architecture once. The shared contract in
src/domain/windowsNativeArtifact.tsbinds the manifest and PE machine toit, and consumers use the loader's result.
controls, extended to a new host architecture. No new provider or
capability. Pending maintainer decision on the open questions.
from the
hoststage (unsupported_host) to theartifactstage(
runtime_missing), with the reason "REA Windows native controls areunavailable: Windows native artifact manifest has an invalid
architecture" (observed on this host after
18e08f1; see Validationperformed). The reason no longer names the required artifact; the
artifact-stage remediation inWindowsAuthority.tsnamesrea-windows-arm64.node.at
unsupported_host.rea doctorreports awin32 arm64host as supported in itsinformational
hostcheck.win_arm_64decompiler and anaarch64 JDK is admitted instead of failing at
unsupported_host. Anarm64 host whose Ghidra has only
win_x86_64natives still fails, now atnative_decompiler("Matching native decompiler for win32/arm64 was notfound"). This is source-derived; it was not run with x64-only natives.
unchanged. The same Job Object, DACL and cleanup controls are admitted on
arm64 only after the native inspection proves them.
Packaging is open question 2.
Expected effects. These are the existing native controls, now admitted on
arm64 hosts; nothing new is introduced:
runtime directories and owned helper processes only; target processes and
memory are untouched.)
Evidence and regression coverage
src/windows/WindowsNativeLoader.test.ts(above);src/application/Doctor.test.ts: the host check is now anit.eachoverx64(supported),arm64(supported) andia32(unsupported);src/ghidra/GhidraDoctor.test.tsandtests/boundary/android/jadxDoctor.test.ts: remediation assertionsfollow the new wording.
tests/fixtures/windowsNativeArtifact.ts: the shared PE fixture takesthe architecture (above);
src/ghidra/GhidraInstallation.test.ts: a Windows arm64 installationwith a
win_arm_64decompiler and anaarch64JDK is admitted;src/ghidra/GhidraProvider.behavior.test.tsfollows the capabilitywording.
rea-agents@6.5.0failure in Summary, onthe host below.
analyze-javascript-applicationon the sameapp.asarwith this branch completes in about 51 s cold. Statistics:relevant_files 5,parsed_javascript_files 2,modules 972,visited_ast_nodes 503068,parse_failures 0; graph 1,132 nodes / 4,187edges.
resources), with Temurin JDK 21.0.12 and
jadx-headless-mcp0.7.1:inspect_android_packagereturned the package summary;search_android_classesfound the main activity;inspect_android_methoddecompiled itsonCreateto Java(
fell_back: false).process.ccchange (no MinGW on this host;CI covers it)
verify-windows-package.mjs4205b52(the change only adds a mapentry and strings; the x64 test still passes)
win_arm_64natives: the 12.1.4 release has none,so validation used natives built locally (details below)
18e08f1and the latermainmerges (only the loader path was re-run on the real artifact)Evidence-bearing checks:
Validation performed
Host: Windows 11 Pro 10.0.26200 arm64, Snapdragon X Elite X1E78100 (12
logical processors, one processor group), NTFS, Node.js 24.18.0 arm64. The
token was non-elevated, medium integrity (
integrityLevel 8192). Baseb8510ee.npx vitest run src/windows/WindowsNativeLoader.test.ts— 25 passed.Removing either manifest equality check (architecture or artifact) fails
one test each, checked by temporarily editing the guard out.
npm run check:fast— passed (typecheck, lint).npm run docs:check— passed.npx vitest run src/windows src/process src/application/Doctor— 326passed, 2 failed, 21 skipped. Unmodified
b8510eeon this host gives 323passed and the same 2 failures, so they are unrelated to this change:
ProcessScenarioRuntimeValidation"preserves the caller-selectedexecutable symlink"
Doctor"checks the canonical user install after the system launcher"npm run build:cached— passed.systemWindowsNativeAuthority()with the arm64 artifact —available: true,architecture: "arm64".privateDacl,privateBridgeDescriptorAccess,atomicJobAssignment,killOnOwnerClose,protocolStdinandjobMemoryLimitare alltrue.node scripts/verify-windows-native.mjs . <arm64 process-boundary.exe>—ok: true:controls;processeschecks, includingbreakawayDenied,childOwnerNormalizedWithoutChangingCaller,windowsEnvironmentSemantics,callerAffinityBoundsOwnedProcessOrRefusesToWiden,ownerForcedExitKillsOwnedChild, protocol input andjobMemoryLimit(128 MiB limit; reached exit 1 with peak 140,668,928 bytes; control exit
0).
node scripts/rea.mjs analyze-javascript-application <app.asar> --json—completed (above).
JADX commit (
65e3cc6, on top of0c4744b):npm run compile— passed.npx vitest run tests/boundary/android/JadxAnalysis.test.ts— 14 passed.inspectJadxAvailability()from the rebuiltdist—status: "available", with the JDK compiler and the JADX jar found.dist.After merging
main(b6c3cd2) and the doctor/remediation commit (a0a0c66).mainchangedprocess.ccand the boundary fixture, so both were rebuiltfor arm64 first:
npx vitest run src/application/Doctor.test.ts src/ghidra/GhidraDoctor.test.ts tests/boundary/android/jadxDoctor.test.ts tests/boundary/android/jadxConfiguration.test.ts src/windows src/process tests/conformance/providers/ghidra/windowsCapabilities.test.ts— 359 passed, 2 failed, 50 skipped. The 2 failures are the same two as
above. They also fail on
b6c3cd2withouta0a0c66on this host.npm run check:fast— passed.npm run docs:check— passed.npm run build:cached— passed.node scripts/verify-windows-native.mjs . <arm64 process-boundary.exe>—ok: true, 66 leaf checks. The onlyfalsevalues arecallerToken.elevatedandcallerToken.administrator(non-elevatedtoken).
node scripts/rea.mjs doctor --json—hostcheckok: true,detail: "win32 arm64".analyze-javascript-applicationon the sameapp.asar—modules 972,parse_failures 0, graph 1,132 nodes / 4,187 edges (unchanged).Ghidra commit (
4205b52, on top ofa0a0c66), same host. Ghidra 12.1.4 (releasearchive, SHA-256 checked), Microsoft Build of OpenJDK 21.0.12 aarch64, and
win_arm_64natives built locally (details below):npx vitest run src/ghidra— 544 passed, 14 failed, 7 skipped. The same 14fail on
a0a0c66without this commit on this host (GhidraAnalysisSeedssymlink commitment,
GhidraLanguageOverride×5,GhidraPowerPcProfile×1,GhidraSnapshotCacherelationship/replay ×7).npm run check:fast— passed.npm run docs:check— passed.npm run build:cached— passed. Pre-commit hooks (oxfmt, oxlint) — passed.node scripts/rea.mjs doctor --provider ghidra --json— every Ghidra checkok: true:platform win32,architecture arm64,java(21.0.12.1,64-bit JDK),
native_decompiler(".../os/win_arm_64/decompile.exe reportspe arm64, which matches win32/arm64") and
native_authority.rea decompile <3 MB x64 PE> entry --provider ghidra— returned the Cpseudo-code of
entry(83 s cold, including analysis).rea mcp, one session):open_binaryon a 47.8 MB x64 PE,then
xrefs,resolve_containing_procedureandprocedure_pseudo_codeon the functions found. The first analysis-backed call returned after
15 min 42 s; later calls in the session returned in seconds.
finish (
provider_timeout, "Ghidra startup deadline elapsed");REA_GHIDRA_STARTUP_TIMEOUT_MS=3600000was set for the runs above. Thedefault is unchanged by this PR.
After merging
main(9c9c64e) and moving the arm64 binding into the sharedcontract (
18e08f1).mainnow requires Node.js ^24.22.1, so these runs usedNode.js 24.22.1 arm64:
npm run typecheck— passed. Pre-pushcheck:fast— passed.npx vitest run src/domain/windowsNativeArtifact.test.ts src/windows src/process/WindowsAuthority src/ghidra src/application/Doctor.test.ts tests/conformance/formats/mzPeAdmission.test.ts tests/conformance/providers/ghidra tests/process-global/windowsNativeControlCapability.test.ts tests/boundary/android/jadxDoctor.test.ts— 1119 passed, 6 failed, 44 skipped. Five failures (
GhidraDolProfile×4,GhidraMipsProfile×1) fail the same way on unmodified9c9c64eon thishost. The sixth is the
GhidraAnalysisSeedssymlink commitment listedabove (
EPERMcreating a symlink).loadWindowsNativeAuthorityfrom source with the arm64 artifact built forthe earlier validation. Its manifest says 6.5.0, so the host's
packageVersionwas set to match. Result:available: true,architecture: "arm64", withprivateDacl,privateBridgeDescriptorAccess,atomicJobAssignment,killOnOwnerClose,protocolStdinandjobMemoryLimitalltrue.failureStage: "artifact",reason "Windows native artifact manifest has an invalid architecture".
sources,
verify-windows-native.mjs,windowsNativeArtifactVerifier.test.ts(needs
dist),docs:check,build:cached, and the JADX and Ghidraend-to-end runs.
After merging
main(365fb03), whosea486cfevalidates the declared PEoptional header, and keeping the arm64 machine check inside that validation
(
195e814), same host and Node.js:check:fast— passed.vitestcommand above — 1160 passed, 6 failed, 47 skipped.The 6 failures are the same six as above.
available: true,architecture: "arm64", all controlstrue. The same host with an x64manifest — "Windows native artifact manifest has an invalid architecture".
After merging
main(bcc6775), whose740c0f5moved the loader's PE bytes intotests/fixtures/windowsNativeArtifact.ts, and binding that fixture to therequested architecture (
abfa130), same host and Node.js:check:fast— passed.npx vitest run src/application/Doctor.test.ts tests/boundary/android/jadxDoctor.test.ts src/ghidra/GhidraDoctor.test.ts src/ghidra/GhidraInstallation.test.ts src/ghidra/GhidraProvider.behavior.test.ts src/android src/windows src/domain/windowsNativeArtifact.test.ts— 485 passed, 31 skipped.
npx vitest run src/windows src/domain/windowsNativeArtifact.test.ts src/process tests/process-global/windowsNativeControlCapability.test.ts— 880 passed, 9 failed, 67 skipped. The 9 (
LinuxCgroupMemory×2,OwnedWorkerRuntime×7) fail the same way on unmodifiedbcc6775on thishost.
npx vitest run tests/conformance/readmeConsistency.test.ts tests/boundary/process/windowsNativeArtifactVerifier.test.ts— 11 passed.
node scripts/run-turbo.mjs run docs:check:built— passed.npm run docs:checkitself stops in itsrun-exclusive.mjswrapper with "REAWindows native controls are unavailable: Windows native artifact belongs
to another REA version": the local arm64 artifact was built for 6.5.0 and
the package is now 6.8.0.
above.
verify-windows-native.mjs,build:cached, and the JADX and Ghidraend-to-end runs.
How the arm64 artifact was built for this validation (outside the repository lane)
MSVC 14.51 (Visual Studio 2026)
Hostarm64/arm64, undervcvarsall.bat arm64. Node 22.19.0 headers were checked againstSHASUMS256.txt.node-api.defwas generated the same way asbuild-windows-native.mjs.The existing
addon.ccdelay-load hook works unchanged with MSVC. Themanifest.jsonusedarchitecture: "arm64"andartifact: "rea-windows-arm64.node". MSVC reports C4267/C4244size_tnarrowing warnings; they are not arm64-specific (x64
size_tis 64-bit too).How the win_arm_64 Ghidra natives were built for this validation (outside the repository)
Ghidra 12.1.4 sources (tag
Ghidra_12.1.4_build), MSVC 14.51Hostarm64/arm64under
vcvarsall.bat arm64. Source lists, defines and flags follow theVisualCpp branch of
Ghidra/Features/Decompiler/buildNatives.gradle, whosemodel already lists
win_arm_64:Both outputs are PE32+ machine
0xAA64and were placed inGhidra/Features/Decompiler/os/win_arm_64/. Gradle'swin_arm_64branchdoes not define
WIN64/_WIN64(onlywin_x86_64does); the sources do notuse
WIN64, and MSVC predefines_WIN64for ARM64.Compatibility, safety, and release
WindowsNativeLoadHostreadArtifact/loadArtifactnow receive the selected artifact name. Theinterface is internal, and the only production host is
systemWindowsNativeAuthority.parseWindowsNativeManifestgains anoptional architecture argument; existing callers keep x64.
the native lane, JavaScript analysis and JADX, and (
4205b52) Ghidra P0through the CLI and stdio MCP. Hopper was not exercised.
fail-closed. An arm64 host loads only an artifact whose manifest
architecture, artifact name, SHA-256, PE machine, and self-inspected
architecture all match. No environment override was added.
Author readiness
Human owner: @chanasia
Before merge
type(scope): outcome.🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.