rea/docs
Jay-Alexander Elliot bddddccdee
feat(native): admit bounded MIPS ELF analysis through Ghidra (#1362)
* feat(native): admit bounded MIPS ELF analysis through Ghidra

Retain MIPS ELF identity and interpretation through Evidence and snapshots.
Keep provider admission bounded to ELF32 ET_EXEC o32 MIPS32r2, without
implicitly widening Hopper, IDA or Windows P0 coverage. Add source-owned
fixtures and an optional real-provider verifier; real Ghidra verification
remains pending in this contribution environment.

Refs #718

* fix(ghidra): bound MIPS floating-point mode admission

Reject explicit EF_MIPS_FP64 and EF_MIPS_NAN2008 declarations until their
semantics have a real-provider verification lane. Add PSP PRX/Allegrex,
o64/EABI and floating-point-mode refusal regressions. Document that the
header gate is not a full .MIPS.abiflags check and advance the profile lane
identity to invalidate older interpretation bindings.

Validation: 24 standalone checks against the transpiled production profile
module passed; the two new flag cases failed before this change. Clang 17
and LLD compiled the source-owned fixture for both endian targets. The
complete Vitest/typecheck suite and real Ghidra verification remain pending.

Refs morluto/rea#718; PSP support remains follow-up morluto/rea#1330.

* fix(native): validate MIPS ABI records before Ghidra admission

Read bounded ELF32 PT_MIPS_ABIFLAGS and SHT_MIPS_ABIFLAGS records through
the already-open target handle. Preserve declared ABI fields, reject
conflicting/duplicate/truncated records, and keep missing records unknown.
Wire inspection into target resolution before provider selection. Require
compatible declarations for the deliberately narrow Ghidra lane and bind
all ABI fields into profile identity (v3) for snapshot invalidation.

Clang 17 produced eight source-owned fixtures spanning both byte orders
and FPXX/FP32/FP64/soft-float modes with identical ELF header flags. The
new reader and policy distinguish them. 24 focused regression test bodies
passed after TypeScript transpilation using node:test in place of Vitest;
strict isolated TypeScript checking of the reader and target/result types
passed. These are limited checks, not full Vitest/project typechecking or
real-Ghidra verification, which remain pending.

Advances morluto/rea#718. PSP/Allegrex remains morluto/rea#1330 follow-up.

* fix(native): repair MIPS integration boundaries and test resolver behavior

Keep ELF targets out of Hopper Mach-O preparation and scope existing PE fixture types correctly. Move ABI tests into the filesystem boundary lane, use shared cleanup, add resolver regressions, apply the pinned formatter, and register the real MIPS verifier through the existing package-command pattern. Validated with repository-pinned Node/npm, check:ci, actual focused Vitest, discovery and docs:check. Real Ghidra conformance remains pending.

* fix(test): honor caller-selected JDK in real MIPS verification

* test(native): strengthen MIPS Ghidra conformance

Cross-check the source-owned fixture with bounded GNU readelf inspection, compare production ELF/ABI interpretation and independent symbol addresses, and verify effective Ghidra language/compiler identity through existing public operations. Add a source-owned fixed-encoding probe for immediate and conditional branch checks plus global/string byte assertions.

Add 16 assertion/producer-boundary regression cases without widening production admission, changing provider contracts, or introducing proprietary dependencies. Local focused suite: 99 passed, one existing root-permission test skipped. Typecheck, lint/module boundaries, formatting and 700-file discovery pass; full hosted checks and real Ghidra verification remain pending for this checkpoint.

* fix(ghidra): preserve native-tool architecture checks after MIPS integration

The conflict-free upstream merge failed TypeScript compilation because includes on the union of MIPS-only and other architecture arrays requires never. Use equality-based membership without casts or changing accepted native hosts. Extend the existing native-decompiler rejection table with a MIPS executable at a Linux x64 tool path; retain upstream FAT and unknown-header behavior. Hosted verification follows this commit; no success is claimed yet.

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-10-10 23:04:27 +08:00
..
.vitepress docs: remove retired architecture and migration artifacts 2026-10-10 05:41:45 +08:00
assets docs: keep license sections text-only 2026-10-10 00:09:46 +08:00
adb-device-analysis.md feat(adb): complete ADB device support for Android reverse engineering (#1552) 2026-10-10 23:01:24 +08:00
android-analysis.md fix(mobile): bound framework conventions to path segments (#1506) 2026-10-10 21:42:03 +08:00
apktool-resource-analysis.md feat(apktool): decode Android resource tables through a caller-supplied launcher (#1556) 2026-10-10 23:04:12 +08:00
apple-application-analysis.md fix(mobile): bound framework conventions to path segments (#1506) 2026-10-10 21:42:03 +08:00
architecture.mermaid refactor: use canonical implementations and types directly 2026-10-09 23:35:19 +08:00
binary-diagnostics.md feat(artifacts): inspect PE resource identities and payload ranges (#1482) 2026-10-10 23:02:06 +08:00
browser-observation.md fix(cli): accept JSON files for web capture and screenshot comparisons (#1397) 2026-10-09 19:29:42 -07:00
browser-scenario-contract.md refactor(captures)!: require canonical producer metadata 2026-10-09 23:35:19 +08:00
cli.md docs(skill): save CLI application Evidence and read a summary view (#1429) 2026-10-09 21:38:52 -07:00
electron-observation.md fix(electron): support packaged app.asar pages and rewritten unpacked companions (#1400) 2026-10-10 23:01:54 +08:00
error-contract.schema.json feat(evm): inspect offline bytecode interfaces through EVMole (#1051) 2026-10-08 15:32:05 +08:00
evm-bytecode.md fix(build): make catalogs and packaged skills generated outputs (#1086) 2026-10-08 22:43:51 +08:00
firmware-analysis.md fix(firmware): reject malformed UTF-8 producer reports 2026-10-09 05:15:23 +08:00
ghidra-dos.md fix(ghidra): reject address truncation before reads and edits 2026-10-09 03:53:28 +08:00
ghidra-mips.md feat(native): admit bounded MIPS ELF analysis through Ghidra (#1362) 2026-10-10 23:04:27 +08:00
ghidra-nativeaot.md fix(ghidra): admit the 12.1 line and the install's JDK range (#840) 2026-10-07 12:24:36 +08:00
ghidra-provider.md chore: merge main into Windows DLL support branch 2026-10-10 13:42:54 +08:00
ida-provider.md feat(ida): add read-only GUI and headless MCP providers (#754) 2026-10-07 01:47:05 +08:00
index.md docs: publish VitePress documentation on GitHub Pages 2026-10-07 16:58:04 +08:00
installation.md test(clients): verify native DeepSeek Harness integration (#1524) 2026-10-10 18:29:00 +08:00
javascript-application-graph.md docs(contracts)!: explain canonical URL and skill metadata ownership 2026-10-10 02:49:46 +08:00
javascript-application-workflows.md docs: correct stale logging, Ghidra host, and example path statements (#1420) 2026-10-10 21:29:31 +08:00
javascript-artifact-reconstruction.md feat(javascript): return a retained summary view on request (#1568) 2026-10-10 07:37:37 -07:00
javascript-recovery.md fix(javascript): accept the Wakaru 1.x release line and verify 1.14.0 (#1540) 2026-10-10 23:02:15 +08:00
javascript-runtime-observation.md fix(inspector): bound retained metadata and preserve cancellation 2026-10-09 05:15:23 +08:00
javascript-runtime-reconciliation.md fix(tools)!: simplify direct invocation and harden boundary contracts (#555) 2026-10-05 20:16:44 +08:00
jeb-analysis.md feat(jeb): add JEB engine provider over its MCP interface (#1536) 2026-10-10 23:03:27 +08:00
managed-code-analysis.md chore: merge main into Windows DLL support branch 2026-10-10 13:42:54 +08:00
mcp-contracts.md fix(electron): support packaged app.asar pages and rewritten unpacked companions (#1400) 2026-10-10 23:01:54 +08:00
mcp-prompts.md feat(mcp): select views of retained analysis results (#1180) 2026-10-09 12:45:48 +08:00
migration-6.2.md docs: correct MCP error and capture import guidance 2026-10-10 05:41:52 +08:00
native-investigation.md fix(native): preserve compact reference provenance (#1438) 2026-10-10 21:39:28 +08:00
process-capture.md fix(process): coalesce delayed capture progress 2026-10-10 18:54:57 +08:00
reconstruction-obligation-ledgers.md refactor: return complete analysis results inline 2026-09-29 08:07:24 +08:00
reconstruction-readiness.md fix(tools)!: simplify direct invocation and harden boundary contracts (#555) 2026-10-05 20:16:44 +08:00
recorded-crashes.md feat(native): inspect recorded crashes through pwntools and pwndbg (#1054) 2026-10-08 16:50:31 +08:00
releasing.md docs: explain 6.2 contract and saved-data migration (#1304) 2026-10-09 15:31:11 +00:00
roadmap.md docs: remove retired architecture and migration artifacts 2026-10-10 05:41:45 +08:00
testing.md feat(apktool): decode Android resource tables through a caller-supplied launcher (#1556) 2026-10-10 23:04:12 +08:00
tool-design.md docs: prune repeated contributor and tool design instructions 2026-10-10 05:28:13 +08:00
user-visible-errors.csv fix(setup): recognize supported Nobara hosts 2026-10-10 02:49:46 +08:00
web-network-captures.md fix(capture): retain Electron observations and HAR resource failures 2026-10-09 06:49:02 +08:00
web-runtime.md fix(browser): treat module-import initiator positions as script positions 2026-10-08 16:44:25 +00:00
web-source-location.md fix(browser): validate and bound source-map evidence 2026-10-09 06:32:10 +08:00
website-module-trace.md feat(browser): trace captured website module imports (#879) 2026-10-07 14:59:52 +08:00
website-script-export.md fix(files): reject nonregular capture and JSON inputs 2026-10-10 01:49:54 +08:00
windows-ghidra-p0.md feat(ghidra): support native PE DLLs on Windows 2026-10-09 16:11:13 +01:00