* 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
2.7 KiB
Implementation plan
Boundary and contract
Extend goBinarySchema in src/domain/go/goBinary.ts with optional
string_literals (evidence_kind: "inferred", items, discovered_count,
aggregate_bytes, max_items, truncated, optional limits_reached), plus
include_string_literals and the Go-owned per-call budget controls on src/contracts/go/goToolContracts.ts and
src/cli/goCommands.ts. Add the string_literals view projection to
src/domain/analysisView/goBinaryView.ts so callers can page recovered literals
from retained Evidence without repeating file parsing.
Implement recoverGoStringLiterals in src/go/GoStringLiterals.ts on top of
BinaryContainer and createFileMappingIndex. Pre-index readable LoadRegion
intervals once in O(R log R) so Mach-O section eligibility runs in O(log R)
with periodic checkActive cancellation checks. Normalize header-scan spans by
pointer alignment phase, merge overlaps, and sort by ascending file offset so
reference_count counts each physical header once and first_header_offset is
minimal. Deduplicate target slices in memory with bounded candidate and rejection
caches before sorting deterministically by (location.offset, location.bytes).
Use exact offset/length keys, so configurable string lengths cannot collide in
an arithmetic key encoding. Resolve budget defaults once in the image reader
and pass that policy to string recovery.
Incremental work and validation
- Define domain/MCP/CLI schemas, limitation notes and
string_literalsanalysis view behavior while preserving default omission when not requested. - Implement
recoverGoStringLiteralsand wireGoBinaryImage,GoBinaryProviderandGoBinaryServicewith cooperative cancellation. - Add unit fixtures across ELF/PE/Mach-O, Unicode format-control filtering, budget/cap truncation, overlapping ELF spans, bounded negative caching and 25,000-section Mach-O indexing/cancellation.
- Extend
scripts/verify-go-binary.mjsviaartifactMcpCallso real compiled Go targets verify both CLI and advertised MCPoutputSchemaparity. - Update the Go binary guide, skill guidance, generated catalogs and documentation route checks.
Effects and compatibility
Default inspect_go_binary calls omit string_literals and preserve historical
Evidence compatibility. No external tool or target execution is introduced; only
bounded offline byte slicing over the admitted stable image buffer runs. The
input default remains 256 MiB; callers can select byte and work budgets within
the advertised runtime representability. Count normalized report bytes before
allocating its JSON serialization. Every exhausted limit carries its own next
request repair, independently of transport delivery.