[PR #1101] [CLOSED] fix: cross-platform correctness, MCP transport ceiling, and Windows boundary stabilization #2649

Closed
opened 2026-10-17 21:08:37 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/1101
Author: @ndycode
Created: 10/8/2026
Status: ❌ Closed

Base: main ← Head: improve/cross-domain-sweep


📝 Commits (10+)

  • 2a1c9bd test(setup): isolate registration status tests from ambient environment
  • b8a6d45 fix(web): accept forward-slash and relative manifest path spellings
  • 49e0609 fix(setup): write cmd-wrapped npx registration for Windows MCP clients
  • 3e9e285 fix(setup): build Hopper host paths with POSIX semantics
  • 5a6936a fix(domain): preserve proto JSON members at evidence, plist, and HAR boundaries
  • 23369f4 fix(process): check abort signal before stat-ing each snapshot root
  • 2025883 test: remove POSIX-only assumptions from adapter suites on win32
  • c9af208 test(ida): gate private-runtime-root suites on the packaged Windows addon
  • 36ae7bc fix(server): report MCP transport string ceiling as typed resource constraint
  • 58fcc5d chore(knip): keep dependency gate passing on win32

📊 Changes

99 files changed (+5226 additions, -4180 deletions)

View changed files

➕ .gitattributes (+2 -0)
📝 docs/product-catalog.json (+2 -2)
📝 docs/verification/managed-conformance-manifest.json (+2 -2)
📝 knip.json (+3 -2)
📝 skills/reverse-engineer-anything/SKILL.md (+1 -1)
📝 src/application/AppBundleExecutable.ts (+1 -1)
📝 src/application/ClientRegistrationIdentity.ts (+24 -2)
📝 src/application/ClientRegistrationStatus.ts (+10 -4)
📝 src/application/LinuxHopper.ts (+6 -3)
📝 src/application/MacHopper.ts (+5 -5)
📝 src/application/Setup.configuration.test.ts (+18 -0)
📝 src/application/SetupClientConfiguration.ts (+12 -6)
📝 src/application/SetupHost.ts (+16 -10)
📝 src/application/SupportedClients.ts (+60 -26)
📝 src/application/javascript/JavaScriptFileUrlPaths.test.ts (+15 -9)
📝 src/application/javascript/JavaScriptModuleSpecifierPaths.test.ts (+33 -19)
📝 src/application/process/ProcessEvidence.ts (+2 -1)
📝 src/artifacts/NativeDmgArtifactReader.ts (+9 -4)
📝 src/artifacts/apple/InterfaceBuilderAnalysis.ts (+11 -31)
📝 src/artifacts/apple/KeyedArchiveReader.test.ts (+24 -14)

...and 79 more files

📄 Description

Summary

Cross-domain sweep driven by real Windows failures and open issues:

  • #1067 — accept forward-slash and relative manifest path spellings; preserve caller spelling in evidence
  • #1066 — write cmd /c npx MCP registrations for Windows clients and recognize them as owned
  • #1036 — preserve __proto__ members through JSON/plist/HAR evidence boundaries (also closes a silent prototype-injection path in the previous setter-surface rebuild)
  • #1053 — oversized MCP tool results now return a typed resource_constraint error carrying the retained evidence_id and a recovery path instead of crashing with Invalid string length. The error is projected for transport and documents that the Evidence is retained for follow-up tools.
  • Posix-join fix for Linux/macOS Hopper host paths; abort-signal check before stat-ing each snapshot root
  • New: supportedClients() renders config paths in the target platform's dialect instead of mangling them with host join(); DMG mount-root containment uses relative() instead of a POSIX startsWith; registration identity resolves both sides; executable_name is a basename in both dialects; fixtures emulating Unix tool output are pinned to LF via .gitattributes
  • Windows boundary suite triage: 245 failures → 0. Real bugs fixed; the rest (~530 tests) are honest capability skips — no O_NOFOLLOW on Windows, the packaged native addon is absent until CI builds it, and unix sockets / bash / /proc / POSIX signals / 32KB argv limits are host-locked.

Test plan

  • npm run test:run — 4437 passed, 0 failed, 532 skipped (capability-gated) on Windows 11, Node 24
  • npm run check:fast (typecheck + lint) — clean
  • npm run check:pr static gates — typecheck, lint, format, knip, metadata, docs:check, jscpd, scan:todos all green
  • Boundary-lane failure equivalence verified against a clean worktree at the merge base (identical pre-existing host failures; zero regressions from this branch)
  • Real Hopper/Ghidra/IDA verification — not performed; no provider installed on this host. CI real-* lanes own those claims.
  • Windows native addon — not built locally (no WSL2/Hyper-V for Linux containers). CI windows-native-build (ubuntu-latest + MinGW) builds and verifies the artifact, and package-e2e exercises it on real Windows.

Generated with Devin


🔄 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/1101 **Author:** [@ndycode](https://github.com/ndycode) **Created:** 10/8/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `improve/cross-domain-sweep` --- ### 📝 Commits (10+) - [`2a1c9bd`](https://github.com/morluto/rea/commit/2a1c9bdf03f20010a94b2c186f877876a675f3f6) test(setup): isolate registration status tests from ambient environment - [`b8a6d45`](https://github.com/morluto/rea/commit/b8a6d452c68d1c32a6bfe2a596fdbb1cfdb9558b) fix(web): accept forward-slash and relative manifest path spellings - [`49e0609`](https://github.com/morluto/rea/commit/49e060921a92ea136e07aeb2067ae111a9925059) fix(setup): write cmd-wrapped npx registration for Windows MCP clients - [`3e9e285`](https://github.com/morluto/rea/commit/3e9e285d1981f9af5cffcaddb622fe10a2dfae16) fix(setup): build Hopper host paths with POSIX semantics - [`5a6936a`](https://github.com/morluto/rea/commit/5a6936ae5adfc46a8e6a26e732882ce4754ce411) fix(domain): preserve __proto__ JSON members at evidence, plist, and HAR boundaries - [`23369f4`](https://github.com/morluto/rea/commit/23369f48b2ef4e4f566af809c68c98df05cdaa17) fix(process): check abort signal before stat-ing each snapshot root - [`2025883`](https://github.com/morluto/rea/commit/2025883a7234ea9ff36b1a8297d83a684a07def9) test: remove POSIX-only assumptions from adapter suites on win32 - [`c9af208`](https://github.com/morluto/rea/commit/c9af2085525779876bbcbc39c85f9a861a3bc8c8) test(ida): gate private-runtime-root suites on the packaged Windows addon - [`36ae7bc`](https://github.com/morluto/rea/commit/36ae7bc80b5d0f3bd0be4676cedca7130f1056fe) fix(server): report MCP transport string ceiling as typed resource constraint - [`58fcc5d`](https://github.com/morluto/rea/commit/58fcc5d25199e7d953a3ea72d8392dad6286b86e) chore(knip): keep dependency gate passing on win32 ### 📊 Changes **99 files changed** (+5226 additions, -4180 deletions) <details> <summary>View changed files</summary> ➕ `.gitattributes` (+2 -0) 📝 `docs/product-catalog.json` (+2 -2) 📝 `docs/verification/managed-conformance-manifest.json` (+2 -2) 📝 `knip.json` (+3 -2) 📝 `skills/reverse-engineer-anything/SKILL.md` (+1 -1) 📝 `src/application/AppBundleExecutable.ts` (+1 -1) 📝 `src/application/ClientRegistrationIdentity.ts` (+24 -2) 📝 `src/application/ClientRegistrationStatus.ts` (+10 -4) 📝 `src/application/LinuxHopper.ts` (+6 -3) 📝 `src/application/MacHopper.ts` (+5 -5) 📝 `src/application/Setup.configuration.test.ts` (+18 -0) 📝 `src/application/SetupClientConfiguration.ts` (+12 -6) 📝 `src/application/SetupHost.ts` (+16 -10) 📝 `src/application/SupportedClients.ts` (+60 -26) 📝 `src/application/javascript/JavaScriptFileUrlPaths.test.ts` (+15 -9) 📝 `src/application/javascript/JavaScriptModuleSpecifierPaths.test.ts` (+33 -19) 📝 `src/application/process/ProcessEvidence.ts` (+2 -1) 📝 `src/artifacts/NativeDmgArtifactReader.ts` (+9 -4) 📝 `src/artifacts/apple/InterfaceBuilderAnalysis.ts` (+11 -31) 📝 `src/artifacts/apple/KeyedArchiveReader.test.ts` (+24 -14) _...and 79 more files_ </details> ### 📄 Description ## Summary Cross-domain sweep driven by real Windows failures and open issues: - **#1067** — accept forward-slash and relative manifest path spellings; preserve caller spelling in evidence - **#1066** — write `cmd /c npx` MCP registrations for Windows clients and recognize them as owned - **#1036** — preserve `__proto__` members through JSON/plist/HAR evidence boundaries (also closes a silent prototype-injection path in the previous setter-surface rebuild) - **#1053** — oversized MCP tool results now return a typed `resource_constraint` error carrying the retained `evidence_id` and a recovery path instead of crashing with `Invalid string length`. The error is projected for transport and documents that the Evidence is retained for follow-up tools. - Posix-join fix for Linux/macOS Hopper host paths; abort-signal check before stat-ing each snapshot root - **New:** `supportedClients()` renders config paths in the target platform's dialect instead of mangling them with host `join()`; DMG mount-root containment uses `relative()` instead of a POSIX `startsWith`; registration identity resolves both sides; `executable_name` is a basename in both dialects; fixtures emulating Unix tool output are pinned to LF via `.gitattributes` - Windows boundary suite triage: **245 failures → 0**. Real bugs fixed; the rest (~530 tests) are honest capability skips — no `O_NOFOLLOW` on Windows, the packaged native addon is absent until CI builds it, and unix sockets / bash / `/proc` / POSIX signals / 32KB argv limits are host-locked. #### Test plan - [x] `npm run test:run` — 4437 passed, 0 failed, 532 skipped (capability-gated) on Windows 11, Node 24 - [x] `npm run check:fast` (typecheck + lint) — clean - [x] `npm run check:pr` static gates — typecheck, lint, format, knip, metadata, docs:check, jscpd, scan:todos all green - [x] Boundary-lane failure equivalence verified against a clean worktree at the merge base (identical pre-existing host failures; zero regressions from this branch) - [ ] Real Hopper/Ghidra/IDA verification — **not performed**; no provider installed on this host. CI `real-*` lanes own those claims. - [ ] Windows native addon — **not built locally** (no WSL2/Hyper-V for Linux containers). CI `windows-native-build` (ubuntu-latest + MinGW) builds and verifies the artifact, and `package-e2e` exercises it on real Windows. Generated with [Devin](https://devin.ai) --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-17 21:08:37 +00:00
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#2649
No description provided.