Skip to content

feat: compatibility-first analysis efficiency and domain-module pilot #2016

Closed

Description

@N0zoM1z0

Outcome

Improve end-to-end REA investigation efficiency while preserving the working CLI/MCP workflows of existing users. Implement three increments in this order:

  1. Measure the actual costs and improve known nested result types and caller-selected Evidence views.
  2. Evaluate explicit, task-verified Ghidra analysis presets using the existing analyzer controls.
  3. Pilot a small, statically composed domain-module descriptor for WASM or EVM, without introducing a general plugin ecosystem.

This is a concrete implementation and real-artifact verification follow-up to #740 and #1065. Those issues remain the owners of their broader architecture and performance roadmaps. Evidence lifetime design remains associated with #721; real demonstration coverage is related to #778.

The study starts from frozen main 42b0ed126df7d5b908ac369715378d5e519051b7 (2026-10-12 UTC). Each experiment records its own immutable runtime/corpus/provider pins; later integrations do not relabel the original measurements. Version publication and deployment remain outside this work.

Completion review — 2026-10-14

The original three increments are complete within their recorded scope: measured costs and typed opt-in result delivery; task-scoped Ghidra profile evaluation/lifecycle verification with unchanged defaults; and static WASM/EVM descriptor pilots with exact contracts and retained cleanup ownership. All 34 listed acceptance items have recorded evidence, and all 15 related implementation/experiment PRs are merged and present in main f3534749e564421036ac445f536fc766b038208f.

Measured decisions remain task-specific. Flutter/LocalSend's two actual model pairs reduce total input by 42.38–48.75% and task time by 23.95–30.30%. QGIS SQLite's existing column selection reduces total input by 36.44–57.63%, with mixed task time and no new API. Compact HTTP PCAP summary/page increases total input by 50.54–50.92%, so complete defaults remain the appropriate choice for that question. Descriptor wiring itself is not a token/speed improvement, and reduced Ghidra analysis lost callee facts, so no general fast preset is recommended. CPU/memory safeguards and phase measurements do not establish universal resource savings or verified unavailable terminal counters.

Additional protocols/artifacts/hosts, general plugin SDK/ABI admission, and persistent cross-session engine caches are optional follow-up work rather than unfinished requirements of the original scope. Existing-user and old-Evidence compatibility are supported by the pinned invocations and migration checks; every historical client/platform is not claimed verified. This review reconciles implementation and preserved evidence; it does not rerun the full real-model/provider matrix. The original scope is closed as completed; further measured opportunities are owned by the separate issues listed below.

Follow-up handoff — 2026-10-14

Closed as completed: all 34 recorded acceptance items for #2016 have scoped evidence, and its 15 related implementation/experiment PRs are merged. The original design, immutable measurement pins, positive/negative findings and compatibility qualifications remain here as the completed record. Creating the independent follow-ups does not reopen the original scope or claim new performance results.

Follow-up Issue Completion boundary
Larger/non-HTTP captures #3130 Existing discovery/field/filter controls, repeated dissection and real token/time comparisons
Recorded signals #3131 Decoder/channel/annotation selection and repeated display-page costs
SAZ archives #3132 Existing summary/retained transaction views on genuine public recordings
Qlog recordings #3133 Supported trace/event/summary workflows with truthful declared-event semantics
Large retained investigations #3134 Existing paging, producer reuse and authentic old-Evidence continuation
Remaining real-artifact/provider gaps #3135 Bounded planning: rank at most three precise next pilots, not an all-domain benchmark
Ghidra engine reuse — research gate #3136 Establish demand and measured benefit beyond existing snapshots/#1048 before any persistent cache
External modules — research gate #3137 Establish concrete demand and compatibility criteria before an SDK/loader/ecosystem

All eight follow-ups carry exactly the same labels as #2016 (enhancement, P1: high, area: domain, roadmap, performance, design) and are assigned to N0zoM1z0. Each contains its own analyst question, bounded work, evidence/acceptance contract and compatibility/resource constraints. Broader roadmaps remain with #740/#1065; existing feature owners are linked rather than duplicated. Start with #3130 for the next measured capture round; #3136/#3137 are demand-gated research, not an instruction to implement caches or a plugin ecosystem.

Relevant experimental decisions belong in their new owning issue. PR-specific CI/review/rebase progress belongs in the corresponding PR; unrelated product defects remain in the local team handoff. Existing controls may be sufficient, and a well-supported no-change or unavailable conclusion completes the relevant research task.

Optimization priorities and progressive migration

The two primary objectives are agent token consumption and end-to-end task time. Memory and CPU consumption are also optimization objectives and remain bounded throughout experimentation. Correctness, meaningful Evidence/coverage, caller choices, and compatibility for existing users are acceptance conditions: a smaller or faster incomplete answer is not an improvement for the same question.

Objective What to measure and optimize Interpretation boundary
Agent tokens — primary Necessary model-visible facts and useful provenance; discovery context; total/cached/uncached input and output; calls, retries, errors, and follow-up turns for the same analyst question Avoid overwhelming the agent with unrelated bulk data. Compact JSON byte reduction is a delivery result, not an exact token reduction. A smaller response must still let the agent answer the question.
Task time — primary Time to a factually acceptable answer, including provider startup/analysis, transport, client processing, model turns, and corrections; separate cold/warm conditions and observable stages Fewer bytes or one favorable model trial does not establish a general speedup. Repeat comparable trials before extending a claim.
Memory Aggregate process-tree peak/limit events; retained Evidence; object/serialization expansion; worker/engine usage; verified cleanup Preserve host safeguards and no-OOM operation; moving allocation between processes is not proof of lower aggregate memory.
CPU Aggregate CPU time needed to complete the same question, plus observed stage timings where available The one-CPU quota is an experiment control, not a demonstrated CPU saving. A shorter wall time is not automatically lower CPU work.

Prefer explicit, focused result delivery and reuse of retained Evidence where these preserve the requested facts. Keep existing complete requests available and unchanged. Do not silently reduce engine analysis, truncate Evidence, change source selection, or change a caller's provider to improve a metric.

Verification and migration are progressive. Extend the domain matrix one bounded step at a time, with real shipped artifacts for the changed domain and relevant shared-contract regression checks. Completing every advertised domain in one pass is not required. Native Windows PE and original UPX-compressed DOS MZ have been statically verified through Linux Ghidra in #2216. Native Windows runtime behavior, unpacked DOS editor logic and DOS COM remain unverified; managed PE/CLI does not substitute for native PE. Firmware region inspection, selected JavaScript AST analysis, and browser capture each retain their stated narrower coverage. Preserve unavailable and incomplete outcomes rather than treating them as global successes.

Compatibility directions are explicit:

  • Existing clients / new REA: existing names, accepted arguments, complete defaults, provider choices and session semantics must continue to work. The current pilot is additive and opt-in; existing users need no new pack or request rewrite to retain shipped capabilities.
  • Existing Evidence / new REA: preserve authenticated original records and IDs during import, inline use, new views and export. Actual baseline SQLite/Obsidian migration is recorded in the linked checkpoint.
  • New capabilities / older REA: clients must discover the actual advertised schema and use supported existing equivalents where available. Older servers do not automatically understand the newly added selectors. A universal automatic fallback is not implemented or claimed by this study.

The current evidence is pinned to the recorded baseline, clients and real workflows; it is not an unconditional guarantee for every historical release, OS or third-party integration. The earlier 259e99dd9 runtime grows the complete catalog about 2.6% in compact JSON; the later main-integrated runtime records about 1.4% growth versus the original baseline, including intervening main changes. Keep this discovery cost visible alongside selected-delivery savings. Existing complete requests do not automatically receive the new token-saving delivery path. Newly found REA bugs remain documented locally for later team repair, as requested.

Evidence motivating the sequence

The previous optional Code Mode experiment is pinned at e65a13f54, using the earlier frozen production baseline fb94d9dde0ccda83ae520ac6fb22b1d283562cf3.

Sixteen serial real Codex CLI trials, configured with gpt-5.6-terra high, covered Android, managed PE/CLI, Electron inventory, firmware, and Ghidra native analysis. Twelve passed the requested fact/reference assertions. Two bridge managed answers omitted a classification field; two direct managed JSONL transcripts truncated a producer envelope and prevented complete-envelope reference verification. These are different failure classes, and the stronger complete-classification assertion exceeded the question's general wording.

The bridge did not establish a stable overall speedup:

  • Android bridge repetitions took 48.231 and 134.555 seconds, compared with 67.329 and 71.624 seconds directly. The model did not consistently select one composed execution.
  • Guided Electron inventory reduced total input from 263,484 to 101,994 tokens, but uncached input only from 41,532 to 40,554; bridge wall time was 85.909 versus 67.540 seconds. Context compression is not equivalent to cost or latency reduction.
  • Ghidra took 334.642 versus 327.150 seconds with unchanged analysis settings. Provider CPU remained the dominant measured work.
  • SQLite WASM exposed a frozen WABT row-parser failure. Obsidian full AST analysis timed out with a retained partial reference. Neither is a successful Code Mode result; successful inventory answers do not replace AST analysis.

The existing bridge receives complete upstream results before projecting them. It can reduce model-visible data while retaining upstream analysis, serialization, transport, parsing, Evidence, and guest-transfer costs. REA already has typed domain ports, canonical named contracts, provider factories, owned-process primitives, snapshot replay, and retained Evidence views; reuse these rather than rebuilding them.

