* refactor(analysis): centralize resource budgets and recovery facts * feat(analysis): expose ASAR and Ghidra runtime admission controls * feat(artifacts): expose reader admission and preserve limited recognition * feat(javascript): expose recoverable semantic precision budgets * feat(web): add recoverable source-map budgets and compact retained views * feat(web): make historical capture decoding budgets recoverable * fix(desktop): enforce selected view policies across capture and export * feat(runtime): make Frida and LLDB retention budgets selectable * feat(native): expose diagnostic budgets and preserve exhaustion causes * feat(managed): expose recoverable snapshot and representation budgets * feat(metadata): make Go and Rust inspection budgets recoverable * feat(wasm): expose representation and producer admissions * feat(evm): expose per-call worker resource budgets * feat(android): make resource and string-pool omissions recoverable * feat(producers): expose command and recorded-capture budgets * docs(analysis): record recovery contracts and integrated validation * fix(docs): link calibration oracle from published verification pages * fix(docs): restore desktop task anchors and receipt links * test(analysis): align fixtures with selectable budget contracts * fix(analysis): remove source-location projector dependency cycle * test(analysis): refresh budget recovery and verifier regressions * test(analysis): preserve format and publication recovery expectations * test(windows): align conformance with owned runtime admission * fix(desktop): preserve selected alias kinds in exported state * test(analysis): align provider fixtures with recoverable budgets * test(desktop): validate emitted alias metadata structurally * fix(ghidra): classify bounded Windows endpoint refusals * test(cli): assert selectable artifact admission recovery * fix(cli): preserve capture provenance in environment builds
4.8 KiB
Bun standalone executables
inspect-artifact inventories embedded Bun module graphs in Mach-O __BUN,__bun,
PE .bun, ELF .bun, and appended trailers. extract-artifact writes their stored
module contents through the existing safe output tree. Neither operation executes
the executable or decompiles bytecode.
rea inspect-artifact ./hello --json
rea extract-artifact ./hello --json
In MCP, open the executable with open_binary, then call inspect_artifact.
Use detail: "summary" for large graphs and inspect_analysis_view to page retained
Evidence. The root metadata's entry_point_logical_path is the reader-owned
location of its entry module. Use it as an inventory logical_paths filter,
then read selected node fields with the returned content identity. This also
works for names mapped to indexed extraction paths. The complete Evidence stays
retained; no source-name normalization is needed in the caller.
The root reports the carrier, layout, module count, entry point, raw flags and
compile exec-argv. Each module retains its source name, loader and encoding values,
entry-point status, sizes and SHA-256. Sourcemaps, bytecode and module-info regions
are separate children. Source names such as /$bunfs/root/main.js remain in
metadata; extraction uses a relative path. Unsafe or non-UTF-8 names receive an
indexed path and retain their source spelling or bytes. Virtual names deeper
than the selected path_parts allowance (default 256) also use an indexed path with an explicit limitation,
preventing unbounded path-tree work while retaining the source fact. Duplicate names remain
separate occurrences; ordinary extraction collision rules apply.
The recognized record shapes are the 36-byte Bun 1.3.3 layout and the 52-byte Bun 1.3.9 layout. These labels identify structural layouts, not a detected compiler version. Bun does not store an explicit revision identifier: unknown table sizes and ambiguous known layouts are unsupported. A future layout that is byte-for-byte compatible cannot be distinguished. Invalid pointers and truncated claimed sections are malformed. An absent trailer without a named section does not establish a Bun graph. Unknown enum values remain raw, with a null name.
Sourcemaps are stored Bun regions, not necessarily standalone JSON source maps. Extracted contents retain their original encoding. Use JavaScript analysis only on compatible source files; bytecode is retained as evidence, not decoded.
Module parsing reads exact metadata ranges rather than loading stored asset bodies or whole pages around small pointers. A cache retains at most 256 KiB and 1,024 ranges for one reader preparation. Cumulative uncached metadata reads default to 256 MiB, checked before allocation or I/O. The module table, decoded strings and combined logical path tree have separate admission checks; by default at most 250,000 distinct path prefixes are admitted before inventory construction. Stored bodies are range-streamed for hashing and extraction. Header/suffix observations are reused only for the same admitted file state, with selected-path checks before publication.
Both artifact operations accept artifact_limits.bun. Its independent controls
are payload_bytes, module_count, representation_bytes, metadata_read_bytes,
recognition_table_bytes, recognition_load_command_bytes, path_parts and
path_nodes. Failed recognition remains explicitly limited instead of proving
absence. ELF section names are examined at their actual offsets, including names
beyond a large section-name prefix. Select artifact_limits.expanded_bytes to
change the aggregate referenced-plaintext work allowance.
For a reported metadata-read refusal, keep the same carrier and retry with
--artifact-limits '{"bun":{"metadata_read_bytes":536870912}}' or the equivalent
MCP artifact_limits object. Omitted fields keep defaults. The response names
the effective limit and exact repair; accepted overrides are reported separately
from caller selections. Changes apply on the next call without restarting REA.
Summary and selected extraction do not change the producer's admission.
See limits and recovery for admission ceilings.
Synthetic tests cover the carriers and malformed declarations. Run
node scripts/verify-bun-standalone.mjs after npm run build:cached for local Bun
verification, and add --docker to compile a Linux fixture with oven/bun:1.4.0.
Bun and Docker are fixture producers only and are not installed by REA.
Layout references: Bun 1.3.3 serializer and Bun 1.3.9 serializer.
The current 52-byte record order can also be checked in the Bun 1.4.4 Rust serializer.