[GH-ISSUE #339] Record real-Hopper semantic proof for source-built fixtures #186

Closed
opened 2026-10-15 18:22:11 +00:00 by bsakaguchi · 2 comments
Owner

Originally created by @morluto on GitHub (Jul 20, 2026).
Original GitHub issue: https://github.com/morluto/rea/issues/339

Run the real-Hopper verifier against the source-built C, Objective-C, Swift, and N-API fixtures to record exact strings, globals, references, caller/callee identities, CFG edges, and metadata.

Acceptance:

  • C fixture proves exact calls, references, strings, CFG edges, and decompilation.
  • Objective-C fixture proves class/protocol/property/selectors/implementation/caller evidence.
  • Swift fixture proves class/struct/enum/protocol/extension/strings/call evidence.
  • N-API fixture proves registration symbol, export names, and registration references.

Part of #25.

Originally created by @morluto on GitHub (Jul 20, 2026). Original GitHub issue: https://github.com/morluto/rea/issues/339 Run the real-Hopper verifier against the source-built C, Objective-C, Swift, and N-API fixtures to record exact strings, globals, references, caller/callee identities, CFG edges, and metadata. Acceptance: - C fixture proves exact calls, references, strings, CFG edges, and decompilation. - Objective-C fixture proves class/protocol/property/selectors/implementation/caller evidence. - Swift fixture proves class/struct/enum/protocol/extension/strings/call evidence. - N-API fixture proves registration symbol, export names, and registration references. Part of #25.
bsakaguchi 2026-10-15 18:22:11 +00:00
Author
Owner

@N0zoM1z0 commented on GitHub (Oct 9, 2026):

Linux CLI/MCP verification update for #1158 (52c82ab0): installed package with official Hopper 6.4.2 passed lifecycle/CLI parity, concurrent-session isolation, cancellation recovery, standalone repeated inspection, and cleanup; four source-fixture checks passed.

The full semantic lane is still incomplete: this demo did not expose the long literal/UTF-8/Latin-1 objects required by the native string-inventory oracle, although the fixture bytes were present. The oracle was retained. The locals fixture now explicitly stores its input on the stack, and that original assertion passed. These targeted results do not establish the remaining C/Objective-C/Swift/N-API semantic claims.

<!-- gh-comment-id:6072805669 --> @N0zoM1z0 commented on GitHub (Oct 9, 2026): Linux CLI/MCP verification update for #1158 (52c82ab0): installed package with official Hopper 6.4.2 passed lifecycle/CLI parity, concurrent-session isolation, cancellation recovery, standalone repeated inspection, and cleanup; four source-fixture checks passed. The full semantic lane is still incomplete: this demo did not expose the long literal/UTF-8/Latin-1 objects required by the native string-inventory oracle, although the fixture bytes were present. The oracle was retained. The locals fixture now explicitly stores its input on the stack, and that original assertion passed. These targeted results do not establish the remaining C/Objective-C/Swift/N-API semantic claims.
Author
Owner

@LuisTaffelli commented on GitHub (Oct 11, 2026):

Follow-up to the previous Linux verification report, with evidence collected for #1942.

New evidence beyond “the bytes are present”: getter-only probes sampled Hopper's getStringsList, getTypeAtAddress, getObjectLength and segment bytes before REA normalized the inventory. The original 4,119-byte literal is native TYPE_UNDEFINED (0), object length 1, and absent from the native inventory itself; all 4,120 bytes including NUL remain readable. The accented/emoji, ellipsis and Latin-1 literals are also undefined. Across the original fixture and three additional ASCII matrices, native (address, display) inventories matched REA's (address, provider_value) inventories exactly (5, 15, 11 and 13 objects). No inventory loss by REA was observed in these runs.

In the measured ASCII fixtures, 999 content bytes were recognized and fragmented; 1,000 content bytes were undefined. This is fixture/build-specific evidence, not a universal limit or an explanation of Hopper's internal heuristic. Those exploratory probes used the earlier VM checkout based on 1145f9ce607315984466a2e5c12efc05f42f33d2, with the verification patch and temporary getter-only instrumentation; they are separate from the final run below. The original fixture's canonical string Evidence is ev_9822f3d28ef962c234a2c3cb12d409658afea40aba6582e3f9ea0098417315b7. Instrumentation was restored afterward.

Pinned final execution: the narrower, adjusted Linux verifier completed on commit 8ea0432ffc11d47d2f43fbd4964f48116b4bd4a5, Omarchy 4.0.4 x86-64, Hopper 6.4.2-1 demo, Node 24.18.0/npm 11.16.0. Local VM execution reference: 45930d25-d485-4ff3-a0bf-0e6286f12329, completed 2026-10-11T21:34:14.401Z; retained report current-verification/hopper-current-verifier.log. The final C fixture SHA-256 is 008ac23d1a090d3f978c0567d3038e849c93346f464edc414e92c7a0fb5cf9d9. Source CLI was invoked through real stdio MCP; execution details and identities are summarized in #1942.

That adjusted lane retains the original raw-byte checks and requires complete decoded fragments, byte reads, searches and dossier provenance for a separate recognized 548-byte literal. It does not establish full-length or omitted non-ASCII decoded-object coverage, the remaining Objective-C/Swift/N-API criteria, macOS/other Hopper builds, or packaged npm-artifact behavior. Later reporting correction 97b76aa2 explicitly binds full-literal recognition to its source address and marks its decoded coverage unverified on Linux even if recognized; it received static/documentation checks, not another native execution. The uninterrupted clean-installation lane remains unverified because repeat vendor downloads timed out; the final native run used the previously downloaded official archive after size/pinned-hash verification. This evidence does not close the issue.

<!-- gh-comment-id:6114325105 --> @LuisTaffelli commented on GitHub (Oct 11, 2026): Follow-up to the [previous Linux verification report](https://github.com/morluto/rea/issues/339#issuecomment-6072805669), with evidence collected for #1942. **New evidence beyond “the bytes are present”:** getter-only probes sampled Hopper's `getStringsList`, `getTypeAtAddress`, `getObjectLength` and segment bytes before REA normalized the inventory. The original 4,119-byte literal is native `TYPE_UNDEFINED` (0), object length 1, and absent from the native inventory itself; all 4,120 bytes including NUL remain readable. The accented/emoji, ellipsis and Latin-1 literals are also undefined. Across the original fixture and three additional ASCII matrices, native `(address, display)` inventories matched REA's `(address, provider_value)` inventories exactly (5, 15, 11 and 13 objects). No inventory loss by REA was observed in these runs. In the measured ASCII fixtures, 999 content bytes were recognized and fragmented; 1,000 content bytes were undefined. This is fixture/build-specific evidence, not a universal limit or an explanation of Hopper's internal heuristic. Those exploratory probes used the earlier VM checkout based on `1145f9ce607315984466a2e5c12efc05f42f33d2`, with the verification patch and temporary getter-only instrumentation; they are separate from the final run below. The original fixture's canonical string Evidence is `ev_9822f3d28ef962c234a2c3cb12d409658afea40aba6582e3f9ea0098417315b7`. Instrumentation was restored afterward. **Pinned final execution:** the narrower, adjusted Linux verifier completed on commit [`8ea0432ffc11d47d2f43fbd4964f48116b4bd4a5`](https://github.com/LuisTaffelli/rea/commit/8ea0432ffc11d47d2f43fbd4964f48116b4bd4a5), Omarchy 4.0.4 x86-64, Hopper 6.4.2-1 demo, Node 24.18.0/npm 11.16.0. Local VM execution reference: `45930d25-d485-4ff3-a0bf-0e6286f12329`, completed `2026-10-11T21:34:14.401Z`; retained report `current-verification/hopper-current-verifier.log`. The final C fixture SHA-256 is `008ac23d1a090d3f978c0567d3038e849c93346f464edc414e92c7a0fb5cf9d9`. Source CLI was invoked through real stdio MCP; execution details and identities are summarized in #1942. That adjusted lane retains the original raw-byte checks and requires complete decoded fragments, byte reads, searches and dossier provenance for a separate recognized 548-byte literal. It does **not** establish full-length or omitted non-ASCII decoded-object coverage, the remaining Objective-C/Swift/N-API criteria, macOS/other Hopper builds, or packaged npm-artifact behavior. Later reporting correction `97b76aa2` explicitly binds full-literal recognition to its source address and marks its decoded coverage unverified on Linux even if recognized; it received static/documentation checks, not another native execution. The uninterrupted clean-installation lane remains unverified because repeat vendor downloads timed out; the final native run used the previously downloaded official archive after size/pinned-hash verification. This evidence does not close the issue.
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#186
No description provided.