Compatibility contract

Compatibility is an acceptance condition for each increment, not a final documentation exercise.

  • Keep the normal distribution usable with its existing capabilities. Existing users must not have to discover and install new packs merely to regain previously shipped tools.
  • Preserve existing CLI command names, MCP tool names, argument meanings, caller-selected targets/providers/paths, defaults, result fields, structured/text delivery, and tagged failure semantics.
  • Do not silently narrow the set of supported old inputs while improving producer output typing.
  • Preserve the default complete-result path. New focused views, module selection, and analysis presets must be explicitly selected; no silent truncation or automatic switch to reduced analysis.
  • Preserve the default complete and stable tool catalog. Any experimental pack-selection profile is explicit and fixed for that connection; opening a target must not remove tools.
  • Configuration changes are additive and idempotent, with backups when files are written. Retain existing environment/configuration names and meanings. Do not install or upgrade unrelated host software.
  • Preserve existing Evidence identity, raw/normalized distinctions, uncertainty, coverage, authority, session retention, and export/import behavior. In particular, do not silently change the default close_binary record lifetime.
  • A derived view receives its own identity and links to its parent Evidence. A caller projection must not masquerade as the original canonical record under the parent's ID.
  • New clients using new capabilities against older servers must discover actual support and use supported existing operations where an equivalent workflow exists; report unavailable capabilities honestly. Never change a caller's provider choice to create an apparent success.
  • Use pinned pre-change invocations, configuration fixtures, and actual CLI/MCP clients as compatibility evidence. Pure composition changes should preserve catalog schemas/digests and public behavior; intentional additive schema/view changes require their own consumer checks.

Target architecture and ownership

The diagram below translates and tightens the architecture proposal. Solid arrows describe interface dependencies or provider execution; dashed arrows describe explicit production composition. Domain and application contracts do not import engine protocols. This is a target boundary map, not a proposal to move every file or ship three new package systems at once.

flowchart TB
    subgraph Entry["Existing entry points"]
        CLI["CLI"]
        MCP["MCP"]
        CM["Optional Code Mode client / bridge"]
    end
    subgraph Shared["Shared application and domain semantics"]
        WF["Typed operations and composed workflows"]
        PORTS["Domain capability ports and canonical contracts"]
        MODEL["Pure domain models, identity, coverage and error semantics"]
        EV["Investigation records and Evidence views"]
    end
    HOST["Production composition: static module descriptors\nnamed registration, typed factories and cleanup ownership"]
    AD["Engine adapters: Ghidra, IDA, JADX, WABT and others"]
    PROC["Owned process, session and resource supervision"]
    ENGINE["Local engines and artifact readers"]
    CLI --> WF
    MCP --> WF
    CM --> MCP
    WF --> PORTS
    WF --> EV
    PORTS --> MODEL
    EV --> MODEL
    AD -->|implements| PORTS
    AD --> PROC
    PROC --> ENGINE
    HOST -. injects .-> WF
    HOST -. constructs .-> AD
    HOST -. binds named contracts .-> MCP
    HOST -. binds existing commands .-> CLI
Loading

The extension roles remain separate:

Role Responsibility Ownership boundary
Domain module Domain schemas, query/view semantics, precise capabilities, and existing registration metadata Reuses pure models and typed ports; does not own a universal engine protocol
Engine adapter Version/support inspection, protocol parsing, analysis implementation, process and target session Implements applicable ports; owns and cleans up its acquired resources
Workflow Compose compatible domain facts to answer a recurring analyst question Uses typed operations and source Evidence; does not construct duplicate engine sessions
Composition host Bind exact contracts to implementations and register acquired resource ownership Explicit static composition first; preserves healthy peers and failed-cleanup ownership

Existing entry points retain their public behavior. The first descriptor pilot is an internal wiring change. A native and a firmware workflow can share an adapter implementation while still requiring separate Program instances for distinct targets. Reuse of a live instance requires matching target/profile/revision and a single clear owner.

Engine sessions and investigation Evidence have different responsibilities, but the first increments preserve the existing record lifetime. They do not silently retain records after close_binary; portable export/import is the initial cross-session continuation.

Increment 1: cost measurement and precise result delivery

Establish a comparable baseline

Record artifact and provider digests, exact revision, operation arguments, analysis settings, CPU/memory limits, client/model configuration, and cold/warm state. Separate:

  • Engine launch, import, auto-analysis, readiness, and first/warm query where those stages are observable.
  • Queue wait and provider operation time.
  • Result assembly, validation, retained Evidence/cache work, serialization, transport bytes, and client parsing/validation where measurable.
  • Tool discovery, model turns, repeated operations, failures/retries, API token usage, complete task time, and useful answer quality.

Add instrumentation at the boundary that owns each measurement. Diagnostic timing must not change canonical Evidence identity or retain an unbounded history. Report unavailable stage measurements explicitly rather than inventing a decomposition from total wall time.

Improve known nested payloads and selected views

Start with inspect_artifact's nested inventory Evidence and the existing inspect_analysis_view machinery. Where an operation guarantees a known payload, advertise and validate its concrete nested structure instead of generic JSON. Reuse canonical schemas to derive authoring types and examples.

For repeated questions such as manifest, entry-kind counts, and selected root occurrence records, offer the smallest justified caller-selected view, with the selection scope, original identities, coverage, unknowns, limitations, and contributing Evidence links. Retain the complete source record under its existing lifecycle. Repeated views must not re-run the producer.

Measure the changed SDK-converted catalog as well as runtime results: a more precise schema can increase discovery size. Validate the declared JSON Schema dialect and actual client calls. View projection after analysis and producer-side query pushdown are separate experiments; do not claim saved engine work from a smaller response alone.

Acceptance:

  • A pinned, reproducible baseline distinguishes measured costs and unknown stages.
  • Known nested output is validated and discoverable through the actual SDK/client boundary.
  • Existing full output/defaults and old inputs remain usable.
  • Focused results preserve meaningful source, selection, uncertainty, and coverage.
  • Retained follow-up does not re-run the producer and survives relevant partial failures.
  • Real large-artifact runs show the measured benefits and any regressions, including parsing/serialization and peak memory.

Increment 2: explicit, task-verified analysis presets

Use the existing REA_GHIDRA_DISABLED_ANALYZERS support and committed analysis profile. First measure default behavior; then evaluate one narrowly scoped alternative against exactly defined analyst questions.

  • Keep the default profile unchanged.
  • Specify engine version, applicable target formats/languages, selected settings, task scope, evidence available, and explicit unknowns.
  • Measure cold startup/import/analysis and warm query separately; use matching CPU/JVM limits.
  • Verify the task's necessary facts, not just shorter wall time. Missing xrefs under reduced analysis do not establish their absence.
  • Keep effective settings in profile/cache identity. Old cached results must not be replayed under a different preset.
  • If later work introduces incremental analysis, it needs an explicit readiness/analysis revision and coverage commitment. That lifecycle change is not required for this first preset experiment.

Acceptance:

  • Existing default invocations produce compatible behavior.
  • The selected alternative is verified on real shipped binaries with pinned questions and producer evidence.
  • Profile differences and limitations are visible; cancellation, failure, cleanup, and snapshot compatibility are covered. Verified in test(analysis): verify real preset snapshot and cleanup boundaries #2349 with actual Linux Ghidra 12.1.4 default/disabled profiles, GNU true and jq snapshot workflows, startup cancellation, invalid-analyzer failure, and permission-induced cleanup retry; this does not imply other OS/provider coverage.
  • Any performance recommendation is restricted to the tested task/format/provider scope.

Increment 3: one small domain-module descriptor pilot

Choose WASM or EVM based on the refreshed source and provider results. Keep one local distribution and explicit static composition. The descriptor should bind existing exact contracts, typed service/provider factories, adapter registration, availability/effects, and owned cleanup. Preserve compiler checks inside each module and validate unknown values at actual dynamic boundaries.

Maintain these ownership rules:

  • Pure domain data/semantics and typed application ports remain independent of specific provider protocols and CLI/MCP implementations.
  • Composition constructs implementations and injects them. A module descriptor must not become a provider-specific dependency in core domain code.
  • Domain, engine, and workflow extensions remain distinct. Complementary Android bytecode/resource/runtime capabilities must not be forced into one interchangeable universal provider interface.
  • Sharing an engine adapter is not sharing one global Program/session. Reuse requires the correct target, profile, revision, and owner; different targets retain separate mutable analysis state.
  • Resource registration happens when the module acquires resources. Failed cleanup retains ownership and permits meaningful recovery; unloading must not discard an owned resource merely because close failed.
  • Optional module failure must preserve healthy peers and disclose the failure.

Acceptance:

  • One domain is wired through its descriptor with fewer independently maintained core registration/cleanup points.
  • Default catalog, old CLI/MCP inputs/results, provider choices, and lifecycle behavior remain compatible.
  • Duplicate names and incompatible contracts fail clearly before use. Scoped to the static pilot: test(evm): verify static descriptor bindings before use #2427 verifies exact operation/CLI/factory/input/output assignability in the complete compiler gate and actual SDK duplicate registration before any provider call. Dynamic third-party ABI/version admission is not introduced; validating unknown provider replies after execution remains a distinct boundary.
  • Actual CLI/MCP workflows cover unavailable providers, malformed inputs, cancellation, capacity, partial failures, and cleanup retry. Linux x64 real EVMole/prlimit verification from refactor(evm): bind offline analysis through a static descriptor #2261 and test(evm): verify real worker cancellation and cleanup recovery #2404, including actual worker replies, late SDK cancellation, permission-induced retained cleanup recovery and a healthy real WABT peer; mid-WASM interruption and other hosts are not claimed.
  • Packaging and generated projections remain derived from owning source.
  • The changed architecture is followed by cross-domain real-artifact regression, not only recording-port tests.

