[PR #410] [MERGED] fix(process): protect unrelated Hopper during cleanup #1959

Closed
opened 2026-10-16 21:12:52 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/410
Author: @morluto
Created: 7/22/2026
Status: ✅ Merged
Merged: 7/22/2026
Merged by: @morluto

Base: codex/issue-386 ← Head: codex/issue-355


📝 Commits (3)

  • e4ee4c9 fix(process): protect unrelated Hopper during cleanup
  • 34c583a feat(process): run finite-state replay during capture
  • 820af60 Merge pull request #411 from morluto/codex/issue-334

📊 Changes

202 files changed (+2151 additions, -704 deletions)

View changed files

📝 README.md (+7 -0)
📝 docs/api/assets/hierarchy.js (+1 -1)
📝 docs/api/assets/navigation.js (+1 -1)
📝 docs/api/assets/search.js (+1 -1)
📝 docs/api/classes/application_BinarySession.BinarySession.html (+1 -1)
📝 docs/api/classes/application_BinarySessionRecords.BinarySessionRecords.html (+1 -1)
📝 docs/api/classes/application_JavaScriptArtifactGraphAccumulator.JavaScriptArtifactGraphAccumulator.html (+8 -8)
📝 docs/api/classes/application_PermissionAuthority.PermissionPathError.html (+1 -1)
📝 docs/api/classes/application_ProcessCaptureError.ProcessCaptureError.html (+1 -1)
📝 docs/api/classes/application_ProcessCheckpoints.ProcessCheckpoints.html (+2 -2)
📝 docs/api/classes/application_ProjectPermissionStore.ProjectPermissionStoreError.html (+1 -1)
📝 docs/api/classes/browser_BrowserProcessStartup.BrowserStartupError.html (+1 -1)
📝 docs/api/classes/domain_errors.EvidenceLimitError.html (+3 -3)
📝 docs/api/classes/domain_replayMachineRuntime.ReplayMachineRuntime.html (+7 -7)
📝 docs/api/classes/ghidra_GhidraLauncher.GhidraLaunchError.html (+1 -1)
📝 docs/api/classes/ghidra_GhidraSessionError.GhidraSessionError.html (+1 -1)
📝 docs/api/classes/ghidra_protocol.GhidraRemoteError.html (+1 -1)
📝 docs/api/classes/hopper_HopperClient.HopperClient.html (+6 -6)
📝 docs/api/functions/application_CommandShimReplay.startCommandShimReplay.html (+2 -2)
📝 docs/api/functions/application_ElectronBoundaryGraphContext.electronFindingSourceNode.html (+2 -2)

...and 80 more files

📄 Description

Description

Restricts Hopper shutdown to the verified process lineage owned by the active run. Cleanup now fails closed when ownership cannot be proven, preserves owned-shutdown coordinates in diagnostics, and uses an unrelated-process sentinel to prove that neighboring Hopper-shaped processes survive cleanup paths.

Stacked on #409.

Type of Change

  • Bug fix
  • New feature
  • Documentation update
  • Performance improvement
  • Refactoring (no functional change)
  • Tool contract change (MCP schema modification)

Testing Performed

  • Unit tests added or updated
  • TypeScript typecheck passes (npm run typecheck)
  • Linting passes (npm run lint)
  • Full test suite passes (npm test)
  • Real Hopper verification performed (npm run verify:hopper)
  • Linux real Hopper verification performed (npm run verify:hopper:linux) or unavailability explained
  • Real browser verification performed (npm run verify:browser) or unavailability explained
  • Package verification performed (npm run verify:package)

Linux real-Hopper verification could not start on this branch because its source-owned fixture builder requires macOS/Xcode Mach-O artifacts. Unit and process-ownership regressions cover unrelated-process survival and owned cleanup.

Tool Contract Impact

No MCP schemas or tool inventory entries change. Existing failure projection gains bounded owned-shutdown diagnostics.

Closes #355


🔄 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/410 **Author:** [@morluto](https://github.com/morluto) **Created:** 7/22/2026 **Status:** ✅ Merged **Merged:** 7/22/2026 **Merged by:** [@morluto](https://github.com/morluto) **Base:** `codex/issue-386` ← **Head:** `codex/issue-355` --- ### 📝 Commits (3) - [`e4ee4c9`](https://github.com/morluto/rea/commit/e4ee4c963547f026defe3f5e5e2978c1ab2e6f21) fix(process): protect unrelated Hopper during cleanup - [`34c583a`](https://github.com/morluto/rea/commit/34c583a170782b4b28d16a2ec33223922608008d) feat(process): run finite-state replay during capture - [`820af60`](https://github.com/morluto/rea/commit/820af60c25cb342d74a06d733b8eac8be814ef6b) Merge pull request #411 from morluto/codex/issue-334 ### 📊 Changes **202 files changed** (+2151 additions, -704 deletions) <details> <summary>View changed files</summary> 📝 `README.md` (+7 -0) 📝 `docs/api/assets/hierarchy.js` (+1 -1) 📝 `docs/api/assets/navigation.js` (+1 -1) 📝 `docs/api/assets/search.js` (+1 -1) 📝 `docs/api/classes/application_BinarySession.BinarySession.html` (+1 -1) 📝 `docs/api/classes/application_BinarySessionRecords.BinarySessionRecords.html` (+1 -1) 📝 `docs/api/classes/application_JavaScriptArtifactGraphAccumulator.JavaScriptArtifactGraphAccumulator.html` (+8 -8) 📝 `docs/api/classes/application_PermissionAuthority.PermissionPathError.html` (+1 -1) 📝 `docs/api/classes/application_ProcessCaptureError.ProcessCaptureError.html` (+1 -1) 📝 `docs/api/classes/application_ProcessCheckpoints.ProcessCheckpoints.html` (+2 -2) 📝 `docs/api/classes/application_ProjectPermissionStore.ProjectPermissionStoreError.html` (+1 -1) 📝 `docs/api/classes/browser_BrowserProcessStartup.BrowserStartupError.html` (+1 -1) 📝 `docs/api/classes/domain_errors.EvidenceLimitError.html` (+3 -3) 📝 `docs/api/classes/domain_replayMachineRuntime.ReplayMachineRuntime.html` (+7 -7) 📝 `docs/api/classes/ghidra_GhidraLauncher.GhidraLaunchError.html` (+1 -1) 📝 `docs/api/classes/ghidra_GhidraSessionError.GhidraSessionError.html` (+1 -1) 📝 `docs/api/classes/ghidra_protocol.GhidraRemoteError.html` (+1 -1) 📝 `docs/api/classes/hopper_HopperClient.HopperClient.html` (+6 -6) 📝 `docs/api/functions/application_CommandShimReplay.startCommandShimReplay.html` (+2 -2) 📝 `docs/api/functions/application_ElectronBoundaryGraphContext.electronFindingSourceNode.html` (+2 -2) _...and 80 more files_ </details> ### 📄 Description ## Description Restricts Hopper shutdown to the verified process lineage owned by the active run. Cleanup now fails closed when ownership cannot be proven, preserves owned-shutdown coordinates in diagnostics, and uses an unrelated-process sentinel to prove that neighboring Hopper-shaped processes survive cleanup paths. Stacked on #409. ## Type of Change - [x] Bug fix - [ ] New feature - [x] Documentation update - [ ] Performance improvement - [ ] Refactoring (no functional change) - [ ] Tool contract change (MCP schema modification) ## Testing Performed - [x] Unit tests added or updated - [x] TypeScript typecheck passes (`npm run typecheck`) - [x] Linting passes (`npm run lint`) - [x] Full test suite passes (`npm test`) - [ ] Real Hopper verification performed (`npm run verify:hopper`) - [x] Linux real Hopper verification performed (`npm run verify:hopper:linux`) or unavailability explained - [ ] Real browser verification performed (`npm run verify:browser`) or unavailability explained - [ ] Package verification performed (`npm run verify:package`) Linux real-Hopper verification could not start on this branch because its source-owned fixture builder requires macOS/Xcode Mach-O artifacts. Unit and process-ownership regressions cover unrelated-process survival and owned cleanup. ## Tool Contract Impact No MCP schemas or tool inventory entries change. Existing failure projection gains bounded owned-shutdown diagnostics. ## Related Issues Closes #355 --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-16 21:12:52 +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#1959
No description provided.