[PR #2638] [MERGED] test(hopper): repair Linux demo setup and native verification #5299

Closed
opened 2026-10-31 01:05:33 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

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

Base: main ← Head: fix/linux-hopper-verification-current


📝 Commits (9)

  • 58d23e4 fix(verification): align Linux Hopper setup lane with current contracts
  • c039dd8 fix(verification): retain orphan checks on clean Linux runners
  • b88cdc2 fix(verification): detect Hopper through alternate launcher paths
  • b9d9a47 fix(verification): report identified Hopper leaks before proc errors
  • 8ea0432 fix(verification): distinguish Hopper string recognition from byte fidelity
  • 97b76aa fix(verification): report full literal decoding coverage explicitly
  • f379bc3 fix(verification): integrate Linux Hopper lane with current contracts
  • 794debe chore(verification): sync Hopper validation with latest main
  • 11c1885 test(hopper): verify Linux demo setup and source-bound string coverage

📊 Changes

11 files changed (+518 additions, -58 deletions)

View changed files

📝 docs/client-verification.md (+31 -2)
📝 package.json (+1 -1)
➕ scripts/lib/clean-linux-hopper-runtime.d.mts (+3 -0)
➕ scripts/lib/clean-linux-hopper-runtime.mjs (+64 -0)
➕ scripts/lib/real-hopper-search.d.mts (+30 -0)
📝 scripts/lib/real-hopper-search.mjs (+130 -26)
📝 scripts/verify-linux-setup-e2e.mjs (+30 -24)
📝 scripts/verify-real-hopper-linux.mjs (+4 -1)
📝 tests/conformance/c/fixture.c (+15 -4)
➕ tests/conformance/providers/hopper/realHopperSearch.test.ts (+97 -0)
➕ tests/process-global/cleanLinuxHopperRuntime.test.ts (+113 -0)

📄 Description

The Linux clean-setup verifier uses outdated setup/doctor contracts, omits required source fixtures, requests a reinstall during its idempotence check, and retains a deleted alternate launcher. Its long-string assertion also requires native recognition that the supported Linux Hopper demo does not provide for this fixture.

Integrates @LuisTaffelli's corrections from #1942 on current main, preserving the original commits, with a small follow-up that reuses this document's string inventory and verified source bytes, retains source addresses in recognition reports, and rejects incomplete reads. This PR supersedes #1942; #339 and #340 remain open.

  • Correct the explicit read-only installation plan, approved install, scoped doctor, source-fixture build, repeated setup, and launcher restoration.
  • Retain a dedicated-runner orphan observer alongside owned process lineage. Executed-file device/inode detection covers removed launcher symlinks; observations never authorize signaling.
  • Require all 4,120 original long-literal bytes. Linux reports omitted decoded objects as unverified; the separate 548-byte literal must pass real fragmentation, byte fidelity, tail search, and dossier provenance. macOS retains its full-literal requirement.
  • Add distinct negative coverage for source-address mismatch, changed bytes, incomplete reads, and wrong decoded values/extents. No production provider, tool schema, or agent output changes.

Validation on commit 11c188523aedd7f6bdddd60251bf2811748c70ff:

  • 24 selected tests; npm run check, docs:check, test discovery (1,026 files exactly once), and verify:package passed.
  • Fresh official installation with verify:setup:linux passed in a disposable Ubuntu 24.04.4 x64 container, Node 24.18.0/npm 11.16.0, Hopper 6.4.2 demo. Prerequisites were already provisioned; no cached Hopper package restoration was used. Dry-run was read-only, approved installation succeeded, scoped doctor was healthy, modified-launcher rejection passed, and repeated setup had zero actions.
  • Real source CLI/MCP: 189 advertised schemas, 180 successful boundary calls, 63 rejected boundary calls, complete 1,205-item inventories, cancellation/deadline recovery, competing launches, Hopper-named Node sentinel preservation, and clean shutdown. Graceful and SIGKILL owner exits both stopped owned processes and allowed same/different-target reuse.
  • All 3,272 tracked source-file SHA-256 values were unchanged before/after that final run; the worktree was clean. Primary/secondary/large fixture SHA-256: 7159937b45eab0bc879b32758dd2b0f209d2c9a7b33fa724ca4c7f9d3a8d19a9, 2e55ae838ce075af9e58393df6d01b9e6fe3be9d7ab3e8416c5706cdde19f50e, 1d42652a16ac9143a7a0816931b3e3d67c9001e4df27f63bfc7cd32ee087a707.

The complete installation/native verification took 121.75 s with 137.65 s of dedicated-container CPU time. Sampled summed process RSS peaked at 1.89 GiB (50 ms /proc sampling, shared pages counted per process; estimate, not PSS). Build artifacts were warm; Hopper installation and the empty HOME were fresh. These measure the full verification workload, not routine analyst latency or a before/after speedup. Inventory reuse removes one full-list call; source-byte reuse avoids duplicate reads for recognized source-owned objects. No persistent live-state cache is introduced. Production responses are unchanged. A separate real Codex CLI 0.161.0 task on 11c188523 (unchanged production runtime) used four selected MCP tools (open, exact procedure search, 16-byte read, close), completed in 31.86 s without retries, and returned 304 output tokens plus 51 reasoning tokens. Client-reported cumulative input was 89,316 tokens, including 62,720 cached; this is whole-client multi-turn context, not the REA payload alone. Its answer and Evidence ID were checked against the successful read and independent ELF bytes. The client warned that two test-harness approval settings were ignored; execution used the explicit unattended fixture-test mode, and that warning is not a REA failure. Copied authentication was removed. CPU/RSS for this separate client task were not measured.

Coverage is this Linux demo build and source CLI/MCP. Real macOS, installed-npm behavior with real Hopper, omitted long/non-ASCII native decoding, interruption of synchronous native work, and saved-database persistence remain unverified. The package verifier is separate evidence, not a real-Hopper package claim. Initial command/permission failures are retained outside Git and excluded from passing results.

Post-merge verification found a separate observer false positive: an ordinary process mentioning runtime names in its arguments is reported as a leak. The procfs argv correction and its later native measurements are follow-up work; they are not changes or native evidence for the merged head above.

The unrelated-process sentinel in this lane is a Node process titled Hopper; it does not establish behavior with a second real Hopper demo GUI.


🔄 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/2638 **Author:** [@N0zoM1z0](https://github.com/N0zoM1z0) **Created:** 10/13/2026 **Status:** ✅ Merged **Merged:** 10/13/2026 **Merged by:** [@morluto](https://github.com/morluto) **Base:** `main` ← **Head:** `fix/linux-hopper-verification-current` --- ### 📝 Commits (9) - [`58d23e4`](https://github.com/morluto/rea/commit/58d23e42b6c82edeb34ee8677d197a87041acb17) fix(verification): align Linux Hopper setup lane with current contracts - [`c039dd8`](https://github.com/morluto/rea/commit/c039dd81d52b7eb049bf6445a0bf21597efe264f) fix(verification): retain orphan checks on clean Linux runners - [`b88cdc2`](https://github.com/morluto/rea/commit/b88cdc248a0589cf6314fc653fc92acae51531b4) fix(verification): detect Hopper through alternate launcher paths - [`b9d9a47`](https://github.com/morluto/rea/commit/b9d9a474cf53615ba60651f429068cf3c69fbbb9) fix(verification): report identified Hopper leaks before proc errors - [`8ea0432`](https://github.com/morluto/rea/commit/8ea0432ffc11d47d2f43fbd4964f48116b4bd4a5) fix(verification): distinguish Hopper string recognition from byte fidelity - [`97b76aa`](https://github.com/morluto/rea/commit/97b76aa20afbe2c654d2309175a708f774373234) fix(verification): report full literal decoding coverage explicitly - [`f379bc3`](https://github.com/morluto/rea/commit/f379bc38824dd061a62d8ae7eb843d9c29551e4e) fix(verification): integrate Linux Hopper lane with current contracts - [`794debe`](https://github.com/morluto/rea/commit/794debe5656f634f54db45eb6b6582be227401bc) chore(verification): sync Hopper validation with latest main - [`11c1885`](https://github.com/morluto/rea/commit/11c188523aedd7f6bdddd60251bf2811748c70ff) test(hopper): verify Linux demo setup and source-bound string coverage ### 📊 Changes **11 files changed** (+518 additions, -58 deletions) <details> <summary>View changed files</summary> 📝 `docs/client-verification.md` (+31 -2) 📝 `package.json` (+1 -1) ➕ `scripts/lib/clean-linux-hopper-runtime.d.mts` (+3 -0) ➕ `scripts/lib/clean-linux-hopper-runtime.mjs` (+64 -0) ➕ `scripts/lib/real-hopper-search.d.mts` (+30 -0) 📝 `scripts/lib/real-hopper-search.mjs` (+130 -26) 📝 `scripts/verify-linux-setup-e2e.mjs` (+30 -24) 📝 `scripts/verify-real-hopper-linux.mjs` (+4 -1) 📝 `tests/conformance/c/fixture.c` (+15 -4) ➕ `tests/conformance/providers/hopper/realHopperSearch.test.ts` (+97 -0) ➕ `tests/process-global/cleanLinuxHopperRuntime.test.ts` (+113 -0) </details> ### 📄 Description The Linux clean-setup verifier uses outdated setup/doctor contracts, omits required source fixtures, requests a reinstall during its idempotence check, and retains a deleted alternate launcher. Its long-string assertion also requires native recognition that the supported Linux Hopper demo does not provide for this fixture. Integrates @LuisTaffelli's corrections from #1942 on current main, preserving the original commits, with a small follow-up that reuses this document's string inventory and verified source bytes, retains source addresses in recognition reports, and rejects incomplete reads. This PR supersedes #1942; #339 and #340 remain open. - Correct the explicit read-only installation plan, approved install, scoped doctor, source-fixture build, repeated setup, and launcher restoration. - Retain a dedicated-runner orphan observer alongside owned process lineage. Executed-file device/inode detection covers removed launcher symlinks; observations never authorize signaling. - Require all 4,120 original long-literal bytes. Linux reports omitted decoded objects as unverified; the separate 548-byte literal must pass real fragmentation, byte fidelity, tail search, and dossier provenance. macOS retains its full-literal requirement. - Add distinct negative coverage for source-address mismatch, changed bytes, incomplete reads, and wrong decoded values/extents. No production provider, tool schema, or agent output changes. Validation on commit `11c188523aedd7f6bdddd60251bf2811748c70ff`: - 24 selected tests; `npm run check`, `docs:check`, test discovery (1,026 files exactly once), and `verify:package` passed. - Fresh official installation with `verify:setup:linux` passed in a disposable Ubuntu 24.04.4 x64 container, Node 24.18.0/npm 11.16.0, Hopper 6.4.2 demo. Prerequisites were already provisioned; no cached Hopper package restoration was used. Dry-run was read-only, approved installation succeeded, scoped doctor was healthy, modified-launcher rejection passed, and repeated setup had zero actions. - Real source CLI/MCP: 189 advertised schemas, 180 successful boundary calls, 63 rejected boundary calls, complete 1,205-item inventories, cancellation/deadline recovery, competing launches, Hopper-named Node sentinel preservation, and clean shutdown. Graceful and SIGKILL owner exits both stopped owned processes and allowed same/different-target reuse. - All 3,272 tracked source-file SHA-256 values were unchanged before/after that final run; the worktree was clean. Primary/secondary/large fixture SHA-256: `7159937b45eab0bc879b32758dd2b0f209d2c9a7b33fa724ca4c7f9d3a8d19a9`, `2e55ae838ce075af9e58393df6d01b9e6fe3be9d7ab3e8416c5706cdde19f50e`, `1d42652a16ac9143a7a0816931b3e3d67c9001e4df27f63bfc7cd32ee087a707`. The complete installation/native verification took 121.75 s with 137.65 s of dedicated-container CPU time. Sampled summed process RSS peaked at 1.89 GiB (50 ms `/proc` sampling, shared pages counted per process; estimate, not PSS). Build artifacts were warm; Hopper installation and the empty HOME were fresh. These measure the full verification workload, not routine analyst latency or a before/after speedup. Inventory reuse removes one full-list call; source-byte reuse avoids duplicate reads for recognized source-owned objects. No persistent live-state cache is introduced. Production responses are unchanged. A separate real Codex CLI 0.161.0 task on 11c188523 (unchanged production runtime) used four selected MCP tools (open, exact procedure search, 16-byte read, close), completed in 31.86 s without retries, and returned 304 output tokens plus 51 reasoning tokens. Client-reported cumulative input was 89,316 tokens, including 62,720 cached; this is whole-client multi-turn context, not the REA payload alone. Its answer and Evidence ID were checked against the successful read and independent ELF bytes. The client warned that two test-harness approval settings were ignored; execution used the explicit unattended fixture-test mode, and that warning is not a REA failure. Copied authentication was removed. CPU/RSS for this separate client task were not measured. Coverage is this Linux demo build and source CLI/MCP. Real macOS, installed-npm behavior with real Hopper, omitted long/non-ASCII native decoding, interruption of synchronous native work, and saved-database persistence remain unverified. The package verifier is separate evidence, not a real-Hopper package claim. Initial command/permission failures are retained outside Git and excluded from passing results. Post-merge verification found a separate observer false positive: an ordinary process mentioning runtime names in its arguments is reported as a leak. The procfs argv correction and its later native measurements are follow-up work; they are not changes or native evidence for the merged head above. The unrelated-process sentinel in this lane is a Node process titled Hopper; it does not establish behavior with a second real Hopper demo GUI. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-31 01:05:33 +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#5299
No description provided.