[PR #1275] [MERGED] fix(hopper): allow restart after verified owned-provider shutdown #2758

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

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/1275
Author: @Y0UW1SH
Created: 10/9/2026
Status: ✅ Merged
Merged: 10/9/2026
Merged by: @N0zoM1z0

Base: main ← Head: fix/hopper-cleanup-retry


📝 Commits (6)

  • bcccfca fix(hopper): retain owned resources for cleanup retries
  • 1e3d27b fix(hopper): resolve upstream conflicts and confirm owned provider shutdown
  • 828fc62 test(providers): fix explicit Windows fixture environment and share cleanup setup
  • 143742b chore(hopper): merge upstream main and resolve fixture conflict
  • 15fdf82 fix(hopper): make cleanup retry fixtures portable
  • 53238b7 chore: refresh main for Hopper cleanup review

📊 Changes

6 files changed (+513 additions, -97 deletions)

View changed files

📝 .github/workflows/ci.yml (+1 -0)
📝 docs/installation.md (+11 -0)
📝 src/hopper/HopperCleanup.ts (+1 -1)
📝 tests/boundary/providers/ghidra/ghidraLauncher.test.ts (+29 -27)
📝 tests/boundary/providers/hopper/hopperClient.cleanup.test.ts (+34 -69)
➕ tests/boundary/providers/hopper/hopperClient.cleanupRetry.test.ts (+437 -0)

📄 Description

An active or cancelled bridge request can skip Hopper's shutdown acknowledgement. Confirm document closure after the owned provider lifetime has been verified stopped, so retained cleanup and a subsequent launch can succeed. Stopping an owned helper continues to leave an external GUI document unconfirmed.

The branch integrates current main, preserves retryable cleanup resources and leases, and includes the portable cleanup regressions in Windows CI.

Validation:

  • Six focused suites: 47 tests pass; one host-specific Ghidra launcher case is skipped on Linux. Covers owned termination, cancelled/active requests, external documents, failed cleanup, lease retention/release, and restart.
  • Real Linux Hopper with a source-owned ELF through public stdio MCP: two open/overview/close cycles and subsequent pings pass; target bytes are unchanged and no owned runtime or lease remains. 16.2 seconds, 1.01 GiB sampled family peak under two CPUs. This establishes ordinary real cleanup/reopen; acknowledgement-loss ownership cases use actual child-process integration fixtures.
  • Full npm run verify:hopper:linux was attempted and fails at the existing long-literal string-search assertion (fixture omitted its real long literal). The literal exists in the current fixture bytes but the real Linux string inventory does not report it. This is an explicit gap, not a full conformance pass.
  • No real macOS external-GUI or Ghidra verification for this cleanup change.

🔄 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/1275 **Author:** [@Y0UW1SH](https://github.com/Y0UW1SH) **Created:** 10/9/2026 **Status:** ✅ Merged **Merged:** 10/9/2026 **Merged by:** [@N0zoM1z0](https://github.com/N0zoM1z0) **Base:** `main` ← **Head:** `fix/hopper-cleanup-retry` --- ### 📝 Commits (6) - [`bcccfca`](https://github.com/morluto/rea/commit/bcccfcabd5d4048c6406aaf42f5c787c722e2432) fix(hopper): retain owned resources for cleanup retries - [`1e3d27b`](https://github.com/morluto/rea/commit/1e3d27b672cbc0716bad24a35be6ee1df9f98bbb) fix(hopper): resolve upstream conflicts and confirm owned provider shutdown - [`828fc62`](https://github.com/morluto/rea/commit/828fc62da8a73df95978c0cffe2a2beb5538ca17) test(providers): fix explicit Windows fixture environment and share cleanup setup - [`143742b`](https://github.com/morluto/rea/commit/143742b3a811e21b880e4f8b0ba1abd68ce5292e) chore(hopper): merge upstream main and resolve fixture conflict - [`15fdf82`](https://github.com/morluto/rea/commit/15fdf82208d4852f22efc4d2686eef59002772aa) fix(hopper): make cleanup retry fixtures portable - [`53238b7`](https://github.com/morluto/rea/commit/53238b7c0f5c02175291445cc1089e85b5298b15) chore: refresh main for Hopper cleanup review ### 📊 Changes **6 files changed** (+513 additions, -97 deletions) <details> <summary>View changed files</summary> 📝 `.github/workflows/ci.yml` (+1 -0) 📝 `docs/installation.md` (+11 -0) 📝 `src/hopper/HopperCleanup.ts` (+1 -1) 📝 `tests/boundary/providers/ghidra/ghidraLauncher.test.ts` (+29 -27) 📝 `tests/boundary/providers/hopper/hopperClient.cleanup.test.ts` (+34 -69) ➕ `tests/boundary/providers/hopper/hopperClient.cleanupRetry.test.ts` (+437 -0) </details> ### 📄 Description An active or cancelled bridge request can skip Hopper's shutdown acknowledgement. Confirm document closure after the owned provider lifetime has been verified stopped, so retained cleanup and a subsequent launch can succeed. Stopping an owned helper continues to leave an external GUI document unconfirmed. The branch integrates current main, preserves retryable cleanup resources and leases, and includes the portable cleanup regressions in Windows CI. Validation: - Six focused suites: 47 tests pass; one host-specific Ghidra launcher case is skipped on Linux. Covers owned termination, cancelled/active requests, external documents, failed cleanup, lease retention/release, and restart. - Real Linux Hopper with a source-owned ELF through public stdio MCP: two open/overview/close cycles and subsequent pings pass; target bytes are unchanged and no owned runtime or lease remains. 16.2 seconds, 1.01 GiB sampled family peak under two CPUs. This establishes ordinary real cleanup/reopen; acknowledgement-loss ownership cases use actual child-process integration fixtures. - Full `npm run verify:hopper:linux` was attempted and fails at the existing long-literal string-search assertion (`fixture omitted its real long literal`). The literal exists in the current fixture bytes but the real Linux string inventory does not report it. This is an explicit gap, not a full conformance pass. - No real macOS external-GUI or Ghidra verification for this cleanup change. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-17 21:09:54 +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#2758
No description provided.