* chore(main): release rea-agents 6.9.0 * docs(release): curate 6.9.0 notes and contribution provenance * docs(release): explain reviewed result and recovery migrations * docs(release): refresh 6.9.0 provenance through capture parser fix * docs(release): include worker admission CI fix and refresh provenance * docs(release): refresh candidate with lifecycle CI fixes * docs(release): include ReFS support in 6.9.0 notes * docs(release): include UnityFS boundary repair in 6.9.0 --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: morluto <76467478+morluto@users.noreply.github.com>
503 KiB
Changelog
6.9.0 (2026-11-11)
Highlights
- Build and test desktop tasks from recorded application state, including downloaded Linux apps, reusable build computers and multiple tasks per capture.
- Inspect more shipped artifacts offline: standalone application bundles, embedded firmware, NTFS acquisitions, API contracts and V8 code-cache containers.
- Keep native and runtime investigations grounded in retained Evidence, with paged results, explicit coverage and recoverable resource limits.
Changes
- Analyze targets and create private runtimes on fixed local ReFS volumes as well as NTFS, preserving persistent ACL, file identity, snapshot and cleanup checks. #10086. Thanks @QianNangong.
- Capture, export and witness desktop tasks inside a build computer; keep an agentenv computer available through MCP and prepare a build host from one command. #8954, #9041, #9045, #9049, #9199. Thanks @earakely-scale.
- Install desktop apps from SHA-256-pinned AppImages or upstream archives, retain selected package dependencies, and isolate explicitly declared build secrets. #9215, #9112, #9225. Thanks @earakely-scale.
- Choose seed/end checkpoints, open seed documents at launch, build several tasks from one capture, and evaluate unreadable app state through headless checks or a screen judge. #9037, #9054, #9216, #9217, issue morluto/rea#9676. Thanks @earakely-scale.
- Read gzip and XML desktop documents and draft assertions for nested fields, attribute text, child text and member counts. #9050, #9111, #9114, #9132, #9185. Thanks @earakely-scale.
- Inventory and extract .NET single-file, Bun standalone and Deno compile executables, with caller-selected entries and output destinations. #3787, #4031, #6998, #8527, issue morluto/rea#2352, issue morluto/rea#3490. Thanks @gensokyo-dev, @jsk1004ha, @matbrgz, @mvanhorn, @Rinkia, @Zhong-fan.
- Read UnityFS bundles, Godot 3 PCK archives, WeChat mini-program packages, Zstandard ZIP members and classic iNES regions. #7699, #7781, #8148, #7780, #2816. Thanks @blankym, @gensokyo-dev, @ShuaixinHuang, @XiaoBinGan, @Zhong-fan.
- Inspect and extract Intel HEX, Motorola S-record, U-Boot uImage/FIT, ESP flash, UF2 and DfuSe firmware regions while retaining their container declarations. #7136, #7234, #7771, #7498, #8228, #8230. Thanks @555aaditya, @Entrpi, @gensokyo-dev, @iamcipherdev.
- Inventory offline NTFS MFT records and paired USN journal acquisitions; retain source names, journal-version coverage and verified extension-attribute ownership. #9911, #9914, #9957, #10006, issue morluto/rea#9867. Thanks @2SinceJuly, @gensokyo-dev, @jayykernel, @N0zoM1z0.
- Inspect V8 code-cache headers and retained byte patterns without executing the cache; report Electron cachedData boundaries and custom URL protocol registrations. #8993, #9501, #2978. Thanks @2SinceJuly, @gensokyo-dev, @UnknownHacker1, @XiaoBinGan.
- Inventory local OpenAPI operations and GraphQL SDL fields/references; compare static JavaScript endpoints with HAR observations. #9104, #9140, #9090, issue morluto/rea#3591. Thanks @gensokyo-dev, @Y0UW1SH.
- Import saved Playwright v10 trace Evidence, page scenario summaries, reuse saved response values across steps, and validate browser scenarios offline. #9127, #7120, #7267, #7343, issue morluto/rea#5488, issue morluto/rea#6167. Thanks @debavelaerel, @earakely-scale, @gensokyo-dev, @jayykernel, @kaoru0822-kitauji, @z2Ace0107.
- Replay captured environment writes, including variable member sets, sorted creates, references, toggles and subsequent reads that explain the resulting state. #7260, #7274, #7332, #7539, #7600. Thanks @earakely-scale.
- Apply selected R8 mappings, inspect Android manifest component declarations, link static JNI candidates and trace callers of external DEX methods. #7456, #7379, #7472, #8154, issue morluto/rea#4448, issue morluto/rea#6329, issue morluto/rea#6403, issue morluto/rea#7811. Thanks @555aaditya, @coygeek, @gensokyo-dev, @harshjohiya, @jayykernel, @Rinkia, @xu91102.
- Expose managed field defaults, project retained member views, suggest Unity managed members and retain IL2CPP v108 header/string Evidence. #8015, #7968, #5511, #9925, issue morluto/rea#7282. Thanks @379061296, @8rulerstar, @dhruvac29, @Entrpi, @gensokyo-dev, @Henglie, @kaoru0822-kitauji, @ShuaixinHuang, @XiaoBinGan, @xu91102.
- Report ELF/PE/Mach-O hardening, per-slice Mach-O encryption, initializer/finalizer functions and ELF function ranges recovered from unwind tables. #8524, #5359, #9574, #9585, issue morluto/rea#4306. Thanks @chordpli, @coygeek, @gensokyo-dev, @mvanhorn.
- Read Linux core-dump process/mapping notes, kernel version/configuration data and Android ELF identity notes; join Apple IPS images to admitted Mach-O slices. #8830, #9573, #9502, #9570. Thanks @2SinceJuly, @mvanhorn, @rishikeshgowdakk, @saariuslystoned.
- Open native extension/framework/XPC/plugin bundles, retain LLDB source coordinates and recover bounded Go string literals from pointer/length headers. #8117, #2800, #9206. Thanks @kaoru0822-kitauji, @matbrgz, @saariuslystoned.
- Reuse Ghidra projects through verified copies and checkpoint owned Programs across sessions; add Windows P0 DOS MZ and RISC-V ilp32 admission. #7236, #9236, #7144, #8229, issue morluto/rea#1048. Thanks @akushonkamen, @corysutyak, @dark13b, @Entrpi, @gensokyo-dev.
- Retry failed Kuna or directory decompiles independently and preserve stored pointer references and decompile-export source facts. #8793, #8811, #8851, #8805.
- Read selected Evidence records and discover missing links without transferring whole bundles; aggregate retained comparison references and compare artifact inventories. #8528, #8633, #8267, #7869, issue morluto/rea#7678, issue morluto/rea#8214, issue morluto/rea#8307, issue morluto/rea#8454. Thanks @Entrpi, @gensokyo-dev, @kaoru0822-kitauji.
- Page retained native observations, procedure/instruction references, feature traces and batch decompile summaries instead of repeating complete results. #7134, #7146, #8585, #8588, #8591, #8594, #8629, #8631, issue morluto/rea#8498, issue morluto/rea#8510. Thanks @gensokyo-dev, @kaoru0822-kitauji.
- Expose guided workflows and installed guidance search through CLI/MCP, recover from common argument-name mistakes, and support CSV/TSV analysis views. #6995, #6996, #8305, #8649, #7254, issue morluto/rea#2146, issue morluto/rea#5482, issue morluto/rea#6916, issue morluto/rea#6918, issue morluto/rea#8290. Thanks @coygeek, @Deepak-Kambala, @gensokyo-dev, @HarsH-1877, @jayykernel, @kaoru0822-kitauji, @pablodiazjorge, @Tapraj-Pathak.
- Select MCP tool families and compact output schemas; refresh provider candidates without switching and inspect provider-selection/release-verification diagnostics. #7228, #7218, #8487, #8485, #9171, #9603, issue morluto/rea#2512, issue morluto/rea#3246, issue morluto/rea#8403, issue morluto/rea#9134, issue morluto/rea#9136. Thanks @0xLLVEL, @2SinceJuly, @akshad-exe, @codebuff-team, @gensokyo-dev, @Henglie, @phucicb-hub, @wu546526.
- Add non-executing process-scenario dry runs, opt-in command timings and caller-selected reference-source exclusions. #8469, #7042, #2630, issue morluto/rea#2443, issue morluto/rea#5484, issue morluto/rea#8398. Thanks @2SinceJuly, @dhruvac29, @gensokyo-dev, @jayykernel, @matbrgz, @trackoor, @YunzhouLi-hub.
- Make resource-budget failures actionable across CLI/MCP and read per-call limits from the selected operation snapshot. #9706, #9889, issue morluto/rea#9881.
- Ship self-contained Claude Code/Codex plugin installs and a Cursor Marketplace plugin; add CodeBuddy and LM Studio setup registration. #7514, #9878, #2492, #8611, issue morluto/rea#2490. Thanks @cainiao1992, @cpruijsen, @GamerDubz, @gensokyo-dev.
- Inspect Windows Shell Link files and qualify recognized Python 3.14/3.15 pyc headers; choose Rizin decoder and map address for one-shot commands. #7859, #8927, #8991, issue morluto/rea#8206. Thanks @Entrpi, @mvanhorn, @XiaoBinGan, @xuanhieu.
- Register REA with Cline through its native MCP client settings during setup. #10128, issue morluto/rea#10127. Thanks @bramrahmadi.
Fixes
- Keep UnityFS directory and payload reads within the declared bundle, reject undersized declarations, and prevent appended bytes from replacing the inventory or increasing its work budget. 58a0511660.
- Validate runtime configuration before doctor reports readiness or registration writes files; preserve the source of malformed stored settings and proposed overrides. #10102.
- Retry owned inspection descriptors before fresh process queries, preserve physical failures alongside cancellation, and retain cleanup authority until release succeeds. #10113, #10141, #10109.
- Keep distinct linker-map occurrences when source-map declarations overlap, including path spellings that normalize to the same location. aa017c61ff, f668c86271.
- Preserve remote OpenCode registrations and Hermes YAML anchor consumers instead of treating REA-like text as proof of local ownership. #5152, issue morluto/rea#3325. Thanks @coygeek, @gensokyo-dev, @xu91102.
- Reject malformed UTF-8 CDP discovery replies, preserve partial Playwright-import Evidence, and retain initial child scope when replaying WebMCP scripts. #4524, #9543. Thanks @Afloat16, @Plastic-time.
- Report unsupported filesystem paths and host-capacity failures at the responsible adb input boundary; retain local filesystem error provenance. #6188. Thanks @chordpli.
- Preserve uncertainty when JavaScript alias walks exhaust their budget, keep unisolated program-var routes unknown, and analyze first-party code before dependencies. #9387, #6778, #9341, issue morluto/rea#8201, issue morluto/rea#9321. Thanks @gongfpp, @mvanhorn, @Rfxan, @xuanhieu, @yaneyba.
- Resolve relative ESM backslash paths and exported/computed initializers; reject TLS versions and child-process literals Node itself refuses. #4323, #5387, #9557, #9594, issue morluto/rea#4269. Thanks @6eanut, @ahmed-husssain, @coygeek, @XiaoBinGan.
- Validate PE certificate alignment, name structures and RDN grouping, and distinguish legacy Windows targets before PE header admission. #9276, #9625, #10048, #10070, issue morluto/rea#10003, issue morluto/rea#9946. Thanks @AixSxT, @coygeek, @gensokyo-dev, @N0zoM1z0, @ShuaixinHuang, @wunianze666-netizen.
- Retain UTF-8 ZIP names in desktop exports, resolve nested desktop-entry IDs, and preserve reader inspection failures. #9431, #9563, #9773, issue morluto/rea#9449, issue morluto/rea#9558, issue morluto/rea#9766. Thanks @2SinceJuly, @ShuaixinHuang, @xu91102.
- Report the actual link-time kernel banner, list ELF initializers in images with COPY relocations, and leave cross-code-page shortcut-icon comparisons unknown. #9690, #10084, #9691, issue morluto/rea#9688, issue morluto/rea#9689. Thanks @Plastic-time, @thunderq10.
- Retain actionable debugger/provider failures: reconnect stale JEB MCP sessions, preserve GDB inferior-TTY checks, and report invalid IDA regex syntax. #3754, #5539, #9544, issue morluto/rea#5099. Thanks @akushonkamen, @coygeek, @flitzrrr, @Plastic-time.
- Keep missing native call-input bindings and exhausted MCP discovery pages distinct from absence. #10088, #10017, issue morluto/rea#8358, issue morluto/rea#9995. Thanks @coygeek, @gensokyo-dev, @N0zoM1z0.
- Preserve admitted EVM and pwntools replies and completed SQLite member facts through acquisition/finalization failures. d77cf61, e813c4c, 669e617.
- Attribute keyed-archive errors to the archive argument, distinguish launcher failures from registry errors, and validate capture limiters before starting work. #7731, #7843, #7947, issue morluto/rea#7292, issue morluto/rea#7597, issue morluto/rea#7630, issue morluto/rea#7638. Thanks @coygeek, @gensokyo-dev.
- Preserve unknown CDP coordinates and prior-hop response facts, deduplicate scenario guidance and recognize AppKit cell ownership. #7842, #7807, #7933, #7916, issue morluto/rea#7342, issue morluto/rea#7426, issue morluto/rea#7434, issue morluto/rea#7681. Thanks @coygeek, @gensokyo-dev.
- Read legacy Erlang atom tables correctly, exclude Harmony symlinks from unavailable files, and preserve uncertain JavaScript with-scope member writes. #7844, #7886, #7914, issue morluto/rea#7418, issue morluto/rea#7545, issue morluto/rea#7602. Thanks @coygeek.
- Preserve known artifact metadata without hashes, report missing Ghidra project programs as configuration errors, and retain unbacked file-offset diagnostics. #7932, #8222, #8308, issue morluto/rea#7341, issue morluto/rea#8216, issue morluto/rea#8244. Thanks @coygeek, @kaoru0822-kitauji, @macjayz.
- Scope Hopper recovery to the caller lifetime and preserve Mach-O host-slice, Godot digest, browser-resource and selected-slice distinctions. #9905, #10016.
- Retain partial OpenAPI Evidence, reject unrepresentable adb activity arguments, and preserve worker, Frida and owned-command failure/cancellation facts through cleanup. #9908, #9918, #10055, #9963, #9964.
- Decode escaped HAR, qlog and Playwright JSON strings without retaining the fragmented strings that inflated decoder heap usage. #10139, issue morluto/rea#10132. Thanks @fcumaoglu, @mecrimino.
- Preserve physical web-worker launch failures as the primary error when cancellation overlaps; retain cancellation separately from the exact launcher observation. #10145.
- Classify adb wireless-debugging mDNS serials as TCP while preserving USB precedence and unknown device kind. #10134. Thanks @rudycelekli.
- Normalize lipo’s i386 CPU spelling before Mach-O slice selection and recognize the
__chk_failFORTIFY handler import. #10136, #10036, issue morluto/rea#10025. Thanks @2SinceJuly, @coygeek, @rudycelekli. - Retain process CLI cleanup owners until delivery, preserve known local retry leases alongside unknown prior cleanup, and align lifecycle boundaries with tagged cancellation facts. #10147. Thanks @wunianze666-netizen.
- Count only syntactically valid CSP nonce/hash sources when reporting browser policy. #10135. Thanks @rudycelekli.
- Reject ELF tables inside the declared header and unmatched NT_FILE mapping pathnames; keep PE imports within their declared directory bounds. #10133, #10138, #10044. Thanks @rudycelekli, @ShuaixinHuang, @wunianze666-netizen.
- Classify private nested Swift types by their own kind rather than their enclosing declaration. #10085, issue morluto/rea#7501. Thanks @BeqaKs, @Rinkia.
⚠ BREAKING CHANGES
- Settings clients must replace
effect,rea_restart_required,restart_requiredandrestartRequiredwithupdate_mode(runtime,restart,parameter) andpending_restart. Parameter-supplied limits cannot be changed by the runtime setter; restart-mode values retain their startup value until restart. #9885, be20bdfb26f7, aee1178839dd. Thanks @gensokyo-dev, @N0zoM1z0. - Process and desktop callers must inspect
details.secondary_failures/secondaryFailures: mixed batches keep physical/provider failures primary and retain typed cancellation with its original cause. Retained descriptors can producecleanup_incomplete; follow the returned recovery instead of treating it as ordinary cancellation. Custom adapters must consume owner-issued inspection/sampling facts and retain their cleanup scopes until release succeeds. #10141, #10113, #10109. rea mcp add --commandnow accepts a local stdio launcher only: HTTP(S) executable URLs are rejected before settings writes, and package acquisition is removed. Configure remote transports in each client’s native settings and install/select the local launcher before registration. #10102.- Runtime-instance graph identities now require
identity.capture_evidence_idin addition to the capture digest and runtime key. Node IDs digest that identity, so regenerate reconciliation Evidence and rebuild node-keyed lookups even when the digest and runtime key are unchanged. #10063. - Retained process symlinks require their stored target bytes; recapture legacy observations that only described a link without retaining its target. #10082.
- Function dossiers must record Swift literal inventory and its omissions together. Regenerate one-sided observations through a canonical provider; both-absent unsupported observations remain valid. #10068.
- Conformance manifest schema v2 separates exact string markers from fragments and rejects the old ambiguous
stringsfield. Regenerate unversioned fixtures withnpm run build:fixtures. #9977. - Unavailable native/BEAM/Go/Rust view collections return
items.rows: null,coverage.status: "unavailable",coverage.total: nullandcoverage.exhausted: false; recorded empty collections still returnrows: []. Refresh schemas, stop paging unavailable data and inspectunknowns; older saved views retain their recorded facts. #9893, #8291, issue morluto/rea#8276. Thanks @Xinglan233. - Desktop witnessing requires the current generated verifier: re-export old bundles using their original Evidence/task inputs. Pre-6.9 captures missing required
state.baseline_non_filesare rejected before state inspection, drafting or export; capture the application again to obtain contemporaneous SQLite member facts. #9898, #9470. - New browser captures record
save: []for request actions that save nothing, changing scenario/Evidence digests. Keep historical digests with historical captures and use freshly recorded digests for new ones. #9896. - Selected SQLite rows require
row_offsetandnext_row_offset;rows.orderisrowid,primary_keyorunspecified. A null next offset means either no continuation or no stated order: an unordered sample can still havetruncated: true. Inspect bothorderandtruncatedbefore concluding the sample is complete. #9331, issue morluto/rea#8234. Thanks @2SinceJuly, @555aaditya. - Windows entropy Evidence now uses the admitted filesystem path spelling, so fresh analysis of a differently cased caller path can change
evidence_id. Invalidate or re-key cached associations against the fresh Evidence, retaining old IDs only for their original observations. #9393. Thanks @HusnainMaroof. caller_input_pathsvalues may be ordered arrays of strings as well as strings. Update strict consumers to preserve repeated selections. #9626, #9624.observe_javascript_runtimeadds requiredexecution_context_idfields to scripts and contexts.context_keyis an opaque capture-local lifetime identity, not a reusable protocol ID, and Evidence identities change. Refresh schemas and recapture when new lifetime associations are needed. #9471, issue morluto/rea#3382. Thanks @coygeek.- Refresh cached
inspect_address_contextschemas: unavailable facets may carry typed input or resource-constraint errors while successful sibling facets remain available. #8444, #8424, #8419. analyze_function/trace_native_valuesrequirenative_value_flow.limitationson available and unavailable variants. Ghidra memory effects cover explicit high-p-codeLOAD/STOREoperations only; empty effects do not prove no memory access. Thevalue_flow_effect_scopeprofile commitment invalidates older snapshots: retain embedded historical Evidence, reopen without the snapshot and save a fresh one. #8651.- Ghidra byte searches require
skipped_overlays; loaded overlays no longer count as not loaded, and adjacent initialized blocks are searched with explicit coverage. Reopen targets and save fresh analysis snapshots after the profile/search-policy changes; historical Evidence stays importable. #8608, #8376, #8840, issue morluto/rea#8374, issue morluto/rea#8563, issue morluto/rea#8607. compare_functionsaddsfunction_match.method: "same-evidence"when both inputs authenticate to one Evidence ID and entry comparison is unavailable. Accept the new matched variant, retain unknown dimensions and do not infer complete equivalence; one observation cannot have contradictory changed dimensions or hashes. #8442, issue morluto/rea#8367.- Kuna
analyze_functioncan returnnative_value_flow: {available: false, reason, limitations}instead of null. Checkavailableand preserve the provider reason; null means procedure-scoped unrecorded unknown, not confirmed absence. The workflow-profile digest changes: older trace Evidence remains history but must be rerun to satisfy current replay. #8785, issue morluto/rea#8783. - The opt-in hot/cold MCP catalog no longer preloads
inspect_analysis_view. Discover it before use or batch it with its producer; the default full catalog remains available. #9151. Thanks @gensokyo-dev. batch_decompileand retained batch views now useitems[].status: "unavailable"withreason: "no_pseudocode"for null pseudocode, replacing the formererror/capability_unavailableitem. Empty or non-text values remainstatus: "error"withunreadable_output. Both count towardfailed; preserve item limitations and accept historical error items. #8737, issue morluto/rea#8736.import_evidence_bundle/CLIevidence-importnow reject snapshot-shaped JSON withinvalid_requestinstead ofevidence_integrity_mismatch. Restore it withopen_binary.snapshot_pathor a compatible CLI--snapshot; bundle imports require a canonical bundle fromexport_evidence_bundle. #8867.- REA-launched Chromium keeps its sandbox. If launch fails on root/container hosts, first enable host sandbox support, such as a suitable non-root user or namespace/setuid facilities. The explicit
REA_BROWSER_NO_SANDBOX=truefallback disables Chromium’s sandbox and does not establish an REA isolation boundary. #8738, issue morluto/rea#8722. Thanks @chordpli, @hkeysai. - Fresh objdump Evidence changes provider identity from
gnu.objdump/GNU objdumpto{id: "objdump.command", name: "objdump command", version: null}; launch errors use the same ID and architecture-list subjects may be null. Update provider-keyed caches/readers and retain the selected executable parameters without assuming GNU semantics; historical Evidence stays readable. #8824, issue morluto/rea#8823. - Kuna verification policy is separate from analysis identity. Earlier snapshots and resumable directory exports are incompatible even with the same executable. Preserve old files, reopen without the snapshot and save a fresh one or choose a new export directory; the Kuna guide explains extracting/importing embedded Evidence as history. #8699.
inspect_analysis_viewrejects mismatched native parent predicates withinvalid_requestatsource.predicate_type: function/inventory/observation views requirerea.analysis, and matching views requirerea.native-function-matching. Select the original correctly typed Evidence or rerun its producer; patching an existing predicate invalidates its identity. #8451.trace_featurecan succeed when xrefs exist but owner lookup is unavailable. Acceptreferences[].containing_procedure.status: "unavailable"with provider/reason fields instead of requiring afoundmember, and inspectresidual_unknowns;truncated: falsedoes not establish resolved ownership. #8368.close_binaryretains investigation records; usereset_investigationto clear them. Cross-process recovery requires an explicitly acknowledged Evidence-bundle checkpoint. #8361, issue morluto/rea#8347. Thanks @gensokyo-dev.compare_functionsadds the matchedfunction_match.method: "same-entry"variant with requiredentry_addresswhen authenticated artifact, architecture, mapping, slice and entry commitments agree despite a rename. Refresh schemas and keep name/identity changes separate from entry correspondence. #8263, issue morluto/rea#8213. Thanks @gensokyo-dev.inspect_native_load_imageNativeAOTmetadata_recoveryuses a status-discriminated union: complete reports requirereason: null; partial/not-applicable reports carry{code, ...}instead of prose reasons. Branch on codes and their fields while preserving historical/optional-extension strings. Invalid budgets now produce typed input/resource errors. #8053.trace_javascript_semanticsaddsinfluencesedges and moves direct literal-argument seeds from call-site to expression nodes. Relevant unknown dependencies can changefoundtopartial: handle that status and inspect unknowns. Reanalyze retained application graphs to obtain the new edges; old graphs stay readable. #7939, issue morluto/rea#7500. Thanks @Rinkia.inspect_managed_memberschangessignature_resolutionfromtype-names-v1totype-names-v2and appends readable names to signature operands, such asclass:4 (Fixture.Program). Branch on the resolution version, accept annotated v2 strings and preserve historical v1/null displays. Signature digests are unchanged;InternalCallmethods remain runtime-provided boundaries. #5309, #9547, issue morluto/rea#5149. Thanks @elricfd, @gensokyo-dev, @ln-bodicherla, @Plastic-time.- MCP calls default to 1,024 combined array elements/object members; excess input is rejected before dispatch with nonretryable
resource_constraint,resource: "transport"andreported_limits.max_input_elements. For larger inline calls, setREA_MCP_MAX_INPUT_ELEMENTSto a digit-only positive decimal safe integer (1–9007199254740991) and restart, or select retained/file inputs. Fractional/exponent spellings are invalid; inputs are never truncated. #7905, issue morluto/rea#7882. Thanks @gensokyo-dev. inspect_machotext names/paths can be null for non-UTF-8 bytes, withname_bytes_hex,segment_bytes_hexandpath_bytes_hexalternatives; unsafe numeric sizes/offsets/alignments can be null with exact companion fields, and delayed-initoptionsare numeric. Refresh schemas and preserve these facts; absent byte fields in older Evidence remain unrecorded. #7952, issue morluto/rea#7391. Thanks @coygeek.- Environment file-source errors move from the generic
evidenceissue path tocaptureforenvironment-buildandsource.pathfor environment bundle build/export. Missing/non-file/invalid UTF-8/JSON sources returninvalid_requestwithinvalid_value/invalid_formatissues andinspect_input_contractrecovery; repair the selected file. #7900, issue morluto/rea#7523. Thanks @coygeek. - Selected unpaired UTF-16 surrogates now make TOON, Markdown, CSV and TSV output fail with
invalid_requestand a nonzero exit even after a successful operation; Markdown also refuses NUL. Use--format jsonor--format yamlto preserve these values rather than accepting substituted text. #7852, issue morluto/rea#7592, issue morluto/rea#7593. Thanks @coygeek. - Reconstruction
evidence_bundleinputs reject authenticated standalone records asinvalid_requestwith field-level issues instead of accepting/misclassifying them as damaged bundles. Bundle-file import/export/comparison reportsinvalid_request/invalid_inputwithdetails.reason: "wrong-kind". Supply a canonical bundle fromexport_evidence_bundle; tampered data remains an integrity failure. #7895, issue morluto/rea#7562. Thanks @coygeek. - Environment coverage can use
method-replayfor non-GET safe reads. Clock-generating write plans without a global clock anchor now returnserved: false,reason: "unknown-clock"instead of being served. Extend reason handling and recapture usable start times/completed durations before replaying those writes. #7834, 63220edcc3b4, issue morluto/rea#7387. Thanks @coygeek. - Ghidra returns
not-in-listingfor in-memory addresses lacking listed instructions or defined data, replacing the formerundecodableinterpretation. Accept the new status and recreate snapshots after the raw-profile change; retain old embedded Evidence as history. #7823, issue morluto/rea#7490. Thanks @Entrpi. capture_process_scenario/CLI process capture rejectscolumns: 1before target launch; update both initial terminal widths and every resize to at least 2. Sensitive interactiondatais empty withsensitive/input_bytes, and raw echoes are redacted. Recapture both sides before comparing older private-input Evidence. #7848, #7804, issue morluto/rea#7582, issue morluto/rea#7782. Thanks @coygeek, @gensokyo-dev.- Managed setup registrations bind the selected absolute runtime and REA entry script, including package-runner cache paths. Keep that installation available; unknown registrations need confirmed manual repair. Setup no longer returns
prewarmor emits its progress events. c77735fa83a6. Thanks @gensokyo-dev. - macOS Hopper launch paths/arguments reject double quotes, backslashes and line breaks before handoff. Select literal-safe prepared paths/loader arguments or a compatible provider. #7732, issue morluto/rea#7727. Thanks @gensokyo-dev.
- New JavaScript application graphs omit the derived package
rendererproperty. Userenderer_declarationsfor source fields and package-load edges for the selected candidate; historical Evidence remains readable. 5cf7133f823b. - Replace Cutter
--json=true/falsewith--json-output=true/false; bare--jsonstill selects CLI result formatting. Replacerea compare-bundleswithrea compare; MCPcompare_bundlesis unchanged. 567ea4b1e8bb, 3515b262218f. - JEB engine refusals report
execution_failurerather thanunsupported_target; inspect retained upstream diagnostics for recovery. c4cdb7658b0e. - ASAR file occurrences may contain
unpacked: false. Accept an optional boolean; absent historical fields remain unknown. 60834e391c3f. - Non-loopback MCP HTTP binds require
MCP_ALLOWED_HOSTSorrea mcp --http --allowed-hosts. Bundle names must be unchanged HTTP hostnames within the 63-octet DNS-label limit. #7172. Thanks @DeryFerd, @gensokyo-dev. binary_session {}is compact by default and omits provider availability diagnostics/remediation, target-support diagnostics/capabilities and tool-group surface/effects/annotations. Request{"detail":"complete"}for these facts and recovery guidance. #7127, issue morluto/rea#7109. Thanks @kaoru0822-kitauji.- Native input errors now include
details.operationand field-leveldetails.issues. Supply a nonemptytrace_native_values.procedure; CLItrace-native-valuesrejects an empty procedure before opening the target asVALIDATION_ERRORwithfieldErrors, while MCP reportsinvalid_requestatprocedure. #7889, issue morluto/rea#7572. Thanks @coygeek. - Readable JavaScript members that normalize to one logical path now stop
analyze_javascript_applicationwithartifact_operation_failed,details.reason: "path"and a partial inventory instead of selecting one occurrence. Inspect the inventory and analyze a copy without collisions; all-unavailable colliding sources remain unknown. #7864, issue morluto/rea#7626. Thanks @coygeek. trace_web_module_importswith an empty/relativeREA_BROWSER_EXECUTABLEnow reportscapability_unavailablewithinvalid_browser_executableinstead ofmissing_browser_executable, retainingdetails.diagnostics.executable. Set an absolute Chromium path; an unset selection still means missing. #7903, issue morluto/rea#7639. Thanks @coygeek.- Unresolvable
import-reference-sourceroots, capture scenario files and web-network capture/Protobuf descriptor paths (ELOOP/ENAMETOOLONG) now reportinvalid_request/invalid_inputwith responsible field/host-code issues rather than generic execution/unreadable-output failures. Repair the symlink chain or choose a shorter path. #7847, #7814, issue morluto/rea#7607, issue morluto/rea#7636. Thanks @Abelo9996, @coygeek. close_binarywithsnapshot_pathon a profileless/archive target now returns nonretryablecapability_unavailableinstead ofevidence_integrity_mismatch, writes no snapshot and leaves the session open. Export needed Evidence, then close again withoutsnapshot_path. #7837, issue morluto/rea#7311. Thanks @coygeek.- adb local-file refusals occur before device commands: missing/non-file/uninspectable
local_path/apk_pathand file-blockedoutput_directoryreturninvalid_requestwith field issues/host codes; output-producing calls formerly usedunreadable_output. Supply regular source files and a directory path whose parents are directories. #7885, issue morluto/rea#7549, issue morluto/rea#7550. Thanks @coygeek. - Evidence writes failing with
EFBIG,ENOSPCorEDQUOTnow report nonretryableresource_constraint,details.reason: "storage-limit", path and optionalsystem_codeinstead ofexecution_failure/io. Raise file-size allowance or free space/quota before retrying; a failed staged-file cleanup remainscleanup_incomplete. #7887, issue morluto/rea#7573. Thanks @coygeek. - PE signers add optional nullable
unsigned_attribute_oids: fresh null means absent, an OID array means present, and omission in old Evidence is unrecorded. Unsigned attributes producecoverage.status: "partial"because nested signatures/timestamp contents remain undecoded; accept the new field and limitations. #7920, issue morluto/rea#7767. Thanks @Rinkia. - Valid ASN.1 exceeding certificate nesting/OID allowances now returns nonretryable
resource_constraintrather thaninvalid_request/invalid_input, withmax_asn1_depth/max_oid_bytes. These format/resource bounds have no runtime override; retain the diagnostics and use an independently suitable parser when necessary. #9932. trace_call_path/build_call_pathrequire discovery and observed-result fields insearch_scope. An exhausted observed graph can still yieldgoal_status: "unknown"when provider discovery is incomplete. Refresh result schemas and workflow-profile expectations instead of equating graph exhaustion with complete discovery. #8443.inspect_native_instructionaddscontaining_instructionfornot-instruction-boundaryandcontaining_datafordata, with address/extent/identity/provenance. Accept these facts; omission in old Evidence is unrecorded. The Ghidra profile changes: reopen and save a fresh snapshot. #8777.trace_native_valuesadds requiredpage_truncatedand taggedtraversalcoverage.truncatedcombines page omission with traversal truncation; exactly filling a budget alone no longer proves truncation. Inspect page coverage before fetching another page and traversal reason before raising budgets. #8309, issue morluto/rea#8283. Thanks @kaoru0822-kitauji.batch_decompile.addresseshas a separate hard ceiling of 20,000 entries. Split larger batches into calls of at most that size; increasing the configurable MCP transport allowance cannot remove this operation limit. #5937, issue morluto/rea#5930. Thanks @dakjdakd.close_binarycan retire the target while retaining cleanup owners:cleanup_incompletemay haverecovery.kind: "retry_cleanup"despiteretryable: false. Keep the same connection open and callclose_binaryagain withoutsnapshot_pathto retry owned cleanup. #8329, issue morluto/rea#8211. Thanks @kaoru0822-kitauji.- Unconfirmed cleanup in
inspect_address_context,get_call_graphortrace_call_pathnow produces tool-levelcleanup_incompleterather than a successful partial result or cancellation. Keep admitted partial Evidence and follow the returned same-session cleanup recovery. #8417, #8516, issue morluto/rea#8369, issue morluto/rea#8416. Thanks @kaoru0822-kitauji. inspect_ntfs_journalomits detailedmftMetadata.record_headersby default and leaves continuation at the first omitted record. Selectmft_record_limitfrom 1 to 32 when those details are needed; inventory counts and explicit coverage remain inline. 1a8a9b749a. Thanks @gensokyo-dev, @N0zoM1z0.- Desktop state directories now use
application.state_directories[].exists_at_start: nullplusexistence_errorwhen inspection fails (for example, access denial). Accept the tri-state field and preserve unknown instead of treating it as absence. #9899.
Full contribution record: 1848 commits and 1073 merged PRs.
6.8.0 (2026-10-25)
Highlights
- Build local agent environments from network captures, browser scenarios, or a prompt, then serve derived reads and evidence-gated writes and compare them with fresh application captures.
- Inspect more shipped formats, including GPU code objects, BEAM, Python bytecode, Unity IL2CPP metadata, Godot PCK, PyInstaller, Node.js SEA, devicetree, and additional PE/ELF tables.
- Keep large investigations focused with retained summaries, selected fact queries, configurable recovery limits, and row-oriented CLI exports. Complete Evidence remains available.
⚠ BREAKING CHANGES
- Function analysis:
analyze_functionnow defaults to a retained summary. Setdetail: "complete"for the previous inline dossier; the CLI retains its complete default and requires--evidence_outputwhen selecting a summary. #5660. Thanks @CryptoJones, @gensokyo-dev, @RishTheFish21. - Accessibility: Accept JSON numbers and booleans in node
value, alongside strings and null. Update consumers that previously assumed text-only values. cc90771, #6759, #6467. Thanks @coygeek, @gensokyo-dev, @mvanhorn. - JSON Lines:
--format jsonlnow emits object-collection rows followed by a$rea: "jsonl/v1",type: "metadata"record; scalar selections and unsupported reports are refused. Parse control records separately, select a single supported collection when necessary, and use--format jsonfor the previous whole-document output. See JSON Lines framing. #5629, #5487. Thanks @gensokyo-dev, @jayykernel, @vijaykiran06. - Interface Builder: Keyed-archive graph identities use decimal table UIDs instead of authored
objectID/object-id. Treat authored IDs as attributes and update persisted graph lookups; ibtool and native NIBArchive identities keep their source semantics. 6fbe67d. - Frida:
instrument-with-fridaJSON returns the canonical Evidence directly. Readnormalized_result.cleanup_errorinstead of the former top-level wrapper field. 48f700e. - Reconstruction proof: ID-array proof records no longer establish verified or ready ledgers. Supply implementation/revision bindings and individual claim outcomes; handle inapplicable, unavailable, and failed proof diagnostics. f8b65e7.
- Mach-O imports: Handle a null import
namewhen identity is ambiguous; useraw_nameandname_statusto distinguish observed expressions from exact symbols. 5d0d243, 169512a. - Node.js: Use a runtime satisfying
^22.23.4 || ^24.22.1 || >=26.12.1; Node 23 and 25 are unsupported. Upgrade Node before installing or updating REA; the installer does not upgrade it. #6315, #6283. Thanks @GamerDubz, @gensokyo-dev, @ShikamaruNaaraa. - Browser storage: Historical hashed storage remains readable, but comparisons stay unknown until both captures are recaptured in the new representation. #6341, #6289. Thanks @coygeek, @gongfpp.
- Environment serving:
environment-serveserves derived state by default, including write tools whose effects are confirmed by recorded evidence. Use--replay-onlyfor stateless replay of manifest tools. Read stop-summarystateinstead ofstate_evidence_id. #5351, #6158. Thanks @earakely-scale, @gensokyo-dev, @kaoru0822-kitauji. - MCP schemas: Input advertisements default to compact. Set
REA_MCP_INPUT_SCHEMA_PROFILE=fullfor complete advertised guidance and nested constraints. #5975. Thanks @gensokyo-dev. - Browser console arguments: Accept null
argument_typesandtext_capture.status: "unavailable"when the protocol argument inventory is omitted or malformed; preserve that uncertainty. #6016, #5934. Thanks @coygeek, @kaoru0822-kitauji. - Reconstruction summaries:
summary.by_evidence_authorityis keyed by Evidence authority; read the former source-state counts from requiredsummary.by_source_state. Regenerate ledgers whose closure digests depended on the old projection. #5875, #5838. Thanks @coygeek, @kaoru0822-kitauji. - Swift bindings: Conformance
type_nameandprotocol_namemay be null; consume typedtype_binding/protocol_bindingevidence. Replace the former Objective-C-specific import-binding type/schema withMachoImportBinding. d0067ba. - WebSocket frames: Accept null opcodes and preserve unknown frame facts; numeric opcodes are restricted to the four-bit protocol range. 0bc2b42.
- Resource-only inspection: Evidence subjects and executable digests may be null. Use
resource_rootand each resource's reported provenance instead of requiring an executable target. 6a6adf7. - Browser timestamps: Console and session-timeline timestamps may be null when the protocol supplies no finite/comparable time. Keep unknown time explicit in sorting and comparisons. 690fc51, 2a0410f.
- Reference sources: Read failed root enumeration from
rootFailurerather than a synthetic failed child at"."; preserve the top-level source-graph limitation. 6296fdf. - Filesystem capture: Accept
entry_unavailableandidentity_changedenumeration omission reasons in addition to the previous reason literals. c85b44e. Thanks @rudrakshagarwal4200-ai. - APK locales: Replace numeric legacy selectors such as
es-r419withes-419orb+es+419. Two-letter regions remain supported. 29910d1. Thanks @mertkayacs. - XML plist scalars: Recognize
$plist_type: "unknown"and readelement,literal, andreason; unresolved XML scalars use this wrapper instead of the former real/null unknown marker or malformed scalar prefixes. Supported extended UTC years preserve their timestamp. 3537e58.
Changes
- Binary layouts: Inspect ELF32 i386, little-endian ARM, and little- or big-endian MIPS
EXEC/DYN/RELlayouts on Linux x64 using a caller-supplied pwntools environment. #7052, #6934. Thanks @roblennon, @salmanalmutairi1. - Agent environments: Project network captures and Evidence files into manifests, preserve template path pairs and positions, export AgentEnv bundles, and serve manifests as replay environments. #4954, #5293, #5664, #4999, #4975. Thanks @earakely-scale, @gensokyo-dev, @kaoru0822-kitauji.
- Capture to environment: Build environments from browser scenarios or a prompt, extract the initial observed state, and compare the environment with application probe captures. #5182, #6946, #5319, #5699. Thanks @earakely-scale, @gensokyo-dev, @kaoru0822-kitauji.
- State-backed tools: Render read filters, search, sorting and paging from state; apply confirmed write effects with broader state targets and recording-based write admission. #5352, 293832b, #5800, #5787, #5600, 5375ff0, #6169, #6385, #6897. Thanks @earakely-scale, @gensokyo-dev, @kaoru0822-kitauji.
- State learning: Model application-assigned values, preserve view-specific clock spellings, learn write clocks from scenario timing, derive fields, and learn creates across sorted arrays and referenced entities. 7ec9b6e, #6136, 957bcfa, #6138, #6967, #7025, #7034. Thanks @earakely-scale.
- Recorded writes: Serve creates whose compatible read-backs add omitted fields or express timestamps at a different precision, and whole-object updates that regenerate observed slugs or modification times. Conflicting observations still withhold writes. State views and bundles carrying the new read-back data need REA 6.8.0 or later to serve. #7080. Thanks @earakely-scale.
- Native investigations: Page native inventory summaries, match functions across builds, export pseudocode to resumable directories, and select objdump disassembly by symbol. #5378, #5390, #6170, #5171, #4249, #5343, #5159. Thanks @coygeek, @CryptoJones, @gensokyo-dev, @kaoru0822-kitauji.
- Engine workflows: Bound a single Ghidra decompilation without closing its session, analyze GameCube/Wii DOL executables, and inspect static CUDA/HIP code objects. #5662, #6240, #5813, #5340, #5345. Thanks @arielfikru, @coygeek, @gensokyo-dev, @RishTheFish21.
- PE/ELF: Inspect export tables without an engine, PE imports/delay-loads, Authenticode certificates, TLS callbacks/load configuration, ELF notes, Linux kernel module metadata, and Zstandard section-name tables. #6278, #6509, #4830, #7008, #4837, #7010, #6987, #4057. Thanks @gensokyo-dev, @kaoru0822-kitauji, @mvanhorn, @Rinkia, @ShuaixinHuang.
- Apple/native metadata: Inspect IPS crash reports, decode Swift nominal declarations, and select universal Mach-O slices in Go/Rust metadata readers. #6511, #6257, #6219, #5341, #4102. Thanks @coygeek, @gensokyo-dev, @kaoru0822-kitauji, @mvanhorn, @Rinkia.
- Packaged applications: Triage desktop installation directories and inspect/extract Godot PCK, PyInstaller archives, and Node.js single-executable application blobs. #5207, #3634, afa5da7, #2433, #7000, #4399. Thanks @0xthearchitect, @coygeek, @gensokyo-dev, @mvanhorn.
- Unity and managed code: Inventory IL2CPP images/types/methods and metadata versions 24/27; read member names and literals, link native methods and generic instances, and export Ghidra seeds. Project managed call/field-access edges and page managed member summaries. #3807, #5326, 52d1a72, #5327, #5785, #6260, #5167, #3784, #5112, #4056, #5148. Thanks @8rulerstar, @alexlanghart, @elricfd, @gensokyo-dev, @jaelliot, @kaoru0822-kitauji, @Rinkia.
- Android: Inspect APK signing declarations and structured manifest components; report static-final DEX field values. e93e3b1, #4158, #5025, #6981, #4537, #6397. Thanks @Abelo9996, @BaaRai, @FerroLx, @gensokyo-dev, @sserrgo12.
- Bytecode and firmware: Inspect and query CPython pyc and BEAM facts, inspect flattened devicetrees, and attribute MMIO peripheral regions in native disassembly. #4826, #6928, #4833, #6943, #7009, #5348, #6922, #6938. Thanks @gensokyo-dev, @liziye627-design, @mvanhorn.
- JavaScript: Retain queryable static route inventories, link assignment values to writes, and accept source selections as a JSON array or file. #6019, #6206, #5029, #4772, #6193. Thanks @gensokyo-dev, @IvenKooLab, @jacobmalibiran, @JoshOsullivan-au, @kaoru0822-kitauji, @KJLavender.
- Data inspection: Decode selected protobuf/gRPC bodies, inspect GGUF/safetensors declarations, and produce byte-entropy profiles. #5031, #5603, #2331, #4986, #3323. Thanks @AayushJB03, @gensokyo-dev, @kaoru0822-kitauji, @KJLavender, @michaelkillgta, @mvanhorn.
- CLI input/output: Accept structured request documents on stdin and expose version/runtime output formats. Row-oriented JSONL exports use the migration above. #7040, #5486, #6530, 169512a, #5483. Thanks @Abelo9996, @ahmed-husssain, @CassieFox23, @DeryFerd, @eco-null, @ezrabrilliant, @GamerDubz, @gensokyo-dev, @gongfpp, @hifzabuildsai, @jayykernel, @mhamzasakhi, @pablodiazjorge, @Plastic-time, @raidnouredden-ux, @SandstromPL, @ShuaixinHuang, @Sriram-PR, @XiaoBinGan.
- MCP and setup: Add opt-in Streamable HTTP and FreeBuff setup registration. FreeBuff support first appears in 6.8.0; installed native FreeBuff loading and skill discovery remain unverified. #4955, #2736, #3243. Thanks @0xLLVEL, @codebuff-team, @earakely-scale, @gensokyo-dev, @kaoru0822-kitauji.
- Recovery controls: Adjust per-call WASM/SQLite/firmware deadlines, MCP startup budgets, regex matching deadlines/worker heap, capture decoder heap, ASAR header admission, Apple dispatch input, and the bridge request ceiling. MCP runtime limit recovery reports actionable settings. #5798, #5818, aa53c06, #5863, #6304, #6267, #6301, #6299, #6209, #6233, #6376, #7049, #5797, #5812, #5851, #6176, #3917. Thanks @gensokyo-dev, @jaychou813, @kaoru0822-kitauji.
- APK output: Set
string_tables_onlyor CLI--string-tables-onlyto omit duplicate primary strings and avoid their output-capacity charge. 7c458f0, #4990, #4982. Thanks @gensokyo-dev, @kaoru0822-kitauji, @N0zoM1z0. - Retained analysis: Reuse successful validation of authenticated immutable native/imported-JavaScript parents and captures. Query retained Go build identity, Rust dependencies, JavaScript source-to-bundle mappings, and native export facts without repeating full output. 8f7d12e, #4962, #5349, #5524, #5815, #6128, #6907, #4810, #5499, #5802, #6112, #6900. Thanks @gensokyo-dev, @kaoru0822-kitauji, @N0zoM1z0.
- Compact results: Use retained Frida/GDB/objdump summaries, omit redundant Ghidra raw results, and defer the analysis runtime during MCP catalog discovery. #5661, #5614, #5355, #4424, #5640, #5584, #5337. Thanks @coygeek, @gensokyo-dev, @kaoru0822-kitauji, @leeguooooo.
- Analysis work: Reuse Hopper literal-string records, JavaScript workers and captured prefix selections, Interface Builder validation and plist scalar schemas; bound stable reads to one snapshot buffer and avoid decoding omitted GGUF strings. #5017, #5819, 31de177, #5885, 85e38ac, #6966, #5781, #5010, #5855, #6954, #5774. Thanks @gensokyo-dev, @kaoru0822-kitauji.
- Native scheduling: Batch modern IDA callee lookups, schedule decompilation reads on demand, index NativeAOT type closure, and retain call-path ancestry once per visited node. 0c6fed9, 06fe7ee, ce61680, 5e4ec0f.
- Selected processing: Prepare CLI positional schemas only for the selected command, separate entropy reads from report resolution, prune typed-array reference escapes, index state-write cutoffs, decode only selected replay query values, and skip payload text during WAT framing. 315b234, #6950, #5139, #5350, 96ea32b, 70835d3, #5766, #6947, #5760. Thanks @galleonli, @gensokyo-dev, @kaoru0822-kitauji.
Fixes
- IPS report fields: Preserve the recorded terminating process and PID, termination flags, parent PID, and build/platform metadata. #7079, #7078. Thanks @rodricksz4h5.
- Ghidra language selection: Accept stock language IDs containing
LEBEor slash-separated processor names, and report conflicting DOL language overrides as configuration errors namingREA_GHIDRA_LANGUAGE_ID. #7070, #7072, #7081, #7082. Thanks @Adolanium. - Setup and Hopper: Preserve the Linux embedding runtime, supported x86_64 host restriction, readiness-based provider choices, orderly demo-helper shutdown, and installed apt dependency versions. Keep cleanup and skill publication ownership through retries. #5041, #3422, f5d1012, #4966, #6974, 211e353, #6920, #5015, #3419, #4921, #6975. Thanks @Abel-I-Akhigbe, @Adolanium, @DavidFB-creator, @DeryFerd, @gensokyo-dev, @kaoru0822-kitauji, @sx4im.
- Client setup: Treat empty APPDATA as unset, distinguish MSIX Claude Desktop process views, preserve aliased Hermes server tables, reuse client dialect/alias bindings, and materialize the pinned package-runner cache before the first start. #5126, #4903, #3785, b7eeded, #7032, #5104, #4278, #3320, #7027. Thanks @CmsChase, @coygeek, @myso-kr, @pablodiazjorge, @vaidehi-snk, @wxj006007.
- Target admission: Preserve thin arm64_32 Mach-O support, distinguish JVM identity before FAT admission, validate FAT format/CPU identity, preserve original DOS header padding, and reject NULs in local objdump/rizin paths. #5788, 6843dbe, 497037e, #7013, #3600, #5713, #6510. Thanks @coygeek, @dhruvac29, @kaoru0822-kitauji, @Lew1sWong, @qorvr.
- Mach-O and dylibs: Preserve container framing, facts when dyld rejects a missing UUID, verified-signature snapshot identity, unsigned diagnostics, absolute paths inside the selected root, legacy platform rules, lazy-load payloads, and reasons for rejecting present dylibs. cf3288d, 2b263a7, eb7acc7, 1502cfb, 90062c0, #5650, 3b67b36, #5551. Thanks @coygeek.
- Native facts: Admit direct dispatch-metadata providers; preserve record-local Objective-C omissions, snapshot profiles, class-import binding identity, stripped class labels, version-like names, and qualified Swift protocol identities. 50b6975, 9eec57b, 0ba4d6f, 4d7de00, 22c84ce, 4852c83, aa9043f.
- Apple resources: Preserve independent plist scalars, processing instructions, nonstandard table widths, unsupported NIB connector coverage, and strict IPS JSON surrogate validation; classify Interface Builder objects by their declared superclass chains. fd728f2, #5806, 4526862, 14cd78c, #6990, #5805, #5228, #5218. Thanks @coygeek, @DeryFerd, @kaoru0822-kitauji, @Mangolycheematcha, @mhamzasakhi, @Shreyash021104.
- Archives and files: Complete positional ZIP reads, preserve bounded ASAR signatures, report stable symlink loops as resolution failures, retain target applicability, and report unknown traversal coverage. Retain reported integrity contradictions for members present in only one compared artifact. #4414, e8da7e1, #5571, #5763, #5867, #5521, #5731, #5837, #7076. Thanks @Afloat16, @coygeek, @jdotc1, @kaoru0822-kitauji, @WenyuChiou.
- Extraction and file ownership: Restrict destination-case recovery to owned collisions, retain physical-read failures through late cancellation/cleanup, preserve cleanup capabilities for retry, and retain independent firmware extraction failures. 932fbb7, 9499667, 56679dd, b3c912a, 7298bd0.
- Processes and cancellation: Retain partial samples and shutdown gaps, unresolved descendants and caller abort reasons; bind cleanup errors to their owners, propagate comparison contradictions, and report no normal exit code for signalled targets. ba866a2, #5270, #6144, a721c42, #6298, #6486, #5935, #5944, #6100, #6101, #6110, #6113, #6121, #6131, #6132, #6218, #6445. Thanks @agorevski, @coygeek, @gongfpp, @kwakhyun, @mhamzasakhi.
- Provider cleanup: Preserve Windows native handles until close is confirmed, native/Inspector/Electron cleanup ownership, Kuna probe identity and cleanup, IDA registration configuration, and Hopper preparation ownership. #5772, 87ab054, ff78165, 04ae07a, dd0015a, b231c28, #4505, #5616.
- Provider diagnostics: Give Ghidra restart recovery, stable Homebrew aliases, unsupported-host results for Linux-only integrations, correct IDA regex/readiness handling, and clear diagnostics when Windows refuses a verified native addon. #5356, 7c6142e, #5793, #4862, 99ccfb6, #6832, #5730, #4860, #5723. Thanks @coygeek, @dark13b, @gensokyo-dev, @jgt87, @jpmorris41488, @Lew1sWong.
- MCP results: Preserve protocol envelopes on oversized errors, enforce and advertise absolute Evidence paths, retain typed output-filter errors and selected JSON paths, and give client/provider timeout recovery. Compact advertisements now normalize reported enum and union shapes for strict gateway translation. 562dab0, 3cf6206, 0e83d92, 4714c7e, 1bfa60a, #5608, #3806, #5598, #3800. Thanks @gensokyo-dev, @Hahaa909, @wang1xiang.
- Browser lifecycles: Retain historical outcomes through cleanup, stop late navigation before session release, stop expired work, observe aborted fetch settlement, and mark later scenario actions skipped after failure or cancellation. 2e5171e, 599fdac, b2fad36, 13a8640, #6023, #5943. Thanks @coygeek, @kaoru0822-kitauji.
- Browser comparisons: Preserve frame identity, default origin scope, unknown body/shape coverage, correspondence and uncertainty, and independent retained-observation budgets. #4040, #4413, #4476, a0c22ff, a0fcc60, #3878, #3910, #3941, #4385, #4477. Thanks @Adolanium, @coygeek, @eco-null, @gensokyo-dev, @kaoru0822-kitauji, @XY-code1.
- Electron observations: Preserve listener callback ownership and count registrations by source callsite; block trash calls in the active hook, retain window handles through cancelled selection, and preserve cancellation during finalization. dfe8378, 5064007, 816a9dc, 1707d17, 4e2a566.
- JavaScript source maps: Keep unmapped and missing mappings unknown, preserve partial indexed-map facts and section paths, propagate preparation capability errors, and retain observed worker failures through cancellation. a4dbb36, 2b2e362, 498a667, #6149, #6214, f01dcca, #6082, #6061. Thanks @coygeek, @diyasharma05, @kaoru0822-kitauji.
- JavaScript semantics: Preserve overflowing timer uncertainty, unavailable-scope comparisons, directory-form URL/ESM path intent, and artifact confinement. Replaced globals lose built-in effects; erased imports no longer become runtime bindings. Treat a known truthy
fork()silentoption as piped stdio unless a string/arraystdiooverride takes precedence; unresolved options stay dynamic. #3456, 8d198d6, #4646, #2700, #4565, #6994, #3400, #3882, #3367, #7083, #7084. Thanks @Adolanium, @amyanger, @coygeek, @gensokyo-dev, @HawkForge, @rohitg00, @viniciusdsandrade. - JavaScript routes and imports: Treat path data as route candidates, preserve route flag and lexical RPC identities, package-main trailing-slash selection, catch aliases, and factory parameter ownership. #6360, 38ecc02, #4219, 21097b1, f774dc4, #6349, #4189. Thanks @coygeek, @hemv-857, @kaoru0822-kitauji, @Nikhi00718.
- Managed/IL2CPP: Preserve extension-only scope uncertainty and type discovery after member limits, nested names, ReadyToRun/declaration facts, selected type scope, valid shared-suffix strings, and truncated IL2CPP metadata prefixes. #5674, #5312, 87fa1b6, bc2d494, 1f0eb22, 4c5fae5, b3aadaf, #5467, #5146. Thanks @coygeek, @eco-null, @elricfd, @umi008.
- Format boundaries: Preserve independent facts across malformed inputs in model, GPU, WASM, Rust, Android, and SQLite inspection; report optional metadata warnings without discarding core results. eb41f35, #5789, 00a9e95, fc63fe8, 39a91d4, 6c6e2ad, 929a0a7, d137a4c, ef475fc, #5749. Thanks @coygeek, @gensokyo-dev.
- Capture decoding: Preserve malformed protobuf trailer facts and wire/schema identity, HTTP/2 URI and UTF-8 failure facts, WebMCP property coverage, and offline capture availability without a browser provider. Report invalid record ordinals as selection errors with actual bounds where available, and trim surrounding SP/HTAB from gRPC-web trailer values while preserving internal whitespace. 9cf7a7c, b3c3b21, 4cb1f1d, 51e5938, d23be5c, #6725, #3947, #7067, #7068, #7069, #7071. Thanks @Adolanium, @coygeek, @Sriram-PR.
- Evidence and errors: Authenticate ledger Evidence before committing; preserve parent-schema diagnostics, canonical correction details and owned cleanup outcomes; identify the rejected function-Evidence side/kind. Fixed allowances now name their actual limits. 0407bbf, #6361, 1629266, #6969, #5860, #6034, #5932, #5847. Thanks @AyoubElleuch, @coygeek, @dhruvac29, @kaoru0822-kitauji.
- ADB and firmware recovery: Report an unparsed push checksum as unverified, normalize absent installer-package sentinels, describe extraction-relative Unblob links, and avoid recommending a budget increase at its fixed ceiling. #6010, #4073, #4573, #6971, #5924, #4175. Thanks @coygeek, @Ganesh2325, @kaoru0822-kitauji, @Rinkia, @XiaoBinGan, @yankikucuk.
- CLI formatting: Share Markdown report formatting, exclude inherited row values, and preserve arrays of empty objects as JSON. Render Markdown table headers and cells literally while keeping intraword underscores readable. b784912, #6984, #7058, #7057, #7073. Thanks @Plastic-time, @ShuaixinHuang, @viniciusdsandrade.
- Format identity: Preserve Python marshal scalar/decode limits, empty optional BEAM chunks, PE resource branch identities and certificate alignment, unsupported compressed ELF notes, and codec-framed GPU bundle extents. 0603223, c46064c, 66671e8, 03077d5, #6721, 9fb8c11, f6a1e2c, #6694. Thanks @coygeek, @Deepak-Kambala.
- WASM and APK metadata: Preserve ambiguous WASM identity and partial facts, glue URL query/fragment text across line terminators, APK signer identity, and raw issuer identity when comparison rules are unknown. af8f0ba, #6802, f783f0f, 115a78f, #6639. Thanks @coygeek, @gensokyo-dev, @gongfpp.
- Source identity: Preserve Next route spelling, module grammar and loader request identity, directory package-main behavior, accessor effects, exact source targets, and resolver-discovery versus module-loading distinctions. ddd7ac7, 9974512, f2e5fd1, baf1678, 6e324b2, 75daf0c, f91b7f8.
- Graphs and selected facts: Preserve JavaScript graph omissions/version facts, Electron native-loader facts, web JSON identity/coverage, module-path selection, feature-trace qualifications, selected native paths, endpoint context, and mixed Swift demangler outcomes. 30db499, 5a7bddb, 79805f2, f719dc4, 7784fdb, 76500f1, 676d29f, edf7b3d, 93de7bc.
- Managed boundaries: Honor native platform symbol lookup, consume resolved IL2CPP ELF declarations, and attribute malformed comparison inputs to the supplied argument. 64fa1db, 87745af, 96ad94f.
- Provider and worker recovery: Preserve output loss after successful command exit, physical refusal diagnostics, bounded worker control framing, JavaScript worker-phase/budget attribution, admitted ambiguity choices, and selected EVM limiter availability. Scope objdump debug-link limitations to DWARF requests and keep process-capture preparation nonexecuting. e639edf, 171b33b, 34563fc, 3f9357b, cec8f1e, a74d859, c284168, 4fb936f.
- Setup and limits: Retain unknown environment-budget facts, selected-skill/maintenance uncertainty, Hopper URL admission and bookmark verification, and listener failure recovery that matches the system cause. a718037, d1fbebb, 60accad, fd7da77, 0c440bf.
- State and Evidence: Retain export tarball ownership and SQLite primary outcomes through cleanup retry, count emitted SQLite schema names across encodings, scope display refresh to matching snapshot bindings, and report retained-result validation failures consistently. Reconstruction uses one effective completion scope and kind-based labels when names are blank. ab58edc, 1006714, a47788a, 8aa40e9, b8c1b45, a35b933, #6137, #6126. Thanks @carlogiovannineri-rgb, @mohithhhh.
- Capture coverage: Name browser bundle budgets and deadline recovery, separate domain readiness from worker attribution, attribute rendered-frame omissions to their producing stage, share offline-capture host admission with discovery, preserve selected signal-file semantics, and retain short Flutter GNU build IDs. #6036, ba78133, 5934387, ad629b2, 928ba76, 678c4cf.
- Additional boundary facts: Retain parser format/query occurrence identity and independent malformed-input facts, unresolved nested Swift identifiers, and completed signing-capture coverage; describe crash documents without assuming a provider. 5f702dd, 99d2d7a, 90e433d, #5548, ee12d51, #5538. Thanks @coygeek, @ShuaixinHuang.
- Documentation: Add the Romanian README. #7026. Thanks @An3treiu.
Full contribution record: 1740 commits and 497 merged PRs.
6.7.0 (2026-10-18)
Highlights
- Client configuration edits follow the duplicate-member semantics used by MCP clients.
Changes
- Includes the 6.6.0 changes and migration notes. That version was tagged but was not published to npm.
Fixes
- Client configuration: Setup edits the last repeated JSON/JSONC member, matching the value clients actually read. Setup and uninstall refuse a removal that would reactivate a shadowed duplicate, preserving the original configuration. (#4957, morluto/rea#4952). Thanks @kaoru0822-kitauji, @xu91102.
Full contribution record: 4 commits and 1 merged PR.
6.6.0 (2026-10-18)
Highlights
- Add Kuna as a caller-supplied static-analysis provider.
- Query selected JavaScript facts and multiple APK locale tables without repeating the underlying analysis.
- Extend Ghidra analysis to Windows ARM PE targets and explicit raw m68k images.
- Preserve completed Evidence, cancellation reasons and retryable cleanup across provider and CLI finalization.
Changes
- Kuna analysis: Use a caller-installed Kuna for procedure listings, pseudocode, assembly, call relationships, exact-address xrefs and cached string searches. Project exports retain source spans and digests; repeated requests reuse completed work. Recorded real-provider coverage uses Kuna 1.833 on Linux; Windows, PE and universal Mach-O are unsupported. See the provider guide. (#3832, #3854, #4071, #4095). Thanks @gensokyo-dev, @kaoru0822-kitauji, @N0zoM1z0.
- Retained JavaScript facts: Query exact application paths, selected properties and filtered module references through
inspect_analysis_view, with paging and complete row Evidence. These views reuse completed analysis and preserve source selection and unknown coverage. (#4265, morluto/rea#4190, #4097, morluto/rea#4092). Thanks @kaoru0822-kitauji, @N0zoM1z0. - APK locale tables: Request several resource locales in one decode with repeatable CLI
--localesor MCPlocales. Each table reports its status and coverage; existing single-locale fields remain available. (#4804, morluto/rea#4777). Thanks @abhay-2108, @N0zoM1z0. - Windows ARM binaries: Ghidra admits ARMNT/Thumb-2 and ARM64 PE applications and DLLs on the Windows x64 host lane. Recorded Ghidra 12.1.4 verification uses
WindowsResourceReferencedisabled and raised startup budgets; default-analyzer completion, ARM64EC/ARM64X and Windows-on-Arm hosts remain unverified or unsupported. See the exact scope. (#3965, morluto/rea#2186). Thanks @N0zoM1z0, @WestLabsAI. - Raw m68k images: Analyze explicitly selected big-endian m68k raw binaries using Ghidra’s fixed 68000 profile and a caller-supplied aligned entry. Real CLI/MCP verification used Ghidra 12.1.4 on macOS arm64; Linux is unverified and Windows P0 does not admit m68k. See mapping requirements. (#4018). Thanks @icedac.
- JADX deadlines: Set
REA_JADX_OPERATION_TIMEOUT_MSto extend APK loading and upstream operation deadlines together. Doctor reports the effective value and setup forwards an explicit selection. (#4466, morluto/rea#3918). Thanks @jaychou813, @SandstromPL. - Electron window options: Resolve stable local constant
BrowserWindowoptions while retaining source provenance. Relevant writes and escapes keep the result unknown. (#4400, morluto/rea#4366). Thanks @kaoru0822-kitauji, @N0zoM1z0. - Language editions: Add the Greek website edition and Malayalam documentation, with Korean typography and translation corrections across the site. (#3520, #4792, #3821, morluto/rea#3820, #3799, morluto/rea#3798, #4344, #3856, #4166). Thanks @gensokyo-dev, @hi2242, @kalayciburak, @kaoru0822-kitauji, @kraken-503, @kukinghan, @N0zoM1z0, @yeseong0412.
Fixes
- Cancellation and cleanup: Keep completed observations, exact cancellation reasons and the original physical failure through finalization. Failed cleanup retains its process or file owner for retry; recovered resources disappear from pending-cleanup reports without replacing the original error. (#4238, morluto/rea#4232, #4274, morluto/rea#3923, 3e82366, 16924e2, bbfe6ed, 1f23e97, 08fbeb8). Thanks @coygeek.
- Provider startup: Join prerequisite probes and in-flight readiness work before shutdown, preserve typed timeout and JVM-memory failures, and retain startup diagnostics through cleanup. Ghidra recognizes keg-only Homebrew JDKs and names the setting responsible for a startup timeout. (376eeca, ceeff5a, 3ad1032, 964decd, 3fa972a, #4557, morluto/rea#4556, #4590, morluto/rea#4241). Thanks @DanielCvz1, @J0UH, @Rinkia, @RishTheFish21, @vadlachary2002.
- Client configuration: Preserve the selected launcher, destination file, caller timeout choices and unresolved configuration evidence. Setup/uninstall recovery stays bound to the exact published file, keeps current verified backups, and transfers failed cleanup ownership for retry. (d0253c9, 7e4eed9, 2fb5e20, 8235210, d818c3d, 19329e4, dadf909, 333e0ab, c15c206). Thanks @Adolanium.
- Configuration formats: Read signed 64-bit TOML integers without rounding, handle large TOML documents without argument-spread failures, preserve JSONC trivia and Hermes YAML scalar text, and reject NUL bytes in registration environment values. (#4937, morluto/rea#4917, c43bc0b, 4fd28fc, #3568, #4335). Thanks @alfredo1491, @gensokyo-dev, @kaoru0822-kitauji, @N0zoM1z0, @ShuaixinHuang, @xu91102.
- Claude Code configuration: Setup, doctor and uninstall now accept only the strict JSON format Claude Code reads, including a leading UTF-8 BOM. Comments and trailing commas are refused before backup or writing; clients that support JSONC retain their existing behavior. (#4944, morluto/rea#4940). Thanks @kaoru0822-kitauji, @xu91102.
- CLI output and dispatch: Accept
--flag=valueand spaced global output values, keep array positions in filtered JSON, validate integer tokens before coercion, and exit quietly when the output reader closes. Cancellation remains effective through command finalization; app bundles and static native inspections select the intended workflow. (#3811, #4823, 2ae4e16, 8d82579, #3781, 279c590, #3511, morluto/rea#3321, f31b231). Thanks @arjunprabhulal, @coygeek, @kaoru0822-kitauji, @ShuaixinHuang, @Sriram-PR, @Tapraj-Pathak. - Updates: Route
--updatethrough the verified updater and bound retained package-manager diagnostics. (4f7b5fb, 01cdbbd). - MCP contracts: Advertise self-contained tool inputs while preserving tuple, array, Boolean and nested-JSON constraints across schema profiles. Schema-reference handling no longer rewrites literal metadata; catalog identity includes the output-schema profile. (5e30969, 10aa74d, 204b9f3, b3389a5, a2e3016, ba98130, c5fb86d). Thanks @akushonkamen, @HarsH-1877, @kaoru0822-kitauji, @xingzihai.
- Session ordering: Keep snapshot admission ahead of later calls on the same connection, retain shutdown signals until cleanup succeeds, and preserve inspection authority through investigation publication. (#3661, morluto/rea#3334, 8873b39, 663d07f). Thanks @coygeek, @rudycelekli, @Swatantra-66.
- JavaScript exports and resolution: Retain CommonJS exports created with
Object.definePropertyand track export receiver lifetimes. Resolve scoped packages, packagemain, JSON requires and.mts/.ctsimports using the owning loader; overwrittenrequirebindings and erased type-only imports no longer create false runtime links. (#4725, morluto/rea#4724, #3567, morluto/rea#3541, #4838, morluto/rea#4632, #3844, morluto/rea#3383, #4164, morluto/rea#3915, #4223, #3801, morluto/rea#3393, #4165, morluto/rea#3932). Thanks @Abishek0070, @coygeek, @JNTMTMTM, @kaoru0822-kitauji, @prasad2512, @rodricksz4h5, @xu91102. - JavaScript value flow: Preserve values captured before later assignments, guarded factory fallthrough and nested destructuring. Track exact property keys and setter writes; direct
eval, compound assignments and incoming callbacks preserve unresolved effects instead of inventing certainty. (#4196, morluto/rea#3881, #4341, morluto/rea#3963, bfb7ed0, #3480, #3831, morluto/rea#3312, 9ac76d3, #4342, morluto/rea#4206, #4243, morluto/rea#3880). Thanks @coygeek, @kaoru0822-kitauji, @maxazure, @N0zoM1z0, @ShuaixinHuang. - JavaScript relationships: Distinguish
Mapreads from network endpoints, associate response endpoints only with writes that reach the read, and preserve child-process receiver ownership and effective stdio choices. Version comparisons keep relocation and unknown relationships distinct from application changes. (fbfdb6a, #4759, morluto/rea#4606, #3819, morluto/rea#3362, #4336, morluto/rea#3355, 556504e, 4d980d0). Thanks @Abdooo2235, @coygeek, @kaoru0822-kitauji, @Xinglan233. - JavaScript source admission: Parse JavaScript with its own grammar, refuse FIFO recovery inputs without blocking, and report oversized or resource-skipped files with their actual capacity and coverage state. Malformed runtime events stay excluded rather than becoming policy-filtered facts. (#3782, morluto/rea#3780, #3788, morluto/rea#3332, #4757, morluto/rea#4629, #3852, morluto/rea#3670, #4755, morluto/rea#4685). Thanks @andresaragon, @coygeek, @kaoru0822-kitauji, @sx4im.
- Browser capture: Bound CDP handshakes and command responses, preserve malformed inventory uncertainty and partial cleanup diagnostics, and report cancellation after content reads and final cleanup. Accessibility comparisons require observed coverage; attached emulation teardown limits remain explicit. (#3555, morluto/rea#3553, #3901, morluto/rea#3379, 4cc044b, #4406, morluto/rea#4403, #2893, 0123d59, 2ff0867). Thanks @coygeek, @dakjdakd, @kaoru0822-kitauji, @maxazure, @N0zoM1z0, @YunzhouLi-hub.
- Browser page facts: Preserve URL path bytes when removing credentials, repeated document
Linkheaders and complete COOP/COEP structured items. WebMCP discovery reads the actual schema properties and exact receiver path. (#4731, df2fc25, c360cfc, ebd5a82, 38f92d1). Thanks @Abdooo2235, @geekwolf, @ShuaixinHuang. - Electron runtime capture: Keep native IPC listener and one-shot dispatch behavior, block synchronous shell effects during capture, refuse active scenarios when the inspect fuse is disabled, and preserve fuse/transport cleanup ownership. (#4389, morluto/rea#4390, #4605, morluto/rea#4593, #4562, morluto/rea#4393, #3605, morluto/rea#3453, f9de413, e7df00e). Thanks @Adolanium, @gensokyo-dev, @gkobayashi0, @HarsH-1877, @kaoru0822-kitauji, @keeponlight, @N0zoM1z0, @Nitin13-git, @xu91102.
- APK resource accuracy: Retain completed tables and decode facts after interrupted or failed reads. Derive locale limits from resource configuration fields, disclose unselectable qualified tables, distinguish document failures from omitted entries, and bind Evidence to the decoded snapshot. (34a88d6, f5fcf52, 6385ef4, 98886ad, dc2e811, #4771, morluto/rea#4768). Thanks @abhay-2108, @gensokyo-dev, @Iyanuoluwa007, @kaoru0822-kitauji, @N0zoM1z0.
- Apktool guidance: Retain the observed version and disclose the matching platform/release advisory windows without treating a version string as proof of decoder safety. Missing prerequisites and decode refusals identify the selected APK or launcher. (d38f099, 63696d2, cc038da). Thanks @GovinduSasanka, @peter-research.
- Android method bodies: Recover original bytecode bodies when Java source is omitted while preserving genuine native/abstract body absence and primary failures during retryable cleanup. (63c65a2, 742b6f5, 9fa6d2b). Thanks @balkan16, @Chessing234.
- ADB observations and transfers: Preserve display-scoped focus, distinguish missing declarations from absent focus, retain numeric physical density and mark unknown permission coverage partial. Transfers use consumed snapshot identity and refuse unknown destination existence; uninstall requests explicitly select user zero. (7086768, 3d028db, #4074, morluto/rea#3942, #4663, #4665, 1342127, 61e6880, be0b2d1). Thanks @Copilot, @coygeek, @gongfpp, @Tapraj-Pathak, @yankikucuk.
- Apple metadata: Preserve exact plist/keyed-archive integers, negative zero, non-finite real identity and dictionary keys. Reject malformed XML before value decoding, retain undecodable dates as unknown and report unsupported OpenStep entries explicitly. (#4324, morluto/rea#4292, 2cf9c28, #4839, morluto/rea#4834, f2b7bbb, 6c98708, 78cf610, c7e9e09, #3793, #4105, morluto/rea#3892). Thanks @coygeek, @kaoru0822-kitauji, @mertkayacs, @pablodiazjorge, @pollychen-lab, @xu91102.
- Apple application structure: Derive bundle components and launchd domains from their owning directories, retain unavailable components, and select only exact
Assets.carnames as asset catalogs. Interface Builder keeps unresolved classes and counts hierarchy records beyond the returned object page. (149a0fc, 5d6029e, c192c58, #4094, morluto/rea#3914, #4118, morluto/rea#3958, #4162, morluto/rea#3950). Thanks @coygeek, @kaoru0822-kitauji. - Native names and layout: Keep valid Objective-C records beside malformed neighbors, preserve leading U+FEFF and repeated load-command fields, and select exact arm64e.x1 slices. PE resource ownership and NativeAOT reads stay within declared image/header ranges. (#3833, morluto/rea#3336, #4549, morluto/rea#4540, morluto/rea#4541, #4730, #4048, morluto/rea#4008, #3500, morluto/rea#3389, #4463, morluto/rea#4373, morluto/rea#4455, 3fc0075, 4a076f3). Thanks @coygeek, @Iyanuoluwa007, @jayinvers, @kaoru0822-kitauji, @kevinjosh10, @maxazure, @ShuaixinHuang.
- Native analysis providers: Keep Ghidra byte matches within examined coverage, retain PE PDB/function-boundary limitations and preserve configured MIPS choices. Attached IDA refuses universal Mach-O rather than silently choosing a slice; request timeout identity and captured output survive adapter handling. (#4531, #2933, morluto/rea#2259, 01a1b3f, 50dd9fc, #4765, morluto/rea#3871, c0cfccb). Thanks @BeLit-Development-2, @coygeek, @kaoru0822-kitauji, @N0zoM1z0, @ShuaixinHuang.
- Recorded crashes: Prevent GDB from discovering an executable named by an untrusted core, reject core mapping paths that escape the isolated sysroot, and preserve pwntools worker ownership across launcher exec. Completed decode facts and cancellation reasons remain available through failed final cleanup. (5bf4fff, b33c0df, #4435, morluto/rea#4011). Thanks @coygeek, @N0zoM1z0.
- Cutter and Rizin: Read Cutter’s active document from core configuration and attribute its host version correctly. Keep interrupted Rizin frames and output whitespace before completion markers, with exact command and cleanup failure attribution. (#4507, morluto/rea#4497, #4514, morluto/rea#4498, #4459, morluto/rea#4015, d5fc7e6, 199396f). Thanks @coygeek, @N0zoM1z0, @Xander-AJ.
- Windows cleanup: Retain unpublished runtimes after failed removal, handle read-only attributes and sharing conflicts, preserve primary snapshot failures and honor caller environment overrides. (f78d137, d69acc3, 0679a79, 5f9ac2c, 1bbf4bd). Thanks @DeryFerd.
- Managed metadata: Compare nominal signatures and declaring identities across builds, preserve empty names without display substitutions, verify ABI-prefixed Mach-O exports exactly, and charge cached metadata once. Metadata errors report artifact file offsets; mixed-mode assemblies retain their actual boundary classification. (#3059, #3079, #3853, morluto/rea#3352, #3974, morluto/rea#3961, #3491, morluto/rea#3449, #4418, morluto/rea#4372, #3516, morluto/rea#3366). Thanks @8rulerstar, @coygeek, @duckhunt113, @Hahaa909, @JayOfTheKeyboard, @kaoru0822-kitauji, @keeponlight, @N0zoM1z0, @tomyrms.
- Archive and filesystem identity: Reject colliding extraction paths before writing, classify ZIP offsets beyond EOF as malformed, normalize ZIP current-directory prefixes once, and preserve symlink and unreadable-path provenance. A directory named
*.mapis no longer mistaken for a source-map file. (862a0b2, c209dcb, 6b1c36e, 25c2222, d6e4fe4, #4131, morluto/rea#3909). Thanks @Adkid-Zephyr, @coygeek, @jackie-cqz, @kaoru0822-kitauji, @maxazure, @XY-code1. - Evidence and reconstruction: Authenticate all retained inventory substeps, preserve source-attributed caveats in composed workflows, and require comparable cited Evidence before declaring reconstruction coverage or readiness. Missing Evidence and residual replay uncertainty stay explicit. (9ac91e0, c4608a2, #4075, morluto/rea#3357, #3526, morluto/rea#3363, 153017d). Thanks @coygeek, @gensokyo-dev, @kaoru0822-kitauji, @N0zoM1z0, @rudycelekli.
- Offline data: Preserve exact UTC packet-capture instants, SQLite column identity and snapshot admission failures, and cooked WASM directive literals. Cleanup cancellation retains completed EVM/WASM observations rather than losing them. (796faa0, 748ac7f, bc51d0e, 4f87f02, d694aef, 321cacb). Thanks @himamaheswarreddy, @mertkayacs, @rollroyces, @viniciusdsandrade.
- Kuna recovery: Share concurrent single-function requests and cache repeats, validate warm exports once, stream string inventories beyond the former fixed buffer ceiling, and keep unproven processes in their run slots until close confirms release. Failure messages distinguish final buffer refusals from configurable deadlines. (#4045, #4169, #4049, #4318, #4052, #4098, #4343). Thanks @kaoru0822-kitauji.
- Flutter snapshots: Check symbol-table ranges against loadable segments and retain completed inspection facts when cancellation occurs during snapshot cleanup. (#3859, morluto/rea#3346, #4766, morluto/rea#4717, #4762, morluto/rea#4640). Thanks @coygeek, @kaoru0822-kitauji.
- Native metadata recovery: Keep unknown Objective-C category classes, empty protocol names, undecoded Swift aliases and unfinished property types explicit instead of discarding neighboring valid records. Preserve unnamed segment identity and exclude a dylib’s own install name from dependencies. (#4093, morluto/rea#4012, #4078, morluto/rea#3873, #4085, morluto/rea#3934, #3825, morluto/rea#3345, #4051, morluto/rea#3875, #4050, morluto/rea#3872). Thanks @coygeek, @kaoru0822-kitauji.
- Document selection: Preserve explicitly selected plist paths and bundle defaults, and only use document fallback after confirming its applicability. Finalization keeps completed selection facts and cancellation outcomes. (e6c4877, #3774, 9df559b). Thanks @kaoru0822-kitauji.
- Capture and comparison accuracy: Admit schema-valid HAR numeric values while retaining exact-publication limits, preserve empty URL path segments, and keep unrelated process traces and unnamed reference endpoints distinct or unknown. (#3159, morluto/rea#3145, #3792, morluto/rea#3307, #4178, morluto/rea#3931, #3809, morluto/rea#3388). Thanks @coygeek, @gensokyo-dev, @kaoru0822-kitauji, @N0zoM1z0, @pablodiazjorge, @xu91102.
- Evidence publication: Recheck staged output identity after its final write, classify missing review Evidence and duplicate ledger entries as caller input, and preserve the selected freshness requirement in comparison parameters. (#4764, morluto/rea#4613, #4452, morluto/rea#4444, #4065, morluto/rea#4000). Thanks @amyanger, @coygeek, @kaoru0822-kitauji, @Rinkia, @Swatantra-66.
⚠ BREAKING CHANGES
- Saved Evidence: Evidence and analysis snapshots now require explicit nullable
relationship_coveragein their identity commitments. Earlier records whose digest omitted null coverage are incompatible even when the serialized field is explicitly null. Artifact inventories require scoped coverage and explicitintegrity_contradictions; obsoletecoverage_statusand prose-based coverage inference are removed. Regenerate old Evidence/snapshots and inventory observations with this release: saved files are not migrated and omitted facts are not filled with guessed defaults. (db8128d, 0405c9d, a9588be). - Browser capture results: Consumers must retain resolved capture limits, event families and omission facts. Set desired budgets through the supported capture options; omitted caller inputs still select defaults, but stored observations must report the resolved values. Admitted content reads queue behind bounded concurrency. (57a23f0).
- Android version codes:
inspect_adb_package.version_codeis a decimal string rather than a JSON number. Read it as a string, or useBigIntfor numeric comparison. (#3485, morluto/rea#3368, 7666a48). Thanks @coygeek, @kaoru0822-kitauji. - Native UI failures: Failed or cancelled native UI scenarios now return typed errors with the collected report in
partial_observation. Handle the error path and read that report instead of expecting a successful result containing failed steps. (d909919). - Provider status:
binary_sessioncandidate availability can be unknown during owner finalization. Preserve that state rather than treating it as unavailable; internal consumers must await the asynchronous session status API. (150e996). - Swift symbol locations:
swift_symbolsentries may have a nulladdresswhen the provider supplies no location. Handle unknown addresses; optionalevidence.reported_addressretains the original provider value. (8116dc0). - Linux Hopper admission: Older builds previously admitted by a fixed allowlist need retained publisher-signed package evidence or an approved update to the current public demo. Update explicit
HOPPER_LAUNCHER_PATHselections when migrating; the live feed offers only its current release. The official RPM metadata mismatch remains unresolved and is refused. (#3590, morluto/rea#3577, 70cd4cb). Thanks @gensokyo-dev, @kaoru0822-kitauji, @N0zoM1z0.
Full contribution record: 571 commits and 236 merged PRs.
6.5.0 (2026-10-13)
Provider prerequisites and recorded verification scope are listed in the testing guide.
Highlights
- Analyze selected JavaScript files and recover cross-bundle relationships without expanding the selected source scope.
- Read compact summaries and page retained Evidence across binary, managed, Android, Dart, WASM and network workflows.
- Inspect SQLite snapshots, packet and signal recordings, WebAssembly, Rust dependency metadata and Electron fuses offline.
- Keep completed Evidence and partial observations available when analysis or cleanup fails.
Changes
-
JavaScript source selection: analyze exact application paths without expanding imports into the selected scope. Unselected files retain identity and explicit unknown coverage; summary delivery remains separate from source selection. (#1944, issue morluto/rea#1848). Thanks @kaoru0822-kitauji, @N0zoM1z0.
-
Code-split recovery: recover related bundles from multiple selected inputs, retaining per-file provenance and downstream cross-chunk imports. Recorded CLI/MCP coverage is Linux x64 with Wakaru 1.14.0 and source-owned esbuild/webpack fixtures; other hosts, releases and arbitrary application equivalence remain unverified. (#1686, issue morluto/rea#1605). Thanks @JingHao-Leon, @pionxzh.
-
Package imports: resolve exact package import aliases using the selected loader and package ancestry, rather than guessing sibling files. (#1862, issue morluto/rea#1838). Thanks @AWUQAQ, @mvanhorn.
-
Retained analysis views: opt into compact inventory/WASM, managed metadata, Android manifest, Dart AOT, Mach-O and EVM summaries, then page retained Evidence without rerunning analysis. Summary delivery preserves the complete recorded result and its original coverage. (#2122, #2193, #2413, #2438, #2455, #2634, #2308, 9a18251). Thanks @kaoru0822-kitauji, @N0zoM1z0.
-
Managed assemblies: Select declaring types when inspecting members, decode inspected
ldstrliterals with independent coverage, and page retained member summaries. Call and field targets exposetarget_declaring_typeandfield_declaring_type, including supported generic method targets; unresolved metadata remains unknown. (#1706, #2125, issue morluto/rea#2121, #2162, issue morluto/rea#2158, #3061, issue morluto/rea#3010, #2163, issue morluto/rea#2160). Thanks @kaoru0822-kitauji, @N0zoM1z0, @Nelglor, @skoodster. -
Packet captures: inspect saved packets with bounded TShark output, compact capture summaries and retained pages; discover installed protocol/field definitions. Recorded real-engine coverage uses Linux and Wireshark 4.6.6; native Windows/macOS and Bun behavior remain unverified. (#2318, #2340, #2496). Thanks @3QL, @N0zoM1z0, @Olorinm.
-
Recorded signals: decode existing recordings and discover installed decoders/options through caller-supplied sigrok-cli 0.7.2. This is Linux-only and requires util-linux
prlimit; it acquires no hardware samples. (#2339, #2487). Thanks @N0zoM1z0, @Olorinm. -
Web captures: derive an inferred method/origin/path-template API surface from retained HAR data including observed query-parameter names while retaining unknowns; query values, headers and bodies remain excluded. (#1891, #2982, issue morluto/rea#2913). Thanks @mvanhorn, @wunianze666-netizen, @zhangguiping-xydt.
-
QUIC captures: inspect retained aioquic 1.5.0 JSON qlog 0.3 objects and page traces/streams/observations. Other qlog layouts remain unsupported; overlap and loss declarations do not prove retransmission or network loss. (#2277). Thanks @LuisTaffelli, @N0zoM1z0.
-
Fiddler captures: inspect native SAZ archives with retained HTTP provenance and bounded decoding. Recorded producer coverage is the pinned public encoding corpus; current Fiddler Everywhere variants and Bun-native execution remain unverified. (#2409). Thanks @N0zoM1z0, @zahhak.
-
SQLite snapshots: inspect an explicitly selected offline database with table/column selection and bounded Evidence. This operation requires Node 24.x >=24.15 or 26+ with
DatabaseSync.limits; supported Node 22 and earlier 24 runtimes cannot use it. A live database/WAL copy does not establish an atomic snapshot. (#2271). Thanks @N0zoM1z0, @Y0UW1SH. -
WASM artifacts: Inspect local modules with bring-your-own WABT 1.0.42 without executing them. Compare imports/exports from two complete core-module inspection Evidence records without requiring an active WABT installation; unsupported signatures and duplicate identities remain unknown, and comparisons do not establish runtime compatibility. Recorded real-tool inspection coverage is macOS arm64. (#1533, issue morluto/rea#884, #2464, issue morluto/rea#2356). Thanks @matbrgz, @N0zoM1z0, @thangldw.
-
Go binaries: inspect embedded build metadata, including file-backed unmapped Mach-O debug segments. (#1363, 7fb097d). Thanks @Y0UW1SH.
-
Flutter APKs: identify snapshot/engine builds and inspect AOT structure without an external engine. Recorded real APK coverage uses the documented Flutter Gallery fixture; macOS/Windows and complete pool semantics remain unverified, and pool coverage stays partial. (#1582). Thanks @3QL.
-
HarmonyOS packages: inventory HAP/HSP/App Pack structures without executing code. The recorded real workflow covers one pinned HAP through repository-built CLI/MCP; installed-package and real HSP/App Pack coverage remain unverified. (#1447). Thanks @BaaRai.
-
Ghidra raw inputs and references: compatible Linux/macOS Ghidra profiles accept caller-selected raw architecture/entry information and expose typed incoming references at exact addresses. Windows Ghidra P0 admits the raw NMOS 6502 profile described below; other raw targets and the incoming-reference facet remain outside Windows P0. (#1868, issue morluto/rea#1836, #1715, issue morluto/rea#1245). Thanks @bugstan, @casesolved-co-uk, @mvanhorn, @N0zoM1z0.
-
Ghidra MIPS: Add bounded MIPS32r2/o32 relocatable objects, soft-float integer-register storage, admitted MIPS16 shared ELF, and a narrowly admitted recordless legacy MIPS32 executable profile. The latter pins an endian-matched 32-bit language and records inferred o32 as an analysis assumption. Admission follows each documented ABI/flag/relocation boundary. (#1949, issue morluto/rea#1937, #1950, issue morluto/rea#1938, #1991, issue morluto/rea#1851, #1898, issue morluto/rea#1620). Thanks @AurelioB, @BaaRai, @bqw371, @kaoru0822-kitauji, @N0zoM1z0.
-
Ghidra RISC-V: admit little-endian RV32/RV64
ET_EXECELF declaring the supported double-float ABI. Relocatable/shared, big-endian and other ABI profiles remain refused; see the profile and recorded lane. (#2151). Thanks @NIU-123370. -
PSP static ELF profile: the Ghidra profile is Linux x64, bounded little-endian ELF32
ET_EXECwith the documented PSP/ABI declarations and a compatible caller-installed Allegrex extension. PRX, shared/relocatable images, PBP/ISO/CSO and runtime emulation are outside scope. Historical extension experiments are separate from public-provider verification; real public Ghidra PSP coverage remains unverified. (#1599). Thanks @jaelliot. -
Ghidra analysis settings: apply validated analyzer overrides before analysis while retaining the selected analysis profile. (#1913). Thanks @akushonkamen, @kaoru0822-kitauji, @N0zoM1z0.
-
Attached native IDA MCP: add an optional native bridge alongside existing legacy/headless profiles. Recorded native runs use Linux IDA Free 9.4 with a navigation correction and Windows IDA Pro 9.3 with a loopback-listener change; stock native switching, native macOS and Windows IDA Free remain unverified. Attached databases remain read-only and are never saved or closed. (#1544). Thanks @imissapixel, @N0zoM1z0.
-
Frida instrumentation: add explicit local/remote target selection, caller-supplied scripts and retained messages, with script-read/input diagnostics and bounded message eviction. Recorded real coverage is the Linux local Node marker workflow; macOS, Windows and remote devices/servers remain unverified. Instrumentation executes foreign code and is destructive, not read-only. (#1359, #2211, issue morluto/rea#2209, #2217, issue morluto/rea#2213, #2628). Thanks @dandgabr, @kaoru0822-kitauji, @N0zoM1z0.
-
Client setup: register Qoder, Trae, ZCode, DeepSeek Harness, Kimi Code, Factory Droid and WorkBuddy through the existing scoped setup flow. DeepSeek is included from 6.5.0; the historical npm 6.4 check did not cover it. Live Trae and DeepSeek API integration remain unverified. (#1564, #1572, #1573, #1929, issue morluto/rea#1839, #2744, #2309, #3041, issue morluto/rea#3040). Thanks @0xRafie, @BaaRai, @cainiao1992, @IvenKooLab, @whoishaha, @ysntony.
-
Website: Add maintained language editions, persistent/system-aware themes, keyboard styling and nested Evidence indentation, plus the reverse-engineering models essay. A simpler home page and beginner journey connect platform prerequisites, client/provider setup and a supplied first investigation. (#1779, issue morluto/rea#1022, #1699, #1714, #1894, #2250, #2432, #2732, #3274). Thanks @CassieFox23, @kaoru0822-kitauji, @N0zoM1z0.
-
Rust dependency metadata: Inspect embedded cargo-auditable package/dependency records in ELF, PE and thin Mach-O without executing the file. Missing metadata and inferred compiler hashes retain explicit limitations; universal Mach-O requires a selected thin slice. (#2456). Thanks @mvanhorn.
-
Electron fuses: Read packaged fuse bytes and per-slice runtime implications without launching or modifying the app. Missing, truncated and unknown wires remain explicit; fuse observations do not prove other Inspector-enablement paths. (#2399). Thanks @kaoru0822-kitauji, @mvanhorn, @N0zoM1z0.
-
Ghidra PowerPC: Admit bounded ELF32 big-endian
ET_EXECPowerPC with an explicit language profile on supported Linux/macOS hosts. PPC64, DOL and other variants remain outside this lane; see the profile and verification prerequisites. (#1747). Thanks @arielfikru. -
Reference-source summaries: Use CLI
import-reference-source --detail summaryfor compact manifest, count, state and path-outline output. The complete graph remains available and is still the default; hidden outline entries retain separate coverage counts. (#2768, issue morluto/rea#2442). Thanks @matbrgz, @To3akaRin. -
Recorded AArch64 crashes: Decode 34 ABI register values per thread from supported Linux ELF64 little-endian core notes using the documented caller-provided Python dependencies. These are recorded facts, not proof of current process or library identity. (#2505, issue morluto/rea#2353). Thanks @matbrgz, @NIU-123370.
-
Ghidra byte search: Search initialized analyzed memory using wildcards, bit masks, address bounds and paged results. Unloaded, overlay and uninitialized blocks retain skipped coverage; this is not a raw-file search. (#2341). Thanks @mvanhorn.
-
Raw NMOS 6502 images: Analyze explicitly selected headerless images with Ghidra, including Windows P0, using a caller-selected entry and source mapping within the 16-bit address space. Cartridge parsing, reset-vector inference and 65C02/65816 are outside this profile. (#2079). Thanks @Zhong-fan.
-
Swift String observations: Ghidra function dossiers derive supported AArch64 Swift String literals from constant-register pairs at recognized use sites, retaining instruction/register provenance and explicit omissions. This is a bounded derivation, not a complete string inventory. (#2049, issue morluto/rea#2030). Thanks @thefolahan.
-
Headless IDA procedure lookup: Resolve addresses to canonical containing-procedure entries and identify the session’s admitted program document in the modern headless profile. Incomplete surveys remain errors; attached profiles do not advertise this containment capability. (#2374, issue morluto/rea#2335). Thanks @nikolay-dementiev.
-
Passive browser attachment: Six existing passive browser tools accept an explicit-port loopback browser WebSocket endpoint when HTTP target discovery is unavailable. Existing consent and target/origin checks remain required; this does not launch a browser or enable runtime instrumentation. (#2346). Thanks @all-black-493.
-
Android DEX references: Retain exact method descriptors and individual direct-invoke observations with source method, DEX entry, opcode and code-unit offset. These are static references; unavailable instruction facts remain separate from method-level usage totals. (#2439). Thanks @LcokHcak.
-
Offline EVM metadata: Retain bounded, lossless facts from plausible terminal Solidity CBOR root-map candidates. Candidates do not prove Solidity origin or source/compiler identity, and linked metadata is not fetched. (#2790). Thanks @matbrgz.
Fixes
-
JavaScript loader and export identity: Respect import/require conditions and unavailable package metadata, keep export links separate from writes, and resolve default identifier exports to the value captured at the export statement. (7e5cffa, 322506d, 81f7638, dae1e55). Thanks @paoValle, @VarunGore36, @xu91102.
-
JavaScript traces: Retain nested bridge calls and surviving early-return predicates. Honor node-ID match options, match route seeds against source values, and keep ambiguous runtime candidates unknown. (0351328, 5031099, 44c9d29, 5e79d46). Thanks @jpdefo.
-
Browser comparison coverage: Compare only known redirect response fields and retain network-selection recovery guidance alongside independent event changes. Missing response facts do not prove equality or a change. (2b60e09).
-
Evidence comparison and ledger input: Report display-only bundle differences as unchanged while retaining digests, and classify noncanonical bundle records as invalid caller input. (030c477, 3a34ad3).
-
Capture and admission cleanup: Keep deleted-file observations and original bytes when a parent becomes a file, preserve unrelated I/O failures during cancellation, and require explicit pre-launch proof before releasing an unknown LLDB target owner. LLDB failure controls used simulated boundaries. (e67c364, 2daeff4, 45b6a7f). Thanks @SII-YDD, @xu91102.
-
Client configuration: Validate MCP output-schema profiles before setup writes, ignore untrusted Gemini workspace settings before parsing them, and identify installed skills independently of marker-only client roots. (0930e94, aade9bb, ba33c70). Thanks @CmsChase, @paoValle, @sx4im.
-
Host tool discovery: Share macOS Hopper launcher discovery across setup and runtime, preserve explicit paths, and report validated ADB and Apktool availability. (7582f0d, e5deb83). Thanks @Chessing234, @kaoru0822-kitauji, @viniciusdsandrade.
-
SAZ encoding validation: Reject invalid XML bytes, unsupported encodings and declarations that contradict the archive bytes, including records outside the selected request. (1250aae).
-
Managed member matching: Keep malformed TypeDef list ownership unknown, distinguish constants during structural method matching, and accept legacy small exception-section sizes. (3f6b575, ee5cfbe).
-
Bounded diagnostics: Bound SDK validation messages and terminal normalization before allocation while retaining diagnostics and explicit unknown final output sizes. (7fb0a0c, 1d826f3). Thanks @CRYPTONIKAV.
-
Windows artifact classification: identify
.exe,.com,.batand.cmdartifacts as launchable host executables. (#1823, #1824, issue morluto/rea#1819). Thanks @dollarsmoney, @JasonBuildAI, @kaoru0822-kitauji. -
CLI/MCP delivery: defer command-specific startup work, bundle runtime entries, retain field/input correction details across output formats and preserve shared optional-provider lifetime. MCP selectors, paging continuation and retained partial-error references remain explicit; session liveness/provider-attribution corrections retain their controlled-provider verification limits. (#1691, issue morluto/rea#1685, #1705, issue morluto/rea#1695, #1755, issue morluto/rea#1746, #1773, issue morluto/rea#1771, #1780, #1814, #1910, issue morluto/rea#1849, #1996, #2140, issue morluto/rea#2135, #2205, issue morluto/rea#2195, #2230, issue morluto/rea#2180, #2294, #2482, a82d14e, a4dd4e8, 48c352b, 07b36c1, 570c40c, 8fc2043, 7fc0b5e). Thanks @369Apps, @chqcjq, @cold-atom, @coygeek, @JackOdegard, @kaoru0822-kitauji, @N0zoM1z0, @sx4im.
-
Evidence import/replay: import bundles across session transitions while authenticating selected target and file identities, preserve literal keys, metadata/mutation intent and relationship coverage, and honor cancellation before session mutation. Reuse authenticated snapshots and comparisons within their owned lifetime; reject malformed/non-object snapshots and unsupported metadata without disguising uncertainty. (#1694, #1716, issue morluto/rea#1680, #1721, issue morluto/rea#1718, #1733, issue morluto/rea#1723, issue morluto/rea#1724, #1776, #1873, #2001, #2013, issue morluto/rea#2009, #2083, #2303, #2685, issue morluto/rea#2675, c002b89, 9c85114, aada0ca, 4a4d36f, 1c64fe3, 6fb3a34, 3bcc68c, 6bae774, e997085, d1dcebc, b123b2e, 049132a, 042dcaa, acf75e6, 1f7f808, 26bffb9). Thanks @coygeek, @DeryFerd, @jiangjiang248, @kaoru0822-kitauji, @khanukov, @N0zoM1z0, @NIU-123370, @rohitg00, @sx4im.
-
Ghidra setup and analysis: preserve launcher/JVM diagnostics, Java-property and extension identity, stale-client recovery, UTF-8 bridge output and pending-startup progress. File-offset decompilation is Ghidra-specific; recorded coverage is Linux x64 with Ghidra 12.1.4. Startup/progress/compiler failure paths that use simulations remain unverified with a real engine. (#1698, #1877, #1931, #2011, issue morluto/rea#1992, #2014, #2101, issue morluto/rea#2078, #2206, issue morluto/rea#2204, 2187e16, b953f96). Thanks @EDMND-SRC, @Ha1baraA11, @kaoru0822-kitauji, @lovecontroing, @lyly-bonbon, @N0zoM1z0, @nosmile99, @Petru101, @sx4im, @Zhong-fan.
-
Process and cleanup ownership: retain private runtime/file owners and detailed incomplete-cleanup observations, bound trace cycles/order state, preserve caller paths, and use monotonic time for budgets while retaining wall dates. Windows affinity/admission (#2202, issue morluto/rea#2181) and Bun memory-enforcement paths retain their recorded native-versus-controlled-fixture limits; these fixes are not a general process-ownership guarantee. (#1700, issue morluto/rea#1697, #1730, #1756, issue morluto/rea#1753, #1760, issue morluto/rea#1757, #1826, #1907, issue morluto/rea#1856, #1999, issue morluto/rea#1993, #2232, issue morluto/rea#2170, #2252, issue morluto/rea#2218, #2467, issue morluto/rea#2257, #2468, #2488, 09b6828, 7285e15, b5ededd, d8c76b6, 98d8470, c22111e, cecc6ec, 10935b7, 63e796d, d9e9fb2, 9049dba, ed881c6). Thanks @Ashen00001, @charan-rathore, @coygeek, @EDMND-SRC, @JasonBuildAI, @jimpablo, @kaoru0822-kitauji, @N0zoM1z0, @NIU-123370, @Rinkia, @rudycelekli, @sx4im, @xeropresence, @XiaoBinGan, @xthunder0, @hzh666kevin-hue.
-
Native image identity: preserve universal Mach-O containers and selected slice/subtype identity, chained fixup locations and library ordinals, exact signing text, PE resource capacity and ELF/header framing. Mach-O summary selection and independent slice commands avoid unnecessary delivery/work. Controlled routing/parser fixtures do not establish every installed-provider path. (#1703, issue morluto/rea#1702, #1708, #1709, #1713, #1772, issue morluto/rea#1765, #1784, issue morluto/rea#1775, #1982, #1995, issue morluto/rea#1990, #2040, #2107, #2161, issue morluto/rea#2105, #2248, issue morluto/rea#2176, #2281, issue morluto/rea#2274, #2292, #2466, #2506, #2733, issue morluto/rea#2661, f598bab, 108b5f9, f1924cf, 8bd5ba2, b38429c, 8d4d631, ac57c88, dc038d1, 34a4bb6, ebc22d9, c02fb0e). Thanks @1NormalGuy, @Aliciawque, @baron, @coygeek, @dhl84, @hemanthrayuduu, @JasonBuildAI, @kaoru0822-kitauji, @N0zoM1z0, @thangldw, @viniciusdsandrade, @XiaoBinGan, @Zburgers.
-
Archive and artifact provenance: keep physical ZIP occurrence identity, exact signatures/names and partial inventory coverage; bound decompression and reject malformed keys/integers. Directory/ASAR/DMG reads retain ownership through cleanup and publication cancellation. Duplicate ZIP names remain explicitly ambiguous where the public projection cannot represent them; synthetic archive/cleanup cases do not prove every real Unblob or DMG failure path. (#1726, issue morluto/rea#1725, #1854, issue morluto/rea#1844, #1865, issue morluto/rea#1860, #2069, #2106, #2144, #2365, #2493, 918713a, eb97da3, 2260887, 74d7da6, ed485a3, 921bb95, d8ceb3f, 9435c7a, bb54082, a73a55f, 3c57e1a, ec0b081, e7882b3, b955b82). Thanks @1052326311, @1NormalGuy, @baron, @Bortlesboat, @Chaoqi31, @DeryFerd, @kaoru0822-kitauji, @N0zoM1z0, @XiaoBinGan.
-
Setup/uninstall recovery: preserve unrelated YAML text, caller-selected roots, symlinked data and existing recovery snapshots; explain malformed configuration shapes and retain failed rollback/cleanup owners. Show terminal dry-run plans and each selected skill location. Bunx registration and fault-injected recovery cases remain simulated rather than live-client verification. (#1731, #1754, #1821, issue morluto/rea#1816, #1983, #2118, issue morluto/rea#2111, #2154, issue morluto/rea#2152, #2157, #2182, issue morluto/rea#2159, #2481, bb50813, c240768, dcfc5d4, 21eff3b, 94153f1, 2397137, c339f9e, f6775a3). Thanks @BeqaKs, @Jax367, @kaoru0822-kitauji, @NIU-123370, @shoyann, @viniciusdsandrade, @xeropresence, @zaydiscold.
-
Bun updates: locate global installations before changing directories and reuse parsed client activation during maintenance. The update flow is covered with package-manager/filesystem simulations; a real Bun global installation update remains unverified. (#1735, e90acae, b045df1). Thanks @xeropresence.
-
JavaScript relationships: preserve loader-specific package/TypeScript/CommonJS boundaries, exact file-URL and source-map identity, Electron intrinsic receivers/IPC guards and chunk metadata. Index repeated lookups and retain completed facts through resource limits and cancellation. Real Electron integration, Bun worker integration and failure-path cleanup remain unverified where the recorded lanes use fixtures. (#1740, #1759, issue morluto/rea#1748, #1762, issue morluto/rea#1761, #1767, #1788, issue morluto/rea#1781, issue morluto/rea#1782, #1789, #1799, issue morluto/rea#1793, #1827, issue morluto/rea#1802, #1833, issue morluto/rea#1831, #1857, issue morluto/rea#1842, #1871, #1874, #1905, #1912, issue morluto/rea#1909, #1915, issue morluto/rea#1911, #1916, #1921, #1934, #1939, issue morluto/rea#1881, issue morluto/rea#1882, issue morluto/rea#1883, #1941, #2062, issue morluto/rea#2058, #2104, #2422, #2475, #2737, issue morluto/rea#2663, d3088c3, 1dfb933, f8513a4, b8fab74, 42b0ed1, c0904b4, 9f67e44, e4532b5, 1c37914, 5ab0cbb, b7169c8, f43fc02, 3ae826c, 1b95302, eaa9616, c923fb0, c7a890d). Thanks @Aurantium-47, @baron, @chqcjq, @coygeek, @cyanseek, @fengdwx, @flitzrrr, @immanuwell, @kaoru0822-kitauji, @N0zoM1z0, @Nelglor, @ranmori, @rudycelekli, @shoyann, @xu91102.
-
Browser observations: preserve effective source-map URLs, empty query/fragment identity, response-body provenance, service-worker policies and explicit uncertainty for malformed events. Bound discovery lifetimes and retain cleanup ownership. Interrupt/retry/failure cases validated with controlled CDP/session fixtures do not establish those paths in real Chromium. (#1742, issue morluto/rea#1729, #1829, #2074, #2099, #2239, issue morluto/rea#2169, #2477, 486b567, a82e37c, a8d4984, 966f7cc, 221c856, 951b095, f09bb8a, 6bd2b28). Thanks @1052326311, @chAng-L19, @chqcjq, @coygeek, @evenafterallisaid, @fisforfaheem, @itsF4LCON, @N0zoM1z0, @shayanxcyber.
-
Managed metadata/CIL: preserve ExportedType and pointer-table ownership, generic/array/function-pointer/modifier signatures, ReadyToRun host identity, metadata ExtraData and signed zero. Charge retained facts and decoded instruction counts instead of broad decoding bounds; malformed layouts remain caller input errors. (#1743, issue morluto/rea#1736, #1768, #1822, issue morluto/rea#1801, #1828, issue morluto/rea#1812, #1835, issue morluto/rea#1832, #1886, #1893, #1897, issue morluto/rea#1878, #1943, issue morluto/rea#1940, #1985, #2194, issue morluto/rea#2191, #2437, 52e76c5). Thanks @ac1982, @chqcjq, @fisHarly0, @flitzrrr, @JasonBuildAI, @JayOfTheKeyboard, @jhuang-tw, @kaoru0822-kitauji, @N0zoM1z0, @Nelglor.
-
Hopper failure ownership: preserve startup/process outcomes, retain cleanup leases across one-shot failures, wait for late bridges, and stop owned Linux demo children when their REA owner exits. Denied/crashed/late-bridge/queued-request failure paths use simulated process or bridge fixtures; they are not fresh installed-Hopper verification. (#1763, issue morluto/rea#1751, #1817, #1866, #1927, #2474, #2499, issue morluto/rea#2459). Thanks @coygeek, @Joshwong1908, @kaoru0822-kitauji, @N0zoM1z0, @rudycelekli.
-
IDA session boundaries: retain non-x86 call coverage and unresolved-procedure uncertainty, and bound private universal-Mach-O inputs to the exact selected slice. Transient headless busy recovery was exercised on macOS arm64 IDA Pro 9.1; Linux headless, attached GUI navigation and worker-reaped cleanup paths retain their documented verification gaps. (#1764, issue morluto/rea#1712, #1778, issue morluto/rea#1766, #1785, issue morluto/rea#1769, #1906, issue morluto/rea#1794, #2201, issue morluto/rea#2139, #2291, issue morluto/rea#2285, #2324, 12fa8fd). Thanks @akushonkamen, @coygeek, @kaoru0822-kitauji, @N0zoM1z0, @nikolay-dementiev, @zecaro.
-
Input and capability diagnostics: identify invalid paths, format refusals, missing host tools and non-retryable errors without losing caller selections or retryable capability facts. Foreign execution/device mutation annotations remain destructive, analysis-target text is untrusted, and output ordering follows code points rather than host locale. (#1770, #1867, #1869, issue morluto/rea#1855, #1872, #1879, issue morluto/rea#1853, #1899, #1902, #1904, #1908, #1925, #1987, issue morluto/rea#1979, #2004, issue morluto/rea#2002, #2026, #2091, #2133, issue morluto/rea#2129, #2145, issue morluto/rea#2143, #2472, #2478, issue morluto/rea#2454, #2494, #2507, #2509, #2708, 3d83135, c9fed50, 8b18171, 7a2cd1e). Thanks @astralyx0129, @CassieFox23, @DeryFerd, @dollarsmoney, @fisforfaheem, @flitzrrr, @Ha1baraA11, @jimpablo, @kaoru0822-kitauji, @larinyo, @N0zoM1z0, @rudycelekli, @SII-YDD, @viniciusdsandrade, @XiaoBinGan.
-
Android analysis: retain decoded values, duplicate-class inventories and executable static initializers, reject malformed JADX UTF-8, and keep inline search provenance. Apktool accepts
--no-stringsand explains host requirements. Windows batch-launcher selection also resolves PATH/PATHEXT before choosing its launch mode. Recorded Apktool coverage is Linux/OpenJDK, and changed JADX/batch failure paths do not establish native Windows behavior. (#1777, issue morluto/rea#1774, #1876, issue morluto/rea#1846, #1890, issue morluto/rea#1850, #1946, issue morluto/rea#1945, #2707, issue morluto/rea#2672, 0677468, fe8d0bd, #2802). Thanks @akushonkamen, @coygeek, @HeadmasterEggy, @kaoru0822-kitauji, @N0zoM1z0, @psipher. -
ADB acquisition: preserve device paths and directory identity, prevent host destination collisions/overwrites, count UTF-8 logcat bytes and restricted permissions, and evaluate the complete Activity Manager start report. Launch attempts, status, activity and raw failure output remain observations; real-device timeout/mixed-report and Android 8 directory-read paths remain unverified beyond the documented fixtures. (#1962, #2212, issue morluto/rea#2175, #2221, issue morluto/rea#2220, #2359, c42232f, 55b6148, 3bdc873, c89972c, e1cd292). Thanks @coygeek, @dakjdakd, @DeryFerd, @huiq777, @sx4im.
-
WASM names and diagnostics: preserve debug/custom-section names including NUL and leading BOM, accept unpadded WABT section rows, and avoid irrelevant tool-remediation advice on unrelated runtime-root failures. (#1963, issue morluto/rea#1956, #1967, #1981, #2084, #2102). Thanks @1052326311, @bugstan, @N0zoM1z0, @sathariels, @STiFLeR7, @viniciusdsandrade.
-
Source-map and path handling: retain source-map entries when embedded-content counts differ or an optional
sourceMappingURLis used, and keepfile:URLs out of operator-relative path resolution. (#2873, #2886, #2882, issue morluto/rea#2821, issue morluto/rea#2883, issue morluto/rea#2577). Thanks @JFSAS, @rileygramlich, @shoyann, @shubhamahuja9999, @coygeek. -
Native metadata: accept declared facts in native dispatch inventories and share native verification input diagnostics. (#2906, #2901, issue morluto/rea#2564, issue morluto/rea#2621). Thanks @ShitK, @coygeek.
⚠ BREAKING CHANGES
-
Runtime attachment state:
attachedmay benullin JavaScript, browser and Electron discovery/inspection results. Treat null as unknown; do not coerce it to false. (e55ef72). -
Source maps: original-source and mapping rows preserve a null source name when unavailable. Handle null explicitly instead of expecting an invented unknown-source string; new index fields remain optional when reading older Evidence. (ee50ed1).
-
Streamed filtered JSON:
--filter-outputnow emits JSONnullinstead of{}when the selected value is null; consumers must distinguish a present null from a missing selection. Use--full-outputwhen an object envelope is required. (#2333). Thanks @Jackmeson1. -
Call graphs:
get_call_graph.normalized_resultis now{ graph, limitations }; read traversal-depth groups undergraphand retain relationship-specific caveats. Contract/fixture validation does not establish new Ghidra or IDA engine coverage. (5dfb9d0). -
MCP discovery:
binary_sessionno longer repeatsserver_identity.catalog.tools. Use the connected server tool list, groupedtool_availabilityand provider capabilities; see MCP contracts. Origin: 6395e8d. (#1988). Thanks @kaoru0822-kitauji, @N0zoM1z0. -
Provider admission: MIPS targets with unresolved GNU ABI attributes are refused. Supply supported ABI declarations. Saved Hopper databases on macOS are unavailable because the launcher cannot run the analysis bridge when opening a database; select an executable target instead. Database support requires a script-capable database launch route. (d4bd65c).
-
Segment extents:
binary_overviewsegment length may be null when Hopper coordinates cannot establish a finite extent in one address space. Preserve unknown rather than converting it to zero or a saturated value. (36db19c). -
Invocation identity:
server.command_pathmay be null, and registration/setup statuses or doctor classifications may be unknown. Preserve these states and establish the actual invocation before treating a registration as aligned. (187f113). Thanks @hemv-857, @qorvr. -
ADB installation: the optional
replaceinput is unchanged. Results now requirereplace_requestedto record the requestedadb install -rmode;replacedis nullable because prior device package state was not observed. Update result readers to accept null instead of treating reinstall intent as proof of replacement. (864314a). -
Managed/native verification: unresolved P/Invoke results may retain
matched_nativeand candidate facts when module identity is unknown. Interpretstatus,basisandlimitations;module-identity-unknowndoes not verify correspondence, and unresolved no longer implies empty observations. (3f6b575).
Full contribution record: 893 commits and 529 merged PRs.
6.4.0 (2026-10-11)
Highlights
- Android: added device inspection, split-APK acquisition, logs, screenshots, file transfers and explicit app lifecycle actions through ADB, plus manifest and localized-string decoding with Apktool. (#1552, #1556) Thanks @3QL.
- JEB: browse project units and decompile selected items through a caller-started local JEB MCP server. (#1536) Thanks @3QL.
- Large analyses: discover retained Evidence without loading every payload, and inspect JavaScript graphs, binary layouts and function dossiers through summaries and selected views. (#1682, #1568, #1570, #1345, #1507, #1247) Thanks @jhuang-tw, @kaoru0822-kitauji, @N0zoM1z0.
- JavaScript: isolate source analysis in an owned process with configurable heap and timeout limits; retain completed facts and explicit unknowns when analysis runs out of resources. (#1651, #1563, #1565) Thanks @N0zoM1z0, @peter-research.
- Ghidra: configure import language/compiler specifications and seed functions, code and labels before auto-analysis. (#1667) Thanks @sqmagellan.
- RPC discovery: recognize supported tRPC calls, HTTP-link URLs and named GraphQL operations in JavaScript applications and web bundles. (#1670) Thanks @pompiliodonatoapp.
Changes
- Added Ghidra support for Windows PE DLLs and bounded MIPS ELF analysis, including carved MIPS inputs with incomplete section tables. Windows P0 remains read-only. (#1303, #1362, #1629, #1290, #718, #1619) Thanks @bqw371, @jaelliot, @kvalls, @N0zoM1z0.
- Enabled
set_address_nameandset_addresses_namesfor Ghidra sessions with mutation authority, including namespace-aware data labels and per-address batch results. (#1635, #1634) Thanks @giri256. - Recovered additional signed AArch64 relative jump-table patterns. (#1592) Thanks @RishTheFish21.
- Added PE resource inspection and read-only NativeAOT metadata parsing for supported x64 PE32+/.NET 8 RTR 9.1 inputs. The NativeAOT parser’s Windows-host Ghidra workflow remains unverified on a real Windows host. (#1482, 76d8f68, #1254) Thanks @N0zoM1z0, @thangldw.
- Added Pi, Hermes and Qwen Code setup, including Hermes active-profile support. (#1376, #1403, #1415, #1409) Thanks @rasatpetabit, @yiliang114, @zaydiscold.
- Added
REA_MCP_INPUT_SCHEMA_PROFILE=compactfor size-capped MCP clients such as Kimi/Moonshot, while retaining canonical runtime validation. (#1514, #1580, #1484, #1581) Thanks @haythemsellami, @N0zoM1z0. - Added live process-capture progress and optional
finalization_msto capture shutdown output before timeout escalation; cancellation remains immediate. (#1483, #1583, #1252, #1253, modelcontextprotocol/typescript-sdk#2997) Thanks @N0zoM1z0, @nikolay-dementiev, @sathariels. - Improved Codex onboarding and recovery from observed client, PATH and provider blockers. (#1613) Thanks @N0zoM1z0.
- Reduced redirected JSON and terminal output size, and deferred heavy imports until their commands need them. (#1413, #1450, #1439, 21dbcf7) Thanks @kaoru0822-kitauji.
Fixes
- Electron analysis: follow renamed and default-imported APIs and optional calls, ignore overwritten identities and media preload attributes, and resolve packaged
app.asarpages and unpacked companions. (#1391, #1393, #1400, #1664, #1673) Thanks @kaoru0822-kitauji, @marnixpluim, @N0zoM1z0, @suninrain086. - JavaScript data flow: preserve returned/yielded reference uncertainty, invalidate property-stored aliases correctly, and retain bundled-module runtime scope. (#1437, #1445, #1471, #1577, #1428, #1442, #1449, #1576) Thanks @CassieFox23, @dakjdakd, @N0zoM1z0.
- JavaScript packages: resolve exact exports subpaths, preserve trailing-slash directory requests and exact CommonJS keys, and respect shadowed
requirebindings. (#1424, #1615, 5485483, 8b2f851, f998fcb, 1e51c73, #1365) Thanks @akshitkhokhani, @AWUQAQ, @immanuwell, @rudycelekli. - Large JavaScript inputs: handle oversized inline source maps, deep returns and reassignment loops; avoid argument expansion limits and yield during large analysis passes. (#1386, #1368, #1390, #1539, #1525, #1542, #1545, #1557, #1380, #1401, #1538, #1462) Thanks @cold-atom, @KadirJeager, @kaoru0822-kitauji, @marnixpluim, @N0zoM1z0, @rudycelekli.
- JavaScript receivers: expand escaped methods once, index returned-object targets, and avoid replaying earlier writes or duplicating retained graph allocations. (#1517, #1537, #1444, #1601, #1495) Thanks @CassieFox23, @geekwolf, @kaoru0822-kitauji, @N0zoM1z0, @zeynelacikgoez.
- Browser captures: retain WebSocket URLs, empty connections and frame order; compare only common known payload coverage and preserve incomplete WebMCP replay coverage. (db4e360, aa257ea, e52c0a7)
- Browser scenarios: seed storage in the correct partition, normalize loopback attach identities, retain declared-secret redaction and require verified lineage before Windows Electron signals. (#1604, #1590, #1588, 8b4c3de, #1497, #1591, #1589) Thanks @Adolanium, @akushonkamen, @dakjdakd.
- Added Termux Android browser-scenario support. (#1655) Thanks @tyloryang.
- Web inputs: accept BOM-prefixed HAR, preserve the first duplicate DOM attribute and resolve SVG/XLink URLs in HTML and XHTML. (#1509, #1516, #1602, #1683, #1496, #1586) Thanks @CassieFox23, @kaoru0822-kitauji, @sathariels, @taljeri.
- Screenshot comparisons: validate PNG chunks, distinguish corruption from unsupported encodings and bound comparison memory. (4e4b15b, b3e977e) Thanks @rudycelekli.
- Archives: preserve case-distinct names, report collisions at their diverging segment, detect nested formats from bytes and reject Windows alternate-stream extraction paths. (#1480, #1505, #1553, 573598c, #1470, #1491) Thanks @CassieFox23, @kaoru0822-kitauji.
- Cleanup: retain failed readers, ASAR handles, output trees and provider workers for retry without discarding completed output or partial observations. (ffe0574, de0d341, 3f8c51e, d1235fa, 026126e)
- Providers: canonicalize IDA workspace roots before identity checks, respect IDA cancellation, serialize JEB acquisition and correct Ghidra no-return/imported-symbol recovery. (#1481, #1419, 5f30ea6, f88c990, 49e6f00) Thanks @AS9929, @JonahSimon, @Y0UW1SH.
- Binary metadata: respect PE/.NET section extents, bound binary-plist expansion, scope keyed-archive traversal and decode app
Info.plistfiles withoutplutil. (#1678, #1515, #1378, #1476, 975dff2, 76296c5) Thanks @jayhemnani9910, @kaoru0822-kitauji, @rudycelekli. - Windows runtimes: preserve drive-root paths when creating private provider directories. (ee46323)
- Compatibility: load Windows native controls under Node-API hosts with renamed executables, preserve dylib directory requirements, support Wakaru 1.x and reject directory-valued Hopper launchers. (#1531, #1623, #1540, #1426) Thanks @evenafterallisaid, @Fazmin, @pionxzh, @xeropresence.
- Reference imports: normalize internal symlink lookup consistently, preserve exact paths and exclusion provenance, report root access failures and reject FIFO replacements without blocking. (#1535, 2ca3ad2, 6636045, 3967cfa, f1c58cc) Thanks @anujsingh-cse.
- Setup: honor active configuration and skill roots, preserve configured MCP environments, validate Hermes/OMP profiles before writing, recognize Omarchy and retain recovery backups. (#1504, #1607, #1528, #1562, #1662, a011485, #1606, #1521, #1561) Thanks @Adkid-Zephyr, @CassieFox23, @LuisTaffelli, @N0zoM1z0, @peter-research.
- Process capture: retain descendant lineage after launcher exit, preserve identity uncertainty before signaling and release terminals after observation failures. (80896a1, c916850) Thanks @Y0UW1SH.
- CLI/MCP errors: accept JSON files for web comparisons, preserve native option help and union correction details, remove invalid aliases and validate doctor against its discovered output contract. (#1397, #1395, #1425, #1461, 8b4c96e, #1421, #1454) Thanks @Fazmin, @kaoru0822-kitauji, @N0zoM1z0.
⚠ BREAKING CHANGES
- WebSocket results: use
network.websocket_connectionsinstead ofnetwork.websocket_events. Connections containrequest_id,urlandevents; allowpayload_bytes: nullwhen size is unknown. No legacy alias remains. (db4e360) - Direct resource APIs: pass a caller-owned
ArtifactResourceScopeto inventory/extraction, JavaScript analysis, reference imports and web exports; retain it through cleanup/shutdown. ForreadJavaScriptArtifactFiles, scope is argument three and abort signal is argument four. Keep each root inventory source’s single cleanup owner. UseOwnedFileHandleowners, injected ASARfd/readhandles instead ofcreateReadStream, VCSResultvalues, andWebScriptExportError’s options object. CLI/MCP inputs for the scoped operations are unchanged. (ffe0574, 53e7fad, 684199b, be75ed5, be6272f, e0e49e9, 95a77b6) - Saved reference graphs: exclusions require their matching
patternand distinguishproject-ignoredfromdefault-ignored. Re-import graphs missing that provenance. (6585293) - Terminal captures: keep initial and resized buffers within 1,000,000 cells using
columns × (rows + scrollback); oversized scenarios are rejected before launch. (f9ea9a9) - Optional agent-verification reports: accept schema version 4, nullable
expectedFirstToolandtargetClarificationPassed. Production CLI/MCP contracts are unchanged. (#1613) - Capture comparisons: recapture both sides with matching
literal-replacements-v1semantics when custom normalization patterns are used. Legacy unversioned pattern captures remain readable but cannot be compared with new pattern captures; captures without patterns are unaffected. (#1456, 2b6f14f) Thanks @Madhavan006, @N0zoM1z0. - Artifact graph edges: read child artifact IDs and paths from the occurrence selected by
occurrence_id, not edge fieldschild_artifact_id/logical_path. Earlier inventory Evidence no longer validates against the new commitment. (#1493) Thanks @kaoru0822-kitauji. - Semantic graph schema: nodes and relations no longer include
identifier_strategy, and relation IDs no longer hash it. Earlier Evidence no longer validates against this schema. (#1474) Thanks @kaoru0822-kitauji. - Semantic identities: select IDs from the parent graph; read exact event names from
event_name, endpoints fromendpointand literal values fromproperties.value. New analyses use digest-based IDs for long/reserved event and endpoint names andvalue-sha256literal role keys, with shorter labels; string literal labels now readstring literal. Previously stored graphs retain their original IDs and remain valid workflow inputs. (#1427, #1423, #1407) Thanks @N0zoM1z0.
Contributors
- Thanks also to @BaaRai, @commit-regrets, @coygeek, @Franky100-pig, @inii-sayaa, @jopemachine, @JosephDemarest, @keemsisi, @Totopo27 for contributions included in this release.
Full contribution record: 336 commits and 163 merged PRs.
6.3.0 (2026-10-09)
⚠ BREAKING CHANGES
- captures: Historical captures without current producer accounting or transaction identity, and web diffs missing accessibility or storage dimensions, are rejected. Preserve original captures and recapture with the current producer; update comparison consumers to include every dimension rather than synthesizing missing observations. See the process capture guide and browser scenario contract. (3283a45)
- browser: JSON shape paths now contain typed property and array-element segments. WebMCP input_schema_shape is replaced by input_schema and input_schema_sha256, retaining declared examples and defaults.
- process: Filesystem digest omission entries now require system_code; budget and changed-file omissions use null, and unavailable-file omissions preserve the operating-system error code.
- contracts: Provider analysis outputs must explicitly supply metadata previously repaired with defaults; unsupported nullable facets must be reported as null.
- javascript: Semantic graph facts now store evidence context IDs and locations. Graph and semantic trace results require an inline evidence_contexts table.
- contracts: source-map URLs now live in target observations selected by declared_url_sha256, and doctor skill identity no longer emits installed_catalog_digest. Use the documented observation join and identity.skill.state instead.
- javascript: remove the never-incremented truncated_scopes statistic from JavaScript application analysis results and schemas.
- native: Objective-C attribute tokens now contain only name and value. Properties report nullable atomicity and readonly facts; class flags, ivar counts, and method requirement flags are nullable when unobserved.
Features
- setup: register OMP during setup (#1301) (8b4c359)
- javascript: record Electron integrity mismatches (7915ee5)
Bug Fixes
- inspector: retain observations after capture failures (dea3498)
- artifacts: bind ASAR interpretation to owned snapshots (d79317c)
- artifacts: infer legacy Mach-O simulator platforms (5aa2002)
- artifacts: preserve archive facts and Unicode path identity (5751f5c)
- artifacts: reject incomplete inventoried extraction (5e8fb53)
- artifacts: retain DMG ownership through uncertain attachment (a27794c)
- artifacts: validate only active extraction entries (cfb12e4)
- browser: follow only HTTP redirect statuses for source maps (82bbe74)
- browser: preserve payload shapes and WebMCP declarations (4951a89)
- browser: release attached viewport overrides without resizing the external page (f6cfbfc)
- browser: retain attached scenario emulation until cleanup (a0523b3)
- browser: retain malformed redirect diagnostics (617cd84)
- browser: serialize attached scenarios through cleanup settlement (cfce91d)
- ci: scope verification and reuse native runners (#1344) (d5cb8ae)
- cli: avoid duplicate primary cleanup diagnostics (37fcea7)
- cli: classify JSON input permission denials (08daf05)
- cli: classify oversized JSON inputs (f7cf4c8)
- cli: stream JSON inputs beyond the whole-document string limit (#1360) (6ce3288), closes #1331
- cli: stream JSON results at the shared command boundary (810107a)
- contracts: advertise NUL with a portable hex escape (3f59a84), closes #1329
- contracts: require observed provider output metadata (a4ba8ae)
- electron: preserve unrepresentable numeric option evidence (41a228c)
- evidence: order canonical projections independently of locale (614fb76)
- files: reject nonregular capture and JSON inputs (5f16124)
- filesystem: reject unstable artifact targets (7829b1a)
- ghidra: reject a native decompiler built for another host (#1280) (3728c82), closes #1192
- ghidra: retain process ownership after failed launch rollback (07675f7)
- ghidra: verify dense jump tables on an optimized fixture (#1374) (73a664b)
- hopper: allow restart after verified owned-provider shutdown (1c12349)
- hopper: probe interior navigation from multi-byte instructions (#1285) (bf934d5)
- ida: compare admitted document paths consistently (890bb66)
- javascript: avoid positive-zero evidence for signed zero (9055bd6)
- javascript: decline source-map UNC references with an unusable host (#1372) (f504c2a)
- javascript: distinguish prefix-only builtins from packages (2b4abbf)
- javascript: honor module-sync package exports (#1361) (d0e6069)
- javascript: parse declaration artifacts in ambient mode (4896adc)
- javascript: preserve agreeing module provenance (db171be)
- javascript: preserve capture-time guards and ordering (001851f)
- javascript: preserve semantic evidence through satisfies (e995b19)
- javascript: preserve uncertainty after references escape to calls (#1292) (355a292)
- javascript: reject invalid package exports configurations (7a4f268)
- javascript: resolve exported callables through lexical bindings (#1351) (a9f5dad)
- javascript: resolve query-only HTML references to their document (55a46f7)
- javascript: retain array identity after length mutations (4bcea1a)
- javascript: retain conditional mutation ordering uncertainty (b8a8190)
- javascript: retain distinct module provenance path components (2bd7de6)
- javascript: retain unresolved value frontiers in provenance queries (3e19875)
- javascript: store source map URLs once (ed8fcae)
- json: preserve runtime limits across JSON file readers (#1350) (9c4a68b)
- managed: bind graph facts to their source Evidence (cc7b5af)
- mcp: admit composed analysis through result bookkeeping (e11f4d3)
- mcp: advertise object roots for union input schemas (#1373) (39dabd0)
- mcp: advertise primitive semantic literal seeds (f62b449)
- mcp: preserve JavaScript workflow identity validation (#1366) (53ed942), closes #1364 #1065
- mcp: retry failed shutdown resources and retain failure reasons (e64678e)
- native: distinguish symbol definitions from metadata (70bad53)
- native: preserve unknown Objective-C metadata (b112d44)
- native: refuse to list architectures of non-Mach-O targets (#1325) (1b73b5a)
- native: retain LLDB cleanup ownership through client close (7ad353f)
- process: keep unobserved file contents unknown (#1358) (f91f279)
- process: retain per-file digest open failures (415145d)
- reference: report malformed UTF-8 before import parsing (f166a2a)
- report malformed application evidence as input errors (218c131)
- retain completed observations when later analysis steps fail (35f121f)
- setup: install the skill for Claude Code (b4a1919)
- setup: recognize supported Nobara hosts (f0dc233)
- skill: pin packaged commands to the shipping package version (2793672)
- skill: pin packaged commands to the shipping package version (#1346) (f39e71c)
- snapshot: preserve complete investigation revision histories (#1354) (1c0cc8a)
- targets: cancel resolution before provider admission (f3c4a33)
- update: preserve disabled client registrations (abf5e24)
Performance Improvements
- javascript: index version relationships once per comparison (#1347) (b1e85ad)
- javascript: validate the version change graph once (#1370) (037709a)
- json: encode streamed JSON iteratively (#1322) (56598be)
Code Refactoring
- use canonical implementations and types directly (765e809)
- artifacts: remove unused root classifier (5291bca)
- artifacts: test inventory changes at materialization boundary (750fb65)
- browser: open scenario sessions without a factory wrapper (d1983a4)
- catalog: import CLI metadata from its owner (8c96baa)
- consolidate boundary semantics and prune redundant tests (392f1f3)
- javascript: normalize erased expression syntax once (b628bba)
- javascript: parse runtime evidence into one verified owner (006b295)
- javascript: remove obsolete scope truncation statistic (449d570)
- javascript: share Babel child traversal (0f10499)
- javascript: share semantic evidence at fact construction (e3bbb9a)
- process: remove duplicate observation and trace entry points (070339a)
- providers: use canonical artifact and managed identities (87f0051)
- reference: simplify malformed UTF-8 handling (377df71)
- remove obsolete source exclusions and identity wrapper (44c92f8)
- remove single-use forwarding helpers (4144e45)
Documentation
- keep license sections text-only (e10f1f0)
- align translated README artwork and layout (ccfbe87)
- add README artwork and refine closing sections (4b8e744)
- add repository-local REA tool design skill (7738c1f)
- celebrate 40,000 GitHub stars 🎉 (3edb217)
- celebrate 40,000 GitHub stars 🎉 (5ecc98a)
- consolidate agent guidance around ownership and boundaries (ba44222)
- contracts: explain canonical URL and skill metadata ownership (e36afa1)
- correct MCP error and capture import guidance (077d6c4)
- correct README setup and runtime guidance (5b3715e)
- explain CI scope and native runner reuse (#1348) (6c9161d)
- prune repeated contributor and tool design instructions (5d79387)
- remove retired architecture and migration artifacts (7a0c800)
Tests
- share the client registration command to restore the jscpd gate (#1317) (5d16be2)
- mcp: remove arbitrary schema inventory thresholds (24673aa)
- android: allow provider readiness under load (961c3c3)
- artifacts: verify extraction races with real filesystem changes (1ac8389)
- browser: avoid duplicating source-map listener setup (9367dc1)
- browser: report redirect status cases independently (5a61562)
- cli: remove duplicate malformed JSON assertion (5d32e42)
- exercise source test selection through Git and Vitest (25711ad)
- filesystem: bound FIFO regressions at consumers (0bfb6e0)
- ghidra: allow rollback tests to reach spawned process (d761d73)
- javascript: share primitive expansion producer fixtures (c867bcd)
- javascript: share semantic graph test facts (ac356c4)
- javascript: verify distinct module origins through reconstruction (96b2b24)
- json: remove assertions covered by CLI output consumers (a959a83)
- managed: include shared dossier fixture in artifact inputs (66a20a2)
- native: retain trace diagnostics when observed hits differ (048b798)
- package: share validated native dossier fixtures (ca90109)
- process: publish capture readiness atomically (74be526)
- process: report cleanup details on cancellation failures (79d5b9a)
- process: use owned CLI and workspace fixtures (4940a86)
- share snapshot replay and managed graph fixtures (d83cbd2)
Continuous Integration
- enforce architecture guards with portable checkout paths (ecc67ca)
6.2.0 (2026-10-09)
⚠ BREAKING CHANGES
Read the 6.1 to 6.2 migration guide before upgrading. REA's always-bump-minor policy includes breaking changes; 6.2 is not a backward-compatibility promise. Preserve original saved files and regenerate missing observations rather than fabricating identities or facts.
- MCP / Evidence / snapshots / artifacts: Success results are direct canonical Evidence; read
normalized_resultrather than the oldresult/evidencewrapper. Evidence requires nullableanalysis_profile, session provider aliases are removed, snapshots require complete profile-bound query records, and artifact roles/permissions belong to occurrences. Recreate incompatible saved data; adding fields without recomputing their semantic identity is invalid. (63bf914) - Process captures: Legacy v3 conversion is removed. Explicit executable identity and
event_journalare required; retain old captures and recapture when current comparisons are needed instead of inventing launch identity or event order. (2a77469) - Cleanup and evaluation: A one-shot analysis reports cleanup failure while preserving the completed observation or primary diagnostic. Handle
cleanup_incompleteand retained observations/resources. Configured agent-evaluation fixtures require Evidence-backed correctness, not routing or answer wording alone. (#1211, 27a9cea) - JavaScript: Return-field projections require explicit presence; export-shape changes carry both sides' presence and property inventory coverage. Semantic object operations retain complete
property_pathsegments. Regenerate old analysis and distinguish unknown values from unknown presence. (475a0f8) - Function comparisons: Remove the unreachable
truncateddimension state andsummary.truncatedcounter; update enum and display consumers while retaining explicitunknownfacts. (5510b27) - Historical sources: Unreadable/unknown symlink targets require
target: null; external targets retain the observed absolute target. Reimport graphs containing display placeholders such as<outside-root>and handle nullable targets. (b7b4333)
Features
- javascript: report observed export property presence (#1160) (45e3edc)
- mcp: select views of retained analysis results (#1180) (db675f1)
- website: add an Aegis APK code-generation showcase (0270dd5)
- website: add an Android showcase and clearer project prompts (6cc817e)
- website: add beginner examples and synchronized publishing (0fec65d)
- website: add beginner examples and synchronized publishing (#1203) (0fec65d)
- website: add Discord link beside GitHub badge (cc39fc5)
- website: add homepage navigation and faster reading paths (863674b)
- website: add homepage navigation and faster reading paths (c94f06d)
- website: add homepage navigation and faster reading paths (#1213) (863674b)
- website: add search metadata and automatic sitemap (99f257b)
- website: add search metadata and automatic sitemap (b8851cb), closes #1283
- website: clarify reverse engineering and showcase goals (e750c26)
- website: explain REA through a first investigation (5160d9b)
- website: explain REA with Calculator and a playable dinosaur lab (11b9f03)
- website: lead with the playable dinosaur example (19c52f5)
- website: show manual analysis beside a one-prompt workflow (291bc6f)
Bug Fixes
-
dev: accept formatter-ignored staged documentation without failing the commit hook; malformed JSON remains rejected. (bd2db2f)
-
release: publish reviewed release-PR merges from their exact reviewed source. (c12bad7)
-
android: support owned JADX stdio on Windows (#1276) (636b245), closes #1262
-
android: validate engine archive prerequisites (#1145) (e9ebfb9)
-
apple: report unusable dylib-resolution roots as invalid input (6a1e558)
-
apple: report unusable dylib-resolution roots as invalid input (24a30fd)
-
artifacts: keep cancellation and the caller path in extraction refusals (37025cc)
-
artifacts: keep cancellation and the caller path in extraction refusals (eacf846)
-
artifacts: match lipo arm64e variant names to their FAT slices (de5bfec)
-
artifacts: match lipo arm64e variant names to their FAT slices (0b32577), closes #1168
-
artifacts: name only host-available workflows for non-archive plists (f4c99ab)
-
artifacts: name only host-available workflows for non-archive plists (2295855)
-
artifacts: recheck failed DMG detaches before reporting cleanup failure (#1155) (58a91f0)
-
artifacts: refuse unsupported extraction formats before scanning (8e74c9c)
-
artifacts: report encrypted archive entries as unsupported extraction (de43da7)
-
artifacts: report non-archive keyed-archive selections as unsupported targets (fef38e4)
-
artifacts: report non-archive keyed-archive selections as unsupported targets (8c5088c)
-
artifacts: report wrong target kinds as unsupported targets (b34bdcd)
-
artifacts: report wrong target kinds as unsupported targets (637bcb5)
-
browser: classify export-web-scripts capture selection failures by cause (ddaa183)
-
browser: classify export-web-scripts capture selection failures by cause (8c5e34c)
-
browser: report Windows HAR heap exhaustion (#1147) (1393507)
-
browser: retain scenario observations across failures (614e0c2)
-
browser: retain scenario resources until cleanup succeeds (88640f6)
-
ci: pass selected environment to Windows Ghidra fixture (#1281) (f085589)
-
cli: advertise defaulted inputs as optional in --schema and help (#1175) (b4927a0), closes #1169
-
cli: cancel routed JavaScript analysis in rea analyze (#1156) (089bbf5)
-
cli: complete cleanup after relayed interrupts (#1202) (911152a)
-
cli: list the read failure cause for an unreadable JSON input file (db0afce)
-
cli: list the read failure cause for an unreadable JSON input file (6020df5)
-
cli: resolve xrefs symbol selectors after address validation (#1209) (7e9c911)
-
config: name the rejected setting and its constraint in configuration errors (c3acc34)
-
config: name the rejected setting and its constraint in configuration errors (0a0244d), closes #1184
-
doctor: find the Homebrew Hopper cask without writing Homebrew caches (98b07d0)
-
doctor: find the Homebrew Hopper cask without writing Homebrew caches (a503376), closes #1165
-
domain: report target read-permission denials as access_denied (f36c10f)
-
domain: report target read-permission denials as access_denied (d0ff57a), closes #1188
-
electron: resolve effective preload after option overrides (#1286) (411498d)
-
emit v-mode-compatible patterns for tool schemas (#1220) (f0da05f)
-
errors: report caller-selected evidence path failures as invalid input (d4a598e)
-
errors: report caller-selected evidence path failures as invalid input (db177c9)
-
evidence: cancel exports before atomic publication (16624f1)
-
ghidra: classify modern Swift manglings in swift type analysis (#1208) (6935dc7)
-
ghidra: do not run Java from a relative JAVA_HOME in doctor and setup (04a516b)
-
ghidra: do not run Java from a relative JAVA_HOME in doctor and setup (c3f1698)
-
ghidra: keep and name a runtime directory that close could not remove (5b769d3)
-
ghidra: keep and name a runtime directory that close could not remove (b79d379), closes #1190
-
ghidra: keep the NativeAOT target refusal's own recovery advice (f198993)
-
ghidra: preserve decoded return flow evidence (b189c3c)
-
ghidra: preserve decoded return flow evidence (bcc8a77)
-
ghidra: reject relative installation and Java paths in doctor and setup (8998438)
-
ghidra: reject relative installation and Java paths in doctor and setup (5356856), closes #1183
-
ghidra: report NativeAOT host and target refusals as unsupported, not failures (cfb49eb)
-
ghidra: report NativeAOT host and target refusals as unsupported, not failures (42c276a), closes #1185
-
ghidra: resolve secondary symbols at function entries (#1195) (6fbdbd6)
-
ghidra: stop dereferencing the removed error payload in address verification (b80bd2d)
-
ghidra: stop dereferencing the removed error payload in address verification (59fbaa2)
-
ghidra: use dot-free private session paths (c3fc6c3)
-
hopper: keep the OS error when the FAT64 source cannot be reopened (9f5dc52)
-
hopper: reserve Linux demo application before launch (#1158) (33d5ae0)
-
javascript: allow cancellation during semantic graph commitment (#1218) (9405bd6)
-
javascript: classify application input selection failures by cause (fe5291e)
-
javascript: classify application input selection failures by cause (0a14bbb)
-
javascript: keep Wakaru version stderr out of the refusal message (6489d58)
-
javascript: match source-map originals that name parent directories (#1215) (889fb37)
-
javascript: omit self-referential static references with disclosure (#1157) (b620e2a)
-
javascript: preserve alias and container uncertainty (73e98b2)
-
javascript: preserve graphs with async chunk self-references (#1152) (7220166)
-
javascript: preserve property paths and uncertain slot presence (475a0f8)
-
javascript: reject encoded separators joined by HTML URL whitespace (2ddd945)
-
javascript: reject encoded separators joined by HTML URL whitespace (fb57c86)
-
javascript: report located sources with differing digests as modified (#1216) (01174c4)
-
javascript: resolve HTML script URLs after URL whitespace and percent decoding (d601b80)
-
javascript: resolve HTML script URLs after URL whitespace and percent decoding (502528c), closes #1236
-
javascript: resolve package exports targets only to the exact file (#1181) (2a620c0), closes #1174
-
keep the Ghidra session root free of dot-prefixed path elements (a8b8288)
-
managed: preserve literal library names during native matching (81b70bc)
-
managed: separate metadata and signature completeness (2f02eff)
-
mcp: advertise input patterns without look-around (1f099a6)
-
mcp: advertise input patterns without look-around (a8701ea), closes #1282
-
mcp: deliver tool errors within advertised schema contracts (da606ff), closes #1261
-
mcp: deliver typed errors without invalid structured output (#1277) (7e96f25)
-
mcp: measure tool errors against their text-only delivery (fe34ec2)
-
mcp: measure tool errors against their text-only delivery (7b51121)
-
mcp: only recommend exporting retained evidence (5f749c2)
-
name host and tool requirements in optional adapter refusals (68cb02f)
-
name host and tool requirements in optional adapter refusals (170d0bf)
-
native: distinguish batch selectors from resolved entries (13c3b68)
-
native: distinguish batch selectors from resolved entries (bfaa5a6)
-
native: name the CLI flag that selects another plist (9b69503)
-
native: name the plist selection that works when Info.plist is missing (5612496)
-
native: name the plist selection that works when Info.plist is missing (a6fdf42)
-
native: refuse truncated executable headers at target admission (d39a450)
-
native: refuse truncated executable headers at target admission (0b04d38), closes #1189
-
process: apply one timeout rule to both execFileOutput modes (3d32819)
-
process: await cleanup on CLI and MCP cancellation (f6fe575)
-
process: keep ports before a chunk-final period (184ed97)
-
process: localize capture truncation diagnostics (#1284) (33bf585)
-
process: normalize ports that end a sentence (098d769)
-
process: normalize ports that end a sentence (db98a51)
-
process: preserve numeric output and original PTY evidence (c5c75c3)
-
process: preserve numeric output and original PTY evidence (00d8e44)
-
process: preserve unknown filesystem absence in partial captures (c8544b1)
-
process: refuse malformed timeouts for stoppable commands (136d4aa)
-
process: refuse malformed timeouts for stoppable commands (59c91c8)
-
process: require current captures and preserve cleanup failures (2a77469)
-
process: retain known events from incomplete captures (5eb0049)
-
process: stop cancelled Swift helper builds before removing their files (cf41561)
-
process: stop cancelled Swift helper builds before removing their files (c717204), closes #1173
-
process: stop timed-out commands with the caller's stop signal (4b38d18)
-
process: stop timed-out commands with the caller's stop signal (063de50)
-
process: treat non-ASCII letters as port continuations (ad813e4)
-
process: validate terminal byte totals against retained frames (69833fb)
-
process: validate terminal byte totals against retained frames (39eb058)
-
providers: preserve observations and primary cleanup failures (0696bde)
-
reference: represent unreadable symlink targets explicitly (b7b4333)
-
restore caching, preserve failures, and verify fixture claims (#1211) (27a9cea)
-
server: report 2025-era client identity and features in binary_session (e6abaef)
-
server: report 2025-era client identity and features in binary_session (b8312fa), closes #1167
-
session: require an open target for session-bound native and artifact tools (d8e314c)
-
session: require an open target for session-bound native and artifact tools (cf77d07), closes #1166
-
session: retain failed provider cleanup for lifecycle retries (#1260) (24a3aa0)
-
setup: keep Codex TOML comments when adding or removing REA (f5539cf)
-
setup: keep Codex TOML comments when adding or removing REA (e9c48a6), closes #1163
-
setup: preserve initial backups and Codex comments (#1204) (6051cb2)
-
setup: stop remaining uninstall removals after a client fails (fd975c7)
-
setup: stop uninstall before removals when a client config is unsafe (4fb2f3e)
-
setup: stop uninstall before removals when a client config is unsafe (5cc841d), closes #1164
-
snapshot: report query workflow and Evidence counts separately (04aef6d)
-
snapshot: report query workflow and Evidence counts separately (0e77953)
-
website: clarify Android host and JDK requirements (5691606)
-
website: identify publication verifier requests (e6905c1)
-
windows: retain runtime authority after cleanup failure (af7a439)
-
windows: retain unsettled jobs for cleanup retry (76b214e)
Performance Improvements
-
mcp: share repeated output schema definitions. (441813c)
-
hopper: resolve string search records once per query (#1229) (9426c3f)
-
mcp: reuse input schemas without losing caller guidance (#1162) (e1afbc1)
-
snapshot: avoid redundant result copies and serialization (552634d)
-
snapshot: avoid redundant result copies and serialization (569d2bc)
Code Refactoring
- domain: remove obsolete comparison representations (5510b27)
- enforce canonical evidence and provider boundaries (63bf914)
- remove forwarding exports and redundant aliases (ad59531)
- schemas: share portable identifier and base64 patterns (#1227) (954badb)
Documentation
- add French README translation (84094af)
- add French README translation (9664b2b)
- celebrate 30,000 GitHub stars 🎉 (6987cb0)
- celebrate 30,000 GitHub stars 🎉 (beca997)
- clarify REA has no affiliated cryptocurrency or token (#1214) (c2d8146)
- explain 6.2 contract and saved-data migration (#1304) (c267e99)
- ghidra: explain supported heap and CPU controls (#1278) (0c6852b), closes #1255
- keep the 30k milestone in Star History (#1217) (c399670)
- require focused brittleness cleanup and executable examples (d6832c3)
- thank feature request contributors (9db1fd0)
- website: continue the Calculator example with reconstruction (4578647)
- website: continue the Calculator example with reconstruction (18a1e8c)
- website: explain SEO maintenance and indexing follow-up (bb8ff2c)
- website: introduce the worked homepage examples (f6f5c16)
- website: invite deeper projects and reader feedback (3fb9ffa)
Tests
- apple: verify compiled Mach-O root occurrence facts (#1300) (4bb4c6f)
- artifacts: assert asset-catalog target refusal only on macOS (44d5b4b)
- artifacts: pin per-occurrence roles for direct Mach-O roots and shared bytes (701d90a)
- artifacts: pin per-occurrence roles for direct Mach-O roots and shared bytes (b9e29c5), closes #1234 #1235
- artifacts: read /bin/ls slice layout from its FAT table (#1223) (c89b3a0)
- artifacts: verify compiled Mach-O roles and permissions (4bb4c6f)
- consolidate redundant assertions into boundary workflows (b71a591)
- ghidra: preserve selected verification resource limits (1c3766a)
- ghidra: size oversized annotations for canonical delivery (1e34197)
- ghidra: use host-native absolute session root fixtures (1e83d27)
- javascript: expect the invalid input_path code in the streamed CLI failure test (d186ca7)
- mcp: read bundle failures from public error content (69c3b32)
- mcp: read typed errors in canonical Evidence regressions (fd46cff)
- mcp: validate public error diagnostics in acceptance workflows (09058eb)
- native: assert batch identity in production registration (933fcb3)
- native: build the .app fixture executable with a complete Mach-O header (facaae8)
- process: check malformed capture choices concurrently (6020a0b)
- process: check malformed capture choices concurrently (48de11c)
- remove duplicate workflow examples and self assertions (d6d1cd2)
Continuous Integration
- website: allow explicitly requested Pages-only publication (796b65e)
- website: allow explicitly requested Pages-only publication (864160d)
- website: allow explicitly requested Pages-only publication (#1205) (796b65e)
- website: publish Cloudflare and Pages from one artifact (761881c)
6.1.0 (2026-10-09)
⚠ BREAKING CHANGES
- hopper: Hopper regex mode uses ECMAScript Unicode syntax instead of Python re. Matching runs in a cancellable worker with a five-second deadline; literal mode keeps Unicode casefold matching.
- hopper: remove set_current_document. Use open_binary to switch targets; document arguments are scoped to the active target.
Features
- clients: register Grok Build and Grok Bot during setup (#1134) (08561e0)
- ghidra: make the startup deadline configurable (#974) (d84bc8f)
- website: add GitHub link with live star count (2f59287)
Bug Fixes
- analysis: bind overview document identity to the active target (#1094) (81b5104)
- analysis: resolve procedure identities and preserve literal queries (d830cb7)
- android: report actual provider readiness (c715af8)
- android: report startup and selector failure causes (6c13fc8)
- apple: account for repeated archive projections (e1df5e8)
- apple: budget Interface Builder decoding and projection (dbcf8c3)
- apple: classify empty dyld settings by consumer semantics (#1110) (fe297e5)
- apple: decode bundle plist bytes before executable lookup (d575a73)
- apple: decode Interface Builder XML byte encodings (#1095) (f8e143a)
- apple: derive dispatch coverage from located decode facts (488f448)
- apple: keep skipped catalog entries from reading as absence (a079af2)
- apple: report apps without asset catalogs as empty inventories (e2f0378)
- apple: report apps without asset catalogs as empty inventories (79e5a39)
- apple: report missing keyed archive hierarchy references (#1104) (3b2ec69)
- apple: validate dylib candidates and preserve search uncertainty (#1100) (7914e36)
- apple: validate physical slices and dylib platform compatibility (15f92f2)
- application: budget bridge candidate projection by bytes (3d450a2)
- artifacts: preserve keyed archive integer precision (4034883)
- artifacts: report keyed-archive selection mistakes as invalid input (5a55d5b)
- artifacts: report keyed-archive selection mistakes as invalid input (25fb6d3)
- artifacts: retain failed DMG cleanup state and diagnostics (#1103) (4bb056b)
- browser: advertise zero-based units for runtime source coordinates (#1085) (6218d28)
- browser: bind correlated replies to their selected session (96d3caf)
- browser: bound aggregate source-map decoding before expansion (f983c71)
- browser: bound script metadata and preserve omissions (faf209e)
- browser: bound source-map fetches and retain predecessor requests (eaf5734)
- browser: compose nested source-map column offsets (#1109) (8b08ec0)
- browser: keep initiator callsites out of script coordinate guidance (#1096) (3c157b4)
- browser: normalize selected script manifest roots on Windows (#1078) (b49beb4)
- browser: preserve captures when response bodies are unavailable (96af2fa)
- browser: preserve command failures and reject malformed replies (6b92002)
- browser: treat module-import initiator positions as script positions (ae0630a)
- browser: treat module-import initiator positions as script positions (99d31ee)
- browser: validate and bound source-map evidence (0a0174b)
- build: exclude the test-only generated catalog from packages (#1116) (d1c904b)
- build: make catalogs and packaged skills generated outputs (#1086) (e613405)
- capture: retain Electron observations and HAR resource failures (44fd183)
- ci: align diagnostic regressions and format merged changes (67756da)
- ci: restore generated shard inputs and cleanup assertions (5f93b4b)
- cli: accept exact native names through explicit selectors (c313606)
- cli: drive mcp doctor help from a single option schema (b7d803d)
- cli: preserve blank JSON paths for input validation (#1068) (3dcb732)
- cli: preserve web cancellation exit status (1d9b96a)
- cli: support MCP doctor help (a69b833)
- contracts: preserve local inputs and comparison uncertainty (70e8a8f)
- docs: validate translated links to canonical product facts (34f7c4f)
- domain: order canonical paths by code point, not UTF-16 unit (#1034) (b5c2954)
- domain: preserve prototype-named JSON members through Evidence boundaries (#1049) (40e18b2)
- domain: reject excessive JSON depth with actionable diagnostics (#1029) (bfbfc73)
- electron: bound hook retention and report dropped coverage (02d0702)
- evidence: name the failed constraint when a bundle is rejected (82a1a52)
- evidence: name the failed constraint when a bundle is rejected (cf96ceb)
- evidence: report missing evidence files instead of permission advice (e8b92a4)
- evidence: report missing evidence files instead of permission advice (89252f1)
- evidence: require a complete record before the single-record hint (38bbb65)
- firmware: reject malformed UTF-8 producer reports (4a45c14)
- ghidra: admit Linux arm64 with matching native tools (3e598b2)
- ghidra: harden location resolution and provider lifecycle (1f5be75)
- ghidra: make qualified function renames idempotent (4458128)
- ghidra: parse long procedure selectors without recursion (480b16b)
- ghidra: preserve function references and snapshot boundaries (84a17d5)
- ghidra: preserve POSIX runtime paths with spaces (80c3d36)
- ghidra: preserve source failures and snapshot ownership (704fa76)
- ghidra: preserve Unicode boundaries without breaking sessions (bef234d)
- ghidra: recover regex stack exhaustion without losing annotations (bc4aa46)
- ghidra: reject address truncation before reads and edits (dcae3c6)
- ghidra: resolve exact external function entries (549effa)
- hopper: bind analysis to the active target and correct boundary contracts (2f71375)
- hopper: bind file mappings to verified source bytes (82626c4)
- hopper: diagnose MCP provider failures with stage, state, and request context (#1044) (5a67c7f)
- hopper: enforce caller-supplied request deadlines (#1119) (e8939ca)
- hopper: isolate regex matching from the native API thread (f201b04)
- hopper: load verified FAT64 slices with native Mach-O semantics (0a49d5b)
- hopper: normalize native block endpoints and retain terminal evidence (2847311)
- hopper: preserve launcher evidence on readiness timeout (458771c)
- hopper: preserve native navigation and annotation semantics (f2e22e1)
- hopper: preserve owned basic-block endpoint instructions (#1118) (329cf20)
- hopper: preserve partial native call and string evidence (2461702)
- hopper: preserve typed string values and verify real searches (7d7b3f9)
- hopper: report launcher failures before bridge timeout (#1105) (cd756b0)
- hopper: resolve FAT loaders and original file coordinates (35f1ddd)
- hopper: validate annotation destinations and symbol extents (b2d5bc1)
- hopper: verify lease cleanup and repair the macOS test lane (#1111) (b743bd2)
- inspector: bound retained metadata and preserve cancellation (e714fb0)
- install: guard empty prefix_args expansion on macOS Bash 3.2 under set -u (#1061) (68b9fa4)
- javascript: bound primitive string growth and repeated evaluation (4a1837d)
- javascript: bound semantic expansion and resolve lexical receivers (16f4609)
- javascript: classify direct defaults and argv elements (6495171)
- javascript: honor cancellation before evidence publication (#1098) (cc0ee2e)
- javascript: omit self-referential import edges with disclosure (#1130) (1d7115b)
- javascript: parse plain TypeScript artifact dialects (#1102) (3db4681)
- javascript: preserve HTML carriage return source ranges (#1092) (23862af)
- javascript: preserve lexical open and exact template semantics (d6cc9ca)
- javascript: preserve original BOM source coordinates (#1093) (83defc0)
- javascript: retain NodeNext artifact source facts (#1087) (c1b370c)
- javascript: use Node legacy package entry fields (1706005)
- managed: bind inspection evidence to artifact identity (73b09f4)
- managed: match exact method bytes without decoded signatures (17809ca)
- mcp: flatten root union input schemas (#1062) (6a7650e)
- mcp: preserve retained evidence on oversized delivery (0639a54)
- mcp: retain complete application results across response limits (a1ed423)
- mcp: retain oversized errors before transport delivery (b3f1b4e)
- metadata: stop schema changes churning generated skill evidence (#1075) (d52f66d)
- native: bind signature observations to registered target versions (#1099) (c789af0)
- native: bound retained observations and preserve failure evidence (7c32387)
- native: preserve bridge failure types during cleanup (1d0baa3)
- native: resample tool identity for each invocation (14b19a0)
- native: share command supervision and retain failure output (f2e9c49)
- native: supervise LLDB and preserve bounded capture uncertainty (915855e)
- process: avoid cold ownership helper deadline exhaustion (#1139) (65a809a)
- process: derive executable names from the capture host (#1108) (34cc925)
- process: identify unknown live processes in cleanup diagnostics (eb89a16)
- process: name the reason two captures cannot be compared (#1080) (eb69763)
- process: preserve observations after successful cleanup (2af12a1)
- process: retain ownership after incomplete cleanup (e2fc249)
- process: stabilize native capture and ownership prerequisites (2b27515)
- process: stop failing captures on tokens macOS cannot expose (#1057) (5547c1e)
- providers: validate ELF versions and preserve probe cancellation (8b01e0c)
- release: always bump minor for releases (be783ef)
- release: publish prereleases under the next npm tag (bfb7776)
- release: publish reviewed release PR merges (cdddfdd)
- release: recognize conventional titles in GitHub merge commits (f5009ed)
- release: restore automatic release proposals on main (acb3e0f)
- release: validate frozen checkpoint versions and breaking notes (8a31508)
- release: validate frozen checkpoint versions and breaking notes (60825fb), closes #1063
- select Node legacy package entry fields for import and require (#1035) (1706005)
- session: serialize snapshot lifecycle with admitted requests (e44cb45)
- setup: launch Windows npx registrations through cmd.exe (#1072) (ef30343)
- setup: treat empty client config files as new documents (#1117) (9fd65ce)
- snapshot: retain MCP workflow replay bindings (5e1afe4)
- target: preserve app bundle filesystem failure reasons (d4c2c3c)
- update: accept npm 12 release metadata (#1138) (567a82f)
- verify: close both sides of the browser proxy (f7366a5)
- verify: isolate package archives and published canary caches (3eb7dbd)
- verify: remove stale mocked bridge package probe (826583d)
- verify: report final success only after resource cleanup (ee043e2)
- workflows: keep caller-input details in workflow input errors (#1089) (289aef6)
- workflows: retain residual unknowns through CLI and MCP (0136ee8)
Performance Improvements
- mcp: advertise each tool JSON Schema once per target (#1059) (5ccb924)
- build: avoid duplicate documentation generation (c701376)
- javascript: index configuration and module lookups (67252b2)
- javascript: reuse validated immutable graphs (#1112) (ec6db0f)
Code Refactoring
- artifacts: centralize stable inventory identities (135d102)
- browser: charge source-map records before retention (e762e32)
- config: prune unused format wrappers and launcher export (81ae838)
- input: share schema issue error construction (65a6288)
- setup: validate formats through canonical configuration (4b10665)
Documentation
- add Persian README translation with full language navigation (7a7460f)
- add ten README translations and expand language navigation (a61491a)
- align translated READMEs and website links with English (d83f098)
- celebrate 20,000 GitHub stars 🎉 (#1079) (9455e7c)
- check surrounding cases when changing boundaries (46d195e)
- clarify contribution scope and cosmetic suggestions (1f79002)
- clarify evidence ownership and verification guidance (a9e00b8)
- move Portuguese toward the end of language navigation (2a4979b)
- move star milestone into history sections across readmes (6e6ff7b)
- require partial native facts at provider boundaries (2b86ea9)
- require surrounding boundary checks for review fixes (9833c94)
- testing: prioritize real workflows and distinct regressions (9588482)
- website: add a CTF showcase and FAQ (#1077) (a4d77f0)
Tests
- acceptance: add application workflow MCP parity harness and scenarios (5ac3dc9)
- artifacts: retire simulated mounts after detach failures (f591e37)
- artifacts: verify native directory identity on supported Windows runtimes (#1069) (e94be95)
- browser: pin DOM and source-map URL policy classifications (#1120) (c1d0002)
- browser: reject unmodeled CDP commands in protocol fixtures (017297c)
- classify application scenarios by their actual boundaries (0e0b386)
- cli: verify self-import parity and cleanup (55c9ce2)
- consolidate failure guards and trim unused fixture APIs (ffd9611)
- hopper: cover real boundary failures and CLI parity (64717ad)
- hopper: verify real boundaries and prune redundant happy paths (7005166)
- mcp: serialize real process capture and report unavailable authority (8f9da25)
- process: cover argv rewrites in native ownership inspection (09d7b9b)
- process: distinguish native startup from producer verification (9a70fb4)
- process: expose unavailable capture and unexpected teardown failures (90b06db)
- process: report the cause of terminal capture failures (8a4c4b6)
- process: retain cancellation checks under unverified host cleanup (9a5b077)
- process: retire native caches at worker teardown (a0784c0)
- process: serialize real CLI capture boundaries (82560eb)
- prune redundant cases and promote configuration lifecycle coverage (5945915)
- prune resource-recovery wording assertions (ae06dcf)
- remove duplicate result assertions before throwing guards (a1b7d40)
- session: preserve live binding after cancelled switches (1136ea8)
- setup: scope removal regression to its fixture client (fe48e77)
- workflows: verify residual questions in CLI snapshots (770d2f6)
Continuous Integration
6.0.0 (2026-10-08)
⚠ BREAKING CHANGES
- contracts: MCP filesystem inputs now require absolute host paths, including target/snapshot paths, evidence bundle paths, managed and firmware inputs, browser/Electron launch paths and expected server paths. Calls such as
open_binary({"path":"./app"})must send an absolute path such as/home/analyst/apporC:\analysis\app. Optional paths remain optional. CLI operator-relative paths continue to work. See #948 and #1004.
Features
- artifacts: trace Mach-O dylib resolution in bundles (78d594c)
- browser: inspect historical web network captures (#992) (2bf3663)
- evm: inspect offline bytecode interfaces through EVMole (#1051) (7af7bc8)
- ghidra: support native x86 PE applications on Windows (#1030) (c6dad93)
- native: inspect offline ELF layout through pwntools (#1037) (4fc6565)
- native: inspect recorded crashes through pwntools and pwndbg (#1054) (163ee09)
- native: observe function and Objective-C method calls under LLDB (1d13cef)
Bug Fixes
-
dotnet: validate managed metadata and CIL boundaries (#938) (bda4ada)
-
build: clarify generated-file check hint and drop redundant catalog step (#998) (6f0ef16)
-
release: extend npm propagation window and improve diagnostics (#943) (06b047a)
-
contracts: require absolute local paths for session filesystem inputs (#948) (5b172b1)
-
ci: generate source catalog before shard tests (#1002) (eb8f649)
-
contracts: require absolute local paths for remaining caller-supplied file inputs (#1004) (cbc0dd1)
-
release: publish from explicit source checkpoints (#1003) (64c7188)
-
release: publish from explicit source checkpoints (#1006) (b4fc0ec)
-
javascript: bound semantic node projection for resource safety (#966) (96a46ad)
-
ci: avoid slow Azure archive for the native cross compiler (#1016) (51956c1)
-
ci: decouple stdio smoke tests from Linux display probes (#1014) (93731e1)
-
javascript: complete large-ASAR analysis with file-local projection (#1055) (b9fb438)
-
javascript: recognize digits in artifact URI schemes (#1045) (03424ae)
-
javascript: reconstruct HTML script loads accurately (#1042) (1154f2f)
-
javascript: report application analysis progress on the CLI (#1008) (7b18c58)
-
javascript: resolve module URLs and reject invalid exports targets (#1031) (8d5c88f)
-
javascript: resolve root package exports arrays (#1046) (53409ab)
-
mcp: advertise JSON values without recursive schemas (#995) (7425f70), closes #919
-
mcp: bound capture comparison input schema depth (#1005) (6b55de0)
-
process: preserve partial evidence and verify detached cleanup (#1011) (63cf28f)
-
release: support built-in credentials and refresh release boundary (6a278a6)
-
release: support default credentials and record 5.0.0 boundary (#1012) (6a278a6)
-
release: sync 5.0.0 checkpoint back to main (966cca8)
-
snapshot: replay validated workflow evidence (#984) (1d62e54)
-
windows: allow Java to read retained target snapshots (#1027) (28d5c39)
Performance Improvements
- artifacts: replace quadratic ZIP overlap checks (#1013) (76e7e51)
- javascript: cache canonical export comparison sort keys (#1028) (63ba742)
Code Refactoring
-
build: generate MCP tool catalog at build time instead of committing it (#997) (35a4e18)
-
process: separate capture implementation from analyst workflows (#988) (6aa9afb)
-
artifacts: move inventory and extraction into provider owners (#1032) (6e4535c)
-
remove abandoned test-only analysis scaffolding (c93422a)
Documentation
- improve Korean wording and particles (#1047) (c5d165b)
- simplify the English README and organize guides (#1043) (28f10cf)
Tests
-
process: wait for observable snapshot ctime changes (#999) (161ed91)
-
browser: consolidate CDP workflows and colocate parser coverage (2682904)
-
ci: stabilize browser source identity fixture delivery (#1023) (ed725da)
-
cli: reduce repeated startup and filesystem setup (d88d6c1)
-
consolidate service and process fixtures (f8a53a8)
-
javascript: consolidate source analysis and export regressions (f517a5a)
-
javascript: cover plain long-line loader identities (#1025) (984fc27)
-
mcp: consolidate SDK schema checks and scenario ports (9c3479e)
-
providers: verify framing through client socket boundaries (1fd1989)
-
prune redundant conformance checks and document test priorities (aafdf8a)
5.0.0 (2026-10-07)
⚠ BREAKING CHANGES
- native: preserve incomplete native UI captures (#991)
- android: Android analysis now requires a full JDK 17 or newer with its compiler module for the packaged Java source bridge.
Features
- apple: project macOS bundle anatomy in application graphs (88c940b)
- apple: project macOS bundle anatomy in application graphs (dd3e7ae)
- application: wire Android and Apple inventory graph tools (#852) (e0fd820)
- browser: attribute native execution and listener sources (#917) (b5afa5f)
- browser: capture correlated network content and lifecycle evidence (#797) (f9eaf05)
- browser: trace captured website module imports (#879) (01be082)
- browser: trace captured website source-map locations (#897) (f430c41)
- javascript: recover readable modules with Wakaru (#848) (166dcd2)
- native: decode chained fixups, binds, ObjC categories and properties (a657557)
- native: decode chained fixups, binds, ObjC categories and properties (3e24a72)
- native: open iOS-style and iOS-on-Mac wrapper app bundles (2ed89e6)
- native: open iOS-style and iOS-on-Mac wrapper app bundles (aeebba3)
- web: export captured scripts for JavaScript application analysis (#801) (472b72a)
- website: add a shared back-to-top link (5047373)
- website: introduce REA and the DX-Ball reconstruction (#906) (4e3953c)
Bug Fixes
- address review nits from batch integration follow-ups (#818) (5a0e0ba)
- android: align runtime suffix inference (#977) (fb3749a)
- android: bound fragmented JADX MCP frame memory (#937) (9e39795)
- android: preserve JVM settings and reuse metadata sessions (#908) (eab34a9)
- apple: attribute only application-root components in macOS inventories (5524970)
- apple: count only real framework version directories (2e81e86)
- apple: pair bridge hypotheses within one application root (7acf4e7)
- apple: pair bridge hypotheses within one application root (9226ade)
- apple: traverse keyed archive hierarchy collections (#976) (71ac83f)
- artifacts: accept APFS image disks ejected with their container (d93ebec)
- artifacts: accept APFS image disks ejected with their container (b72c079)
- artifacts: accept the bundle subject when extracting an app bundle (#891) (37d2eba)
- artifacts: decode flat keyed-archive NIBs with data and shared references (b3f013f)
- artifacts: decode flat keyed-archive NIBs with data and shared references (2a4667b)
- artifacts: harden reader lifecycle boundaries (#951) (2366bda)
- artifacts: keep the post-snapshot detach check out of provenance (62634e4)
- artifacts: preserve reader failure diagnostics (#987) (fc4a9a0)
- artifacts: project compiled AppKit actions from the control to its target (b08228d)
- artifacts: project compiled AppKit actions from the control to its target (#905) (900d7c8)
- artifacts: project UIKit runtime outlet and event connections (aa8082e)
- artifacts: project UIKit runtime outlet and event connections (8b24387)
- artifacts: read AppKit connectors from flat keyed-archive NIBs (#900) (27c272b)
- artifacts: read keyed archive dictionaries keyed UID as dictionaries (cfd2b0c)
- artifacts: read keyed archive dictionaries keyed UID as dictionaries (35c82b9)
- artifacts: report which path constraint failed (#847) (3f1a77f)
- browser: distinguish computed call keys from identifiers (#808) (02beb74)
- browser: distinguish WebMCP registration frame owners (#813) (b3b44d8)
- browser: fingerprint cookies at the selected page URL (#763) (78014e3)
- browser: identify NodeNext TypeScript original source artifacts (#811) (e84ad86)
- browser: preserve evidence through deep AST analysis (#924) (f826aa8)
- browser: preserve form destinations and satisfies mutation uncertainty (#825) (6dd719e), closes #820
- browser: preserve Link header value delimiters (#805) (dd36405)
- build: validate installed dependencies before cache hits (#982) (a45fe86)
- capture IndexedDB object-store record fingerprints (#809) (21a8bd0)
- cli: align structured output guard with native flags (#777) (e9fac56)
- cli: emit empty structured filter projections (#914) (2db668f)
- cli: honor the selected native plist path (#773) (0374865)
- cli: preserve output and comparison input validation (#981) (d5c43d6)
- cli: preserve unsupported historical-source imports (#795) (911d580)
- contracts: align CLI/MCP boundary contracts (#946) (4a60738)
- deps: remediate smol-toml advisories (93091ab)
- deps: remediate smol-toml advisories (c55ae3b)
- dotnet: compare members with undecoded signatures by exact identity (28fd49f)
- dotnet: compare members with undecoded signatures by exact identity (d52af3b)
- dotnet: inspect native boundaries of non-managed and malformed PEs (d5f28fb)
- dotnet: inspect native boundaries of non-managed and malformed PEs (d98dcfa)
- dotnet: keep a decoded member unknown beside an undecoded counterpart (76b7020)
- dotnet: keep admitted CLI header facts when metadata is unreadable (e5ba693)
- dotnet: name the shared key in exact-signature ambiguities (7714e76)
- dotnet: treat ambiguous undecoded members as possible counterparts (73370e1)
- errors: report union input issues at the union's path (bddeb63)
- evaluation: canonicalize Unicode argument keys (#980) (0a4caf4)
- firmware: accept the verified Binwalk and Unblob release lines (#844) (bef4321)
- firmware: retain multi-file extraction failures (#978) (8aaf9a1)
- ghidra: admit the 12.1 line and the install's JDK range (#840) (5cbf06c)
- ghidra: select exact packaged bridge scripts (#800) (894c30e)
- ida: share concurrent session cleanup (#950) (f14b6a8)
- installer: validate exact semantic versions (#954) (248972f)
- integrate 24 reviewed browser/native/semantics corrections (#815) (3af3811)
- javascript: advertise the exact empty seed rule and match empty API keys (35e5508)
- javascript: analyze source maps with empty source names (58ef8ac)
- javascript: analyze sources containing empty string literals (e7cbfe0)
- javascript: analyze sources containing empty string literals (11fc3b9)
- javascript: filter keyed-collection receivers only for get/delete (00f707b)
- javascript: handle deep AST traversal and addition without stack overflow (#915) (62b3711)
- javascript: handle deep static member paths (#939) (348c65c)
- javascript: keep bare relative URLs for computed-method XHR (e32028d)
- javascript: keep computed-method XHR request URLs (602d002)
- javascript: keep exact empty env keys and method names (522c2d0)
- javascript: keep exact empty env keys and method names (f7954a8), closes #783
- javascript: keep exact empty require paths and request fields (ad1f6b5), closes #783
- javascript: keep exact empty values in graph identities (f608127)
- javascript: keep exact empty values in graph identities (63012ee)
- javascript: keep keyed-collection reads out of endpoints (9075ce7)
- javascript: keep keyed-collection reads out of endpoints (eb68761)
- javascript: keep literal HTTP methods on storage-named receivers (9f48a76)
- javascript: keep literal-method and URL-literal requests on aliased receivers (e3e7664)
- javascript: keep mutated object initializer values unknown (#752) (6caa38a)
- javascript: keep storage open versions out of XHR endpoints (4f51103)
- javascript: keep storage open versions out of XHR endpoints (898b0f6)
- javascript: keep XHR and client endpoints that receiver spellings hid (05f43ed)
- javascript: leave empty application values unlabeled (527b76e)
- javascript: match exact empty literal channels and seeds (e20da1f)
- javascript: never read window or document open as XHR (ae849a7)
- javascript: preserve computed Electron member uncertainty (3a4a63f)
- javascript: preserve computed Electron member uncertainty (1260cac)
- javascript: project decoded file URL paths (#810) (2572e1e)
- javascript: read open() endpoints only from XHR method/URL pairs (63e0822)
- javascript: read open() endpoints only from XHR method/URL pairs (1be3705)
- javascript: read substitution-free templates as exact strings (c371d6e)
- javascript: read substitution-free templates as exact strings (77cf757)
- javascript: resolve bare source-map and worker URLs next to the script (#890) (45fcd28)
- javascript: retain recovered call argument positions (#929) (e6ba9c3)
- linux: improve Hopper reliability and CachyOS support (#963) (98b2b02)
- mcp: advertise reserved process environment key (#949) (e0d76ae)
- mcp: isolate optional observation adapter failures (#838) (be3cfbf)
- mcp: preserve exact guided prompt context (#761) (66c26f2)
- native-ui: handle incomplete accessibility child collections (#944) (ac3bae3)
- native: inspect plists containing data, dates, and non-finite reals (bc2cd8b)
- native: inspect plists containing data, dates, and non-finite reals (5ead2cf)
- native: keep echoed codesign paths out of signature fields (#865) (4aa2b60)
- native: keep echoed Mach-O paths out of load commands and symbols (ab985c6)
- native: keep echoed Mach-O paths out of load commands and symbols (37fe105)
- native: keep integral plist reals beyond the JSON range as reals (#860) (3b92a2b)
- native: keep plist XML element types for large numbers (f85056d)
- native: keep the resolved bundle plist and permission failures (418a556)
- native: pass Swift symbols to swift-demangle as operands (dd90965)
- native: pass Swift symbols to swift-demangle as operands (6c88094)
- native: preserve incomplete native UI captures (#991) (9f496ef)
- native: report exact plist integers beyond the JSON number range (c9f49db)
- native: report exact plist integers beyond the JSON number range (430c297)
- native: report plist permission denials as access failures (5738a0c)
- native: report why a selected plist cannot be inspected (14f9b3d)
- native: report why a selected plist cannot be inspected (0674fac)
- plist: keep character references beyond Unicode literal (5afd8a8)
- plist: read XML plists containing a proto key (faaee69)
- plist: read XML plists containing a proto key (a08be51)
- plist: report omitted proto entries in signatures and Interface Builder (15ab5db)
- plist: report omitted proto entries in signatures and Interface Builder (6729ee7)
- preserve native UI failure reasons and dedupe version literals (#854) (2d4a910)
- process: clarify Windows capture support and recovery (#798) (50787b2)
- process: harden filesystem snapshot identity and cancellation (#956) (93aa9eb)
- process: retain provider output until streams close (#928) (b929251)
- reference: retain partial imports for unreadable directories (#766) (cffc548)
- release: drive checkpoint releases from frozen branches (fc58fa1)
- release: publish from explicit source checkpoints (49887f0)
- semantics: isolate named function expression bindings (#776) (ae81f64)
- semantics: preserve direct promise ownership boundaries (#758) (e1ca412)
- semantics: preserve empty string property keys (#764) (630bdaf)
- semantics: recognize Node builtin default namespaces (#769) (24a0bf9)
- semantics: retain trailing rest argument flows (#756) (4bfd803)
- setup: accept the pinned Hopper RPM launcher (#933) (dda8e6a)
- setup: read an OpenCode V2 server named type as a table entry (#866) (4e17be5)
- setup: register OpenCode V2 configurations in mcp.servers (957069d)
- setup: register OpenCode V2 configurations in mcp.servers (69d8afe)
- target: decode app Info.plist executables with an XML parser (c57f1b7)
- target: decode app Info.plist executables with an XML parser (c182f72)
- test: disconnect Hopper fixture IPC on SIGTERM (b912b11)
- windows: accept ordinary drive path separators (#791) (b62931f)
- windows: remove cancelled snapshot outputs (#957) (d76f7d1)
Performance Improvements
- artifacts: stream ASAR members without full buffering (#962) (abd7a5e)
- call-path: prune dead ends and enumerate without recursion (#909) (e52fe97)
- cli: defer catalog digests and use canonical cache scope (9a15525)
- cli: defer unused catalog work during command startup (#920) (9a15525)
- comparison: reuse canonical sort keys (#990) (ebb065e)
- dotnet: index declaring-type ranges once per metadata table (#918) (7a9f587)
- dotnet: index ordered declaring-type ranges once per table (7a9f587)
- evidence: scale imports and dependency graphs (#941) (7dc40d3)
- inspector: bound runtime script location authorization (#945) (58381ee)
- javascript: analyze member chains without recursive copying (#932) (dcde958)
- javascript: index Promise return-site ownership (#971) (2cedde9)
- javascript: index semantic fingerprint relations (#942) (c92a344)
- javascript: reduce analysis and source-map work (#955) (c7530f9)
- providers: assemble fragmented responses once per line (#911) (df7151b)
- reconstruction: index coverage evaluation (#983) (f26c8b5)
- setup: reuse initial diagnostics during planning (#940) (118d43e)
Code Refactoring
- add incremental capability migration safeguards (#819) (75f50d8)
- android: group layered source and verification (#873) (8e8921d)
- apple: group artifact producers and verification (#952) (ef1a0cc)
- artifacts: isolate JavaScript file acquisition (#916) (f0a68dc)
- binary: group session selection and snapshot ownership (#886) (dd114d3)
- binary: move production composition outside application workflows (#965) (33d4761)
- browser: align inspector exclusions with canonical vocabulary (#834) (de9593a)
- cli: split core analysis command registrar (#858) (8b9940a)
- colocate investigation record implementation (#867) (bb19c94)
- compose investigation record ownership (#845) (ce73c3f)
- declare auxiliary capabilities from source (#853) (4a6c17c)
- domain: consolidate property-key extraction behind semanticStaticPropertyKey (#823) (764ff05)
- domain: converge comparison mechanics on shared vocabulary (#824) (c13c9d4)
- domain: extract artifact path syntax helpers (#830) (ef535b8)
- domain: extract source-map envelope walk and disambiguate stringValue (#828) (64ebdf4)
- domain: map validation taxonomies and add inventory Result seam (#833) (78f4848)
- domain: split Interface Builder keyed-archive parse from graph builder (#859) (da09706)
- firmware: group layered source and verification (#878) (507e8b3)
- ghidra: extract createClient and load-image attestation (#856) (b7df5b7)
- give Inspector its own capability directory (#869) (021ba69)
- javascript: group application workflows and verification (#896) (0804722)
- javascript: group domain semantics and contracts (#907) (f6a58f1)
- managed: group capability workflows and verification (#926) (28713f9)
- native: group analyst semantics workflows and contracts (#973) (ea4db4c)
- native: split Apple dispatch metadata decode facets (#855) (676959e)
- provider: declare deep capabilities from source (#892) (b808e2d)
- share Android and firmware provider factories (#826) (3ed59b2)
Documentation
- add concise lawful-use disclaimer (#888) (4037c65)
- add DX-Ball reconstruction showcase (#876) (895079d)
- add prominent website and showcase links to READMEs (2ccc86c)
- add README star history chart (#850) (11f27de)
- add website and showcase links to READMEs (#930) (2ccc86c)
- apple: describe directory-based framework plist ambiguity (6d74992)
- audit and improve localized readmes translations and wording (00a6ac3)
- clarify NativeAOT scope and regenerate conformance ledger (c945931)
- fix stale IDA roadmap item, mermaid paths, toolchain wording (d2aed17)
- move quick start up and mark skill install optional (554e9b1)
- note Cloud Agent Node.js toolchain (#837) (6aa6350)
- publish VitePress documentation on GitHub Pages (c78fe69)
- separate ambiguous and unavailable provider recovery (c3f2b8e)
- show task-scoped readiness and provider preference in the quick start (880cca1)
- show task-scoped readiness and provider preference in the quick start (5fd0db3), closes #726
- update release boundary to npm 4.1.0 with Windows native bundle (69be514)
- website: add Notion case study and improve onboarding (a6ba772)
- website: add TH04 bullet-ring case study (f8d84da)
- website: add worked guides and keep Pages publishing manual (#925) (4f25ee3)
- website: clarify guides and case studies (5065fcd)
Tests
- artifacts: report compiled connector records when a storyboard route is missing (d421d3f)
- artifacts: report observed action routes when a compiled route is missing (c60b737)
- artifacts: write the storyboard fixture's action in Cocoa syntax (53bfa7e)
- eliminate fixture races and prune redundant scaffolding (#849) (f72931d)
Continuous Integration
- consolidate macOS native baseline checks (#935) (810fe53)
- verify native arm64 and Intel macOS workflows (#898) (4801a24)
4.1.0 (2026-10-06)
Features
- android: integrate static APK analysis with headless JADX (#738) (904d03e)
- evidence: accept exact retained application references (#734) (d0f3480)
- firmware: integrate Binwalk and Unblob analysis (5a7c769)
- ghidra: add atomic function annotation edits (#709) (9bab553)
- ghidra: admit explicit DOS COM analysis (#702) (5bcb664)
- ghidra: enable Windows x64 read-only analysis (#699) (26881da)
- ghidra: integrate optional NativeAOT metadata recovery (#748) (fb679b6)
- ghidra: verify DOS load images and expose memory evidence (#697) (a6a8f67)
- ida: add read-only GUI and headless MCP providers (#754) (8238232)
- setup: support Command Code MCP registration (#645) (7f1ae42)
Bug Fixes
- android: validate explicit Java runtime (#742) (7390390)
- artifacts: make extraction output tree work on Windows (#753) (c8e66c7)
- browser: classify CSP host sources by their own origin (#707) (1d15bcb)
- browser: keep bare module locations unresolved (#676) (8189081)
- ci: upload Vitest blob reports from current path (77799e6)
- cli: disable unmanaged skill synchronization (433ebda)
- cli: disable unmanaged skill synchronization (2c1bf92)
- cli: fail when JSON input files cannot be parsed (18c1829)
- cli: fail when JSON input files cannot be parsed (3201f05)
- cli: include build step in missing-runtime recovery (6a37346)
- cli: include build step in missing-runtime recovery (ae72abd)
- cli: report reference-source import failures (00eb03d)
- cli: report reference-source import failures (431e8eb)
- comparison: break function collection collation ties (c3d013b)
- comparison: break function collection collation ties (3aaf7e2)
- comparison: break JSON shape collation ties (217e8cf)
- comparison: break JSON shape collation ties (805c338)
- comparison: retain container-only export shape paths (a55b5bb)
- comparison: retain container-only export shape paths (7864d66)
- dotnet: preserve leading Unicode content in metadata strings (#667) (ddea063)
- electron: respect computed option keys and overrides (af48fe8)
- electron: respect computed option keys and overrides (98de338)
- evidence: admit current process provider identity (ab5a1c6)
- evidence: admit current process provider identity (d311940)
- firmware: validate configured executables (#751) (9a4e6da)
- ghidra: preserve request and shutdown failure diagnostics (#647) (19f8cdd)
- ghidra: refuse ambiguous universal Mach-O imports (b1b687f)
- ghidra: refuse ambiguous universal Mach-O imports (6582b24)
- hopper: retain shutdown request diagnostics (8d7071d)
- hopper: retain shutdown request diagnostics (7254871)
- integrate 14 approved fix PRs (668,671,673,675,678-681,685-690) (#705) (cf06115)
- javascript: count all source line terminators (e60aa11)
- javascript: count all source line terminators (03bc6d3)
- javascript: expose result schema failures (6d1f39b)
- javascript: expose result schema failures (99263a7)
- javascript: hash graph and evidence JSON incrementally (#646) (9f42495)
- javascript: preserve path.resolve reset semantics (863ed47)
- javascript: preserve path.resolve reset semantics (4177377)
- javascript: preserve primitive addition coercion (#666) (94cc847)
- javascript: preserve unknown branches in primitive unions (75a75cb)
- javascript: preserve unknown branches in primitive unions (9a2f395)
- javascript: read source-map directives only from comments (#672) (7f1fa64)
- javascript: scope candidate ambiguity to query traversal (6ad62ce)
- javascript: scope candidate ambiguity to query traversal (f94fc79)
- mcp: retain shutdown failure diagnostics (09c249d)
- mcp: retain shutdown failure diagnostics (fd008cd)
- native: inspect mixed-signature Mach-O slices (1dccd0d)
- native: inspect mixed-signature Mach-O slices (66f3cfa)
- native: retain spaced symbols in dyld inventory (#669) (fa02df9)
- native: select concrete arm64e Mach-O slices (f04445c)
- native: select concrete arm64e Mach-O slices (fd3282a)
- process: honor disabled PID normalization in samples (44b3627)
- process: honor disabled PID normalization in samples (a4e5736)
- process: scope comparison unknowns to their evidence (#732) (9dd6cef)
- reconstruction: accept function comparison source parameters (c3bc38b)
- reconstruction: accept function comparison source parameters (7a96391)
- reference: bound Dockerfile language detection (132a3a4)
- reference: bound Dockerfile language detection (53fa559)
- reference: classify test suffixes before extensions (e828acc)
- reference: classify test suffixes before extensions (8b228ae)
- reference: distinguish computed require member names (ba35b55)
- reference: distinguish computed require member names (df6e476)
- reference: preserve unresolved absolute module specifiers (#670) (c8aed47)
- reference: read linked worktree commit provenance (#677) (d565ecd)
- reference: recognize CMake build manifests (#665) (1a24be5)
- reference: retain dynamic import relationships (a5d2986)
- reference: retain dynamic import relationships (b89de8f)
- reference: retain recovered parser diagnostics (11d0ef2)
- reference: retain recovered parser diagnostics (ed3a7f0)
- setup: accept leading BOM in JSON client configs (a5b970c)
- setup: accept leading BOM in JSON client configs (fe843ec)
- setup: align Node runtime checks with package engines (5802ef8)
- setup: align Node runtime checks with package engines (ea0b733)
- target: explain the JavaScript directory analysis route (#733) (8d44b3e)
- trace: match typed seeds against member arrays (65c8797)
- trace: match typed seeds against member arrays (38ebd54)
Code Refactoring
- app: split Setup and ProcessOwnership modules (#628) (3c84080)
- cli: collapse duplicate CLI layer into src/cli (#630) (494d4db)
- contracts: split tool contracts by family (#634) (5295d56)
- domain: consolidate canonical ordering and digest helpers (#624) (ba3869c)
- domain: split error taxonomy into thematic modules (#636) (735c100)
- native: extract FAT header format switch in Mach-O slice selection (#632) (38b2933)
- runtime: centralize safe JSON parsing and preserve error causes (#629) (e7f54b3)
- runtime: name all silent catch causes without changing diagnostics (#637) (5f27e02)
Documentation
- add the official Trendshift badge to README headers (b6c21b1)
- add the official Trendshift badge to README headers (7d4ed59)
- align MCP discovery and skill guidance with the stable catalog (#664) (39db9fe)
- browser: add an interaction example that captures the visible result (#750) (91daaa6)
- clarify onboarding and align provider guidance (#745) (5af1699)
- correct CLI examples and documentation checks (#655) (fc80ea8)
- fix architecture diagram and pretty-print tool catalog (#626) (5e7f35c)
- ghidra: explain first-query deadlines and recovery (#736) (e2c23f3)
- hopper: document HopperTargetLease realpath fallback (#711) (d3f498c)
- installation: pin manual MCP registration to the release version (#658) (8dd1d84)
- update Trendshift repository badge (3f6d6dc)
Tests
- extract shared fixtures, drop knip carve-outs (#627) (55e5eb0)
- hopper: synchronize startup cancellation with launcher readiness (#662) (88a3c3f)
4.0.1 (2026-10-05)
Bug Fixes
- release: allow npm propagation time (2ef02ce)
4.0.0 (2026-10-05)
⚠ BREAKING CHANGES
- Managed comparison metadata adds exact-signature matching and its count, and name_matching now reports exact-signature-fallback.
- setup: unscoped setup refreshes only existing REA-owned registrations. Use --all-detected to configure every detected client. Setup JSON contains a compact doctor summary; use rea doctor for full diagnostics. Cancellation and successful dry runs now exit successfully.
- Remove controlled replay, Node characterization, finite replay-machine, managed runtime planning, and redundant string-tracing tools. Retire process replay, shims, reactive scenarios, custom checkpoints, and active browser replay and origin-scope inputs.
- tools: Removed permission configuration and policy commands, approval fields, filesystem scope inputs, and fixed confirmation options. Process capture inherits the host environment and accepts command names; callers must refresh tool schemas and migrate removed fields.
Features
- ghidra: add DOS MZ analysis and complete function extents (#556) (4f099a1)
- native: add inspection primitives, dispatch traces and approved UI observation (#500) (4fbc501)
- setup: expand agent integrations and verify updates (#577) (6256b68)
Bug Fixes
- artifacts: break directory child collation ties (#587) (b37e47c)
- artifacts: exclude removed paths from unchanged counts (#569) (52bf709)
- artifacts: expand nested ASARs on Windows (#582) (ebb4c45)
- artifacts: interrupt ZIP extraction under backpressure (#594) (50f7e81)
- artifacts: preserve archive entry types and host paths (#581) (28e0f4e)
- artifacts: refresh cached ASAR headers for each inventory (#574) (f5013c5)
- artifacts: resolve parents after archive enumeration (#578) (8eac290)
- artifacts: respect XML plist byte-order marks (#514) (23c4eba)
- artifacts: retain expanded ASAR container parents (#583) (00fa974)
- artifacts: retain relative paths in directory identities (#580) (348323d)
- browser: capture popup network and report early event gaps (#614) (f557207)
- browser: capture selected events in popup pages (#600) (a3bf4a0)
- browser: derive source-map imports from syntax nodes (#588) (bae87b4)
- browser: distinguish duplicate screenshot frame events (#612) (1bd641d)
- browser: ignore duplicate frame navigations and read block-form source map directives (#546) (828395d)
- browser: keep subresource redirects out of page navigation scope (#524) (9c28f3c)
- browser: preserve RGB PNG transparent samples (#595) (9997152)
- browser: release cancelled CDP cleanup without waiting for responses (#517) (488fd5f)
- browser: release discarded source-map response bodies (#611) (8642055)
- browser: resolve redirected source map paths from final URL (#518) (056c123)
- cli: fail commands returning projected analysis errors (#506) (2fd1196)
- cli: reject invalid UTF-8 JSON file bytes (#613) (22acb0d)
- comparison: account for unpaired records after explicit bundle pairing (#603) (12a2e37)
- comparison: match generated names without swallowing symbol prefixes (#596) (5f3ba3e)
- comparison: normalize CFG identity by numeric addresses (#593) (d1e5c0e)
- comparison: require decoded signatures for structural method matches (#604) (4a98c3e)
- conformance: preserve own JSON keys during comparison (#573) (3460eda)
- correct native inventories and bridge error classification (#503) (405732a)
- docs: allow README installation wording to vary (92617f9)
- ghidra: avoid nested quotes in Windows Java options (a574b74)
- ghidra: recover evidenced switch cases and default targets (#579) (b225b0f)
- inspector: preserve lossy Node discovery locations (#542) (84e4361), closes #530
- javascript: avoid invented computed destructuring properties (#507) (80777d9)
- javascript: bind named class expressions in their class scope (#510) (55f0267)
- javascript: classify assignment targets and retain compound-assignment reads (#537) (333d118)
- javascript: correct lexical and dynamic scope analysis (#538) (6fa6f1f)
- javascript: honor computed keys when naming callables, exports, requests and options (#536) (4c8dc39)
- javascript: honor package exports condition order (#591) (8289595)
- javascript: isolate lexical loop bindings (#511) (c30878f)
- javascript: prefer package entrypoints over directory indexes (#575) (bb91abd)
- javascript: preserve literal CommonJS path punctuation (#576) (063cd25)
- javascript: preserve Node exports fallback stop reasons (#606) (adc07f5)
- javascript: respect HTML base URL components (#589) (ffbde92)
- javascript: respect lexical shadowing of require (#509) (6a431d8)
- javascript: retain property reads during updates (#508) (6b7923c)
- managed: classify truncated signatures as malformed (#598) (1b6f054)
- managed: distinguish metadata handles from member accesses (#607) (c73742f)
- managed: recognize PE Thumb and ARMNT machines (#605) (0ce529a)
- mcp: emit valid schemas for empty arrays (#535) (4007b20), closes #528
- mcp: return complete inline Evidence records (#585) (ea9c3da), closes #551
- native: capture Mach-O header metadata alongside load commands (#525) (a8195ba)
- native: decode little-endian fat headers (bede3e3), closes #592
- native: decode Mach protection bits in their proper positions (#586) (6aba6ae)
- native: inspect Apple dispatch metadata in FAT64 binaries (#590) (f3e6582)
- native: inspect the selected universal Mach-O architecture (#601) (2b7bb3b)
- native: match compound otool keys exactly and badge unknown thread entrypoints (#534) (d40502a)
- native: normalize otool line endings and strip plist JSON BOM (#533) (3e4d4d9)
- native: preserve text-valued load command metadata (#520) (bcfb407)
- native: reject signal-terminated command captures (#608) (b81d18e)
- native: reject trailing text in lipo integers and keep multi-word otool keys (#531) (9e30d93)
- native: retain lazy dylibs, normalize version-min builds, limit thread entrypoints (#532) (0f77ada)
- native: retain re-exported Mach-O library dependencies (#516) (4a5673e)
- package: separate agent and Hopper setup support (#584) (205a977)
- platform: accept absolute paths for any host and stop blaming the ceiling for a missing grant (#552) (e793e12)
- process: align provider detach with configured platform (3fff74f)
- repair boundary contracts across CLI and MCP (#597) (9c25dc4)
- replay: keep proto own properties and reject symbol-keyed results (#540) (05bb630)
- replay: link the complete ESM graph before evaluating (#515) (4200a42)
- replay: preserve CommonJS object as ESM default export (#519) (2df6b51)
- replay: preserve Date call and explicit constructor semantics (#512) (9975bd2)
- replay: preserve sparse array positions in result projection (#522) (9d1c363)
- replay: share one seeded generator and present builtins with real identity (#539) (5b51fa0)
- repo: keep dependency links out of version control (#617) (b3223e3)
- skill: remove obsolete grants and audit tool effects (2919def)
- test: improve capture reliability and runner cleanup (#609) (d19686a)
- tools: simplify direct invocation and harden boundary contracts (#555) (b5e9891)
- web: retain uncertainty for incomplete capture inventories (#513) (d8c18f6)
- win32: probe .cmd/.bat runtime shims via cmd.exe to avoid spawn EINVAL (#505) (31ed005)
- workflows: preserve punctuation in filesystem source paths (#521) (5b28a8b)
- workflows: retain container presence in export shape comparisons (#523) (3854458)
Code Refactoring
- config: take the environment as an input at every configuration read (#554) (53fe7d6)
- domain: consolidate duplicated semantic member and literal helpers (#550) (09830da)
- domain: own digest and prefixed identifier shapes in one module (#547) (ea58834)
- host: inject platform and environment instead of reading them ambiently (#549) (5b59b87)
- simplify runtime tools and remove replay engines (#572) (e07b816)
Documentation
- add boundary contract guidance (42e6a8a)
- add Discord community links to README (79bf26f)
- align roadmap with direct tool use (eba709e)
- align translated READMEs and clarify support guides (5b383b2)
- clarify README wording and analysis tool support (97822f2)
- move README image above Discord community (ad86d39)
- place community invitation below README navigation (69a45e0)
- place Discord community below setup command (778e464)
- place setup command above README image (c6d3bdf)
Tests
- setup: isolate client fixtures across host platforms (f73bb0f)
3.2.1 (2026-10-03)
Bug Fixes
- release: tolerate npm registry propagation delay (726b730)
Tests
- release: accept guarded npm publishing (b7bc855)
3.2.0 (2026-10-03)
Features
Bug Fixes
- artifacts: stabilize extraction approval (7eb1a95)
- browser: reject unknown Electron input fields (1860d4f)
- ci: retain artifacts for delayed reruns (07888ec)
- cli: remove ignored result limits (f3645aa)
- consolidate boundary ownership and cleanup failure paths (#477) (2160d4f)
- contracts: align byte read schema with provider (f580d9d)
- ghidra: return complete native analysis results (a66e43a)
- managed: retain every source location (33b2099)
- process: capture complete host probe output (6c68ff5)
- runtime: make observed target role optional (593a8e1)
- runtime: retain complete reconciled graph content (bedd55a)
Code Refactoring
- analysis: remove caller-selected result caps (a8c58c6)
- analysis: remove fixed result quotas (20152a9)
- artifacts: consolidate inventory into inspection (0fe96d9)
- artifact: simplify extraction and inventory results (07ff8b3)
- artifacts: remove duplicate inventory wrapper (aa6eee1)
- artifacts: remove selectors and traversal quotas (8c24272)
- artifacts: select extraction by logical path (7ba3580)
- browser: remove arbitrary capture ceilings (5dd3b46)
- browser: return complete observation evidence (0e2738f)
- browser: return complete scenario observations (e80fe41)
- browser: share authorized main-frame polling (eec75ce)
- browser: share canonical identity digest (a6d9e49)
- contracts: remove duplicate schema aliases (4593c29)
- contracts: simplify workflows and drop readiness tool (7acac61)
- coverage: evaluate inline without workspaces (9e76054)
- domain: encode comparison and lifecycle states exactly (#473) (d65730c)
- domain: share AST property name reader (4f4cc59)
- electron: retain complete active observations (e8c56e0)
- errors: remove stale workspace failures (f570d40)
- evidence: remove obsolete ID resolvers (a3920e2)
- evidence: remove session ledger quotas (dca293a)
- files: use caller paths for local evidence files (c34efca)
- ghidra: remove redundant schema markers (c2a6f4b)
- javascript: remove analysis ceilings (9aec690)
- managed: derive inspection from PE CLI extents (dfad09e)
- mcp: simplify evidence and workflows (6740ed5)
- mcp: simplify tool inputs and inline results (f55c2b9)
- mcp: simplify workflow and observation scope (34d00fd)
- observation: internalize capture budgets (7b3c797)
- observation: retain complete tool results (fa2b6c5)
- observation: return complete inventories (c523c38)
- permission: remove unused authorization helpers (1b0ab75)
- process: remove fixed scenario ceilings (abf7c11)
- process: remove redundant schema version markers (b3aca52)
- process: remove request count ceilings (f2dc749)
- process: remove unused paired experiment (e1d755f)
- prompts: make tool workflows optional (3fd9650)
- reference: share graph index projections (6ee87fb)
- remove cross-version investigation workflow (81996df)
- replay: share sandbox probe arguments (9fca6c0)
- replay: simplify runtime value checks (60cb68a)
- return complete analysis results inline (a2a3243)
- return complete tool results inline (0d96275)
- runtime: retain complete reconciliation outputs (79ea571)
- schema: remove data-only version markers (5457f4a)
- server: remove registration alias (8097ec4)
- server: use canonical elicitation type (bb6a58c)
- test: colocate pure-domain tests and reduce test debt (#471) (e91c8c3)
- test: keep coverage at behavioral boundaries (#474) (d4dc940)
- tools: remove arbitrary workflow ceilings (5f73cb0)
- tools: remove artificial analysis ceilings (2f08c7c)
- tools: remove redundant limits and acknowledgements (bd0e341)
- tools: remove remaining arbitrary workflow caps (ecf3ed8)
- tools: return complete analysis results inline (2a6eb41)
- workflows: simplify evidence reference inputs (24e1fa9)
Documentation
- add REA tool design guidance (#485) (36aeec9)
- clarify aggregate context tools (c7e207c)
- clarify MCP tool design guidance (36aeec9)
- correct inline evidence and Hopper behavior (bf9cce1)
- describe complete application analysis outputs (271b162)
- generalize reverse-engineering workflow (#488) (4ecc7a7)
- improve GitHub issue and pull request templates (c490d85)
- prioritize reusable analysis primitives (#493) (9dd72c4)
- refresh managed conformance manifest (23e56c5)
- refresh tool catalog and cleanup audit fixtures (53db3a4)
- regenerate tool and evidence catalogs (2f604a3)
- regenerate tool and evidence catalogs (f2bbd59)
- tools: clarify complete inline results (3b64c81)
- tools: clarify complete inline workflows (4168174)
- tools: describe uncapped tool behavior accurately (4cea84d)
- tools: update inline workflow guidance (4ad937c)
Tests
- artifacts: exercise argument-free extraction preflight (a6d5b3e)
- browser: assert strict inputs without legacy fields (9ddf22e)
- browser: cover complete screenshot output (3f547ea)
- browser: remove stale input field assertion (60c110d)
- cli: consolidate duplicate setup journey (9bd7e2c)
- cli: remove duplicate browser discovery case (dcb0362)
- conformance: remove fixture generator test option (ea853ce)
- contracts: remove duplicate tool inventories (0ae3c08)
- hopper: name regex search assertion accurately (9240bd8)
- hopper: remove dossier identity assertion (b5c0b5b)
- mcp: align workflow assertions with current guidance (f8bb113)
- mcp: consolidate catalog inventory checks (3afcd64)
- mcp: validate defaults at tool boundary (21241d2)
- remove duplicate export schema acceptance (b783e7f)
- remove obsolete schema version assertions (fe342fa)
- remove stale limits and handoff expectations (acf33d6)
- remove vacuous and duplicate assertions (56e2bf7)
- remove Vitest config test exports (d6e545c)
- replace brittle workflow and readme checks (b3529aa)
- replace implementation lock-in with behavioural assertions (#498) (7ee3f23)
- replay: remove duplicate schema coverage (4ec2343)
3.1.0 (2026-08-09)
Features
Bug Fixes
- ci: guard Release Please PR branch parsing (84cc819)
- ci: guard release PR branch parsing (6838b6b)
- harden evidence lifecycle and MCP contracts (5155924)
- harden structured configuration comparisons (#467) (6901edc)
- npm: preserve explicit setup versions (#465) (1783bf6)
Code Refactoring
Documentation
- clarify agent reverse-engineering promise (ed4a628)
- clarify the agent reverse-engineering promise (#466) (ed4a628)
- npm: simplify current setup command (#469) (8b62b1a)
3.0.0 (2026-08-01)
⚠ BREAKING CHANGES
- export_evidence_bundle now requires a filesystem path and no longer returns an inline bundle.
Features
- make evidence bundles canonical MCP resources (1712e6d)
Bug Fixes
- address MCP resource review feedback (f3b3fb0)
- align aggregate tools with session capabilities (ede91ff)
- ci: align Vitest project worker budgets (f47ee1a)
- ci: allow documented public type aliases (97f6a0f)
- ci: make coverage report merging composable (788f405)
- ci: stabilize Vitest project routing and shards (f07acde)
- errors: preserve actionable analysis diagnostics (0f96bf3)
- mcp: clarify routing and advertise input examples (969519c)
- mcp: clarify target routing and caller diagnostics (3e1e8cd)
- test: bound boundary worker pressure (935721d)
- test: honor boundary ownership and public aliases (92a1c33)
- test: retain subprocess coverage and cleanup (7f46bb1)
- test: retain subprocess coverage and cleanup (dae2b9c)
- test: stabilize boundary timing (f0d8cda)
- verify: follow dynamic Hopper tool availability (281e41f)
Code Refactoring
- preserve provider-neutral runtime seams (a8161f0)
Documentation
- document resource snapshot workflow (2a45d8d)
- refresh generated SDK metadata (c824db1)
- refresh managed completion manifest (59d4659)
Tests
- contracts: cover validation branches (8ccdb33)
- derive MCP SDK identity expectations (ab4193c)
- eval: cover navigation and address tool routing (ba098f2)
- overhaul deterministic suite architecture (48053d1)
- overhaul deterministic suite architecture (513d9b1)
- package: verify npx upgrade on published releases (7b6f7be)
- package: verify npx upgrade on published releases (1f8ad7b)
Continuous Integration
- document deterministic suite ownership (3c42403)
2.7.0 (2026-07-28)
Features
- bytecode: add JVM and Python bytecode providers (1a75f8d)
- bytecode: add JVM and Python bytecode providers (4e0127d), closes #367
- conformance: add portable conformance export package format (91fb87d)
- conformance: add portable conformance export package format (4ee30e4)
- metadata: add deeper ObjC/Swift metadata and database save/licensing (4602efd)
- metadata: add deeper ObjC/Swift metadata and database save/licensing (d7a0753), closes #353
- mobile: add Android APK/AAB/DEX and iOS IPA static investigation providers (18624df)
- mobile: add Android APK/AAB/DEX and iOS IPA static investigation providers (fdeeb27), closes #366
- package: add MSIX/MSI/AppX package, resource, and signature analysis (0ef1b91)
- package: add MSIX/MSI/AppX package, resource, and signature analysis (6c03f83), closes #363
- pe: add broader PE/COFF/PDB static inspection (f942558)
- pe: add broader PE/COFF/PDB static inspection (94e6600), closes #362
- process: replace procfs sampling with event-backed process-tree capture (a5e355a)
- process: replace procfs sampling with event-backed process-tree capture (d5d2e56), closes #332
- protocol: add custom TCP/UDP/IPC/XPC and auth-flow capture (1fb22b4)
- protocol: add custom TCP/UDP/IPC/XPC and auth-flow capture (6fa6f9b), closes #365
- protocol: add gRPC/Protobuf and JSON-RPC/MessagePack capture (54153ed)
- protocol: add gRPC/Protobuf and JSON-RPC/MessagePack capture (3f336fe), closes #364
Bug Fixes
2.6.0 (2026-07-26)
Features
- complete evidence-backed roadmap workflows (1a0931b)
- hopper: report bridge progress diagnostics (7a43420)
- native: inspect API boundaries with evidence (521139d)
Bug Fixes
- setup: refresh stale local npx bootstrap (6d37efe)
- setup: refresh stale local npx bootstrap (90bb161)
Performance Improvements
Tests
- add critical provider workflow coverage (4716fa2)
- hopper: remove brittle diagnostic source assertion (40bf55b)
- investigation: prove multi-version fixture closure (5184816)
- mcp: stabilize lazy-loading verification (7157ab0)
- package: prove artifact cleanup and identity (9522adf)
2.5.1 (2026-07-25)
Bug Fixes
- ci: normalize generated release metadata (d43a461)
- ci: normalize release pull request metadata (119954c)
Performance Improvements
- browser: lazy-load Playwright sessions (305e729)
- dotnet: reuse authenticated artifact snapshots (c5e8871)
- eliminate repeated work in analysis hot paths (fbe442b)
- evidence: validate ledger mutations incrementally (809dfbf)
- javascript: reuse parsed source across analyses (adc4852)
- server: cache advertised JSON schemas (6743644)
2.5.0 (2026-07-24)
Features
- add runtime reconstruction roadmap workflows (1dbb157)
- analysis: add bounded memory and call tracing (8e7709d)
- artifacts: add provider-neutral inspection (d997728)
- browser: capture controlled Playwright scenarios (1ac3118)
- browser: compare scenario and storage evidence (f27dd74)
- javascript: compare source with shipped bundles (697be94)
- javascript: recover runtime semantic effects (38c883b)
- process: support explicit stdin closure (205bf15)
- reconstruction: add obligation ledgers (9d48ca7)
- reconstruction: evaluate end-to-end readiness (38ff741)
- runtime: add passive V8 Inspector observation (8271650)
- server: advertise available tools dynamically (035e114)
Bug Fixes
- analysis: report call-edge truncation (6039b92)
- browser: close scenario containment gaps (1bd65f6)
- browser: contain scenario pages and preserve inputs (24b3dc4)
- browser: require storage fingerprint approval (f0069cb)
- ci: allow slower real browser startup (095c75d)
- ci: propagate readiness verifier failures (9f9f9c3)
- ci: repair cross-platform package verification (1c9e508)
- comparison: preserve uncertainty and v1 inputs (b9217dc)
- hopper: add bounded analysis recovery (e0bc7fd)
- javascript: keep digestless bundle matches unknown (5a76aaf)
- process: expose launcher identity mismatch (62ac73c)
- process: normalize macOS launcher identity (9c3aec8)
- process: tolerate exit during ownership revalidation (a0f8b72)
- reconstruction: authenticate obligation proof boundaries (7b1e3bd)
- reconstruction: bind proof evidence to claims (83b3368)
- runtime: preserve deterministic context identity (9bd2ac5)
- test: use direct Node launcher on macOS (13f3372)
Performance Improvements
Code Refactoring
- application: reuse graph evidence resolution (4e8aa98)
- browser: centralize scenario metadata budgeting (e79e367)
- browser: clarify inspector capture identifiers (ca035a7)
- browser: reuse CDP endpoint parsing (00abf45)
- javascript: centralize source range comparison (c9500d3)
- javascript: share semantic call-site lookup (94a2c60)
- reconstruction: isolate ledger coverage (4f62695)
- server: reuse availability policy type (eeb4349)
Documentation
Tests
- browser: use neutral scenario fixture identifiers (fd25a7e)
- package: stabilize fake Hopper ownership (0b70131)
Continuous Integration
- verify runtime observation and readiness (9349ff5)
2.4.0 (2026-07-23)
Features
- artifacts: support MSIX and AppX packages (6e6cce1)
- expand reactive capture and package analysis (9da1794)
- process: add reactive capture scenarios (69761e9)
Bug Fixes
- capabilities: expose typed availability codes (b906def)
2.3.0 (2026-07-23)
Features
- complete REA remediation program (d25e98c)
- evidence: generate verifier completion ledgers (c02d33f)
- evidence: generate verifier completion ledgers (f5b3e22)
- javascript: add bounded semantic relation graph (b3939ea)
- javascript: add bounded semantic tracing (56c1a66)
- javascript: add local semantic call flow (a26a1c7)
- javascript: expose bounded semantic tracing (508a9cc)
- process: add bounded reactive scenario domain (42f3b9c)
- process: add bounded reactive scenario domain (d34463c)
- process: add direct replay machine runner (3df9a07)
- process: compare declared concurrent traces (d81745c)
- process: coordinate reactive capture effects (b874efd)
- process: coordinate reactive capture effects (db9a831)
- process: record global capture event order (8bcdb98)
- process: record provider and verifier run lineage (02b01d4)
- process: record provider and verifier run lineage (513fa29)
- process: run finite-state replay during capture (820af60)
- process: run finite-state replay during capture (34c583a)
Bug Fixes
- browser: redact transitional target titles (f6095cb)
- cli: retain bundled skill and bias setup wizard toward apply (5692b3f)
- cli: retain bundled skill and bias setup wizard toward apply (fec5c3c)
- cli: route JavaScript applications from analyze (737940c)
- cli: route JavaScript applications from analyze (74965d9)
- javascript: preserve candidate trace ambiguity (8678b57)
- knip: ignore ps binary and in-file schema exports (9960982)
- mcp: preserve investigation input policy (5a908a0)
- mcp: preserve investigation input policy (f4156d9)
- process: bound trace comparison semantics (b4df565)
- process: normalize resize frame timestamps (74d1c7b)
- process: normalize resize frame timestamps (77696df)
- process: preserve nonconforming differences (f1cc485)
- process: preserve replay event causality (d895e49)
- process: protect unrelated Hopper during cleanup (81539c4)
- process: protect unrelated Hopper during cleanup (e4ee4c9)
Code Refactoring
- process: extract capture journal recorder (a32b988)
- process: split trace comparison domain logic (75d5a87)
- process: split trace comparison helpers (6d8ecd2)
Documentation
Tests
- browser: stabilize real shape capture (bb2e243)
Continuous Integration
- remove redundant typecheck, lint, and format compatibility jobs (eb27f01)
- remove redundant typecheck, lint, and format compatibility jobs (aeb5cb3)
- shard coverage tests and skip docs-only suites (c736317)
- shard coverage tests and skip docs-only suites (fa58082)
2.2.0 (2026-07-20)
Features
- artifacts: project mobile application inventories (c6a1a93)
- artifacts: project mobile application inventories (d36b385)
- process: add bounded replay state machines (fea965b)
- process: add bounded replay state machines (dc0c2e5)
- process: compare repeatable paired experiments (e9899c0)
- process: compare repeatable paired experiments (9ab7aa3)
- streamline agent integration and MCP routing (02cb20b)
- streamline agent integration and MCP routing (3e3d458)
Bug Fixes
- align session filters and Hopper verification (d7d6bdf)
- artifacts: align projection provider targets (560dbda)
- artifacts: bound mobile projection candidates (0cc9d46)
- ci: keep tool kind type internal (b9bead2)
- ci: retry published package verification (0810486)
- ci: retry published package verification (c379455)
Documentation
- refresh generated API links (a2089a4)
- update application projection API (b0cb28a)
- update paired process experiment API (a222327)
- update replay machine API (d74f897)
Tests
- budget CLI output variant subprocesses (8d3587b)
- cap workers across all hosts (bc80359)
- inherit root options in Vitest projects (168100e)
- isolate slow filesystem and CLI suites (c2e134b)
- stabilize subprocess-heavy integration suites (a556e94)
2.1.0 (2026-07-18)
Features
- add managed characterization and coverage closure (1943496)
- add managed characterization and reconstruction coverage (02c913b)
- cli: add explicit package-runner setup wizard (891a11f)
- cli: improve setup onboarding (4851449)
- cli: improve setup onboarding (16002ff)
- cli: support package-name setup wizard (1b90e7f)
- doctor: admit the Windows x64 Ghidra boundary (32dda0c)
- dotnet: add BYO ILSpy oracle diagnostics (aa200ce)
- ghidra: add authenticated Windows loopback transport (629ffc3)
- ghidra: bind imports to admitted target bytes (be19c3f)
- ghidra: define the Windows P0 admission boundary (6b1fd16)
- ghidra: inspect Windows headless installations (86e44be)
- ghidra: launch bounded Windows headless sessions (bc0fb45)
- harden authority and runtime conformance boundaries (b537ebf)
- javascript: add binding and constant-value semantic IR (3ea8523)
- javascript: add binding and constant-value semantic IR (3d71bb5)
- javascript: add webpack and rspack runtime adapters (7bccb7c)
- javascript: add webpack and rspack runtime adapters (44c7017)
- javascript: recover commonjs and esm module relationships (9766fc0)
- javascript: recover commonjs and esm module relationships (6c41791)
- permissions: add scoped process capture elicitation (e6cfce3)
- skill: rename skill to reverse-engineer-anything (9356634)
- target: classify Windows PE admission metadata (24274fe)
- windows: define native authority boundary (a1a6b42)
Bug Fixes
- build: preserve native generated-file line endings (00a3078)
- ci: remove retired native rebuild steps (2d22731)
- ci: validate packaged Windows CLI commands exactly (43418ee)
- cli: require explicit setup selections (992ec50)
- contracts: make agent-facing schemas self-describing (0df11dd)
- dotnet: admit real CLI GUID and fat CIL bodies (735973b)
- dotnet: correct CLI pointer and byref signatures (1387be0)
- dotnet: correct CLI pointer and byref signatures (fb9ff56)
- dotnet: downgrade truncated CIL identity and coverage (736a4e1)
- dotnet: downgrade truncated CIL identity and coverage (dae6807)
- electron: keep missing unpacked ASAR entries unavailable (fb6964a)
- electron: resolve package and dirname entrypoints by context (4847fc4)
- electron: resolve package and dirname entrypoints by context (1ac9a09)
- ghidra: preserve native endpoint diagnostics (5970a71)
- ghidra: preserve Windows batch invocation semantics (0ac418d)
- ghidra: validate Windows control characters explicitly (4dccbec)
- managed: emit valid x64 conformance PE (dcd94f1)
- managed: emit valid x64 conformance PE (c52a822)
- managed: preserve page incompleteness in graph and comparison (a6f02a0)
- managed: preserve page incompleteness in graph and comparison (8ee0f04)
- mcp: clarify advertised schema fields (1581e40)
- npm: use latest entry points without install scripts (34252f5)
- npm: use latest entry points, remove install scripts, and rename skill (bf85ee6)
- preserve optional unknown filters (db1efef)
- remove unused boundary exports (49f1ec1)
- satisfy dead-code and generated-doc checks (b15a9ec)
- setup: preserve onboarding after refactor (da48033)
- skill: disclose retired skill cleanup (4c69e61)
Code Refactoring
- adapters: split oversized provider workflows (1a99a60)
- app: split session and CLI workflows (c6ee004)
- domain: split analysis boundaries (e2c868c)
- finish lint cleanup (2bea405)
- managed: split metadata analysis (20c88dd)
- setup: keep planner helpers private (2d1f961)
- simplify authorization boundaries (2e5b443)
- simplify doctor and error projections (37f4ac6)
- skill: keep only the canonical skill identity (a7c1e87)
- skill: remove legacy skill compatibility (8cf0dd2)
- split oversized analysis workflows (af2399e)
- split oversized analysis workflows (3e61a63)
- windows: keep capability outcomes module-private (585f523)
Documentation
- cli: describe every command input (d4be3e7)
- ghidra: define the experimental Windows P0 (8b5ae41)
- managed: align normalized CIL claims with shipped v1 semantics (9a92a79)
- managed: align normalized CIL claims with shipped v1 semantics (3f788e9)
- normalize inherited source paths (d33213a)
- preserve generated source links (2ea375f)
- prioritize agent usability in tool design (ad17fe7)
- refresh Electron path resolution API (734a4ef)
- refresh generated API reference (f5f653b)
- regenerate managed coverage API with Node 24 (e47c00e)
Tests
- add limit monotonicity and partial-evidence regressions (2cce98c)
- add limit monotonicity and partial-evidence regressions (4afd970)
- ci: guard Windows Ghidra workflow isolation (81ed68f)
- ci: guard Windows Ghidra workflow isolation (98540c8)
- cli: cover package-name binary alias (40e2f94)
- hopper: add semantic runtime conformance (da1da3b)
- package: align setup preflight contract (b33ebb1)
Continuous Integration
- ghidra: add Windows P0 acceptance and real-engine lanes (0b35510)
2.0.0 (2026-07-16)
⚠ BREAKING CHANGES
- mcp: require Evidence for managed reconstruction
- mcp: comparison tools now require session-owned Evidence IDs or approved bundle paths, and structured Evidence results use compact references.
Features
- application: add cross-layer graph workflows (778b995)
- application: add isolated JavaScript replay (d86231a)
- dotnet: add managed artifact triage (c251c38)
- dotnet: add managed member comparison (55794d6)
- dotnet: add managed member inspection (98cad37)
- dotnet: add managed native boundary inspection (466b1bb)
- dotnet: add managed runtime correlation planning (5f66cfd)
- dotnet: import managed reconstructions (c506664)
- dotnet: verify managed native boundaries (8cbc125)
- electron: map static process and IPC boundaries (3fa2304)
- electron: reconcile static artifacts with passive runtime (8c67dbd)
- managed: project static evidence into application graph (6194c1a)
- managed: project static evidence into application graph (77178bb)
- mcp: harden contracts and evidence references (ee1cd40)
- mcp: require Evidence for managed reconstruction (d36af5d)
- setup: verify installed skill catalog identity (b2d1f2a)
Bug Fixes
- deps: run freshness check from escaped paths (8a1c128)
- mcp: align runtime unknown argument validation (d1e7220)
- mcp: hide managed workflows without a session (412bbaf)
- mcp: integrate managed contracts after rebase (9c4a93d)
- mcp: normalize inferred field descriptions (a807471)
- mcp: parse adapter inputs exactly once (37c0f39)
- mcp: remove arbitrary schema byte gate (fd08025)
- mcp: remove schema byte compaction (f728295)
- package: accept expected doctor diagnostics (0f2d013)
- test: make host fixtures portable (f23f529)
Code Refactoring
- mcp: remove obsolete managed evidence parser (f7aa191)
Documentation
- analysis: define managed-code evidence boundary (80faff3)
- api: refresh managed reconstruction contracts (2b06433)
- dotnet: refresh managed reconstruction api (cc1e47c)
- refresh application workflow API links (4a30820)
- refresh managed native verification api (849c052)
- refresh managed runtime api docs (798631a)
- refresh runtime reconciliation API (87b2348)
- security: define controlled replay authority (461990d)
- stabilize replay API source links (a8c1057)
Tests
- dotnet: add managed conformance verifier (2b75fcf)
- dotnet: verify managed app graph manifests (5be4051)
- dotnet: verify managed app graph manifests (a5e5c68)
- dotnet: verify managed app manifests (793a948)
- hopper: avoid scheduler-sensitive exit timing (6e6827c)
- mcp: cover strict compact wire contracts (8de25d0)
- mcp: derive sessionless managed inventory (cab7c4a)
- replay: use portable seam executables (3183f47)
1.7.0 (2026-07-15)
Features
- artifact: reconstruct JavaScript application structure (aa46abf)
- domain: add versioned JavaScript Application Graph (2ca5672)
- ghidra: add function analysis and conformance (d8321de)
- ghidra: add private headless provider session (f0e625d)
- ghidra: implement read-only inventory operations (b1c07dd)
- session: add explicit provider registry and target binding (941d710)
Bug Fixes
- address setup, upgrade, and process test regressions (960d759)
- address setup, upgrade, and process test regressions (02f12b9)
- cli: make clean source checkouts start reliably (ed17e76)
- cli: make clean source checkouts start reliably (6ba9765)
- setup: replace managed Hopper on reinstall (0ca93f9)
Code Refactoring
- domain: remove provider-specific target and snapshot state (21da71e)
- process: extract reusable provider lifecycle primitives (70e1a0f)
Documentation
- api: refresh profile source anchors (bd3cf96)
- api: refresh provider source anchors (a7621c2)
- architecture: define provider selection and analysis profiles (75f8696)
- architecture: define provider selection and analysis profiles (f9f2fbe)
- reconcile product documentation with shipped behavior (addc208)
- reconcile product documentation with shipped behavior (54056a9)
- refresh Ghidra inventory API links (a45de27)
- regenerate JavaScript graph API with Node 24 (da4817a)
Tests
- keep package setup verification read-only (acaf030)
1.6.0 (2026-07-14)
Features
- add web and Electron reverse-engineering workflows (be76f80)
Bug Fixes
- application: add explicit investigation replay (7112e1e)
- application: add explicit investigation replay (a6b5ca4)
- browser: keep page endpoint type internal (3743962)
- browser: observe direct target disconnects (9be24f8)
- browser: preserve operation-aware cancellation errors (0aac8aa)
- browser: support page-scoped CDP transports (c4930f4)
- browser: support page-scoped CDP transports (bf96192)
- browser: support relative source map URLs (5231e95)
- cli: confirm project grant revocation (6397e54)
- cli: confirm project grant revocation (7a4cfb4)
- cli: restrict production MCP dispatch (8bd0e5f)
- cli: restrict production MCP dispatch (190e5d3)
- doctor: honor explicit Hopper launcher (c69fe2c)
- doctor: honor explicit Hopper launcher (9208592)
- evidence: enforce the combined record limit (c791802)
- evidence: enforce the combined record limit (834c70c)
- hopper: cancel startup before closing (f471a63)
- hopper: cancel startup before closing (6cc2fdf)
- hopper: select verified Linux demo mode explicitly (46e4052)
- hopper: select verified Linux demo mode explicitly (04c5fd6)
- native: harden command capture edge cases (c2e64a4)
- native: harden command capture edge cases (d39f98d)
- preserve setup diagnostics and clean Knip config (2d1e021)
- preserve setup diagnostics and clean Knip config (5a7ccef)
- process: gate sampling on initialized PTY root (57938a8)
- process: gate sampling on initialized PTY roots (e831a41)
- process: keep validation detail internal (614a119)
- process: restrict cleanup to captured group leaders (40c6f60)
- process: settle exited zombie groups (072ce5a)
- process: settle exited zombie groups (4828326)
- process: stabilize and speed up the test suite (a3b7de9)
- reference: preserve distinct parse failures (e02cb2f)
- reference: preserve distinct parse failures (543510f)
- rollup batch of fixes (b348b2c)
- runtime: apply permission reloads atomically (49e843e)
- runtime: apply permission reloads atomically (3ae7109)
- runtime: serialize permission reloads (7e53dd6)
- runtime: unregister shutdown handlers (71072d8)
- runtime: unregister shutdown handlers (f9e3c23)
- session: isolate availability observers (43766fd)
- session: isolate availability observers (e5a80d4)
- session: reopen replaced targets (e98413c)
- session: reopen replaced targets (5c55999)
- setup: configure every detected client (69744a4)
- setup: configure every detected client (24f9a1f)
- setup: omit aligned client configurations from plan (a86da4f)
- setup: omit aligned skill from plan (d81687f)
- setup: omit aligned skill from plan (2984fa7)
- setup: preserve client config symlinks (85285f1)
- setup: preserve client config symlinks (df87544)
- test: adapt mainReload shutdown seam to registerShutdown signature (0a430c1)
- tooling: isolate concurrent repository checks (fb17156)
- tooling: isolate concurrent repository checks (ab8c5c1)
- upgrade: prevent version downgrades (a204840)
- upgrade: prevent version downgrades (1d1d234)
- verify: reconcile PR-212/215/228 package E2E expectations (cfa110c)
Performance Improvements
- application: scan version artifacts in parallel (528c05e)
- application: scan version artifacts in parallel (c00739b)
Tests
- application: verify packaged MCP replay (6601e0c)
- browser: harden Chrome startup on CI (74c5121)
- browser: route discovery sockets through proxy (e363f0e)
- browser: verify page-scoped Chrome transport (c252536)
- cli: verify packaged policy revocation (3d71737)
- hopper: cover verified Linux rejection (db202c2)
- hopper: retry after cancelled startup (6de726f)
- hopper: verify alternate Linux launcher path (d93257b)
- package: cover aligned setup plan (a597639)
- package: cover config symlink lifecycle (d1ef7a5)
- package: preserve unrelated symlink config (c50e51e)
- reduce test suite runtime (2223da1)
- reference: cover failure normalization (3d5041f)
- runtime: cover idempotent handler cleanup (1bdb59e)
- serialize subprocess-heavy integrations (f46fc7f)
- session: reopen replaced target through MCP (1c32880)
- setup: cover later clients after failure (8f73112)
1.5.0 (2026-07-14)
Features
Bug Fixes
- browser: drop disallowed redirect evidence (8481be9)
- browser: scope CDP events and fail closed (5279d77)
- browser: scope workers and binary frame sizes (dfc06cf)
- harden PTY events and configured roots (ae8b1c5)
- harden PTY events and configured roots (31b40f3)
- permission: defer cache write grants (6a3fd5b)
- permission: defer cache write grants (f840e70)
- resolve triaged correctness issues (2575b30)
- resolve triaged correctness issues (e8ed307)
- resolve validation and artifact edge cases (2468682)
- resolve validation and artifact edge cases (ef7f2f9)
Documentation
Tests
- cli: allow cold-start integration timing (7d5621d)
1.4.0 (2026-07-14)
Features
- core: add typed policy and integrity contracts (190efca)
- identity: derive MCP surface metadata (2722722)
- mcp: expose progress resources and availability (da59299)
- mcp: land policy, resources, and typed contracts (8f79ee7)
Bug Fixes
- ci: keep generated error docs with their owner (3e60e38)
- ci: preserve stacked integration changes (cf8e5cf)
- cli: return nonzero status for operation failures (#121) (00c187e)
- cli: return nonzero status for operation failures (#122) (964620a)
- hopper: complete owned Linux shutdown (#116) (fb51874)
- mcp: preserve migrated revisions and valid links (4149472)
- preserve actionable artifact diagnostics (#119) (7385220)
- workspace: migrate legacy integrity identities (d092d4c)
Tests
- identity: defer live MCP integration proof (74db3fc)
1.3.0 (2026-07-13)
Features
- add guided MCP workflow prompts (08d5b91)
- add guided MCP workflow prompts (24c3adb)
- add persistent cross-version investigation workspaces (c52eb46)
- add persistent cross-version investigation workspaces (41366ed)
- analysis: add provider-neutral persistent snapshots (c439b9e)
- analysis: persist snapshots and close Hopper reliably (c6407ef)
- errors: add caller-safe typed error projections (3be439c)
- mcp: return structured typed tool results (eb38e4c)
Bug Fixes
- bridge: bound regex search work (733a382)
- bridge: bound regex search work (65682ee)
- ci: remove unused setup type export (c5728af)
- cli: render actionable analysis errors (af8c4ef)
- copy: use agent terminology (12060f6)
- errors: improve recovery guidance (77454dc)
- errors: return actionable caller-safe failures (fb0da03)
- hopper: cancel analysis and close documents reliably (179870e)
- hopper: return addresses for procedure relationships (2c707ab)
- linux: start Hopper demo sessions headlessly (32c5080)
- linux: start Hopper demo sessions headlessly (75818d1)
- security: restrict investigation artifact inputs (a2076b4)
Tests
- linux: verify setup through CLI and MCP (67504d2)
- package: preserve unsupported host verification (977119f)
- strengthen MCP prompt acceptance coverage (05fb9b1)
1.2.0 (2026-07-13)
Features
- artifacts: add approved native DMG traversal (24d000a)
- process: add deterministic capture v3 (d0e21f9)
- process: add deterministic capture v3 (5a361a6)
- process: introduce evidence-safe capture v4 (ee4d284)
Bug Fixes
- artifacts: diagnose unpacked ASAR integrity failures (a504342)
- ci: remove redundant process exports (19bb231)
- process: harden capture validation and cleanup (ac78de0)
Code Refactoring
Documentation
- document capture v4 and native mounts (aca518b)
- document process capture v3 (50f4a29)
- process: preserve capture invariants (841990b)
- skill: document capture v4 and DMG mounts (f0a9a3c)
Tests
- process: use deterministic hang fixture (ba15d16)
1.1.0 (2026-07-13)
Features
- setup: make installation explicit and safe (29d92ca)
- setup: make installation explicit and safe (3793889)
Bug Fixes
- preserve requested evidence paths on macOS (0c0e2b8)
- preserve requested evidence paths on macOS (3d0ad79)
Documentation
- api: regenerate TypeDoc reference (0a66cae)
- define REA contributor priorities (5df4ef6)
- explain the installation workflow (1c83263)
1.0.0 (2026-07-13)
⚠ BREAKING CHANGES
- contracts: batch_decompile, get_call_graph, and find_xrefs_to_name now return structured discriminated output shapes.
Features
Bug Fixes
- contracts: keep error schema internal (ac8cc66)
- contracts: return structured workflow failures (4c54ff6)
- native: classify pre-aborted analysis first (dfd598f)
Documentation
- list upgrade in CLI reference (8a24088)
0.5.0 (2026-07-13)
Features
- analysis: harden agent workflows and evidence boundaries (883db91)
- cli: align terminal workflows with MCP (b1912b1)
Bug Fixes
- analysis: accept valid final dossier pages (7c36f36)
- bridge: harden bounded Hopper boundaries (f8e8ea3)
- cli: preserve function provider provenance (c630f41)
- lifecycle: validate owned Hopper process identity (898d6b0)
- process: default capture networking to loopback (bce3398)
- process: keep network approval fail-closed (9526389)
Code Refactoring
- cli: share direct analysis tool types (329fdf6)
Documentation
Tests
- docs: keep localized claims and tool counts aligned (a7b84a9)
- verification: strengthen conformance and real-Hopper checks (0d36976)
0.4.0 (2026-07-12)
Features
- add cross-platform installation lifecycle (cc6a955)
- add cross-platform installation lifecycle (e651cb6)
Documentation
- document installation and Linux support (034563a)
- simplify REA onboarding (e1dfe86)
- simplify REA onboarding (d85b661)
Tests
- add package installation end-to-end coverage (993356b)
- stabilize artifact pagination coverage (f56bdde)
Continuous Integration
- enforce conventional pull request titles (07a0b98)
- enforce conventional pull request titles (3a21f16)
- verify installed package with Linux Hopper (4f97f69)
0.3.0 (2026-07-12)
Features
- add evidence-backed process investigations (cc8681a)
- cli: add guided local onboarding (8ca3db8)
- evolve REA analysis platform (4f18e26)
- identity: rename package and CLI to REA (3d70812)
- mcp: add typed bounded analysis tools (893d2e2)
- session: add dynamic binary lifecycle (f32e718)
Bug Fixes
- boundaries: reject unsafe local inputs (15e8cf3)
- doctor: require an executable Hopper launcher (aee9cb8)
- hopper: launch analysis without stealing focus (ff321dc)
- hopper: make loader selection non-interactive (2b7ef86)
- keep execution options internal (167a824)
- setup: persist detected Hopper launcher (b2866e4)
- setup: preserve consent and startup target kind (a67054f)
- setup: preserve invalid MCP configuration (88f5edc)
- targets: cancel startup and probe PE offsets (66b8d6e)
- verify: tolerate exited Hopper helpers (b167bd7)
Code Refactoring
- cli: share runtime between CLI and MCP (97541d8)
Documentation
- document frictionless binary workflow (ee6d539)
- document the 43-tool workflow (1f235cb)
- record runtime and release constraints (62ede51)
- redesign and localize README (051b6db)
- redesign and localize README (910eda6)
Tests
- add source-built Hopper conformance fixtures (d648bcd)
0.2.1 (2026-07-12)
Documentation
0.2.0 (2026-07-12)
Features
- cli: add guided local onboarding (8ca3db8)
- identity: rename package and CLI to REA (3d70812)
- session: add dynamic binary lifecycle (f32e718)
Bug Fixes
- boundaries: reject unsafe local inputs (15e8cf3)
- doctor: require an executable Hopper launcher (aee9cb8)
- hopper: launch analysis without stealing focus (ff321dc)
- hopper: make loader selection non-interactive (2b7ef86)
- setup: persist detected Hopper launcher (b2866e4)
- setup: preserve consent and startup target kind (a67054f)
- setup: preserve invalid MCP configuration (88f5edc)
- targets: cancel startup and probe PE offsets (66b8d6e)
- verify: tolerate exited Hopper helpers (b167bd7)
Code Refactoring
- cli: share runtime between CLI and MCP (97541d8)