Real-artifact and real-model verification

Reuse the previously digest-verified public corpus where suitable, and add public shipped artifacts for uncovered available domains. Keep binaries, provider projects, raw target output, temporary credentials, and local profiles outside Git. Record acquisition URL/version/digest and preserve exact target bytes.

Lane Initial real artifact / workflow Required evidence
Native jq 1.8.2; add a larger public binary for preset evaluation Target identity, known selected procedures/relationships, default versus explicit profile, readiness and cleanup
Managed PE/CLI ShareX 19.0.2 assembly Assembly/module identity, selected members/native boundaries, complete classification and explicit coverage
Android NewPipe 0.29.1 APK Package identity, selected classes/methods, descriptor/null semantics, real JADX results and cleanup
Electron/package inventory Obsidian 1.14.4 ASAR Complete source inventory retained; manifest/counts/selected paths, contradictions, AST unknowns, view parity
JavaScript/AST Public shipped JavaScript artifact with a bounded, meaningful static question Actual producer facts, partial/timeout outcome when applicable, retained continuation; inventory is not an AST substitute
Firmware OpenWrt 25.12.5 Archer C7 v5 image Real Binwalk/Unblob observations where available, offsets/sizes, engine identity, signature-scan coverage
WASM SQLite Wasm 3.53.4-build1 Real pinned WABT output, format-aware parsing, complete/failed coverage and target digest
EVM Public deployed bytecode with recorded source provenance Original carrier and decoded-byte identities, inferred selector/interface facts and unknown authenticity/completeness
Browser/runtime A controlled owned browser capture of a real public application when the host supports it Actual capture/source attribution and owned lifecycle, with explicit runtime authority

Extend this matrix to other advertised domains affected by the composition change. Distinguish an unavailable OS/engine/input lane from a passed real-provider test. Linux results do not prove Windows/macOS, Hopper, IDA GUI, ADB-device, or other unavailable provider behavior. Real application and real-provider success must never be inferred from simulated ports.

Run comparable fixed replays first to isolate implementation cost, then use real Codex CLI with temporary isolated configuration pointing to the modified REA MCP. Keep the requested model/configuration explicit; initially reuse gpt-5.6-terra high for comparability. Grade requested facts, explicit unknowns, cleanup, and source references against actual producer evidence. Verify per-claim support where feasible, beyond merely seeing a valid ID in a transcript. Save failures, retries, transcript truncation, and timeouts in the results.

Separate cold/warm sessions and cache states, interleave pair order, and repeat representative pairs. Record total/cached/uncached input and output separately without treating token totals as currency cost. Claims remain descriptive until the sample supports stronger conclusions.

Host resource controls

  • Heavy builds/tests/provider/model trials run serially in owned resource scopes.
  • Initial aggregate trial limits: one CPU, 4 GiB hard memory ceiling, 3 GiB early-stop threshold, no swap growth, and bounded tasks; refuse starts when host available memory is low.
  • JVM/Node/worker limits fit within the aggregate budget. Account for object copies, serialization expansion, retained Evidence/cache, and temporary disk before increasing concurrency.
  • Record sampled family memory/tasks, CPU usage, resource-limit events, timeout/abort reasons, and owned cleanup. A limit event invalidates a purported successful performance run.
  • Delete disposable model profiles and copied authentication material on success, failure, cancellation, and timeout. Do not capture the ambient environment.
  • Do not kill processes using a PID alone or touch user-owned GUI databases. Preserve owned resources whose cleanup is unverified.

Deferred decisions

General third-party plugin SDK/distribution, automatic plugin discovery/hot reload, cross-session Ghidra database persistence, and broad shared-query concurrency are deferred until actual demand or measured repeated work justifies their compatibility and lifecycle costs. Code Mode remains optional; this issue does not switch existing users to the external bridge.

