Files
reverse-engineering-anything/docs/specs/analysis/recoverable-budgets/spec.md
T
morluto cb4e5cfbff feat(analysis): make resource budgets recoverable across CLI and MCP (#9706)
* 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
2026-11-10 05:11:20 -05:00

4.1 KiB

Recoverable analysis budgets

Problem

Several analysis workflows discard selected facts at fixed retention boundaries. Existing runtime settings control only some resources. Increasing a deadline, heap, or header allowance cannot repair an independent count or representation limit. Desktop readers also duplicate policy in generated Python.

Related discussions: #6176, #8434, #5808, and #8978.

Requirements

  1. Preserve defaults unless representative completed-task measurements justify a calibration; preserve caller selections, Evidence identity, omission, unknown coverage, and cleanup authority. Changes must not grant new target execution, injection, mutation, installation, or network authority.
  2. Keep source validity independent of retention completeness. In particular, an overlong but terminated kernel modinfo value is not malformed merely because REA omitted its text.
  3. Preserve exact exhaustion causes and give a next action addressing that resource. GDB byte, record-count, and single-line limits must remain distinct.
  4. Offer caller selection, continuation, or a bounded policy override for the reviewed desktop projections, Apktool string tables, JavaScript semantic precision, source maps, historical captures, provider capture retention, artifact/managed representations, and producer admission/output limits.
  5. Interpret each policy at its owner. Parent and child process checks consume the same accepted values; generated Python consumes the desktop policy rather than maintaining independent numeric defaults. Reject invalid values rather than clamping or silently falling back.
  6. Retain justified format, runtime, protocol, and ownership constraints. Distinguish them from adjustable resource policy and external client budgets. A larger delivery page cannot recover facts already discarded by a producer.
  7. A runtime default update affects new accepted operations only. Explicit per-call choices win. Report effective value, units, applicable control and retry/restart scope without claiming active-worker telemetry.
  8. Artifact recognition that cannot examine the selected carrier within its accepted resource policy remains limited/unknown, never examined absence. Preserve the exhausted cause through classification and retained probe facts. Add cohesive per-call Bun, .NET bundle, Node SEA and Godot admission controls at their producing owners, including preallocation and expansion checks.
  9. Desktop task checks must admit the actual shipped seed representation under the same selected view policy as the generated reader. Acquisition/export budgets remain separate from runtime view admission.
  10. Local source-location tracing offers opt-in compact retained delivery and bounded access to mapping alternatives and embedded text. Preserve complete Evidence, source identity, selected positions, unknowns and every equal-point mapping; compact output must not repeat the raw map or entire source text.
  11. Desktop SQLite projections share a configurable per-table encoded-view allowance with generated readers and check it before retaining rows. Keep the independent native SQLite value/record and worker-reply envelopes explicit; a projected-view override does not raise those constraints.

Acceptance

Exercise the exhausted boundary and its advertised repair through the strongest practical public or production workflow. Use small lowered-budget fixtures when they prove the same boundary without large allocations. Preserve independent malformed-input, cancellation, identity, cleanup and fixed-protocol controls. Record real-provider coverage separately from simulated process/protocol tests.

Non-goals

Unbounded analysis, changing all numeric constants, treating format bit widths as preferences, raising another application's client buffer/deadline, recovering lost live observations retroactively, or adding new execution authority.