[PR #437] [MERGED] feat: complete evidence-backed roadmap workflows #1986

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

📋 Pull Request Information

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

Base: main ← Head: codex/complete-roadmap-workflows


📝 Commits (8)

  • 7a43420 feat(hopper): report bridge progress diagnostics
  • 9522adf test(package): prove artifact cleanup and identity
  • 5184816 test(investigation): prove multi-version fixture closure
  • 521139d feat(native): inspect API boundaries with evidence
  • 4716fa2 test: add critical provider workflow coverage
  • f2c4edd chore: refresh generated catalog evidence
  • b2f7561 Merge branch 'main' into codex/complete-roadmap-workflows
  • 40bf55b test(hopper): remove brittle diagnostic source assertion

📊 Changes

60 files changed (+2347 additions, -207 deletions)

View changed files

📝 README.md (+1 -1)
📝 README_ar.md (+1 -1)
📝 README_ja.md (+1 -1)
📝 README_ko.md (+1 -1)
📝 README_zh.md (+1 -1)
📝 bridge/ghidra/ReaGhidraBridge.java (+477 -4)
📝 bridge/hopper_bridge.py (+54 -4)
📝 docs/installation.md (+20 -0)
📝 docs/product-catalog.json (+9 -7)
📝 docs/verification/managed-conformance-manifest.json (+2 -2)
📝 scripts/lib/real-hopper-semantic.mjs (+55 -0)
📝 scripts/verify-package-artifact.mjs (+66 -2)
📝 scripts/verify-real-ghidra-assertions.mjs (+87 -2)
📝 scripts/verify-real-ghidra-function.mjs (+59 -4)
📝 scripts/verify-real-ghidra.mjs (+53 -3)
📝 scripts/verify-real-hopper.mjs (+20 -25)
📝 skills/reverse-engineer-anything/SKILL.md (+2 -2)
📝 src/application/CapabilityInventory.ts (+1 -0)
📝 src/application/DirectAnalysis.ts (+15 -3)
📝 src/application/EnhancedTools.ts (+51 -7)

...and 40 more files

📄 Description

Summary

This closes six remaining roadmap gaps across native analysis, Hopper diagnostics, packaged artifacts, and investigation fixtures.

  • add inspect_native_api through MCP and CLI, backed by provider-neutral boundary schemas, confidence/evidence labels, bounded Ghidra jump-table observations, and explicit residual unknowns
  • propagate authenticated Hopper bridge progress and structured Python failure diagnostics, with operator remediation for UI, license, and lifecycle failures
  • verify packaged-artifact extraction and stable repeated inventory identities through the package boundary
  • add deterministic multi-version fixture closure whose classified conclusions retain stable Evidence IDs

The Ghidra implementation uses public HighFunction, FunctionPrototype, JumpTable, basic-block, and reference-manager APIs. When Ghidra does not expose a decompiler load table, REA preserves the backing address as a medium-confidence table-level candidate rather than assigning it to individual case mappings. Native API output also receives a response-derived sub-budget so large switch sets truncate truthfully before the 1 MiB bridge limit.

Closes #345
Closes #346
Closes #349
Closes #351
Closes #357
Closes #360

Verification

  • npm run verify:ghidra — Ghidra 12.1.2 debug and stripped x86-64 ELF, AArch64 ELF, x86-64 PE, and x86-64 Mach-O fixtures; the source-owned dense switch proved 32-entry truncation through the shipped inspect-native-api CLI, with malformed-target rejection and complete cleanup
  • npm run verify:package — packaged CLI/MCP catalog, artifact extraction, lifecycle, and isolated workspace cleanup passed
  • focused Vitest provider/workflow coverage — 56 tests passed, including MCP unknown-registry consent, Evidence linkage, and deduplication
  • npm run check:fast
  • npm run format:check
  • npm pack --dry-run

Real Hopper verification was not run in this Linux environment because no Hopper installation or license was available. The real-Hopper verifier now checks correlated bridge progress and the structured invalid-request diagnostic on Hopper-capable CI.

Suggested review order

  1. src/domain/nativeApiBoundary.ts and src/application/NativeApiInspection.ts for the provider-neutral contract and residual-unknown behavior.
  2. bridge/ghidra/ReaGhidraBridge.java plus scripts/verify-real-ghidra-* for evidence provenance, output bounds, and real-provider proof.
  3. src/hopper/ and bridge/hopper_bridge.py for progress/failure framing and diagnostics.
  4. Package and investigation fixture tests, followed by generated catalog and README count updates.

Compatibility

The tool catalog grows additively by one enhanced tool and one CLI command. Existing Hopper dossiers remain compatible when native_api is absent; Ghidra dossiers now require the structured boundary field under bridge protocol version 6.


🔄 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/437 **Author:** [@morluto](https://github.com/morluto) **Created:** 7/25/2026 **Status:** ✅ Merged **Merged:** 7/25/2026 **Merged by:** [@morluto](https://github.com/morluto) **Base:** `main` ← **Head:** `codex/complete-roadmap-workflows` --- ### 📝 Commits (8) - [`7a43420`](https://github.com/morluto/rea/commit/7a434200297df85c62c02bb103cf870d14f202f7) feat(hopper): report bridge progress diagnostics - [`9522adf`](https://github.com/morluto/rea/commit/9522adf19ac915247e2c74b18d3ef5cab95befc5) test(package): prove artifact cleanup and identity - [`5184816`](https://github.com/morluto/rea/commit/5184816199895ceff6a489810e12fba0c2c41eb7) test(investigation): prove multi-version fixture closure - [`521139d`](https://github.com/morluto/rea/commit/521139d4a57a8ab2e25bb262d2a1fd09fd06be92) feat(native): inspect API boundaries with evidence - [`4716fa2`](https://github.com/morluto/rea/commit/4716fa2ece954f5e53bdda9d1f33afad57d2e151) test: add critical provider workflow coverage - [`f2c4edd`](https://github.com/morluto/rea/commit/f2c4edd2bf8948ded9baf53118296928b420b14d) chore: refresh generated catalog evidence - [`b2f7561`](https://github.com/morluto/rea/commit/b2f7561bdd304ebca458e1e2019d0ae5b723c5da) Merge branch 'main' into codex/complete-roadmap-workflows - [`40bf55b`](https://github.com/morluto/rea/commit/40bf55b74ca6b2c90b3243a29018cb75879ba081) test(hopper): remove brittle diagnostic source assertion ### 📊 Changes **60 files changed** (+2347 additions, -207 deletions) <details> <summary>View changed files</summary> 📝 `README.md` (+1 -1) 📝 `README_ar.md` (+1 -1) 📝 `README_ja.md` (+1 -1) 📝 `README_ko.md` (+1 -1) 📝 `README_zh.md` (+1 -1) 📝 `bridge/ghidra/ReaGhidraBridge.java` (+477 -4) 📝 `bridge/hopper_bridge.py` (+54 -4) 📝 `docs/installation.md` (+20 -0) 📝 `docs/product-catalog.json` (+9 -7) 📝 `docs/verification/managed-conformance-manifest.json` (+2 -2) 📝 `scripts/lib/real-hopper-semantic.mjs` (+55 -0) 📝 `scripts/verify-package-artifact.mjs` (+66 -2) 📝 `scripts/verify-real-ghidra-assertions.mjs` (+87 -2) 📝 `scripts/verify-real-ghidra-function.mjs` (+59 -4) 📝 `scripts/verify-real-ghidra.mjs` (+53 -3) 📝 `scripts/verify-real-hopper.mjs` (+20 -25) 📝 `skills/reverse-engineer-anything/SKILL.md` (+2 -2) 📝 `src/application/CapabilityInventory.ts` (+1 -0) 📝 `src/application/DirectAnalysis.ts` (+15 -3) 📝 `src/application/EnhancedTools.ts` (+51 -7) _...and 40 more files_ </details> ### 📄 Description ## Summary This closes six remaining roadmap gaps across native analysis, Hopper diagnostics, packaged artifacts, and investigation fixtures. - add `inspect_native_api` through MCP and CLI, backed by provider-neutral boundary schemas, confidence/evidence labels, bounded Ghidra jump-table observations, and explicit residual unknowns - propagate authenticated Hopper bridge progress and structured Python failure diagnostics, with operator remediation for UI, license, and lifecycle failures - verify packaged-artifact extraction and stable repeated inventory identities through the package boundary - add deterministic multi-version fixture closure whose classified conclusions retain stable Evidence IDs The Ghidra implementation uses public `HighFunction`, `FunctionPrototype`, `JumpTable`, basic-block, and reference-manager APIs. When Ghidra does not expose a decompiler load table, REA preserves the backing address as a medium-confidence table-level candidate rather than assigning it to individual case mappings. Native API output also receives a response-derived sub-budget so large switch sets truncate truthfully before the 1 MiB bridge limit. Closes #345 Closes #346 Closes #349 Closes #351 Closes #357 Closes #360 ## Verification - `npm run verify:ghidra` — Ghidra 12.1.2 debug and stripped x86-64 ELF, AArch64 ELF, x86-64 PE, and x86-64 Mach-O fixtures; the source-owned dense switch proved 32-entry truncation through the shipped `inspect-native-api` CLI, with malformed-target rejection and complete cleanup - `npm run verify:package` — packaged CLI/MCP catalog, artifact extraction, lifecycle, and isolated workspace cleanup passed - focused Vitest provider/workflow coverage — 56 tests passed, including MCP unknown-registry consent, Evidence linkage, and deduplication - `npm run check:fast` - `npm run format:check` - `npm pack --dry-run` Real Hopper verification was not run in this Linux environment because no Hopper installation or license was available. The real-Hopper verifier now checks correlated bridge progress and the structured invalid-request diagnostic on Hopper-capable CI. ## Suggested review order 1. `src/domain/nativeApiBoundary.ts` and `src/application/NativeApiInspection.ts` for the provider-neutral contract and residual-unknown behavior. 2. `bridge/ghidra/ReaGhidraBridge.java` plus `scripts/verify-real-ghidra-*` for evidence provenance, output bounds, and real-provider proof. 3. `src/hopper/` and `bridge/hopper_bridge.py` for progress/failure framing and diagnostics. 4. Package and investigation fixture tests, followed by generated catalog and README count updates. ## Compatibility The tool catalog grows additively by one enhanced tool and one CLI command. Existing Hopper dossiers remain compatible when `native_api` is absent; Ghidra dossiers now require the structured boundary field under bridge protocol version 6. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-16 21:13:07 +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#1986
No description provided.