Completion evidence

  • Commit the implementation, relevant compatibility/boundary tests, source-authored documentation, and curated measurements.
  • Run appropriate source, focused artifact, typecheck/lint, schema, generated-doc, packaging, and real-provider checks for the touched boundaries.
  • Repeat the available real-domain matrix against the modified runtime after the descriptor integration.
  • Publish a final issue update linking commits and describing what changed, measured outcomes, compatibility evidence, failed attempts, and unverified lanes.
  • Push progress to the implementation branch and create the explicitly requested review PR (feat(analysis): add opt-in retained inventory and WASM views #2122); the maintainer subsequently authorized a verified merge and continued work; version publication and deployment remain unauthorized.

Experiment record ownership (2026-10-12)

Detailed generated result JSON is archived byte-for-byte outside the checkout and excluded from the final PR tree. Source-owned corpus inputs, reproduction scripts, measured findings, frozen revision/digest references, compatibility qualifications remain in the experiment notes. Historical checkpoint commits remain intact.

Latest-main continuation: newer capability efficiency audit (2026-10-13)

The refreshed main pin is f254f5ac2b804b353a711264bb178f43fdf07867, unchanged since the preceding Android merge. This continuation audits features added during the earlier implementation cycle that were not all included in its final performance matrix; it does not claim new commits after that merge. Work is isolated on perf/latest-main-efficiency-20261013 in a fresh worktree. Original completed acceptance evidence remains intact.

Capability Existing delivery/ownership controls on the pinned main Follow-up question
Flutter / Dart AOT (#1582) Pure APK parsing; explicit ABI selection; bounded URI/token projection; separate structural and string-pool coverage Measure a real shipped Flutter app. For snapshot identity/count questions, do unrelated string-pool lists dominate replies? If warranted, reuse opt-in retained views, keep original complete output, exact ABI/target/library identities and lower-bound/partial semantics.
SQLite (#2271) Compact default schema inventory, exact table/column choices and requested row count; owned snapshot/worker Verify existing selections on a public real database before adding any selector. Measure large-value/serialization costs and preserve database/WAL identity and 64-bit values.
Recorded packet captures / TShark (#2318) Explicit fields/filter/decode-as/pass mode; default 50 matching rows; offset/limit/null-complete selection Compare first versus follow-up pages on public captures. Output paging still dissects the input; investigate repeated work without treating page exhaustion as full capture coverage or silently changing two-pass analysis.
Recorded signals / sigrok (#2339) Explicit decoder/channel/annotation choices; default 50 display lines; offset/limit/null-complete selection Measure real upstream recordings and repeated pages. Windows count display lines, not annotations/samples, and still perform decoding. Any future reuse requires clear retained-output ownership and bounded capacity.
Retained unknown heads Existing opt-in paging preserves the old complete default Verify representative large investigations and client selection; do not introduce another competing paging API.
Fiddler SAZ (main a2d8b94) Existing web-capture summary, retained complete/preview pages and archive-member coordinates; all-record decoding before ordinal selection Measure genuine public SAZ using existing delivery; preserve exact encoded bytes, partial/failure semantics and credential redaction. Real SAZ performance remains unverified here.
aioquic qlog JSON (main bb154d1) Existing capture summary/pages and qlog views; supported aioquic 1.5.0 / qlog 0.3 JSON; trace-scoped interval unions and endpoint declarations Measure supported real recordings and existing views. Do not equate endpoint-declared loss with proven network loss, infer recovered bodies or PCAP correlation, or silently accept other layouts. Qlog performance is unverified in the Flutter cohorts.
Frida / attached IDA / live runtimes Existing target/authority/ownership boundaries remain in force Separate passive/static efficiency work from execution/injection. No new runtime authority, automatic target launch, provider fallback or GUI database mutation is part of this continuation.

First bounded experiment: official LocalSend 1.18.2 arm64 Android APK, release asset SHA-256 82ec3568fba2aa5295b9aae8b76f701d7a4703d86b9f8bad749472038fbaeab3, 46,558,706 bytes, from the official release. Analyze bytes only; do not execute the APK. The existing frozen runtime 28c84e78cf2fbfde4aceed345b773c59eb889f68 has byte-identical production source to this main pin, so baseline receipts retain that actual runtime revision and digest rather than being relabeled.

Proceed from measurement to one justified change, then repeat equivalent real SDK and Codex tasks. A smaller response alone does not establish lower model tokens, latency, CPU or memory. Do not duplicate SQLite/packet/signal selectors that already exist, introduce generic plugin/cache infrastructure, silently change full defaults, or fix unrelated REA defects. New unrelated findings remain in the separate /tmp handoff.

Continuation acceptance:

  • Record bounded real-artifact baseline, source/runtime/provider identity, requested facts and costs for the selected new lane.
  • Justify the smallest implementation from observed cost; preserve old requests/full defaults, caller choices, partial facts, Evidence identity and owned cleanup.
  • Verify retained/portable reads and affected schema/CLI/MCP boundaries, distinguishing fixtures from real application evidence.
  • Repeat actual model/task comparisons with total/cached/uncached input, output, time, errors and quality; retain regressions and failed attempts.
  • Commit/push source and curated evidence, review exact-head CI and merge only after verification. Anonymous author email and requested co-author trailer remain mandatory; no release/deployment.

All heavy local work stays serial under one CPU, unchanged 3 GiB early-stop / 4 GiB hard memory / no swap and owned task scopes. Kernel payload-phase observations remain distinct from unavailable whole-scope final counters. Downloaded binaries, raw replies/models and configuration stay private outside Git.

The selected Flutter lane verifies real LocalSend SDK pairs, previous-runtime complete defaults/portable Evidence and four factually correct Codex answers. Detailed paired results retain failed/repeated attempts and unknown final counters. Total input falls 48.75% / 42.38%, uncached input 33.63% / 42.52%, and task time 23.95% / 30.30%; SDK bytes fall 92.05% while SDK workflow time is approximately unchanged. These are one app/question/configuration results, not all-domain completion.

Latest-main Flutter continuation completed (2026-10-13)

Flutter delivery implemented in #2455, commit 23de4f77c74dd299d45cab880c36321d802b21fe.

The five continuation acceptance items above are complete for the selected Flutter lane. Curated LocalSend SDK/model/migration measurements preserve exact frozen pins, all attempts, cached/uncached usage and unknown final resource counters. Reply bytes fall 92.05%; both actual Codex pairs pass selected factual checks with 42.38–48.75% less total input, 33.63–42.52% less uncached input, and 23.95–30.30% less task time. SDK workflow time stays approximately unchanged. These are one app/question/configuration results including actual model retries/repeated calls, not universal or engine-speed claims.

Real Flutter compatibility checks preserve complete/summary SDK facts, all 2,716 original strings through 15 old-Evidence continuation calls with the APK absent, and unchanged CLI complete facts/subject/parameters/ID. The integration runtime file-table digest is 614e687629c8b92424fa33e655848bde92922c40c7dd6953bff6af2d10c61961. These migration checks remain separate from the frozen model measurements and unknown terminal resource counters.

SQLite/QGIS and compact-PCAP continuations are complete, with recorded no-new-API decisions. Larger/non-HTTP TShark, sigrok, SAZ, qlog, retained investigation paging and remaining coverage planning are tracked in the follow-up issues below. Plugin SDK and cross-session engine reuse remain demand-gated research. Original acceptance evidence and the gradual compatibility-first migration plan remain intact.

Next real-data round: verify existing controls before adding code (2026-10-13)

Explore carefully: if measurements do not establish a useful improvement, do not implement another optimization. This SQLite round is pinned to main 172407787f1842dedbcd27b5385177595f786ce4 and makes no real-Windows performance claim.

Re-check existing SQLite, packet/signal and SAZ/qlog selectors. SQLite already defaults to compact inventory and exposes exact table/column and schema-scope choices; unselected cells are not evaluated/projected. Packet/signal tools already expose fields/annotations and output windows. SAZ/qlog already have retained summary/page ownership. Do not duplicate these controls or introduce a cache merely because it could exist.

First real target: QGIS's shipped world-map GeoPackage, from immutable official source commit e1223b8e9e71fc50ee995ed556f711c54ccc101b, 12,914,688 bytes, Git blob c9ff80228dff0de93c9acdef16a97545ba360244, SHA-256 01d293159d1b77bd9212b5252587853f61aa9e25b2387135f34afaba8d057190. Official asset and upstream provenance. Downloaded bytes match the upstream Git blob. This is actual application data, not a generated REA fixture; QGIS is not installed or executed.

Compare the same requested SQLite row facts through public REA CLI/MCP: table default/all-visible columns versus existing exact columns, then compact inventory scope when it still answers the question. Keep the same row limit and preserve typed 64-bit integers, exact text bytes, SQL NULL, database/WAL identity, engine identity, original limitations and explicit unspecified/truncated row order. Preserve both original schemas; scope differences are not silently erased. Fresh process state is distinguished from host page caching. If source projection changes observed row order, record it rather than claiming equivalent samples.

If SDK results justify a treatment, repeat actual Codex CLI tasks with the same question and tool set, requested gpt-5.6-terra high, isolated temporary configuration and measured REA runtime. Report total/cached/uncached input, output, whole-task time, failed/repeated calls and factual quality. Fewer reply bytes alone are not a model-token or speed result. Keep negative/no-benefit findings and avoid production/API edits if existing controls suffice.

Round acceptance:

  • Record actual current-main/corpus/runtime identities, existing controls and real-artifact baseline.
  • Compare equivalent selected facts and preserve original scope, precision, provenance, source bytes and relevant CLI/MCP contracts.
  • Repeat justified real-model comparisons with all attempts and honest token/time/resource scope; explicitly record no-benefit results.
  • Record the evidence-led decision (including no production change), commit/push useful reproduction/curated findings, and verify any resulting PR before normal merge; no release.

Unchanged safeguards: heavy work serial, one CPU, 3 GiB early stop / 4 GiB hard memory, no swap, owned task scopes and host-availability checks. Payload observations do not certify missing final whole-scope counters. Raw binaries/replies/model traces/configuration remain private outside Git. Unrelated REA defects are handed off in /tmp/rea-analysis-efficiency-bugs-20261012.md, not fixed in this round. Other domains remain incremental, not claimed complete.

SQLite round result: existing controls suffice

No production/API, default, provider annotation, SDK or cache change is justified. The current shipped tool already preserves full selected-table schema while columns: ["fid", "NAME", "ISO_A3"] avoids unrelated geometry values. QGIS SDK replies fall from 485,277 to 18,509 bytes (about 96.2%). Both paired selected-fact comparisons pass; full SQL/schema/null/tagged sample facts and database/WAL/engine identity remain intact. SDK time and CPU do not improve: selected workflows are slower in these observations, and timings vary substantially. Keep those results rather than crediting bytes as speed.

Four corrected actual Codex trials (requested gpt-5.6-terra high, one exact enabled tool, same frozen main runtime) pass every selected fact and cleanup check. Total input falls 57.63% / 36.44%, uncached 54.14% / 44.08%. Time is mixed: 4.17% slower / 14.39% faster; output 10.77% lower / 6.94% higher. Actual repeated calls stay counted (all=2/2, columns=1/2). This supports scoped existing-selector token savings, not a stable speedup or a new mechanism.

The initial four model calls were blocked by the isolated client's approval policy and have no SQLite result; all factual grades fail. The experiment driver now uses its existing exact per-tool approval entry for SQLite while exposing only that selected tool. Corrected cohorts are separate; original failures and costs remain retained. No global Codex configuration or REA authority/annotation is changed.

Actual CLI inventory/all/columns results, subjects, caller parameters and IDs equal corresponding complete MCP records; original bytes remain unchanged. Independent read-only SQLite 3.40.1 binding agrees with exact table SQL, eight declared columns and tagged sample. Six existing context/driver tests, Python compilation and JS syntax checks pass. Missing terminal whole-scope counters remain unknown; narrower payload observations verify cleanup and phase events.

Existing SQLite documentation and skill guidance already recommend column selection; the measured result does not justify a redundant product change. Other domain lanes remain incremental.

SQLite round completed — PR #2489

SQLite experiment #2489 merged as 45984a4319c8b6dcf2b03e969fbd4330c8432394. The change is confined to seven experiment files; production implementations, APIs and complete defaults are unchanged.

SQLite measurements remain pinned to main 172407787f1842dedbcd27b5385177595f786ce4. Real CLI/MCP parity and independent read-only SQLite access agree on the requested schema/cells. Subsequent SDK compatibility checks preserve selected facts and source bytes without extending the model-performance scope.

The SQLite factual grader distinguishes missing from explicit null and preserves exact JSON scalar types. All four stored model answers pass; omitted wal and boolean row_limit mutations fail. Original blocked trials, transcripts and usage remain private and intact; review fixes do not rerun models.

Decision remains use existing controls; no new production optimization. SDK reply bytes fall about 96.2%; actual total model input falls 57.63% / 36.44%, uncached input 54.14% / 44.08%. SDK time/CPU show no improvement and model time remains mixed (4.17% slower / 14.39% faster). These are QGIS/schema-and-sample observations, not universal speed or memory claims. Resource controls remain one CPU, 3 GiB early stop / 4 GiB hard memory and no swap; unavailable final whole-scope counters remain unknown.

All four acceptance items for this round are complete. Other packet/signal, SAZ/qlog and application/platform questions remain incremental evidence-led follow-ups; continuations are tracked in separate issues below. No unrelated REA product bug was identified in this round.

Packet-capture real-data round (2026-10-13)

Main is pinned to 3ae826ceba6f25b08bce50bcb51001209bc16b57, with 23 post-SQLite commits, including bounded PCAP summaries/retained pages, authenticated artifact subjects, unknown-snapshot reuse and shared transcript grading. The new PCAP family already exposes complete defaults plus opt-in summary/pages; do not duplicate it. Existing selected-field TShark inspection remains a separate analyst boundary, not an interchangeable complete-inventory claim. Work is isolated in perf/2016-packet-real-data-20261013.

First targets are the unmodified HTTP request/response and HTTP redirects recordings published on the official Wireshark sample-capture page. Pin downloaded sizes/digests and original URLs; do not claim an independently published upstream digest where none is supplied. These are saved captures, not newly acquired traffic or executions of recorded targets.

Fix one question: complete capture identity/metadata, all observed and retained inventory counts, source coverage/limitations, and the first two retained HTTP URIs in original order. Compare existing complete inline delivery with summary plus an exact retained URI page on the same frozen runtime. Extra RPC/schema/retry costs remain counted; an exhausted URI page does not prove network completeness. Start with small real captures, where extra paging may be a net loss. Use actual CLI/MCP and independent raw capture facts; actual repeated model tasks determine token/time effects when the comparison remains justified. Negative results are useful and do not justify changing defaults or adding production mechanisms.

  • Pin runtime/corpora and inspect actual live contracts before measurements.
  • Compare equivalent selected facts through real complete and summary/page workflows; preserve original replies and independent validation.
  • Record completed-task token/time/CPU/memory evidence, failed/repeated calls, and justified unverified scope.
  • Make the evidence-led decision, save useful reproduction/results, and verify any PR before normal merge; no release.

Resource controls remain unchanged: serial heavy work, one CPU, 3 GiB early stop / 4 GiB hard memory, no swap and owned scopes. New providers or target execution/mutation are outside this round. Raw captures, replies, model traces and temporary profiles remain private. Unrelated REA defects go to /tmp/rea-analysis-efficiency-bugs-20261012.md for team follow-up, not fixes here.

Small-PCAP result: complete delivery wins on total input

Two unchanged official Wireshark recordings are pinned: HTTP http.cap, 25,803 bytes / SHA-256 25a72bdf10339f2c29916920c8b9501d294923108de8f29b19aba7cc001ab60d; redirects http_redirects.pcapng, 47,804 bytes / SHA-256 ff432a6b71d06cd20720f7763e584014edd0a43c3b55981c682d1b7640207abc. Local hashes pin downloaded bytes; upstream independently published digests remain unknown. Frozen main runtime file-table SHA-256 is db050545e94dc305a48042e06df96ac6c64b21ee6c5c4707c787d5e46df79e47, Linux/Node 24.18.0, SDK 2.3.1, actual Wireshark 4.0.17.

Eight real SDK trials (complete/summary/summary/complete per recording) match selected metadata/counts/URI facts, settings and source bytes. Original delivery limitations/IDs/source-versus-page coverage remain retained separately. Complete replies are 7,601 / 7,535 bytes; summary plus a URI page totals 17,540 / 17,240 bytes. All four SDK pairs are slower and consume more payload CPU; memory is mixed. Fewer bytes are not inferred as tokens.

Four actual Codex CLI 0.161.0 tasks (requested gpt-5.6-terra high, same question/runtime/providers/two enabled tools) all pass selected facts. Complete input is 38,947 / 38,917; summary/page input 58,779 / 58,584: total input increases 50.92% / 50.54%. Output increases 52.95% / 51.48%. Uncached input is mixed, 28.75% lower / 28.74% higher; time is mixed, 103.41% slower / 52.37% faster. Cached input stays included in totals; actual reasoning/output and all calls are retained. No extra/repeated/failed MCP call occurs. Original bytes and all temporary-profile cleanup checks pass. No caching/time cause is inferred.

The initial summary grade rejected equivalent explicit labels and a URI object carrying correct page/source coverage; this was an experiment-grader representation issue, not incorrect model facts or a REA defect. The grading boundary now accepts those known forms while rejecting omissions, wrong types, contradictory duplicates, false page exhaustion and unsupported claims. Original reviews/source/answers remain intact; no model is rerun. Nine context/grading regressions and four mutations of a real stored answer pass their intended positive/negative checks.

Independent stdlib raw PCAP/PCAPNG/Ethernet/IP/TCP/HTTP-header parsing agrees on 43/271 packets, endpoint counts, URI prefixes and 2/23 distinct HTTP URIs, without invoking Wireshark. DNS associations, protocol-stack dissection and nullable timestamps are not independently validated. Both actual CLI complete results match full MCP result/subject/parameters/ID/limitations; portable CLI summary/page normalized facts and subjects match MCP retained views, preserving distinct caller/source forms.

Decision: no production optimization. Keep complete defaults and existing explicit choices. These compact captures and this question do not justify a new API, automatic summary switch, plugin layer or cache. Larger captures, other protocols/platforms and model workloads remain incremental/unverified.

Heavy work remains serial under one CPU, 3 GiB early stop / 4 GiB hard memory and no swap. Build peak is 2,575,732,736 bytes; payload cleanup/zero phase limit events are verified. Missing terminal whole-scope counters remain unknown and strict resource grades false. Raw captures/results/traces/config remain private. No unrelated product defect is identified or fixed; no release is performed.

PCAP experiment acceptance and completed decision

PR #2640, commit c7105d9723c835b5e0122f5fc6cfbea86265c349, preserves the negative compact-PCAP result. Curated corpus, source/runtime pins, measurements and reproduction. Final scope is nine experiment files and one discovered evaluation test; production APIs/defaults/cache are unchanged.

SDK acceptance authenticates complete/summary/page Evidence through the pinned runtime's existing parser. It preserves subject/path/digest, exact requested facet/range/coverage and JSON scalar values, producer/tool/operation ownership, unique reply IDs and linked retained-parent ID/digest. Present normalized limitations/unknowns must be string arrays; absence and valid empty arrays remain distinct. Legitimate summary delegation is preserved.

Factual and exact-workflow grading are separate. Workflow acceptance requires the planned ordered calls/arguments, successful readable replies and exact citation cardinality. Failed or malformed replies retain diagnostics and supported partial facts. Synthetic fixtures and consumer fault injections establish acceptance guards, not real-provider malformed behavior.

All 18 original SDK/model receipts authenticate. Thirty-four context/grading regressions, six discovered comparator scenarios and all four stored model answers pass their recorded checks without model reruns. The comparator uses the existing evaluation project; the duplicate manual suite is removed. Original bytes/tokens/timers and runtime 3ae826ceba6f25b08bce50bcb51001209bc16b57 remain unchanged.

Decision: for these two compact HTTP captures and the fixed metadata/URI question, summary/page total input worsens about 51% in both pairs; keep existing complete defaults. Other question/domain results are not inferred from this corpus.

Future bounded comparisons may use existing protocol/field discovery to select exact fields on real non-HTTP captures, counting discovery/schema/RPC/retry costs and preserving provider-specific field identity. Larger captures, signal, SAZ/qlog and application questions remain unmeasured lanes. Plugin SDK and cross-session engine caching remain deferred. Further opportunities are tracked in the separate issues listed below.

Activity

  1. self-assigned this
    on Oct 12, 2026
  2. added
    P1: highHigh priority issue for current or next iteration
    roadmapMulti-issue implementation roadmap
    performancePerformance regressions, scaling limits, and bounded-resource work
    designArchitecture, provider, or contract decisions needed before implementation
    on Oct 12, 2026
  3. N0zoM1z0 commented on Oct 12, 2026

    @N0zoM1z0
    CollaboratorAuthor

    Initial implementation source pins on feat/compatibility-first-analysis-20261012:

    • 16338af50: public SDK/Transport cost measurements, pinned real-artifact provenance and an owned, resource-bounded experimental runner.
    • dc8a19cec: precise current inspection output types and retained/portable inventory summaries and pages, preserving the complete default producer output and historical nested Evidence parsing.

    The inventory checkpoint passed 47 related CLI/MCP/domain/service tests. The public boundary scenario retains every occurrence in a 520-member ZIP, removes the original archive, selects and pages original records, distinguishes a partial source from a proven absence, accepts authenticated historical nested Evidence without inserting new defaults, and verifies export → close → missing retained reference → import → equivalent view. Advertised SDK-converted schemas are validated with the declared JSON Schema dialect. Existing comparison completeness tests also passed.

    The frozen control runtime is 42b0ed126df7d5b908ac369715378d5e519051b7, not moving main. Preliminary real-artifact calls have exercised Obsidian, NewPipe, ShareX, OpenWrt, SQLite WASM and jq/Ghidra. The corrected experimental SDK options allow jq's real Ghidra run to finish; the initial driver's 60 s timeout is explicitly excluded from REA regression claims. SQLite's current producer completes, but the complete inline reply exceeds the transport frame; an explicit retained-Evidence export recovery is being measured separately. No global speedup is claimed from these preliminary runs.

    All heavy work runs serially in unique owned Linux cgroups with one CPU, a 4 GiB hard ceiling, no swap, 192 tasks and an earlier 3 GiB stop threshold. Host available memory is checked before and during work. The reported runs have no observed OOM or task-limit events. The next increment will compare the same analyst facts through optional summary delivery before deciding whether to retain that optimization; analyzer presets and the static domain descriptor pilot follow afterward.

  4. N0zoM1z0 commented on Oct 12, 2026

    @N0zoM1z0
    CollaboratorAuthor

    Implementation checkpoint: compatibility, analyzer tradeoffs and static WASM pilot

    Implementation sources: feat/compatibility-first-analysis-20261012.

    1. Typed inventory and opt-in retained views

    • inspect_artifact now advertises the known nested inventory output with exact types. Historical complete Evidence input parsing remains separate, so schema defaults cannot rewrite authenticated older records.
    • The existing complete delivery stays the default. Explicit detail: "summary" retains the original inspection and atomic inventory Evidence, returns a derived summary with its own identity, and supports exact-path inventory pages through inspect_analysis_view.
    • Partial inventory coverage, unexplored branches, integrity contradictions, original logical paths, caller omission and empty selections are preserved. Page exhaustion is not a claim of absence when the source is partial.
    • Two alternating Obsidian pairs preserve the selected facts and atomic source ID. Compact tool-result JSON is 937,404 bytes for complete delivery versus 16,322 for summary plus focused paths, including lifecycle calls: approximately 98.3% less. Catalog JSON increases by approximately 1.9%. The two elapsed observations do not establish a statistical speedup or reduced upstream analysis work.

    Recorded results: Obsidian pairs.

    2. Real task-scoped Ghidra analyzer experiment

    The existing opt-in analyzer control was tested against unchanged defaults using real jq 1.8.2, Ghidra 12.1.4, a fresh ephemeral database, one CPU, and the same entry/main question. Both oversized completed main dossiers were recovered through existing retained native views; transport errors remain recorded.

    One disabled/default pair took 174.77/276.23 seconds. Main pseudocode, referenced strings and block count agreed. However, callee 0x40daa0 had 604 recovered body bytes in eight ranges by default, versus 164 bytes in four ranges after disabling Decompiler Switch Analysis, despite the same 646-byte span. This is a concrete quality counterexample to a general safe-fast preset. Production defaults remain unchanged; no new general preset is introduced. A separate real coreutils/Ghidra probe rejects an unknown analyzer before bridge readiness and successfully closes the session.

    Recorded results: jq analyzer pair.

    3. Small static WASM ownership pilot

    • One statically composed WASM module owns the named contract, CLI command, construction and cleanup binding. CLI/MCP share it; existing public factories, tool names, arguments and complete output remain compatible. Catalog position does not select the handler/schema.
    • The existing service still owns resources whose cleanup failed and permits retry. No external loader, generic plugin SDK, dynamic discovery or engine database cache was introduced.
    • Retained WASM summary and section/import/export/candidate/glue/text/tool-profile views project already completed Evidence without repeating WABT. Exact WAT forms, UTF-16 text boundaries, original provenance, explicit execution/network states and unknowns are retained.
    • WAT SHA consistency is checked at the owning model boundary for producer and portable view inputs.

    Production commit: 0002caa07.

    Real application compatibility checks

    Six baseline/pilot pairs use frozen runtimes and identical selected provider settings through public MCP SDK calls: Obsidian ASAR, NewPipe APK, ShareX DLL, OpenWrt firmware, SQLite WASM and historical published WETH bytecode. All selected facts agree under the disclosed rules. Original target bytes remain unchanged in every run. Binwalk generates per-run region UUIDs: both original sets are retained in the report, and physical-region equality excludes only those lookup values. SQLite's 15,382,128-code-unit WAT exceeds the frame in both revisions: the control exports complete Evidence, while the pilot reads its summary and first four exports inline. Inline totals exclude exported file bytes and are not presented as a size reduction comparison.

    WETH provenance is the official published historical JSON-RPC example, not a verified live-chain response; live retrieval returned HTTP 403. These are Linux x64 observations, with no real IDA/Hopper/macOS/Windows/Harmony claims.

    Recorded results and qualifications: real artifact pairs.

    Actual model behavior and work in progress

    Real Codex CLI 0.161.0 trials use the requested gpt-5.6-terra alias with high reasoning, a private temporary profile, and this branch's frozen MCP runtime. The resolved server-side model identity is not inferred. The initial Obsidian trials were factually correct, but exact-tool filtering alone did not establish an efficiency win.

    A real SQLite model trial recovered all 12 requested facts correctly but made 42 tool calls after confusing summary kind with WASM facet and reading unnecessary WAT pages. The tool description now supplies the exact view: {kind: "summary"} shape and the fields it returns, without adding aliases or changing schemas/defaults. The same task is being repeated, followed by actual model tasks across Android, managed, firmware, EVM, selected JavaScript, inventory, browser and native analysis. A real public Excalidraw capture already confirms a loaded drawing UI, complete requested DOM/accessibility/URL capture and termination of the owned headless browser; model review remains pending.

    All heavy work runs serially in owned transient scopes: one CPU, 4 GiB hard memory cap, 3 GiB sampled early stop, no swap, and 192 tasks. This study's recorded scopes report zero observed OOM/task-limit events. Source checks, build and generated-document checks pass. Full original replies/transcripts/binaries/credentials remain outside Git. Factual review and resource/cleanup checks are required independently of model exit status.

    Source pin: 259e99dd9.

  5. N0zoM1z0 commented on Oct 12, 2026

    @N0zoM1z0
    CollaboratorAuthor

    Saved implementation and verification checkpoint — 2026-10-12

    The three bounded increments are implemented or experimentally resolved on feat/compatibility-first-analysis-20261012. Recorded verification source pins include:

    • 860f1ffe3: cross-domain real-model grading, qualified selected-JavaScript comparison, and original resource-capacity failures.
    • 7398bb818: genuine old Evidence migration, nonempty managed imports, and final verification receipts.

    The experiment guide and interpretation link reproducible drivers and curated results. Downloads, complete exported Evidence, frozen runtimes, raw transcripts, and disposable authentication/configuration remain outside Git. No PR has been opened.

    Decisions supported by the measurements

    Increment Result and decision
    Cost measurement / nested inventory / retained views Precise known nested output and caller-selected inventory/WASM views preserve original complete Evidence. Obsidian complete result delivery is 937,404 compact JSON bytes; summary plus exact path views is 16,322 bytes, about 98.3% less, including all lifecycle/view calls. Two alternating pairs preserve the requested facts and atomic source identity. This saves delivery work; it does not establish reduced upstream engine analysis.
    Optional Ghidra analysis settings One jq disabled/default pair takes 174.77/276.23 seconds. Main pseudocode, strings, and blocks agree, but a callee loses recovered body bytes/ranges: 604 bytes in eight ranges becomes 164 bytes in four. Keep the production default; the experiment does not justify a generally safe fast preset.
    Small descriptor WASM uses a statically composed named contract, service factory, existing CLI/MCP registration, and owned cleanup. Existing tool/command names, provider choices, complete defaults, legacy service injection, and record lifecycle remain. No external plugin loader/SDK or cross-session engine-database cache is introduced.

    Precise schemas have a cost: the complete catalog is 2,387,588 compact JSON bytes at the final measured runtime versus 2,326,609 in the baseline (about 2.6% larger). No global discovery or startup improvement is claimed.

    Actual migration, beyond synthetic old-input fixtures

    The migration receipt uses genuine public baseline outputs from 42b0ed126df7d5b908ac369715378d5e519051b7:

    1. Import the old complete SQLite WASM Evidence bundle into frozen runtime 259e99dd906290189217cf0fb1a19769bcf87101.
    2. Read the new summary and first four export forms through retained views.
    3. Export again and assert the entire original WASM record is deeply equal, with the same authenticated Evidence ID.
    4. Pass the old complete Obsidian inspection inline to the new summary view; preserve its parent ID, atomic inventory ID, and manifest.
    5. Verify both old input files remain byte-identical.

    WABT is explicitly unavailable and no producer operation is requested. This confirms portable-result reuse through existing import/export, without another provider run. The five-call workflow completes in 5.458 seconds, sampled aggregate peak 700,542,976 bytes, with no observed OOM or task-limit events.

    The default complete SQLite CLI also returns the same source Evidence ID, complete normalized result, and raw result as the authenticated baseline MCP export (16,439,561 output bytes). The original oversized complete MCP response remains a reported transport error in both revisions; it is never relabeled as successful inline delivery.

    Broader shipped-artifact and real-model evidence

    The earlier six real artifact pairs are supplemented by:

    • Selected Obsidian JavaScript: the same two source files, all 24 observed main.js module identities, statistics, Electron observations, fixed limits, family coverage, and explicit unknown counts agree. Two heap-dependent parent byte budgets are preserved with both original values/paths and qualified separately. Source Evidence is never rewritten. Coverage remains partial: 36 unselected relevant files and 384 semantic unknowns.
    • ShareX HelpersLib 19.0.2: a genuine shipped DLL with 11 ModuleRefs, 147 PInvoke declarations, and 225 native implementations. Complete normalized artifact/boundary results and source Evidence IDs agree between baseline and pilot. An additional real model task preserves all 11 references, the first three complete PInvoke records, summary flags/counts, MVID, coverage, and source reference in one call. The assembly is not executed; native dependency behavior is unverified.

    Ten follow-up Codex CLI reviews, plus the separate nonempty-managed task above, cover native, managed, Android, firmware, Electron/JavaScript, WASM, EVM, and browser questions. They use disposable local configuration pointing at the modified REA MCP, requested alias gpt-5.6-terra with high reasoning, and exact per-task tool allowlists. A requested alias is not presented as a verified server-side model identity.

    The same-question SQLite model pair preserves all 12 requested facts. After the already-committed exact summary guidance, calls change from 42 to 3 and reported input tokens from 304,698 to 74,387; unnecessary WAT pages disappear. Question/instruction/provider/allowlist fingerprints match. This is one stochastic pair, not a statistical or general causal result, and token totals are not a currency-cost estimate.

    Important incomplete outcomes remain visible:

    • The JavaScript model keeps core facts and all selected module identities but omits full budget/family coverage provenance; strict full-answer review fails.
    • Real Excalidraw capture returns complete DOM/accessibility/URL Evidence and terminates the owned Chromium process. Model answers report two accessibility metadata fields unknown after client context clipping; strict selected-field review fails.
    • Requested under-development Codex code-mode flags still result in a direct MCP call in the actual trace, with no JavaScript executor. No bridge/composition improvement is credited.
    • Firmware region UUIDs and inventory IDs selected under a different integrity policy retain their original meanings. Comparison qualifications do not normalize producer output or erase source choices.
    • WETH is a published historical bytecode example; live RPC returned HTTP 403. Deployment authenticity remains unknown.

    Verification and resource limits

    Verification receipts record:

    • 42 actual WABT 1.0.42 CLI/MCP cases passed, including real output/schema/Evidence checks.
    • The final seven-file contract/composition run passed 51/52 tests and hit an existing 20-second child deadline under the one-CPU lane. The same unmodified presentation test passed alone in 10.835 seconds. Both outcomes remain recorded; the combined gate is not claimed to have passed.
    • Heavy work ran serially in owned scopes: one CPU, 4 GiB hard memory, 3 GiB early stop, no swap. This checkpoint's recorded scopes have zero OOM/OOM-kill events. One original Codex+Chromium trial hit the 192-task ceiling below 1 GiB memory and was aborted/cleaned up; the explicit 256-task browser retries preserve the memory/CPU limits and have no observed limit events.

    No full check:pr, package-install verification, IDA/Hopper, Windows/macOS, Harmony, ADB-device, or other unavailable-provider success is implied. Unchecked acceptance items retain those stronger boundaries for later review. The issue remains open; no merge/release is requested.

    At the user's request, newly discovered probable REA defects are recorded in a separate local /tmp team-handoff document and are not repaired during this follow-up. The latest two commits contain research drivers, curated measurements, and experiment documentation only. The original checkout is preserved.

  6. N0zoM1z0 commented on Oct 12, 2026

    @N0zoM1z0
    CollaboratorAuthor

    Added the clarified optimization priorities and gradual migration policy to the issue body under Optimization priorities and progressive migration.

    • Primary: actual agent token consumption and time to a correct answer for the same question. Count discovery context, cached/uncached input, output, retries and follow-up calls; keep compact JSON bytes separate from actual tokens.
    • Also optimize/control: aggregate memory and CPU usage, including retained Evidence and representation expansion, with host resource safeguards.
    • Acceptance conditions: useful facts, provenance/coverage, caller choices and existing-user compatibility. Domain verification grows progressively; native PE, DOS and deeper runtime/firmware tasks need not all be completed in one pass.

    Existing clients against the candidate retain old tool/command names, existing request behavior, complete defaults, provider choices and session semantics in the verified scope. New summary/views require explicit selection. Genuine old Evidence migration preserves authenticated records and IDs. New-capability requests against older servers require actual schema discovery and supported equivalents; no universal automatic fallback is claimed. The complete catalog intentionally has additive/more precise schemas and grows about 2.6% in compact JSON, so the catalog is not byte-identical.

    The work remains on the isolated branch, without merge/release or a forced user migration. Compatibility evidence covers the recorded baseline/workflows; further historical versions, clients and platforms are verified progressively.

  7. N0zoM1z0 commented on Oct 12, 2026

    @N0zoM1z0
    CollaboratorAuthor

    Inventory/WASM compatibility evidence — #2122

    Implemented in #2122. Integrated runtime pin: c22111eca2c4bc84a084f12711f405b3e7422a40.

    Separate post-integration receipt:

    • npm run verify:wasm:package passes 42 real WABT CLI/MCP cases after actual private-prefix package installation.
    • Genuine old SQLite/Obsidian Evidence import/view/export passes again with WABT unavailable. Original records, IDs and bytes are preserved.
    • A fresh public SDK cohort preserves old complete Obsidian delivery (937,404 compact JSON bytes) and all selected source facts/identities. Explicit summary plus exact paths remains 16,322 bytes. Integrated catalog JSON is 2,359,082 bytes, about 1.4% above the original frozen baseline; this includes intervening main changes and does not isolate the PR's contribution.
    • Integration scopes record no OOM/OOM-kill or hard-limit abort. The complete source-check scope records three memory.high events; those remain visible. Earlier model/capacity failures and partial answers remain qualified, with their original runtime fingerprints.

    The transition preserves the existing complete path and adds explicit focused delivery. Existing requests do not silently change output or analysis defaults. This makes the implemented scope suitable for review; it is not a universal compatibility guarantee or a claim that all advertised domains have completed verification. Native PE/DOS, other host/providers and deeper tasks remain progressive work.

    Complete managed producer tables stay in the private lab outputs; the PR keeps curated identities, selected records, counts, coverage and full-payload digests. New out-of-scope REA findings stay in the separate local team-handoff document for later repair.

  8. N0zoM1z0 commented on Oct 12, 2026

    @N0zoM1z0
    CollaboratorAuthor

    Two compatibility/measurement boundary changes: b2c71f074 validates atomic inventory source identity at the owning boundary; 52649c43e rejects undeclared inherited provider controls that would falsely match experiment settings.

    The source fix has a real public-SDK before/after reproduction using shipped Obsidian data, six identity-boundary assertions and 37 passing focused assertions. Genuine baseline SQLite/Obsidian records still round-trip exactly, and selected Obsidian facts, source/view IDs, 16,322 delivered bytes and 2,359,082 catalog bytes remain unchanged. Both environment-contamination probes reject before output/profile creation and log no values. Raw receipts stay outside Git.

  9. N0zoM1z0 commented on Oct 12, 2026

    @N0zoM1z0
    CollaboratorAuthor

    First-call WASM delivery and measurement validity

    The inventory/WASM pilot preserves atomic and outer inventory identity, exact WASM source identity, explicit provider controls/search paths and unknown final cgroup counters. Original valid Evidence and complete defaults remain preserved.

    Implemented in #2193: optional MCP detail: summary, stripped before provider inputs, retains the complete source and reuses typed summary/export views. Omitted/complete requests and CLI output remain complete. No external plugin SDK, execution authority or cross-session engine cache is added.

    Curated pinned methods and observations:

    • Public SDK: 3 alternating fresh-process pairs each for SQLite and two digest-verified published VS Code Tree-sitter components (18 runs / 9 comparisons). Selected validation/count/export/WAT/provider/execution/fetch facts and the complete original source Evidence IDs match in all pairs. Runtime result delivery is 6,433,872 → 18,891 JSON bytes, about 99.7% less. SQLite/CSS already had retained recovery; they remove one call/error and save only about 8% of result bytes. Catalog grows 3,369 bytes (~0.14%).
    • Actual Codex CLI: requested gpt-5.6-terra high, CLI 0.161.0, fixed question/configuration, four allowlisted REA tools and isolated profiles. Three SQLite pairs plus one pair per VS Code component (10 trials) preserve all 12 requested producer facts, observed Evidence IDs, target bytes and profile cleanup. All five candidates select first-call summary.
    • Token/time observations: SQLite median total input 96,832 → 79,264 (~18% less) and answer time 61.521 → 55.656 s (~10% less), while uncached input rises ~7%. VS Code single pairs reduce total input ~49%/~68% but answer time increases ~84%/~22%. Cached/uncached input/output, failed calls and extra discovery are retained separately. This supports optional smaller delivery; it does not prove uniform speedup, currency saving or a broad causal effect.
    • Resource qualification: one CPU, 4 GiB hard/3 GiB early-stop, no swap and bounded tasks remain active. Model last-sampled peaks are 656–944 MiB with no observed limit events. Earlier cohort receipts lack verified final counters. The corrected grader rechecks all ten existing answers without rerunning them: facts/IDs/cleanup still match, final resource conditions are unverified. No absent-late-event or fully resource-qualified performance claim is made.
    • Failed attempt retained: the initial 18-run SDK cohort did not activate the option because enum probing missed SDK-generated $ref. Its source/replies remain separately archived and are excluded from benefit claims. The corrected driver validates the actual advertised 2020-12 request schema.

    Further work remains question-specific: native PE/DOS workflows, descriptor lifecycle/capacity evidence, and cost breakdowns with the same useful facts. Reduced Ghidra analysis previously lost callee facts and remains unpromoted. Dynamic plugin SDK and cross-session engine caching stay deferred.

  10. N0zoM1z0 commented on Oct 12, 2026

    @N0zoM1z0
    CollaboratorAuthor

    Native PE exploration: scope and limits

    The next real native PE component is the existing digest-verified ShareX 19.0.2 ShareX.exe (198,656 bytes, SHA-256 46af1ccc514b395cb703633abb5a505a771942b7db9b1915f31aeea541b3685f). Its archive member matches the original public release transport. An independent PE32+ header read finds an empty CLI directory. Actual Linux Ghidra 12.1.4 loads it as x86:LE:64:default, compiler windows, image base 0x140000000, entry 0x1400125c0, nine mappings; original/modified source digests agree and the session closes successfully.

    The public inspect_native_load_image result explicitly reports unsupported independent verification for PE (it currently supports DOS MZ, explicit DOS COM and raw-binary targets), while retaining its actual observations. This is an advertised capability boundary, not a newly established REA bug or a complete native-PE/model pass. The 190-second exploratory scope peaks at about 1,011 MiB sampled family memory, with no sampled abort/limit event; final counters remain unverified. No target code or GUI is executed. Deeper PE semantics/model work and real DOS inputs remain progressive tasks.

  11. 22 remaining items

  12. N0zoM1z0 commented on Oct 13, 2026

    @N0zoM1z0
    CollaboratorAuthor

    Android package delivery: real results and migration

    Implemented in #2438, commit f254f5ac2b804b353a711264bb178f43fdf07867.

    The Android path now offers explicit package summary and exact retained manifest pages through the existing view workflow. Existing complete requests, CLI output, provider requests, Evidence identity and session lifetime remain unchanged. Actual old runtime requests and authentic old Evidence import/view/export pass the recorded compatibility checks; no automatic fallback to older servers is claimed.

    Real NewPipe/JADX SDK pairs preserve all requested facts and settings: package reply 119,527 → 8,659 bytes (about 92.8% reduction), and combined three replies 149,577 → 38,709 bytes. SDK workflows take 23.694–24.509 seconds. These measurements establish delivery savings, without an engine/CPU/memory or general task-time recommendation.

    Actual Codex outcomes are deliberately retained: three of four trials answer the original question correctly; summary1 spends more tokens/time after three rejected client inputs and repeated work, while summary2 uses the intended three successful calls but still establishes no token/time gain. The final complete control receives empty client tool metadata, makes zero MCP calls and fails the facts; its short time is not equivalent completed work. The visibility cause remains unknown and is recorded locally for investigation, without changing unrelated REA behavior. All profiles are removed and APK bytes remain unchanged.

    One CPU, unchanged 3 GiB early-stop / 4 GiB hard memory / no swap / 192 tasks remain in force. Actual SDK/model/continuation phase witnesses verify payload cleanup with no limit events at that phase; final whole-scope counters remain unknown and the complete resource grader is not relabeled successful. Raw receipts stay private outside Git.

    Curated evidence and reproduction: Android package delivery and model outcomes. Twenty-seven relevant SDK/domain/Android checks pass. Protocol fixtures are distinguished from real JADX verification.

    The original three increments and all 21 recorded acceptance items now have scoped evidence, followed by the requested additional managed/native/Android migration and real application checks. General plugin SDK, dynamic ABI admission and persistent cross-session engine caches remain deferred by the plan. Unavailable hosts/providers and incomplete model answers remain explicitly unverified. This completes the current implementation/review/merge cycle; the issue can continue tracking optional gradual domain coverage without a claim that every historical client or advertised provider has been verified.

  13. N0zoM1z0 commented on Oct 13, 2026

    @N0zoM1z0
    CollaboratorAuthor

    The audit is now implemented in PR #2455 (Flutter/Dart AOT retained summary + exact string-pool pages). Two real LocalSend SDK pairs preserve the selected facts while reducing the AOT reply from 151,341 to 12,037 compact JSON bytes (92.05%). Whole SDK workflows remain approximately 5.1 seconds; this is not a speed or model-token claim. A fresh previous-runtime complete request matches, and 15 public MCP migration calls reconstruct all 2,716 original strings with the APK absent and preserve the original exported Evidence byte values. Actual Codex comparisons are still running; all errors/retries remain counted.

    The new inspect_web_network_capture SAZ implementation already advertises opt-in summary and retained capture pages, original archive-member coordinates and encoded bytes. It decodes all records before ordinal selection and rejects malformed/oversized input without partial success. Therefore, first measure genuine public SAZ captures using the existing summary/page workflow; do not add another delivery API or silently reduce decoding/credential-redaction semantics. Real SAZ performance is unverified in this Flutter trial.

    The frozen Flutter runtime remains source revision 811034a7283c9751a3ecbff33e8b2f28bec55793, compiled file-table SHA-256 dabbb63536c5862be839ecdc0f3eaad05b29c2a3816f57041528d30f754311be. Ongoing comparison cohorts will finish against that same pin.

  14. N0zoM1z0 commented on Oct 13, 2026

    @N0zoM1z0
    CollaboratorAuthor

    Two complete/summary real Codex pairs are now finished on the frozen Flutter runtime. All four answers pass the selected factual checks, preserving snapshot fields/nulls, target identity, counts, lower bounds, partial coverage, original limitations and observed response Evidence IDs. Profiles are removed and artifact bytes unchanged.

    Pair Total input reduction Uncached input reduction Reported output reduction Whole-task time reduction
    1 48.75% 33.63% 47.59% 23.95%
    2 42.38% 42.52% 31.66% 30.30%

    Complete trials make 3 / 2 attempts; the first includes a wrong parameter followed by correction and a repeated successful call. Summary trials make one successful call each. These actual task decisions remain counted and limit causal claims: benefits include explicit returned counts and fewer repeated calls, rather than proving serialization alone or engine acceleration. Raw discovery/errors/retries remain retained. Earlier SDK pairs show 92.05% fewer reply bytes and approximately unchanged 5.1-second SDK workflows. Payload observations are verified separately; final whole-scope counters remain unknown and the strict resource grade stays false.

    Curated metrics, limitations and reproduction: Flutter AOT summary. SQLite and packet/signal/SAZ captures remain subsequent measurement lanes at this historical checkpoint.

  15. N0zoM1z0 commented on Oct 13, 2026

    @N0zoM1z0
    CollaboratorAuthor

    PCAP workflow equivalence verified — 8ee5ca1

    PR #2640 now checks the exact ordered MCP attempts, arguments and successful status in a distinct workflow grade. Additional endpoints pages, repeated/reordered calls and failed/undecodable attempts cannot pass nominal workflow equivalence. Supported cited facts remain reported accurately; extra costs/errors and original data are preserved. 31 targeted context/grading tests pass, and all four stored original model trials pass both factual and workflow regrading without reruns. SDK/comparator and Windows verifier sources are unchanged; no repeated SDK/model/full local matrix.

  16. N0zoM1z0 commented on Oct 13, 2026

    @N0zoM1z0
    CollaboratorAuthor

    Readable planned reply required — 6ef3316

    PR #2640 now binds every terminal attempt to its own decoded Evidence ID and requires a readable planned reply in the separate exact-workflow grade. The regression reproduces the prior workflow-only false pass for an expected URI call with empty content. 32 targeted tests and all four original factual/workflow regrades pass, without SDK/comparator/model reruns. Original SDK/model/capture bytes/tokens/timers remain unchanged; no product/API/default change.

  17. N0zoM1z0 commented on Oct 13, 2026

    @N0zoM1z0
    CollaboratorAuthor

    Planned citation cardinality enforced — 57649d3

    PR #2640 rejects shorter/longer citation lists before zip binds per-call IDs, so summary-only trials cannot silently omit the required URI-page call from workflow acceptance. Regressions reproduce the prior summary-only and extra-citation workflow false successes. 33 targeted context/grading tests and four original factual/workflow regrades pass, with unchanged SDK/comparator/model runs. Original measured bytes/tokens/timers remain unchanged; selected facts and workflow/resource acceptance remain distinct.

  18. N0zoM1z0 commented on Oct 13, 2026

    @N0zoM1z0
    CollaboratorAuthor

    Comparator regressions join the existing automated suite — 4f025b6

    PR #2640 migrates the same six comparator CLI scenarios from the manual Node suite into tests/evaluation/analysisEfficiencyComparison.test.ts. The testing guide assigns deterministic evaluator parsing/scoring/report generation to this existing source project. Routine test:run, check:pr and CI portable shards now discover the tests automatically; no package/workflow change or duplicate wrapper is added. The old manual suite is removed. Six focused scenarios pass in1.95seconds (2.941seconds bounded command, peak210812928bytes); discovery validates all1113 configured files exactly once (1.129seconds, peak146382848bytes). Unchanged Python/SDK/model runs are not repeated; original33 context/grader regressions and four factual/workflow grades retain their recorded scopes.

  19. N0zoM1z0 commented on Oct 13, 2026

    @N0zoM1z0
    CollaboratorAuthor

    Failed-reply parsing preserves reports and partial facts — 7a28dbe

    PR #2640 now type-checks failed reply/error/details/reported_limits containers before reading resource references. The regression reproduces13 former crashes across scalar/list and malformed nested errors. Reports preserve original failures and supported cited facts, reject workflow acceptance, and retain genuine structured partial Evidence references (positive control verified). 34 targeted context/grading tests and four original factual/workflow regrades pass, with no unchanged comparator/SDK/model reruns. Original measured bytes/tokens/timers remain unchanged.

  20. N0zoM1z0 commented on Oct 14, 2026

    @N0zoM1z0
    CollaboratorAuthor

    Small-PCAP experiment: completed decision

    Recorded in #2640, merged at c7105d9723c835b5e0122f5fc6cfbea86265c349. Curated corpus, measurements and reproduction.

    For two official Wireshark HTTP captures and a fixed metadata/URI question, summary/page returns more than twice the SDK JSON and about 51% more total model input in both real-model pairs. Uncached input and elapsed time are mixed. Keep existing complete defaults; no new production optimization is justified for this corpus/question.

    Evidence: eight actual SDK workflows, four actual Codex CLI tasks, independent raw-frame and public CLI/MCP checks, and 18 authenticated original Evidence records. All four stored answers pass separate factual and exact-workflow regrading; 34 context/grading regressions and six discovered comparator scenarios pass. Original measured runtime remains 3ae826ceba6f25b08bce50bcb51001209bc16b57; measurements are unchanged and models were not rerun for review fixes.

    Final scope is nine experiment files and one evaluation test, with production APIs/defaults/cache unchanged. Raw captures/results/transcripts/configuration remain private. Serial one-CPU/3-GiB-early-stop/4-GiB-hard/no-swap controls remain in force; unavailable terminal whole-scope counters stay unknown. Future larger-capture, non-HTTP and discovery-guided field-selection results remain unmeasured.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

P1: highHigh priority issue for current or next iterationarea: domainDomain logic, errors, and pure functionsdesignArchitecture, provider, or contract decisions needed before implementationenhancementNew feature or requestperformancePerformance regressions, scaling limits, and bounded-resource workroadmapMulti-issue implementation roadmap

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions