[GH-ISSUE #4227] [Design] Audit lifecycle contracts across REA tools: readiness, cancellation, ownership, cleanup, and recovery #1659

Open
opened 2026-10-16 21:08:34 +00:00 by bsakaguchi · 18 comments
Owner

Originally created by @morluto on GitHub (Oct 15, 2026).
Original GitHub issue: https://github.com/morluto/rea/issues/4227

Decision needed

Audit the remaining REA tools and providers for lifecycle design gaps around readiness, cancellation, resource ownership, cleanup, and recovery. Establish evidence-backed invariants at the producing boundaries, then file and fix focused defects. This is a behavioral audit, separate from the source-organization roadmap in #740.

Context and evidence

A recent real macOS Hopper investigation exposed this failure family:

Design gap Observable failure
Target admission and provider readiness are not clearly distinguished An open succeeds while the engine cannot yet answer; startup appears idle.
Initial and recovery handshakes establish different facts A late authenticated connection validates its run but fails to retain the application identity needed for later exit recovery.
Caller lifetime and native work lifetime are conflated A cancelled or timed-out caller leaves work or a listener occupying a serial engine thread.
Active-target state hides retained resource ownership Status reports open:false and loses provider health while cleanup still blocks reopening.
Cleanup depends on an unavailable acknowledgement Close/reopen retries repeat the same failure without a usable recovery path or explicit ownership uncertainty.
Error composition loses the recovery instruction The primary error survives, but the cleanup owner's actionable remediation is replaced by generic advice.

These observations and repairs were exercised locally: real stdio MCP cancellation after native handoff recovered in the same connection; an abandoned first listener released the native Python thread after its connection grace period; late-handshake exit recovery and foreign-identity rejection passed controlled tests. The original producer failed the new first-listener regression. The local patch has not been released.

Unknown: whether similar defects exist in the other families. Do not infer cross-provider bugs or coverage from the Hopper results.

Expected interaction with targets

Read source and captured data; run controlled CLI/MCP probes using disposable fixtures; launch or attach only where the existing provider contract permits it. Some existing tools run scripts, mutate process state, write files, or contact selected services; preserve their declared effects and target selection. This audit does not expand those authorities.

Audit scope and ownership

Inventory every tool, group operations by their actual resource-owning implementation, and audit each distinct lifecycle. Include:

  • Deep engines and bridges: Ghidra, IDA, JEB, Kuna, Cutter, and shared lazy/composite routing.
  • Debugging and instrumentation: GDB, Rizin, Frida, and native tracing/UI helpers; distinguish owned launches from attached applications and inferiors.
  • Browser, Electron, CDP, V8 Inspector, and active capture sessions; distinguish owned targets from attached tabs/runtimes.
  • Android/JADX, ADB, process/PTY captures, and external command providers.
  • One-shot artifact/database/firmware/media inspection and extraction: subprocesses, temporary snapshots, files, mounts, and partial publication still have cleanup semantics. Mark genuinely inapplicable lifecycle stages explicitly.
  • CLI/MCP composition, EOF/shutdown, retained Evidence, snapshots, error projection, and converted output schemas.

Keep engine protocols in provider adapters, format semantics in artifact readers, process identity/supervision in shared process primitives, and provider-neutral composition in the application layer. Reuse existing contracts before proposing new lifecycle tools or abstractions.

Proposed investigation

  1. Build a tool-to-owner matrix recording admission, readiness proof, execution/queue state, cancellation semantics, ownership proof, cleanup phases, retained resources, recovery, Evidence lifetime, and platform coverage.
  2. Inspect the producing representation and its consumers for duplicated interpretation, ambiguous state, stale observations, or ownership inferred from a PID/name/path/helper exit alone.
  3. Use public CLI/MCP journeys first, supported by controlled fault injection at production boundaries. Exercise representative failures with distinct semantics: delayed/failed startup, missing/invalid/late handshake, caller cancellation while queued or active, lost replies, application exit, live-but-unreachable transport, cleanup denial and retry, EOF/shutdown, and same-connection reopen. Include PID reuse or unreadable identity where identity drives cleanup authority.
  4. Add negative controls: unknown identity must stay unknown; unrelated GUI documents, tabs, processes, and attached targets must survive. A valid authenticated idle session or long native operation must not inherit an unauthenticated connection deadline.
  5. For each finding, fix its owning boundary and affected consumers together. Preserve primary diagnostics, partial observations, cleanup instructions, and exportability; make any intentional ledger clearing explicit. Avoid blind reset, silent provider fallback, and blanket process termination.

Verification and completion criteria

  • Publish the inventory with per-family outcomes: verified, defect found, unsupported, not applicable, or unknown, each with evidence and remaining gaps.
  • File focused child issues for confirmed defects; link existing reports rather than duplicating them. Related tracking: #3537; prior exit-recovery context: #2975.
  • Define truthful observable states without requiring every provider to share an identical state machine. Admission, readiness, work completion, and cleanup completion must remain distinct facts.
  • Demonstrate supported recovery in the same connection, or return an actionable terminal/manual recovery instruction when positive closure proof is unavailable.
  • Validate CLI/MCP parity, advertised SDK-converted schemas, cancellation, partial failure, retained ownership, and unrelated-target preservation.
  • Run real-provider checks for engine claims. Record exact revision, provider/version, host, fixture, actions, timings, results, and cleanup evidence; simulations and source inspection are not real-engine verification.
  • Measure representative completed workflows when costs change: cold/warm elapsed time, agent/tool-call overhead, CPU time, and peak process-family memory. State unmeasured costs and unavailable hosts explicitly.

No repository-wide rewrite or new reset/permission workflow is assumed. Scope implementation from the findings and keep unknown ownership retained until it is positively resolved.

Verification available so far

Observed results and a local prototype for one native bridge family; proposed audit for the remaining tools. NOT_ENOUGH_INFO for cross-provider runtime conclusions until that audit is performed.

References

Originally created by @morluto on GitHub (Oct 15, 2026). Original GitHub issue: https://github.com/morluto/rea/issues/4227 ### Decision needed Audit the remaining REA tools and providers for lifecycle design gaps around readiness, cancellation, resource ownership, cleanup, and recovery. Establish evidence-backed invariants at the producing boundaries, then file and fix focused defects. This is a behavioral audit, separate from the source-organization roadmap in #740. ### Context and evidence A recent real macOS Hopper investigation exposed this failure family: | Design gap | Observable failure | | --- | --- | | Target admission and provider readiness are not clearly distinguished | An open succeeds while the engine cannot yet answer; startup appears idle. | | Initial and recovery handshakes establish different facts | A late authenticated connection validates its run but fails to retain the application identity needed for later exit recovery. | | Caller lifetime and native work lifetime are conflated | A cancelled or timed-out caller leaves work or a listener occupying a serial engine thread. | | Active-target state hides retained resource ownership | Status reports open:false and loses provider health while cleanup still blocks reopening. | | Cleanup depends on an unavailable acknowledgement | Close/reopen retries repeat the same failure without a usable recovery path or explicit ownership uncertainty. | | Error composition loses the recovery instruction | The primary error survives, but the cleanup owner's actionable remediation is replaced by generic advice. | These observations and repairs were exercised locally: real stdio MCP cancellation after native handoff recovered in the same connection; an abandoned first listener released the native Python thread after its connection grace period; late-handshake exit recovery and foreign-identity rejection passed controlled tests. The original producer failed the new first-listener regression. The local patch has not been released. **Unknown:** whether similar defects exist in the other families. Do not infer cross-provider bugs or coverage from the Hopper results. ### Expected interaction with targets Read source and captured data; run controlled CLI/MCP probes using disposable fixtures; launch or attach only where the existing provider contract permits it. Some existing tools run scripts, mutate process state, write files, or contact selected services; preserve their declared effects and target selection. This audit does not expand those authorities. ### Audit scope and ownership Inventory every tool, group operations by their actual resource-owning implementation, and audit each distinct lifecycle. Include: - Deep engines and bridges: Ghidra, IDA, JEB, Kuna, Cutter, and shared lazy/composite routing. - Debugging and instrumentation: GDB, Rizin, Frida, and native tracing/UI helpers; distinguish owned launches from attached applications and inferiors. - Browser, Electron, CDP, V8 Inspector, and active capture sessions; distinguish owned targets from attached tabs/runtimes. - Android/JADX, ADB, process/PTY captures, and external command providers. - One-shot artifact/database/firmware/media inspection and extraction: subprocesses, temporary snapshots, files, mounts, and partial publication still have cleanup semantics. Mark genuinely inapplicable lifecycle stages explicitly. - CLI/MCP composition, EOF/shutdown, retained Evidence, snapshots, error projection, and converted output schemas. Keep engine protocols in provider adapters, format semantics in artifact readers, process identity/supervision in shared process primitives, and provider-neutral composition in the application layer. Reuse existing contracts before proposing new lifecycle tools or abstractions. ### Proposed investigation 1. Build a tool-to-owner matrix recording admission, readiness proof, execution/queue state, cancellation semantics, ownership proof, cleanup phases, retained resources, recovery, Evidence lifetime, and platform coverage. 2. Inspect the producing representation and its consumers for duplicated interpretation, ambiguous state, stale observations, or ownership inferred from a PID/name/path/helper exit alone. 3. Use public CLI/MCP journeys first, supported by controlled fault injection at production boundaries. Exercise representative failures with distinct semantics: delayed/failed startup, missing/invalid/late handshake, caller cancellation while queued or active, lost replies, application exit, live-but-unreachable transport, cleanup denial and retry, EOF/shutdown, and same-connection reopen. Include PID reuse or unreadable identity where identity drives cleanup authority. 4. Add negative controls: unknown identity must stay unknown; unrelated GUI documents, tabs, processes, and attached targets must survive. A valid authenticated idle session or long native operation must not inherit an unauthenticated connection deadline. 5. For each finding, fix its owning boundary and affected consumers together. Preserve primary diagnostics, partial observations, cleanup instructions, and exportability; make any intentional ledger clearing explicit. Avoid blind reset, silent provider fallback, and blanket process termination. ### Verification and completion criteria - [ ] Publish the inventory with per-family outcomes: verified, defect found, unsupported, not applicable, or unknown, each with evidence and remaining gaps. - [ ] File focused child issues for confirmed defects; link existing reports rather than duplicating them. Related tracking: #3537; prior exit-recovery context: #2975. - [ ] Define truthful observable states without requiring every provider to share an identical state machine. Admission, readiness, work completion, and cleanup completion must remain distinct facts. - [ ] Demonstrate supported recovery in the same connection, or return an actionable terminal/manual recovery instruction when positive closure proof is unavailable. - [ ] Validate CLI/MCP parity, advertised SDK-converted schemas, cancellation, partial failure, retained ownership, and unrelated-target preservation. - [ ] Run real-provider checks for engine claims. Record exact revision, provider/version, host, fixture, actions, timings, results, and cleanup evidence; simulations and source inspection are not real-engine verification. - [ ] Measure representative completed workflows when costs change: cold/warm elapsed time, agent/tool-call overhead, CPU time, and peak process-family memory. State unmeasured costs and unavailable hosts explicitly. No repository-wide rewrite or new reset/permission workflow is assumed. Scope implementation from the findings and keep unknown ownership retained until it is positively resolved. ### Verification available so far Observed results and a local prototype for one native bridge family; proposed audit for the remaining tools. NOT_ENOUGH_INFO for cross-provider runtime conclusions until that audit is performed. ### References - [Tool design guidance](https://github.com/morluto/rea/blob/main/docs/tool-design.md) - [Testing and real-provider verification](https://github.com/morluto/rea/blob/main/docs/testing.md) - Owning code to inspect includes `src/application/binary/`, `src/process/`, provider session/client managers, cleanup owners, and `src/domain/analysisErrorCleanup.ts`.
Author
Owner

@morluto commented on GitHub (Oct 15, 2026):

Audit pass at bde139c5d (REA 6.5.0, Node 24.18.0, macOS 26.3 arm64), using four Luna agents in isolated provider worktrees and public CLI/MCP probes with disposable fixtures.

Maintainer follow-up: @morluto — confirmed findings, local repairs and remaining verification gaps are below.

The canonical catalog contains 207 tools in 17 adapter kinds. All canonical advertised schemas were checked after SDK conversion. Runtime coverage is grouped by actual resource owner; it is not a claim that every tool or every platform was exercised.

Family / owner Observed result and limits
Ghidra 12.1.4 / JDK21 Real CLI/stdio MCP verifier passed: 373 successful and 52 rejected calls, cancellation, reopen/rollback, immutable source and verified cleanup/lineage.
IDA, JEB, Kuna, Cutter Selected provider lifecycle suites passed with Ghidra (174 tests). Real engines/configurations unavailable.
LLDB 2100.0.17.108 Real CLI/MCP verifier passed after the #4232 repair: positive observations, duration/event limits, denied hardened-runtime launch and get-task-allow control.
Native UI Owned fixture CLI/MCP/action verifier passed on rerun. Initial host window-geometry mismatch is recorded separately; no lifecycle defect was inferred from it.
GDB/Rizin/Frida Darwin GDB/Rizin platform refusals observed. Frida CLI binding missing; disposable MCP spawn denied attach. Positive Linux/debugger/Frida coverage unavailable.
Chrome 155 / Playwright 1.58.2 / CDP Real CLI/MCP verifier passed, including launch cleanup versus external disconnect. Extra mid-capture page close retained partial observations, preserved sibling/browser, and allowed a second capture.
V8 Inspector Real CLI/MCP verifier passed with eight disposable Node targets, cancellation detach, exit and reopen.
Electron Controlled ownership tests passed; no real Electron executable/package installed.
Process/PTY Public MCP success control; real CLI SIGINT/SIGTERM and MCP post-exit descendant cleanup passed. Cleanup-time cancellation reproduced #4005 and is now typed cancellation with partial data and confirmed removal.
SQLite/archive Real CLI/MCP generated DB probes and real ZIP extraction passed. Traversal member rejected without an escaped file; scratch cleaned. An 80 MiB DB cancellation left scratch empty and source unchanged, but exact cancellation phase is unknown.
One-shot CLI finalization #3935 reproduced with controlled WABT executables and real filesystem permission denial. Completed Evidence/primary diagnostics now survive cleanup failure across 13 migrated command families. This is not real WABT verification.
Composite/session/error composition Production BinarySession and composite regressions confirmed #4233. Local repair retains observed child health, retries only unresolved cleanup, and preserves owner recovery instructions.
Other external artifact/device tools Missing JADX, ADB, sigrok, TShark, 7-Zip, Binwalk and Unblob leave real engine/device behavior unknown. Remaining pure artifact/domain tools are catalogued but not individually runtime-audited in this pass.

Focused findings:

  • New #4232: denied LLDB launch loses PID/positive exit facts and becomes unknown retained ownership.
  • New #4233: missing child health hides an observed failure; cleanup retries released child ownership. A further producer regression confirmed that multi-child cleanup also dropped the children's explicit recovery instructions; local aggregation now preserves them.
  • Existing #4005: process cleanup-time cancellation incorrectly returns successful Evidence.
  • Existing #4009: native-call finalization cancellation incorrectly returns complete success. The local check now runs after runtime-root cleanup, with both post-launch and cleanup-time cancellation regressions.
  • Existing #3935: duplicated CLI close/finally handling discards results and primary diagnostics. The repair reuses finishAnalysisCommand; no second cleanup framework was introduced.

Context7 and DeepWiki were consulted and checked against installed source and live behavior. Relevant upstream references are the MCP SDK v2.3.1 cancellation contract, Playwright 1.58.2 browser close implementation, CDP Target definitions, and LLDB SBProcess API. Indexed guidance is not runtime evidence: request cancellation does not itself prove external work stopped; object validity does not prove liveness; attach transport cleanup does not grant target ownership.

Local patches are uncommitted and unreleased. Platform gaps remain open. No full cold/warm, CPU, memory or token benchmark was measured; representative process control/interrupted workflows took approximately 1.739s/1.842s in one warm run, not a before/after performance comparison.

Final combined validation: 114 tests passed across 14 lifecycle/schema files, 55 passed / one existing skip across 12 CLI/acceptance files, and 13 Python bridge tests passed. npm run check, npm run docs:check (including five README tests), and git diff --check passed. Whole-catalog advertised input/output schemas validate after the installed MCP SDK conversion. The real native-call verifier was rerun on the combined patch and passed. Real Ghidra/browser/Inspector/native UI results above are scoped provider runs, not a claim of exhaustive tool or platform coverage.

<!-- gh-comment-id:6201499376 --> @morluto commented on GitHub (Oct 15, 2026): Audit pass at `bde139c5d` (REA 6.5.0, Node 24.18.0, macOS 26.3 arm64), using four Luna agents in isolated provider worktrees and public CLI/MCP probes with disposable fixtures. Maintainer follow-up: @morluto — confirmed findings, local repairs and remaining verification gaps are below. The canonical catalog contains **207 tools in 17 adapter kinds**. All canonical advertised schemas were checked after SDK conversion. Runtime coverage is grouped by actual resource owner; it is **not** a claim that every tool or every platform was exercised. | Family / owner | Observed result and limits | | --- | --- | | Ghidra 12.1.4 / JDK21 | Real CLI/stdio MCP verifier passed: 373 successful and 52 rejected calls, cancellation, reopen/rollback, immutable source and verified cleanup/lineage. | | IDA, JEB, Kuna, Cutter | Selected provider lifecycle suites passed with Ghidra (174 tests). Real engines/configurations unavailable. | | LLDB 2100.0.17.108 | Real CLI/MCP verifier passed after the #4232 repair: positive observations, duration/event limits, denied hardened-runtime launch and get-task-allow control. | | Native UI | Owned fixture CLI/MCP/action verifier passed on rerun. Initial host window-geometry mismatch is recorded separately; no lifecycle defect was inferred from it. | | GDB/Rizin/Frida | Darwin GDB/Rizin platform refusals observed. Frida CLI binding missing; disposable MCP spawn denied attach. Positive Linux/debugger/Frida coverage unavailable. | | Chrome 155 / Playwright 1.58.2 / CDP | Real CLI/MCP verifier passed, including launch cleanup versus external disconnect. Extra mid-capture page close retained partial observations, preserved sibling/browser, and allowed a second capture. | | V8 Inspector | Real CLI/MCP verifier passed with eight disposable Node targets, cancellation detach, exit and reopen. | | Electron | Controlled ownership tests passed; no real Electron executable/package installed. | | Process/PTY | Public MCP success control; real CLI SIGINT/SIGTERM and MCP post-exit descendant cleanup passed. Cleanup-time cancellation reproduced #4005 and is now typed cancellation with partial data and confirmed removal. | | SQLite/archive | Real CLI/MCP generated DB probes and real ZIP extraction passed. Traversal member rejected without an escaped file; scratch cleaned. An 80 MiB DB cancellation left scratch empty and source unchanged, but exact cancellation phase is unknown. | | One-shot CLI finalization | #3935 reproduced with controlled WABT executables and real filesystem permission denial. Completed Evidence/primary diagnostics now survive cleanup failure across 13 migrated command families. This is not real WABT verification. | | Composite/session/error composition | Production BinarySession and composite regressions confirmed #4233. Local repair retains observed child health, retries only unresolved cleanup, and preserves owner recovery instructions. | | Other external artifact/device tools | Missing JADX, ADB, sigrok, TShark, 7-Zip, Binwalk and Unblob leave real engine/device behavior unknown. Remaining pure artifact/domain tools are catalogued but not individually runtime-audited in this pass. | Focused findings: - New #4232: denied LLDB launch loses PID/positive exit facts and becomes unknown retained ownership. - New #4233: missing child health hides an observed failure; cleanup retries released child ownership. A further producer regression confirmed that multi-child cleanup also dropped the children's explicit recovery instructions; local aggregation now preserves them. - Existing #4005: process cleanup-time cancellation incorrectly returns successful Evidence. - Existing #4009: native-call finalization cancellation incorrectly returns complete success. The local check now runs after runtime-root cleanup, with both post-launch and cleanup-time cancellation regressions. - Existing #3935: duplicated CLI close/finally handling discards results and primary diagnostics. The repair reuses `finishAnalysisCommand`; no second cleanup framework was introduced. Context7 and DeepWiki were consulted and checked against installed source and live behavior. Relevant upstream references are the [MCP SDK v2.3.1 cancellation contract](https://github.com/modelcontextprotocol/typescript-sdk/blob/v2.3.1/docs/servers/logging-progress-cancellation.md), [Playwright 1.58.2 browser close implementation](https://github.com/microsoft/playwright/blob/v1.58.2/packages/playwright-core/src/client/browser.ts), [CDP Target definitions](https://github.com/ChromeDevTools/devtools-protocol/blob/master/pdl/domains/Target.pdl), and [LLDB SBProcess API](https://lldb.llvm.org/python_reference/lldb.SBProcess-class.html). Indexed guidance is not runtime evidence: request cancellation does not itself prove external work stopped; object validity does not prove liveness; attach transport cleanup does not grant target ownership. Local patches are uncommitted and unreleased. Platform gaps remain open. No full cold/warm, CPU, memory or token benchmark was measured; representative process control/interrupted workflows took approximately 1.739s/1.842s in one warm run, not a before/after performance comparison. Final combined validation: **114 tests passed across 14 lifecycle/schema files**, **55 passed / one existing skip across 12 CLI/acceptance files**, and **13 Python bridge tests passed**. `npm run check`, `npm run docs:check` (including five README tests), and `git diff --check` passed. Whole-catalog advertised input/output schemas validate after the installed MCP SDK conversion. The real native-call verifier was rerun on the combined patch and passed. Real Ghidra/browser/Inspector/native UI results above are scoped provider runs, not a claim of exhaustive tool or platform coverage.
Author
Owner

@morluto commented on GitHub (Oct 15, 2026):

Follow-up probes on PR #4238 head 6e64a09a3 confirmed four remaining cases. These are controlled production-boundary observations; no real JADX, firmware engine, Android device or Ghidra engine was used. No source changes were added to the PR by this probe pass.

Issue Fresh observation Control / scope
#3927 AndroidAnalysisService.execute(inspect_android_package) returns ok:true Evidence after its provider aborts the request signal before returning. Generated APK input and schema-valid package result; non-aborted control also succeeds. This pass covers package inspection, not all five Android operations or actual MCP delivery.
#3923 Firmware inspection and extraction services both return ok:true after late provider cancellation. Schema-valid results; ordinary controls succeed; no extraction output was published. This is service classification, not a claim of real CLI SIGINT or firmware engine timing.
#3983 A cancelled secondary Ghidra client request remains pending while the initiating startup stays gated. Cancelling only the initiator instead gives the uncancelled waiter an error of kind cancelled. Production GhidraClient and real private snapshot/runtime cleanup, gated launcher without an engine. Secondary settlement was checked after 100 ms while the startup gate remained closed; no latency guarantee or maximum wait was measured. Every allocated runtime root was verified absent after close.
New #4240 Direct application/CLI error composition drops the original cleanup resource name when session close reports a different resource. Production runDirectAnalysis, BinarySession and provider routing with controlled errors; successful close preserves the primary resource. No physical resource leak was exercised.

The standalone compiled-runtime probe recorded ten observations, including success/cleanup controls. Input cleanup completed; the checkout remains clean. These are follow-ups beyond the cases fixed in #4238, not additional fixes claimed by that PR.

<!-- gh-comment-id:6201844528 --> @morluto commented on GitHub (Oct 15, 2026): Follow-up probes on PR #4238 head `6e64a09a3` confirmed four remaining cases. These are controlled production-boundary observations; no real JADX, firmware engine, Android device or Ghidra engine was used. No source changes were added to the PR by this probe pass. | Issue | Fresh observation | Control / scope | | --- | --- | --- | | #3927 | `AndroidAnalysisService.execute(inspect_android_package)` returns `ok:true` Evidence after its provider aborts the request signal before returning. | Generated APK input and schema-valid package result; non-aborted control also succeeds. This pass covers package inspection, not all five Android operations or actual MCP delivery. | | #3923 | Firmware inspection and extraction services both return `ok:true` after late provider cancellation. | Schema-valid results; ordinary controls succeed; no extraction output was published. This is service classification, not a claim of real CLI SIGINT or firmware engine timing. | | #3983 | A cancelled secondary Ghidra client request remains pending while the initiating startup stays gated. Cancelling only the initiator instead gives the uncancelled waiter an error of kind `cancelled`. | Production `GhidraClient` and real private snapshot/runtime cleanup, gated launcher without an engine. Secondary settlement was checked after 100 ms while the startup gate remained closed; no latency guarantee or maximum wait was measured. Every allocated runtime root was verified absent after close. | | New #4240 | Direct application/CLI error composition drops the original cleanup resource name when session close reports a different resource. | Production `runDirectAnalysis`, BinarySession and provider routing with controlled errors; successful close preserves the primary resource. No physical resource leak was exercised. | The standalone compiled-runtime probe recorded ten observations, including success/cleanup controls. Input cleanup completed; the checkout remains clean. These are follow-ups beyond the cases fixed in #4238, not additional fixes claimed by that PR.
Author
Owner

@morluto commented on GitHub (Oct 15, 2026):

Review follow-up on PR #4238:

  • 328e6500b fixes the review finding where pending cleanup retained a client but lost its run ID and lineage projection. Client, route and run identity now travel together through retirement, failed startup and restoration; public MCP close/retry/status verifies retention until successful cleanup.
  • 3bd6c99ce fixes #4240: the original CLI cleanup diagnostics keep their resource names, while the subsequent close assessment remains separately in cleanup_error. Fault/control regressions preserve captured output without duplication; neither assessment is inferred to establish the other's resource lifetime.

Validation: 89 focused tests across seven files, full static checks, docs checks (including five README tests), and pre-push checks pass. New assertions reproduced both defects before repair. These follow-up tests use controlled provider boundaries; no new real-engine run is claimed.

#3927, #3923 and #3983 remain separate open follow-ups. They are not claimed fixed in this PR.

<!-- gh-comment-id:6202085532 --> @morluto commented on GitHub (Oct 15, 2026): Review follow-up on PR #4238: - 328e6500b fixes the review finding where pending cleanup retained a client but lost its run ID and lineage projection. Client, route and run identity now travel together through retirement, failed startup and restoration; public MCP close/retry/status verifies retention until successful cleanup. - 3bd6c99ce fixes #4240: the original CLI cleanup diagnostics keep their resource names, while the subsequent close assessment remains separately in `cleanup_error`. Fault/control regressions preserve captured output without duplication; neither assessment is inferred to establish the other's resource lifetime. Validation: 89 focused tests across seven files, full static checks, docs checks (including five README tests), and pre-push checks pass. New assertions reproduced both defects before repair. These follow-up tests use controlled provider boundaries; no new real-engine run is claimed. #3927, #3923 and #3983 remain separate open follow-ups. They are not claimed fixed in this PR.
Author
Owner

@morluto commented on GitHub (Oct 15, 2026):

Two further PR #4238 review findings are repaired:

  • 9d6aca2f8 retains completed native trace facts when late cancellation or runtime-directory cleanup fails. The completed result projection/schema is reused; journal-only interruptions still omit unreported exit, launch and breakpoint facts.
  • b3f328f9d reports retained Flutter/web cleanup paths at their resource owners and preserves child diagnostics and recovery actions through web service composition. Regressions exercise the actual provider/service/CLI finalizer and successful cleanup retries.

Validation: 158 focused tests across 15 native/provider/CLI/MCP/schema files passed, alongside the earlier 89-test review suite. Full static, docs and pre-push checks passed. A fresh real LLDB control lane passed CLI and stdio MCP with six events, exit/event-limit/duration-elapsed, and hardened-runtime denial/get-task-allow controls. Late-cancellation and cleanup fault timing remain controlled regressions.

The remaining Android/firmware/Ghidra audit cases (#3927, #3923, #3983) are still open and are not claimed fixed here.

<!-- gh-comment-id:6202240752 --> @morluto commented on GitHub (Oct 15, 2026): Two further PR #4238 review findings are repaired: - 9d6aca2f8 retains completed native trace facts when late cancellation or runtime-directory cleanup fails. The completed result projection/schema is reused; journal-only interruptions still omit unreported exit, launch and breakpoint facts. - b3f328f9d reports retained Flutter/web cleanup paths at their resource owners and preserves child diagnostics and recovery actions through web service composition. Regressions exercise the actual provider/service/CLI finalizer and successful cleanup retries. Validation: 158 focused tests across 15 native/provider/CLI/MCP/schema files passed, alongside the earlier 89-test review suite. Full static, docs and pre-push checks passed. A fresh real LLDB control lane passed CLI and stdio MCP with six events, exit/event-limit/duration-elapsed, and hardened-runtime denial/get-task-allow controls. Late-cancellation and cleanup fault timing remain controlled regressions. The remaining Android/firmware/Ghidra audit cases (#3927, #3923, #3983) are still open and are not claimed fixed here.
Author
Owner

@morluto commented on GitHub (Oct 15, 2026):

Audit implementation and coverage update: draft #4274 contains eleven semantic commits, through 5c6005b88. @morluto, the reviewable fixes and verification limits are collected there.

Area / owning boundaries Executed evidence and result Findings and remaining coverage
Shared application completion and CLI/MCP delivery Paired valid/malformed reports with late cancellation, retained Evidence, same-connection ping; full MCP lane:799 passed/5 skipped #3923, #3927, #4261 fixed; catalog/schema and protocol evidence are separate from engine compatibility.
Browser/CDP/Electron/Inspector Real Chrome155 and Node24 Inspector CLI/stdio MCP verifiers passed; 56 focused CLI/cleanup/Inspector/Ghidra tests passed #4255–#4257 fixed. Electron final detach uses controlled CDP, not a real Electron app. Owned Chrome and Inspector targets closed.
Deep engines: Ghidra, Hopper, IDA, Kuna, Cutter, JEB Lifecycle owners inspected; controlled shared-start/close protocols. Earlier real Ghidra12.1.4/JDK21 run:373 successful calls/52 expected refusals Existing #3983 fixed. Real Ghidra was not repeated at final head; other named engines were not exercised natively in this pass.
Android/JADX/ADB Real-filesystem snapshots, controlled subprocess protocols, close denial/retry, late cancellation and publication receipts #4251/#4252 already main; stronger ownership/publication coverage retained. #4260 fixed. Real ADB-device and JADX workflows not exercised.
Regular files, caches and staging Exact live descriptor faults; completed/incomplete results; late profile drain; warm-cache retry; portable signed-archive dependency ordering New #4266 fixed at the owner and consumers, including JavaScript verifiers. No native failure-frequency claim.
WABT/Firmware/Go/Rust/EVM/binary/crash/network artifacts Valid/malformed report precedence and cancellation controls; artifact/service source tests #4254 already main; additional provider/application coverage retained. EVM unsupported on this macOS host; other real engines remain unverified.
Managed/.NET/Flutter/apktool/Pcap/reference/process capture/signal-media Scoped ownership reads/screens;66 selected source files: 887 passed/4 skipped No new confirmed defect from this slice. Pcap/sigrok/Flutter provider boundary and real-tool lanes not executed.
Debugging/instrumentation/native helpers GDB/Rizin/Frida/native ownership and cleanup boundaries inspected;35 Python bridge tests +63 experiments passed No new confirmed defect. Real debugger/instrumentation/native UI engines unverified here; attached targets retain existing authority rules.
Process supervision/Windows exclusive runner Controlled Windows-branch probe and POSIX controls; Windows regression added to curated CI lane #4258 fixed;4 native Windows cases skipped locally. Await Windows CI for native evidence.
Setup/config/install/package/release Transaction/backup/rollback and publication owners inspected;61 source tests passed No new confirmed defect. Existing reports deduped; actual client installation/package publication not performed.
Shutdown and website/docs Repeat-event retry; website 17 tests / 382 pages / 26,087 references passed; docs check passed #4253 already main; stdin retries covered. #4264 fixed. Guidance now includes finalization, descriptor ownership, late background work, and JavaScript verifier consumers.

Final source suite: 549 files, 8,420 passed/13 skipped. Full MCP lane: 142 files passed/2 skipped, 799 tests passed/5 skipped. Fresh owned stdio exercise validated 207 tools and 414 schemas, typed-error recovery, exact SQLite signed bounds/blobs/column order, ZIP retained Evidence, plist artifact routing, and clean shutdown. Discovery assigns all 1,384 tests exactly once. Final combined ownership/provider/verifier selection passed: 29 files, 333 tests passed and 21 native-Linux cases skipped, including the corrected JavaScript verifier callers.

This is an area-by-area lifecycle audit, not a claim of every-line review or every-host/engine execution. Source reads, inventory/searches, controlled ports, and real providers have different evidentiary depth. The separately registered global MCP has a different path and null build commit; source alignment remains unknown and it was not replaced. Comprehensive cold/warm agent-token, CPU and process-family memory costs were not measured.

Keep this umbrella open for the explicitly unverified platform/engine lanes and later findings. Confirmed defects were filed or linked rather than inferred across providers.

<!-- gh-comment-id:6203536681 --> @morluto commented on GitHub (Oct 15, 2026): Audit implementation and coverage update: draft #4274 contains eleven semantic commits, through 5c6005b88. @morluto, the reviewable fixes and verification limits are collected there. | Area / owning boundaries | Executed evidence and result | Findings and remaining coverage | | ------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Shared application completion and CLI/MCP delivery | Paired valid/malformed reports with late cancellation, retained Evidence, same-connection ping; full MCP lane:799 passed/5 skipped | #3923, #3927, #4261 fixed; catalog/schema and protocol evidence are separate from engine compatibility. | | Browser/CDP/Electron/Inspector | Real Chrome155 and Node24 Inspector CLI/stdio MCP verifiers passed; 56 focused CLI/cleanup/Inspector/Ghidra tests passed | #4255–#4257 fixed. Electron final detach uses controlled CDP, not a real Electron app. Owned Chrome and Inspector targets closed. | | Deep engines: Ghidra, Hopper, IDA, Kuna, Cutter, JEB | Lifecycle owners inspected; controlled shared-start/close protocols. Earlier real Ghidra12.1.4/JDK21 run:373 successful calls/52 expected refusals | Existing #3983 fixed. Real Ghidra was not repeated at final head; other named engines were not exercised natively in this pass. | | Android/JADX/ADB | Real-filesystem snapshots, controlled subprocess protocols, close denial/retry, late cancellation and publication receipts | #4251/#4252 already main; stronger ownership/publication coverage retained. #4260 fixed. Real ADB-device and JADX workflows not exercised. | | Regular files, caches and staging | Exact live descriptor faults; completed/incomplete results; late profile drain; warm-cache retry; portable signed-archive dependency ordering | New #4266 fixed at the owner and consumers, including JavaScript verifiers. No native failure-frequency claim. | | WABT/Firmware/Go/Rust/EVM/binary/crash/network artifacts | Valid/malformed report precedence and cancellation controls; artifact/service source tests | #4254 already main; additional provider/application coverage retained. EVM unsupported on this macOS host; other real engines remain unverified. | | Managed/.NET/Flutter/apktool/Pcap/reference/process capture/signal-media | Scoped ownership reads/screens;66 selected source files: 887 passed/4 skipped | No new confirmed defect from this slice. Pcap/sigrok/Flutter provider boundary and real-tool lanes not executed. | | Debugging/instrumentation/native helpers | GDB/Rizin/Frida/native ownership and cleanup boundaries inspected;35 Python bridge tests +63 experiments passed | No new confirmed defect. Real debugger/instrumentation/native UI engines unverified here; attached targets retain existing authority rules. | | Process supervision/Windows exclusive runner | Controlled Windows-branch probe and POSIX controls; Windows regression added to curated CI lane | #4258 fixed;4 native Windows cases skipped locally. Await Windows CI for native evidence. | | Setup/config/install/package/release | Transaction/backup/rollback and publication owners inspected;61 source tests passed | No new confirmed defect. Existing reports deduped; actual client installation/package publication not performed. | | Shutdown and website/docs | Repeat-event retry; website 17 tests / 382 pages / 26,087 references passed; docs check passed | #4253 already main; stdin retries covered. #4264 fixed. Guidance now includes finalization, descriptor ownership, late background work, and JavaScript verifier consumers. | Final source suite: 549 files, 8,420 passed/13 skipped. Full MCP lane: 142 files passed/2 skipped, 799 tests passed/5 skipped. Fresh owned stdio exercise validated 207 tools and 414 schemas, typed-error recovery, exact SQLite signed bounds/blobs/column order, ZIP retained Evidence, plist artifact routing, and clean shutdown. Discovery assigns all 1,384 tests exactly once. Final combined ownership/provider/verifier selection passed: 29 files, 333 tests passed and 21 native-Linux cases skipped, including the corrected JavaScript verifier callers. This is an area-by-area lifecycle audit, not a claim of every-line review or every-host/engine execution. Source reads, inventory/searches, controlled ports, and real providers have different evidentiary depth. The separately registered global MCP has a different path and null build commit; source alignment remains unknown and it was not replaced. Comprehensive cold/warm agent-token, CPU and process-family memory costs were not measured. Keep this umbrella open for the explicitly unverified platform/engine lanes and later findings. Confirmed defects were filed or linked rather than inferred across providers.
Author
Owner

@morluto commented on GitHub (Oct 15, 2026):

Final MCP exercise and delivery update: #4274 now contains 13 semantic commits through 90846dc7d. The latest live probe found #4277, where session status omitted retained snapshot staging without an active provider; fixed with a failing-before/passing-after filesystem regression. #4276 records a separate design question about recovery of raw partial observations after SDK cancellation; current behavior is now documented, with no implicit retention expansion.

Final-head Node 24.18.0 validation: static checks, build, docs, 26 snapshot/session tests, 29 MCP lifecycle/session/identity tests, and fresh stdio exercise passed. The live catalog had 207 unique tools and 414 valid schemas; typed-error recovery, signed 64-bit SQLite values/blob bytes, archive Evidence lookup, plist routing, session close, ping, and transport shutdown passed. The previously reported 8,420 source tests, 799 MCP tests, 333 ownership tests, and real Chrome/Inspector runs passed before the final status/docs change; these are not claims that every engine or platform was exercised.

The PR remains draft for human readiness and required CI/platform checks. Native Windows/Linux and unexercised engine/device workflows remain coverage gaps tracked by this audit; no claim of codebase-wide absence of defects.

<!-- gh-comment-id:6203691380 --> @morluto commented on GitHub (Oct 15, 2026): Final MCP exercise and delivery update: #4274 now contains 13 semantic commits through `90846dc7d`. The latest live probe found #4277, where session status omitted retained snapshot staging without an active provider; fixed with a failing-before/passing-after filesystem regression. #4276 records a separate design question about recovery of raw partial observations after SDK cancellation; current behavior is now documented, with no implicit retention expansion. Final-head Node 24.18.0 validation: static checks, build, docs, 26 snapshot/session tests, 29 MCP lifecycle/session/identity tests, and fresh stdio exercise passed. The live catalog had 207 unique tools and 414 valid schemas; typed-error recovery, signed 64-bit SQLite values/blob bytes, archive Evidence lookup, plist routing, session close, ping, and transport shutdown passed. The previously reported 8,420 source tests, 799 MCP tests, 333 ownership tests, and real Chrome/Inspector runs passed before the final status/docs change; these are not claims that every engine or platform was exercised. The PR remains draft for human readiness and required CI/platform checks. Native Windows/Linux and unexercised engine/device workflows remain coverage gaps tracked by this audit; no claim of codebase-wide absence of defects.
Author
Owner

@N0zoM1z0 commented on GitHub (Oct 16, 2026):

Linux audit checkpoint at pinned main 2c7583599b9ac1c847bd77b1940930fd8d4594c7 (executed results, not a claim that the entire audit is complete):

Owner/workflow Executed evidence Status
Browser launch/attach Real Chromium 156, maintained CLI/MCP verifier: owned cleanup, external target preserved/disconnected, environment/state restoration, observation failures/cancellation Passed; 232.2 s, 4.23 GiB sampled family peak
Ghidra raw sessions Real Ghidra 12.1.4 CLI/MCP ARM/x86/x64; selection reuse/replacement, invalid selection preserves session, byte paging, source unchanged Passed; 79.8 s, 1.57 GiB
Ghidra native sessions Real debug/stripped/type-layout/jump-table ELF; 387 successful + 52 expected rejected boundary calls, startup cancellation, snapshot close/concurrency, ephemeral annotation rollback, reopen and cleanup Passed; 733.5 s, 4.01 GiB
Actual stdio contracts + SQLite/Evidence 207 live tools / 414 converted schemas validated as declared 2020-12; typed error recovery, exact int64/BLOB/selected columns, source unchanged, export → close → import Passed; 11.4 s, 1.03 GiB
Owned Electron capture Official Electron 44.7.0, Ubuntu 24.04 container + authenticated Xvfb; all three actions and physical IPC file effect completed; unrelated marked control survives Reproduced #4282: live Chromium helpers erase/miss run markers, so cleanup remains unverified
Electron cleanup diagnostics Generic lineage reason and incorrect execution_failure: unreadable_output reproduced through actual stdio MCP Focused #4403 / PR #4406; specific owner reason and direct typed primary failure preserved, without weaker ownership decisions
Hopper publisher boundary Current official 6.6.0 demo package downloaded through production publisher and detached PGP verified against pinned primary fingerprint; launcher/package digests retained Download/signature verified; engine lifecycle still pending

Two paired Electron captures per revision also checked completed actions/effects and the unrelated control. Medians base/fix: 8.28/7.99 s elapsed, 7.75/7.34 s CPU, 1.24/1.26 GiB sampled family RSS; input + full MCP result proxy 8,257/8,273 o200k_base tokens. No speedup claim from two samples. Fresh processes/profiles, Node compile cache disabled, OS cache uncontrolled/warm; actual agent billing and initialization traffic unmeasured. Xvfb/container baseline excluded from that inner family sample; container capped at 4 GiB/two CPUs.

Deduplication: #4346 already owns #4322; #3544 owns custom XAUTHORITY forwarding (#3414). This audit does not duplicate either or claim those fixes verified. #4276's retained-partial recovery design remains unresolved; no implicit retention expansion. Proprietary engines, devices, and other OSes remain unverified. The 207-tool inventory is not itself proof of every resource owner’s lifecycle. Full local logs and responses retained under /tmp/rea-4227-lifecycle-20261016/ and /tmp/rea-4403-browser-cleanup-20261016/; additional owner lanes are in progress.

<!-- gh-comment-id:6209533148 --> @N0zoM1z0 commented on GitHub (Oct 16, 2026): Linux audit checkpoint at pinned main `2c7583599b9ac1c847bd77b1940930fd8d4594c7` (executed results, not a claim that the entire audit is complete): | Owner/workflow | Executed evidence | Status | |---|---|---| | Browser launch/attach | Real Chromium 156, maintained CLI/MCP verifier: owned cleanup, external target preserved/disconnected, environment/state restoration, observation failures/cancellation | Passed; 232.2 s, 4.23 GiB sampled family peak | | Ghidra raw sessions | Real Ghidra 12.1.4 CLI/MCP ARM/x86/x64; selection reuse/replacement, invalid selection preserves session, byte paging, source unchanged | Passed; 79.8 s, 1.57 GiB | | Ghidra native sessions | Real debug/stripped/type-layout/jump-table ELF; 387 successful + 52 expected rejected boundary calls, startup cancellation, snapshot close/concurrency, ephemeral annotation rollback, reopen and cleanup | Passed; 733.5 s, 4.01 GiB | | Actual stdio contracts + SQLite/Evidence | 207 live tools / 414 converted schemas validated as declared 2020-12; typed error recovery, exact int64/BLOB/selected columns, source unchanged, export → close → import | Passed; 11.4 s, 1.03 GiB | | Owned Electron capture | Official Electron 44.7.0, Ubuntu 24.04 container + authenticated Xvfb; all three actions and physical IPC file effect completed; unrelated marked control survives | **Reproduced #4282**: live Chromium helpers erase/miss run markers, so cleanup remains unverified | | Electron cleanup diagnostics | Generic lineage reason and incorrect `execution_failure: unreadable_output` reproduced through actual stdio MCP | Focused #4403 / PR #4406; specific owner reason and direct typed primary failure preserved, without weaker ownership decisions | | Hopper publisher boundary | Current official 6.6.0 demo package downloaded through production publisher and detached PGP verified against pinned primary fingerprint; launcher/package digests retained | Download/signature verified; engine lifecycle still pending | Two paired Electron captures per revision also checked completed actions/effects and the unrelated control. Medians base/fix: 8.28/7.99 s elapsed, 7.75/7.34 s CPU, 1.24/1.26 GiB sampled family RSS; input + full MCP result proxy 8,257/8,273 `o200k_base` tokens. No speedup claim from two samples. Fresh processes/profiles, Node compile cache disabled, OS cache uncontrolled/warm; actual agent billing and initialization traffic unmeasured. Xvfb/container baseline excluded from that inner family sample; container capped at 4 GiB/two CPUs. Deduplication: #4346 already owns #4322; #3544 owns custom XAUTHORITY forwarding (#3414). This audit does not duplicate either or claim those fixes verified. #4276's retained-partial recovery design remains unresolved; no implicit retention expansion. Proprietary engines, devices, and other OSes remain unverified. The 207-tool inventory is not itself proof of every resource owner’s lifecycle. Full local logs and responses retained under `/tmp/rea-4227-lifecycle-20261016/` and `/tmp/rea-4403-browser-cleanup-20261016/`; additional owner lanes are in progress.
Author
Owner

@N0zoM1z0 commented on GitHub (Oct 16, 2026):

Linux audit update: #4403 was fixed and normally merged in #4406 (5a77acfbc), after current-head CI and both automated re-reviews passed. The stale colocated test expectations found in review were reproduced, corrected and consolidated with the existing owner tests. No ownership guard was weakened.

Additional executed lanes since the earlier checkpoint:

  • Real signed Hopper 6.6.0 demo on Ubuntu 24.04: 181 successful / 63 expected rejected CLI/MCP calls; target switching, cancellation recovery, graceful and SIGKILL owner exit, same/different-target reopen, unrelated sentinel preservation and clean owned lineage. Four fixture hashes stayed unchanged (105.50 s, sampled peak 2.19 GiB).
  • GNU GDB 13.1: late-completion cancellation/retry/new-session recovery passed. The initial persistent-recovery hypothesis was disproved by a reduced real-engine control, so no speculative issue was opened. Existing #3993 also passed a six-path real MI + stdio matrix on current main d72d856f5, and was closed with evidence of the existing format-aware parser fix.
  • Real Frida CLI plus 10 persistent stdio calls: marker/source SHA, unload, paused-close resume, detach preserving the running target, and stdio shutdown resuming a paused target. Authored targets exited through their own stop files (4.25 s, 0.78 GiB).
  • JADX/real ApiDemos 6.0.18: five CLI/MCP operations, cross-DEX offsets/source identities, overloads, missing Java/JRE/bad JAR recovery and real CLI SIGTERM cleanup. APK not executed and unchanged (196.83 s, 2.36 GiB).
  • Real Binwalk/Unblob: range extraction, independent offsets/hashes, unknown chunks/depth, ext4 via debugfs without mounts, missing-extractor recovery rows despite exit 1, and selected extracted ELF handoff to real Ghidra (35.41 s, 1.05 GiB).
  • WABT 1.0.42: 42 CLI/MCP cases and verified empty owned lineage (108.70 s, 1.45 GiB); official binary asset SHA verified before use.
  • Sigrok 0.7.2: 21 cases; TShark: 23 field/capture cases plus separate PCAP-adapter CLI/MCP parity; filtering/paging/resource bounds and owned cleanup. Synthesized wire-format fixtures are explicitly labeled, with no hardware acquisition claim.
  • Go 1.23.5: 15 compiled ELF/PE/Mach-O variants / 30 public cases, including PIE, sectionless and byte-valued metadata. Cross-platform artifacts were inspected on Linux, not executed (90.80 s, 1.05 GiB).
  • Process finalization: 12 real CLI/MCP + six controlled CLI cleanup cases passed, including cancellation during finalization. Host-cleanup uncertainty remains explicit where the existing tests permit it.
  • ZIP/static application + Evidence: public CLI extraction, compact MCP inspection retaining a parent ID, filtered summary and complete export passed. Complete+filters is intentionally rejected; the supported retry retained Evidence and the connection remained usable.

Full English recap, immutable revisions and per-lane wall/CPU/RSS measurements are retained locally at /tmp/rea-4227-lifecycle-20261016/English-recap.md and completed-lanes.json. Heavy tasks used two CPU cores and bounded heaps; the owned Ubuntu container is stopped. RSS sampling may double-count shared pages; actual model billing remains unmeasured. No speedup or cross-platform certification claim.

Still open: #4282 live Electron marker visibility; #4346 already owns #4322 and #3544 owns custom XAUTHORITY (#3414). Missing engines/devices and unselected lifecycle fault cases are unverified, not silently marked passed. The 207-tool / 48-provider declaration map is not a substitute for tracing actual resource owners. Next: real reproduction of existing #4011's optional recorded-crash Python→GDB exec ownership mismatch, using matching cached free tools. This umbrella remains open.

<!-- gh-comment-id:6210632594 --> @N0zoM1z0 commented on GitHub (Oct 16, 2026): Linux audit update: #4403 was fixed and normally merged in #4406 (`5a77acfbc`), after current-head CI and both automated re-reviews passed. The stale colocated test expectations found in review were reproduced, corrected and consolidated with the existing owner tests. No ownership guard was weakened. Additional **executed** lanes since the earlier checkpoint: - Real signed **Hopper 6.6.0 demo** on Ubuntu 24.04: 181 successful / 63 expected rejected CLI/MCP calls; target switching, cancellation recovery, graceful and SIGKILL owner exit, same/different-target reopen, unrelated sentinel preservation and clean owned lineage. Four fixture hashes stayed unchanged (105.50 s, sampled peak 2.19 GiB). - **GNU GDB 13.1**: late-completion cancellation/retry/new-session recovery passed. The initial persistent-recovery hypothesis was disproved by a reduced real-engine control, so no speculative issue was opened. Existing #3993 also passed a six-path real MI + stdio matrix on current main `d72d856f5`, and was closed with evidence of the existing format-aware parser fix. - Real **Frida** CLI plus 10 persistent stdio calls: marker/source SHA, unload, paused-close resume, detach preserving the running target, and stdio shutdown resuming a paused target. Authored targets exited through their own stop files (4.25 s, 0.78 GiB). - **JADX/real ApiDemos 6.0.18**: five CLI/MCP operations, cross-DEX offsets/source identities, overloads, missing Java/JRE/bad JAR recovery and real CLI SIGTERM cleanup. APK not executed and unchanged (196.83 s, 2.36 GiB). - Real **Binwalk/Unblob**: range extraction, independent offsets/hashes, unknown chunks/depth, ext4 via debugfs **without mounts**, missing-extractor recovery rows despite exit 1, and selected extracted ELF handoff to real Ghidra (35.41 s, 1.05 GiB). - **WABT 1.0.42**: 42 CLI/MCP cases and verified empty owned lineage (108.70 s, 1.45 GiB); official binary asset SHA verified before use. - **Sigrok 0.7.2**: 21 cases; **TShark**: 23 field/capture cases plus separate PCAP-adapter CLI/MCP parity; filtering/paging/resource bounds and owned cleanup. Synthesized wire-format fixtures are explicitly labeled, with no hardware acquisition claim. - **Go 1.23.5**: 15 compiled ELF/PE/Mach-O variants / 30 public cases, including PIE, sectionless and byte-valued metadata. Cross-platform artifacts were inspected on Linux, not executed (90.80 s, 1.05 GiB). - Process finalization: 12 real CLI/MCP + six controlled CLI cleanup cases passed, including cancellation during finalization. Host-cleanup uncertainty remains explicit where the existing tests permit it. - ZIP/static application + Evidence: public CLI extraction, compact MCP inspection retaining a parent ID, filtered summary and complete export passed. Complete+filters is intentionally rejected; the supported retry retained Evidence and the connection remained usable. Full English recap, immutable revisions and per-lane wall/CPU/RSS measurements are retained locally at `/tmp/rea-4227-lifecycle-20261016/English-recap.md` and `completed-lanes.json`. Heavy tasks used two CPU cores and bounded heaps; the owned Ubuntu container is stopped. RSS sampling may double-count shared pages; actual model billing remains unmeasured. No speedup or cross-platform certification claim. Still open: #4282 live Electron marker visibility; #4346 already owns #4322 and #3544 owns custom XAUTHORITY (#3414). Missing engines/devices and unselected lifecycle fault cases are unverified, not silently marked passed. The 207-tool / 48-provider declaration map is not a substitute for tracing actual resource owners. Next: real reproduction of existing #4011's optional recorded-crash Python→GDB exec ownership mismatch, using matching cached free tools. This umbrella remains open.
Author
Owner

@N0zoM1z0 commented on GitHub (Oct 16, 2026):

Linux lifecycle follow-up: #4011 is fixed and merged in #4435 (781d5751a, verified head 1f5ca5ade; identical trees). All final-head CI passed, including real recorded-crash and binary-layout lanes; Codex had no findings and Greptile scored 5/5 after the foreign-token evidence oracle was strengthened.

Real GNU GDB13.1/pwndbg2026.09.15 reproduced the stale Python command pin after exec. The shared decoder now uses exec-aware ownership consistently across stages, while retaining parent/group/token checks and explicit pins. Controlled native-handoff cancellation stops GDB before returning, retains decoded facts/diagnostics, preserves an unrelated control, and permits same-provider reuse. Foreign-token refusal still retains ownership/files for retry. The normal unmodified public CLI/MCP verifier passed all42 cases twice per revision. Other OSes and SDK raw-partial recovery remain unverified.

Same-core completed CLI + first/repeated MCP task: base/final-head8.11/8.27s wall,9.31/9.45s CPU,1.060/1.061GiB sampled family RSS. Per MCP request+full-reply o200k proxy was32,465 tokens on both; schemas/control traffic/CLI output/billing excluded. Full-verifier base82.0/81.4s vsfix149.0/78.0s are all retained; the slow first fixed sample has no established cause. No speedup is claimed.

Owner inventory now associates all207 tool identities with37 contract families and source ownership paths, with no omissions/duplicates. This is source-derived mapping, not proof of every leaf owner or lifecycle phase. Distinct roots include server-owned provider shutdown, BinarySession/lazy/composite routing, process-capture session resources, artifact scopes, descriptor owners, and process identity/supervision. Dynamic selections and untested phases remain unknown rather than inferred from catalog membership. Earlier real-engine coverage and unavailable-platform limitations still apply.

Next existing reports: #4379 reproduced on Linux at fresh main781d5751a (final real stat settles after abort, but bytes are returned; descriptor does close), with its isolated fix underway. #4381 is queued for Linux reproduction after that merge; no matching PR was found for either. The umbrella remains open.

Local evidence: /tmp/rea-4011-pwndbg-exec-20261016/, /tmp/rea-4379-file-finalization-20261016/; owner matrix and English recap under /tmp/rea-4227-lifecycle-20261016/. Only selected fixture environments were persisted; heavy runs remained serial and bounded.

<!-- gh-comment-id:6211806489 --> @N0zoM1z0 commented on GitHub (Oct 16, 2026): Linux lifecycle follow-up: **#4011 is fixed and merged in #4435** (`781d5751a`, verified head `1f5ca5ade`; identical trees). All final-head CI passed, including real recorded-crash and binary-layout lanes; Codex had no findings and Greptile scored 5/5 after the foreign-token evidence oracle was strengthened. Real GNU GDB13.1/pwndbg2026.09.15 reproduced the stale Python command pin after exec. The shared decoder now uses exec-aware ownership consistently across stages, while retaining parent/group/token checks and explicit pins. Controlled native-handoff cancellation stops GDB before returning, retains decoded facts/diagnostics, preserves an unrelated control, and permits same-provider reuse. Foreign-token refusal still retains ownership/files for retry. The normal unmodified public CLI/MCP verifier passed all42 cases twice per revision. Other OSes and SDK raw-partial recovery remain unverified. Same-core completed CLI + first/repeated MCP task: base/final-head8.11/8.27s wall,9.31/9.45s CPU,1.060/1.061GiB sampled family RSS. Per MCP request+full-reply o200k proxy was32,465 tokens on both; schemas/control traffic/CLI output/billing excluded. Full-verifier base82.0/81.4s vsfix149.0/78.0s are all retained; the slow first fixed sample has no established cause. No speedup is claimed. Owner inventory now associates all207 tool identities with37 contract families and source ownership paths, with no omissions/duplicates. This is **source-derived mapping, not proof of every leaf owner or lifecycle phase**. Distinct roots include [server-owned provider shutdown](https://github.com/morluto/rea/blob/781d5751ad18b25a1fe1ffa8c6035388be8c3283/src/server/createServer.ts), [BinarySession/lazy/composite routing](https://github.com/morluto/rea/blob/781d5751ad18b25a1fe1ffa8c6035388be8c3283/src/application/binary/BinarySession.ts), [process-capture session resources](https://github.com/morluto/rea/blob/781d5751ad18b25a1fe1ffa8c6035388be8c3283/src/process/capture/ProcessCaptureLifecycle.ts), [artifact scopes](https://github.com/morluto/rea/blob/781d5751ad18b25a1fe1ffa8c6035388be8c3283/src/artifacts/ArtifactResourceScope.ts), descriptor owners, and process identity/supervision. Dynamic selections and untested phases remain unknown rather than inferred from catalog membership. Earlier real-engine coverage and unavailable-platform limitations still apply. Next existing reports: #4379 reproduced on Linux at fresh main781d5751a (final real stat settles after abort, but bytes are returned; descriptor does close), with its isolated fix underway. #4381 is queued for Linux reproduction after that merge; no matching PR was found for either. The umbrella remains open. Local evidence: `/tmp/rea-4011-pwndbg-exec-20261016/`, `/tmp/rea-4379-file-finalization-20261016/`; owner matrix and English recap under `/tmp/rea-4227-lifecycle-20261016/`. Only selected fixture environments were persisted; heavy runs remained serial and bounded.
Author
Owner

@N0zoM1z0 commented on GitHub (Oct 16, 2026):

Linux checkpoint: #4379 is fixed and #4443 merged normally as c884864876c2568d8567235737b32e3f5893751d. Final owner/consumer tests (570), real filesystem/Evidence probes, paired public tasks and exact-head reviews passed. Successful file finalization now observes cancellation while preserving completed physical facts, primary failures and exact cleanup ownership. Production sources and our four changed test files match reviewed head 025fd7df; five unrelated upstream test files landed during CI.

Next, #4381 reproduced on that latest main in Linux (3/3 original real-stream trials). Ready PR #4446 adopts @xu91102's public patch with original authorship preserved and independently adds opaque cancellation-reason hardening. Final head d6fa191e passed 484 tests /28 files, static/docs checks, seven real retained-provider cancellation/denied-close/reuse cases on an unchanged official Microsoft .NET assembly, and two paired actual CLI/stdio MCP runs per revision. Public tasks preserve summaries, paged facts, provenance and complete Evidence; they are one-shot provider calls, so cached-hash cancellation is established separately at the real retained provider/file boundary. CI/reviews are running.

Completed public-task base/fix medians: 7.22/7.21 s wall, 9.07/9.05 s CPU, 0.673/0.669 GiB sampled process-family RSS (two cores; OS cache uncontrolled). Forty warm retained-provider queries: 602/604 ms. No speedup claim. Exact source/package identities, failures and full measurements are retained locally. This checkpoint does not establish a physical descriptor leak, public SDK cancellation coverage for managed cached hashing, or additional native-engine/device coverage; earlier explicit unknowns remain open.

<!-- gh-comment-id:6213682747 --> @N0zoM1z0 commented on GitHub (Oct 16, 2026): Linux checkpoint: #4379 is fixed and **#4443 merged normally** as `c884864876c2568d8567235737b32e3f5893751d`. Final owner/consumer tests (570), real filesystem/Evidence probes, paired public tasks and exact-head reviews passed. Successful file finalization now observes cancellation while preserving completed physical facts, primary failures and exact cleanup ownership. Production sources and our four changed test files match reviewed head `025fd7df`; five unrelated upstream test files landed during CI. Next, #4381 reproduced on that latest main in Linux (3/3 original real-stream trials). **Ready PR #4446** adopts @xu91102's public patch with original authorship preserved and independently adds opaque cancellation-reason hardening. Final head `d6fa191e` passed **484 tests /28 files**, static/docs checks, seven real retained-provider cancellation/denied-close/reuse cases on an unchanged official Microsoft .NET assembly, and two paired actual CLI/stdio MCP runs per revision. Public tasks preserve summaries, paged facts, provenance and complete Evidence; they are one-shot provider calls, so cached-hash cancellation is established separately at the real retained provider/file boundary. CI/reviews are running. Completed public-task base/fix medians: 7.22/7.21 s wall, 9.07/9.05 s CPU, 0.673/0.669 GiB sampled process-family RSS (two cores; OS cache uncontrolled). Forty warm retained-provider queries: 602/604 ms. No speedup claim. Exact source/package identities, failures and full measurements are retained locally. This checkpoint does not establish a physical descriptor leak, public SDK cancellation coverage for managed cached hashing, or additional native-engine/device coverage; earlier explicit unknowns remain open.
Author
Owner

@N0zoM1z0 commented on GitHub (Oct 16, 2026):

#4381 is now fixed: #4446 merged normally as fe2a398dd9ab290ba6cb3411403d319cec8d07a2 after all required CI passed. Codex reported no findings and Greptile scored5/5 on exact head d6fa191e. The squash tree exactly matches that tested/reviewed head. The original patch author's contribution is preserved; the two previously withdrawn co-author identities were not added.

Final Linux verification:484 tests/28files, static/docs checks, seven actual retained-provider cancellation/close-denial/finalization/reuse scenarios on an unchanged official Microsoft .NET assembly, and two paired normal public CLI/MCP tasks per revision. Exact opaque caller reasons survive normalization; genuine close failures retain their owner and block admission until verified cleanup. No physical descriptor leak or public cached-provider cancellation was inferred.

Continuing from a new worktree pinned to latest main fe2a398dd: real offline ELF-layout and historical web-capture workflows, with two CPU cores and bounded memory. The detailed source-owner inventory still marks unexecuted phases unknown; catalog coverage alone is not lifecycle verification.

<!-- gh-comment-id:6213854861 --> @N0zoM1z0 commented on GitHub (Oct 16, 2026): #4381 is now fixed: **#4446 merged normally** as `fe2a398dd9ab290ba6cb3411403d319cec8d07a2` after all required CI passed. Codex reported no findings and Greptile scored5/5 on exact head `d6fa191e`. The squash tree exactly matches that tested/reviewed head. The original patch author's contribution is preserved; the two previously withdrawn co-author identities were not added. Final Linux verification:484 tests/28files, static/docs checks, seven actual retained-provider cancellation/close-denial/finalization/reuse scenarios on an unchanged official Microsoft .NET assembly, and two paired normal public CLI/MCP tasks per revision. Exact opaque caller reasons survive normalization; genuine close failures retain their owner and block admission until verified cleanup. No physical descriptor leak or public cached-provider cancellation was inferred. Continuing from a new worktree pinned to latest main `fe2a398dd`: real offline ELF-layout and historical web-capture workflows, with two CPU cores and bounded memory. The detailed source-owner inventory still marks unexecuted phases unknown; catalog coverage alone is not lifecycle verification.
Author
Owner

@N0zoM1z0 commented on GitHub (Oct 16, 2026):

Additional Linux verification at pinned main fe2a398dd completed without a new product defect in these lanes:

Owner/workflow Executed evidence Wall / peak family RSS
Offline ELF layout 157 real CLI/MCP cases +4 bootstrap boundary controls; pwntools4.15/pyelftools0.33/Unicorn2.1.2; no target exec by strace; verified empty final lineage 291s /1.51GiB
Historical web captures 144 CLI/MCP cases; genuine mitmproxy12.2.3 FlowWriter/SaveHar;7 native failure classifications; offline; verified empty final lineage 249s /1.09GiB
Rust Real auditable Rust1.97 compiler output plus official cargo-auditable0.7.7 absent-section control; CLI/MCP parity, pre/read/final-close cancellation and reuse 5.66s /0.66GiB
Apktool Official3.0.3/JDK21, genuine ApiDemos6.0.18;2CLI+5MCP requests; string omission/967strings, failed-path recovery 19.73s /0.98GiB
Flutter Official LocalSend1.18.2 x64 APK +plain APK control; CLI/MCP identity/four AOT symbols/agreeing hashes/bounded partial string pool 11.00s /1.14GiB
EVM 59CLI/MCP cases; solc0.8.30/evmole0.9.3; strace confirms no target execution or network sockets; verified empty final lineage 154.52s /1.64GiB
JS recovery Official pinned Wakaru1.14.0, actual esbuild/webpack outputs;12CLI/MCP cases,8 finite JS semantics oracles,6 cross-chunk imports 60.85s /1.13GiB

Apktool public SDK cancellation after actual Java decode handoff also passed: observed native exit91ms and workspace removal93ms, subsequent decode succeeded in the same stdio connection, and an unrelated java-named control survived. The APK remained unchanged; verified final lineage was empty. Run6.0s/0.80GiB. Native exit and owner cleanup were checked as separate facts. Analysed APKs and ELF fixtures were not executed except the explicitly controlled native debugger fixture in the next lane; the Rust compiler wrapper and finite source-owned JS test oracles were executed for fixture preparation/validation.

Limits: Flutter exact engine/string-count expectations and complete string-pool coverage remain unverified. Rust retains typed cancellation and cleanup but does not retain the custom reason in its cause chain. The optional large-index ELF MCP profile was not requested. A separate stable-artifact helper probe passed3/3 real-stream cancellation/retry/close controls; #4381 was not generalized to it. Initial harness-assumption failures are retained and were not filed as REA defects. CPU, cold/warm/token proxies where measured, source digests and full local logs are recorded; no speedup claim.

Next existing finding: #4015 reproduces on latest main in the registered MCP path (2failing interrupted cases,1framed control). Real official Linux Rizin0.9.1 also supplies genuine bytes before NUL, and a production-manager run with a shortened500ms deadline reproduced the missing tail. The native fixture completed and its IO inventory was empty before fault injection. Existing cleanup uncertainty was retained; this is not an automatic-recovery claim. Its focused fix is under verification in a separate latest-main worktree/branch.

<!-- gh-comment-id:6214778837 --> @N0zoM1z0 commented on GitHub (Oct 16, 2026): Additional Linux verification at pinned main `fe2a398dd` completed without a new product defect in these lanes: | Owner/workflow | Executed evidence | Wall / peak family RSS | |---|---|---| | Offline ELF layout |157 real CLI/MCP cases +4 bootstrap boundary controls; pwntools4.15/pyelftools0.33/Unicorn2.1.2; no target exec by strace; verified empty final lineage |291s /1.51GiB| | Historical web captures |144 CLI/MCP cases; genuine mitmproxy12.2.3 FlowWriter/SaveHar;7 native failure classifications; offline; verified empty final lineage |249s /1.09GiB| | Rust |Real auditable Rust1.97 compiler output plus official cargo-auditable0.7.7 absent-section control; CLI/MCP parity, pre/read/final-close cancellation and reuse |5.66s /0.66GiB| | Apktool |Official3.0.3/JDK21, genuine ApiDemos6.0.18;2CLI+5MCP requests; string omission/967strings, failed-path recovery |19.73s /0.98GiB| | Flutter |Official LocalSend1.18.2 x64 APK +plain APK control; CLI/MCP identity/four AOT symbols/agreeing hashes/bounded partial string pool |11.00s /1.14GiB| | EVM |59CLI/MCP cases; solc0.8.30/evmole0.9.3; strace confirms no target execution or network sockets; verified empty final lineage |154.52s /1.64GiB| | JS recovery |Official pinned Wakaru1.14.0, actual esbuild/webpack outputs;12CLI/MCP cases,8 finite JS semantics oracles,6 cross-chunk imports |60.85s /1.13GiB| Apktool **public SDK cancellation after actual Java decode handoff** also passed: observed native exit~91ms and workspace removal~93ms, subsequent decode succeeded in the same stdio connection, and an unrelated `java`-named control survived. The APK remained unchanged; verified final lineage was empty. Run6.0s/0.80GiB. Native exit and owner cleanup were checked as separate facts. Analysed APKs and ELF fixtures were not executed except the explicitly controlled native debugger fixture in the next lane; the Rust compiler wrapper and finite source-owned JS test oracles were executed for fixture preparation/validation. Limits: Flutter exact engine/string-count expectations and complete string-pool coverage remain unverified. Rust retains typed cancellation and cleanup but does not retain the custom reason in its cause chain. The optional large-index ELF MCP profile was not requested. A separate stable-artifact helper probe passed3/3 real-stream cancellation/retry/close controls; #4381 was not generalized to it. Initial harness-assumption failures are retained and were not filed as REA defects. CPU, cold/warm/token proxies where measured, source digests and full local logs are recorded; no speedup claim. Next existing finding: **#4015** reproduces on latest main in the registered MCP path (2failing interrupted cases,1framed control). Real official Linux Rizin0.9.1 also supplies genuine bytes before NUL, and a production-manager run with a shortened500ms deadline reproduced the missing tail. The native fixture completed and its IO inventory was empty before fault injection. Existing cleanup uncertainty was retained; this is not an automatic-recovery claim. Its focused fix is under verification in a separate latest-main worktree/branch.
Author
Owner

@N0zoM1z0 commented on GitHub (Oct 16, 2026):

#4015 is fixed: #4459 merged normally as 1ff705473ae79275ab0b410e6f25af6da60ea18f. Its tree exactly matches tested/reviewed head 0e480fb83. Required CI is green, Codex reports no findings on that head, Greptile5/5, and all review threads are resolved.

The Rizin receiver and collector now preserve received complete/unfinished bytes with bounded UTF-8 capture. A tagged Result keeps facts independent of cancellation/protocol/cleanup precedence; byte-queue drops are recorded at their source, and active stdin failures preserve partial frames. Unknown completion, exact launch provenance, current-target uncertainty and ambiguous marker prefixes remain explicit. This does not relax cleanup authority.

Executed Linux evidence: 353 tests/15files (one existing skip); full static/docs gates; focused snapshot mutation sweep4killed/2TypeScript-rejected/0survivors. Genuine official Rizin0.9.1 probes retain the native diagnostic after deadline/exit and after owned-process exit followed by cancellation during output drainage. Those native fault probes retain existing inferior-disposition cleanup uncertainty; they do not establish automatic recovery or real stdio SDK cancellation.

Two final completed public CLI/stdio MCP runs each cover1CLI+11MCP requests, three target lifecycles, explicit close/reopen and connection shutdown. Borrowed TTY and unrelated rizin-named control survive; source ELF is unchanged and final lineage is verified empty. Base/final medians:6.62/6.75s wall,7.02/7.42s CPU,0.717/0.717GiB sampled RSS. Whole-wire discovery is also measured; catalogs are identical. Tokenizer proxies are not model billing; no speedup is attributed to this fix.

The inventory remains207 tools/37 source contract families. Scoped Rizin owner phases now distinguish verified normal recovery, boundary-only queue/cancellation cases, native fault uncertainty and unverified platforms. Other previously recorded unknowns remain open. The extra first-call validator cost is already tracked by #1065/T5; no duplicate issue is needed. Next Linux candidate: existing #3946, subject to fresh-main reproduction.

<!-- gh-comment-id:6216227899 --> @N0zoM1z0 commented on GitHub (Oct 16, 2026): #4015 is fixed: **#4459 merged normally** as `1ff705473ae79275ab0b410e6f25af6da60ea18f`. Its tree exactly matches tested/reviewed head `0e480fb83`. Required CI is green, Codex reports no findings on that head, Greptile5/5, and all review threads are resolved. The Rizin receiver and collector now preserve received complete/unfinished bytes with bounded UTF-8 capture. A tagged Result keeps facts independent of cancellation/protocol/cleanup precedence; byte-queue drops are recorded at their source, and active stdin failures preserve partial frames. Unknown completion, exact launch provenance, current-target uncertainty and ambiguous marker prefixes remain explicit. This does not relax cleanup authority. Executed Linux evidence: **353 tests/15files (one existing skip)**; full static/docs gates; focused snapshot mutation sweep4killed/2TypeScript-rejected/0survivors. Genuine official Rizin0.9.1 probes retain the native diagnostic after deadline/exit and after owned-process exit followed by cancellation during output drainage. Those native fault probes retain existing inferior-disposition cleanup uncertainty; they do **not** establish automatic recovery or real stdio SDK cancellation. Two final completed public CLI/stdio MCP runs each cover1CLI+11MCP requests, three target lifecycles, explicit close/reopen and connection shutdown. Borrowed TTY and unrelated rizin-named control survive; source ELF is unchanged and final lineage is verified empty. Base/final medians:6.62/6.75s wall,7.02/7.42s CPU,0.717/0.717GiB sampled RSS. Whole-wire discovery is also measured; catalogs are identical. Tokenizer proxies are not model billing; no speedup is attributed to this fix. The inventory remains207 tools/37 source contract families. Scoped Rizin owner phases now distinguish verified normal recovery, boundary-only queue/cancellation cases, native fault uncertainty and unverified platforms. Other previously recorded unknowns remain open. The extra first-call validator cost is already tracked by #1065/T5; no duplicate issue is needed. Next Linux candidate: existing #3946, subject to fresh-main reproduction.
Author
Owner

@N0zoM1z0 commented on GitHub (Oct 16, 2026):

Checkpoint 8 — #3946 is fixed and merged via #4499 (a6c6a76d37c729e17cccf2dd20fe8e8177d98b14). The squash tree exactly matches reviewed/tested c68e401153528cc50e25e3bf772e0664d0cf874c; final CI passed, Codex had no findings, Greptile 5/5, and all review threads are resolved.

  • Compiled stdio reproduction on the affected base retained eight silent probes after abort and admitted a ninth ~25 s later. Final head closes all eight within 6 ms, admits no ninth, and rediscovers an authenticated bridge on the same connection.
  • Requests now retain socket ownership through local close. Late cancellation preserves confirmed-complete output as partial Evidence. Actual CLI SIGINT during receipt acknowledgement returns exit 130, cancelled, and the completed output. 66 focused tests, full static gates and docs passed.
  • Official free Cutter 2.5.0 Qt5: three paired workflows per revision, each two CLI/three MCP calls on an unchanged ELF; disconnect preserves the GUI and fixture cleanup leaves verified empty owned lineage. Base/fix medians: 8.18/8.29 s wall, 10.18/10.33 s CPU, 1.049/1.055 GiB sampled family RSS. Shared host/uncontrolled caches; no speedup claim. Catalog unchanged; whole-wire token proxy includes the full catalog and is not model billing.
  • Native metadata defects were independently reproduced on clean main and filed separately: #4497 (loaded document path missing), #4498 (Rizin version misattributed to Cutter). Work continues sequentially from fresh main.
  • Additional clean-main 180ba03bf checks: real Chromium 156 runtime attribution passed (18.77 s, 2.15 GiB); compiler-backed source-map capture/export/original-point and nested-map workflows passed (49.31 s, 1.84 GiB, isolated esbuild 0.25.10). Both final process lineages were verified empty.

Remaining Cutter gaps: actual UI-command cancellation, cancellation during descriptor filesystem reads, arbitrary foreign document switching, and failure export/import. Descriptor FIFO admission remains with external #4471/#4486. Qt6 rejected Cutter's own sample plugin too, matching upstream rizinorg/cutter#3659. Other OS and unavailable commercial engines remain unverified; this does not complete the parent audit.

Local evidence: /tmp/rea-3946-cutter-discovery-20261016/ and /tmp/rea-4227-lifecycle-20261016/cutter-owner-phases.json; essential observations are inline above.

<!-- gh-comment-id:6218111625 --> @N0zoM1z0 commented on GitHub (Oct 16, 2026): Checkpoint 8 — #3946 is fixed and merged via #4499 (`a6c6a76d37c729e17cccf2dd20fe8e8177d98b14`). The squash tree exactly matches reviewed/tested `c68e401153528cc50e25e3bf772e0664d0cf874c`; final CI passed, Codex had no findings, Greptile 5/5, and all review threads are resolved. - Compiled stdio reproduction on the affected base retained eight silent probes after abort and admitted a ninth ~25 s later. Final head closes all eight within 6 ms, admits no ninth, and rediscovers an authenticated bridge on the same connection. - Requests now retain socket ownership through local `close`. Late cancellation preserves confirmed-complete output as partial Evidence. Actual CLI SIGINT during receipt acknowledgement returns exit 130, `cancelled`, and the completed output. 66 focused tests, full static gates and docs passed. - Official free Cutter 2.5.0 Qt5: three paired workflows per revision, each two CLI/three MCP calls on an unchanged ELF; disconnect preserves the GUI and fixture cleanup leaves verified empty owned lineage. Base/fix medians: 8.18/8.29 s wall, 10.18/10.33 s CPU, 1.049/1.055 GiB sampled family RSS. Shared host/uncontrolled caches; no speedup claim. Catalog unchanged; whole-wire token proxy includes the full catalog and is not model billing. - Native metadata defects were independently reproduced on clean main and filed separately: #4497 (loaded document path missing), #4498 (Rizin version misattributed to Cutter). Work continues sequentially from fresh main. - Additional clean-main `180ba03bf` checks: real Chromium 156 runtime attribution passed (18.77 s, 2.15 GiB); compiler-backed source-map capture/export/original-point and nested-map workflows passed (49.31 s, 1.84 GiB, isolated esbuild 0.25.10). Both final process lineages were verified empty. Remaining Cutter gaps: actual UI-command cancellation, cancellation during descriptor filesystem reads, arbitrary foreign document switching, and failure export/import. Descriptor FIFO admission remains with external #4471/#4486. Qt6 rejected Cutter's own sample plugin too, matching upstream rizinorg/cutter#3659. Other OS and unavailable commercial engines remain unverified; this does not complete the parent audit. Local evidence: `/tmp/rea-3946-cutter-discovery-20261016/` and `/tmp/rea-4227-lifecycle-20261016/cutter-owner-phases.json`; essential observations are inline above.
Author
Owner

@N0zoM1z0 commented on GitHub (Oct 16, 2026):

Checkpoint 9 — two independently reproduced native Cutter metadata defects are now fixed and normally merged:

  • #4497 → #4507 (2c1dee16d): ordinary loaded files now come from CutterCore.getConfig("file.path"). A property-only candidate failed real Cutter; the actual member is a debugging backup, not a maintained current-file getter. Official Qt5 CLI/MCP and Evidence preserve a Unicode/#? ELF path. Eleven Python tests and66relevant tests passed. Touched source matches the reviewed head; two unrelated upstream PE-resource files advanced during CI.
  • #4498 → #4514 (9a82046b0): host provenance now uses Qt application version, not Rizin's multiline backend report. Thirteen Python tests and66relevant tests passed. Official Qt5 discovery and both Evidence version fields agree with cutter --version (2.5.0-HEAD-a6f6ad7). The complete squash tree matches reviewed ddaacb55f. Both PRs passed final-head CI/Portable tests, Codex and Greptile5/5; no outstanding review threads or co-author trailers.

For the version task, one completed native workflow/revision (2CLI/3MCPcalls) measured base/fix9.64/8.75s wall,11.85/10.75s CPU,1.047/1.049GiB sampled family RSS. Shared host and uncontrolled caches/load: no speedup claim. Named two-tool definitions+calls+CLI o200k_base serialization proxy8,767→6,912 (~21% less); whole wire+CLI835,460→833,605, including identical829,341-token catalogs. These are transport serialization proxies, not model input or billing. Actual model tokens are unmeasured.

Additional real managed composition checks on fresh main 9a82046b0 passed using Microsoft.Extensions.Primitives8 metadata: five CLI/four MCP calls, byte-identical assembly copies (303full-member CLI matches;62selected-member MCP matches), a66-node/65-edge graph with exact source Evidence links, inference-only exact-build reconstruction import (executed:false, canonical_observation:false), and same-connection reuse. Source bytes remained unchanged; final owned lineage was verified empty. Wall18.63s, CPU23.20s, sampled peak0.816GiB. This covers three managed composition workflows; native-boundary verification is still unqualified, and no target execution/replay claim is made.

The coverage index also records the earlier real managed inspect_analysis_view journey: retained Evidence pages at offsets0/5, limit5, with export/source provenance retained. Existing engine runs keep their own pinned revisions; they are not relabeled as latest-main tests.

Remaining Cutter gaps include actual UI-command cancellation, actual GUI document switching and same-path reload identity. The optional native-switch fixture did not establish a switch (loadFile returnedfalse); no REA defect or successful transition is inferred. Qt6 remains upstream rizinorg/cutter#3659; ADB device/server phases, native interop verification, real IDA/JEB/Kuna and other OS remain unqualified. The parent stays open.

Local evidence roots: /tmp/rea-4497-cutter-document-20261016/, /tmp/rea-4498-cutter-host-version-20261016/, /tmp/rea-4227-lifecycle-20261016/. Essential observations are above; the next index enumerates all207tool IDs and distinguishes source routes from runtime proof.

<!-- gh-comment-id:6219028158 --> @N0zoM1z0 commented on GitHub (Oct 16, 2026): Checkpoint 9 — two independently reproduced native Cutter metadata defects are now fixed and normally merged: - #4497 → #4507 (`2c1dee16d`): ordinary loaded files now come from `CutterCore.getConfig("file.path")`. A property-only candidate failed real Cutter; the actual member is a debugging backup, not a maintained current-file getter. Official Qt5 CLI/MCP and Evidence preserve a Unicode/`#?` ELF path. Eleven Python tests and66relevant tests passed. Touched source matches the reviewed head; two unrelated upstream PE-resource files advanced during CI. - #4498 → #4514 (`9a82046b0`): host provenance now uses Qt application version, not Rizin's multiline backend report. Thirteen Python tests and66relevant tests passed. Official Qt5 discovery and both Evidence version fields agree with `cutter --version` (`2.5.0-HEAD-a6f6ad7`). The complete squash tree matches reviewed `ddaacb55f`. Both PRs passed final-head CI/Portable tests, Codex and Greptile5/5; no outstanding review threads or co-author trailers. For the version task, one completed native workflow/revision (2CLI/3MCPcalls) measured base/fix9.64/8.75s wall,11.85/10.75s CPU,1.047/1.049GiB sampled family RSS. Shared host and uncontrolled caches/load: no speedup claim. Named two-tool definitions+calls+CLI `o200k_base` serialization proxy8,767→6,912 (~21% less); whole wire+CLI835,460→833,605, including identical829,341-token catalogs. These are transport serialization proxies, not model input or billing. Actual model tokens are unmeasured. Additional real managed composition checks on fresh main `9a82046b0` passed using Microsoft.Extensions.Primitives8 metadata: five CLI/four MCP calls, byte-identical assembly copies (303full-member CLI matches;62selected-member MCP matches), a66-node/65-edge graph with exact source Evidence links, inference-only exact-build reconstruction import (`executed:false`, `canonical_observation:false`), and same-connection reuse. Source bytes remained unchanged; final owned lineage was verified empty. Wall18.63s, CPU23.20s, sampled peak0.816GiB. This covers three managed composition workflows; native-boundary verification is still unqualified, and no target execution/replay claim is made. The coverage index also records the earlier real managed `inspect_analysis_view` journey: retained Evidence pages at offsets0/5, limit5, with export/source provenance retained. Existing engine runs keep their own pinned revisions; they are not relabeled as latest-main tests. Remaining Cutter gaps include actual UI-command cancellation, actual GUI document switching and same-path reload identity. The optional native-switch fixture did not establish a switch (`loadFile` returnedfalse); no REA defect or successful transition is inferred. Qt6 remains upstream rizinorg/cutter#3659; ADB device/server phases, native interop verification, real IDA/JEB/Kuna and other OS remain unqualified. The parent stays open. Local evidence roots: `/tmp/rea-4497-cutter-document-20261016/`, `/tmp/rea-4498-cutter-host-version-20261016/`, `/tmp/rea-4227-lifecycle-20261016/`. Essential observations are above; the next index enumerates all207tool IDs and distinguishes source routes from runtime proof.
Author
Owner

@N0zoM1z0 commented on GitHub (Oct 16, 2026):

Linux audit source-route inventory and coverage index.

This enumerates 207 tool IDs across37contract families against source 9a82046b07244e62df22076b64ded05ff9abc5db; the current captured catalog has the same IDs. Families are an index, not a claim of37canonical resource owners. Entry routes are source-derived; dynamically selected leaf owners and every unnamed lifecycle phase remain unknown. Executed lanes retain their individual pinned revisions; earlier engine runs are not relabeled as latest-main tests.

Contract family / tools Source entry route Outcome and actual scope
adb (24) AdbProvider.ts Unknown — No physical-device workflow executed; client/server discovery and device operations not individually qualified here.
analysisView (1) BinarySession.ts, registerAnalysisViewTool.ts Executed subset — Real Microsoft DLL retained-member Evidence: two consecutive MCP pages(offset0/5,limit5), with source/provenance and export retained. Other views/providers/failure phases unknown. evidence1 evidence2
android (5) JadxProvider.ts Executed subset — Real JADX/ApiDemos CLI/MCP; missing runtime/invalid JAR recovery and owned Java CLI termination. Other failure phases unknown. evidence1
apktool (2) ApktoolProvider.ts Executed subset — Real Apktool3.0.3 resources and public SDK cancellation after Java handoff, same-connection reuse, owned cleanup. evidence1
application (10) BinarySession.ts, registerApplicationTools.ts Partial — Selected JS/artifact workflows and Wakaru oracles; not all ten application tools or reconstruction outcomes qualified. evidence1
artifact (6) BinarySession.ts, CompositeProvider.ts, LazyAnalysisProvider.ts, ArtifactProvider.ts, ArtifactResourceScope.ts Partial — Archive/Evidence and filesystem finalization exercised; remaining Apple resource decoders and failure phases unknown. evidence1 evidence2
binaryDiagnostics (3) PeResourcesProvider.ts, PwntoolsDecoder.ts Partial / defect fixed — Real ELF layout and recorded-crash exec/cancel/reuse; #4435 fixed4011. Latest upstream PE-resource change not separately qualified in this audit. evidence1 evidence2
browser (8) CdpBrowserProvider.ts, CdpTargetSessionOwner.ts Executed subset — Real Chrome156 CLI/MCP, attached target/state preservation and selected transport cancellation/cleanup. Not universal target/platform coverage. evidence1
browserScenario (1) PlaywrightBrowserScenarioProvider.ts, PlaywrightScenarioSession.ts Executed subset / defect fixed — Chrome launch/attach, environment/storage/service workers; cleanup diagnostics fixed4403 via4406. Additional ownership phases remain unknown. evidence1 evidence2
capture (2) TsharkCaptureProvider.ts Executed subset — Real TShark offline field/capture service; permission/capacity and remaining cancellation phases not universally covered. evidence1
cutter (2) CutterBridgeClient.ts, CutterBridgeService.ts, rea_bridge.py Defects fixed / executed subset — 3946/4499,4497/4507 and4498/4514 merged. Real Qt5 metadata and SDK cancel after controlled native shell handoff; retained unknown Evidence export, no replay, receipt recovery and GUI preservation. Discovery queue cancellation also uses authenticated synthetic peers. GUI document switching and other fault variants unknown. evidence1 evidence2 evidence3
electron (6) CdpElectronProvider.ts, PlaywrightElectronActiveProvider.ts, registerElectronTools.ts Defect remains — Real Electron44.7 completed actions with missing visibility marker (#4282);4406 improves cleanup diagnostics, not that marker. Later180 cancellation update not requalified with Electron here. evidence1
enhanced (14) BinarySession.ts, CompositeProvider.ts, LazyAnalysisProvider.ts Partial — Shared selected-provider routing and real Ghidra/Hopper journeys; all14tools/provider combinations not individually established. evidence1 evidence2
evm (1) EvmoleInterfaceProvider.ts Executed subset — Real solc0.8.30/evmole0.9.3 static interfaces; source-owned EVM not executed and no network observed in scoped trace. evidence1
firmware (2) FirmwareProvider.ts Executed subset — Real Binwalk/Unblob, extraction/depth/partial facts, readonly ext4 debugfs without mounts, Ghidra handoff. Other fault phases unknown. evidence1
flutter (2) FlutterBuildProvider.ts Partial — Official LocalSend1.18.2 Android ELF; build identification, strings and four AOT symbols. Full object pool/engine coverage unverified. evidence1
frida (9) FridaInstrumentationManager.ts Executed subset — Real Frida CLI and10MCPcalls; script lifecycle, paused close/resume, detach preservation, shutdown. Not arbitrary target coverage. evidence1
gdb (4) GdbSessionManager.ts Executed subset / defect fixed — Real GNU13.1 filenames, cancellation and correlated recovery; recorded Python exec/native identity fault4011 fixed4435. evidence1 evidence2
go (1) GoBinaryProvider.ts Executed subset — Thirty real Go metadata cases. Other formats/cleanup faults not universally qualified. evidence1
javascriptRecovery (1) registerJavaScriptRecoveryTool.ts Executed subset — Official Wakaru1.14,12cases/eight finite JS execution oracles/six cross-chunk edges; no open-ended execution equivalence claim. evidence1
javascriptRuntimeObservation (2) V8InspectorProvider.ts Executed subset — Real Node24 Inspector targets, URL/source identity and preservation controls. Other failure phases unknown. evidence1
jeb (4) JebProvider.ts Unavailable here — No real JEB backend installed/licensed for this run; source/configuration tests are not real-provider verification.
managed (3) DirectAnalysis.ts, BinarySession.ts, ArtifactResourceScope.ts, directAnalysis.ts, ManagedStaticProvider.ts, registerManagedTools.ts Executed subset / defects fixed — Real Microsoft.Extensions.Primitives8 DLL; retained snapshots/hash cancellation and filesystem facts.4379/4443,4381/4446 merged. evidence1 evidence2
managedWorkflow (4) BinarySession.ts, registerManagedWorkflowTools.ts Executed subset — Real DLL/current9a:CLI303-member andMCP62-member comparisons,66-node/65-edge graph, inference-only exact-build import and same-connection reuse. Native-boundary verification workflow remains unqualified. evidence1
native (8) BinarySession.ts, CompositeProvider.ts, LazyAnalysisProvider.ts, NativeMacOSProvider.ts, NativeMacOSProviderMetadata.ts Backend unavailable on Linux — NativeMacOSProviderMetadata declares unsupported_host on Linux for this macOS-utility backend. No extrapolation to other providers or all native analysis.
official (41) BinarySession.ts, CompositeProvider.ts, LazyAnalysisProvider.ts Partial — Real Hopper/Ghidra and shared binary journeys exercised selected operations; not all41tools across all dynamically chosen providers. IDA/Kuna real backends unavailable here. evidence1 evidence2
pcap (2) PcapProvider.ts Executed subset — Real capinfos/TShark single-packet fixture, exact addresses/ranges and source preservation. Other fault phases unknown. evidence1
reverseEngineering (2) ObjdumpCommand.ts, RizinCommand.ts Partial — Real Rizin native command work plus inspected one-shot ownership; objdump cancellation phases not universally qualified. evidence1
rizinDebug (4) RizinDebugSessionManager.ts Executed subset / defect fixed — Real official Rizin0.9.1 normal close/reopen/EOF; unfinished-prefix/exit/drain faults4015 fixed4459. No automatic unknown-ownership recovery or real SDK cancellation claim. evidence1
rust (1) RustBinaryProvider.ts Executed subset — Official Rust1.97 auditable tool and fresh ELF. Other fault phases unknown. evidence1
session (21) BinarySession.ts, ProcessCaptureLifecycle.ts, registerSessionTools.ts Executed subset / defects fixed — Binary open/close, Evidence/export/import, owned process/finalization and retained-resource lanes. Not every21tool transition or permanent cleanup denial qualified. evidence1 evidence2 evidence3 evidence4
signal (2) SigrokRecordingProvider.ts Executed subset — Real sigrok0.7.2,21public cases/source preservation/paging/capacity and cleanup. Other hardware unknown. evidence1
sqlite (1) SqliteDatabaseProvider.ts Executed subset — Exact SQLite values/source preservation and Evidence flow; broad filesystem faults not universally covered. evidence1
wasm (2) WabtArtifactProvider.ts Executed subset — Official WABT1.0.42,42CLI/MCPcases; verified final owned lineage. Other failure phases unknown. evidence1
webNetworkCapture (1) HistoricalCaptureDecoder.ts Executed subset — 144historical web cases plus seven native failures; exact scoped captures, not every archive/transport. evidence1
webRuntime (2) CdpWebRuntimeProvider.ts Executed subset — Real Chrome156 runtime listener/execution attribution, invalid selectors and termination controls at180; verified empty final lineage. evidence1
webScript (3) WebSourceLocationArtifacts.ts, WebModuleArtifacts.ts, registerWebScriptTool.ts Executed subset — Chrome export/modules in initial lane; compiler-backed source-map/original-point/nested-map workflows at180, isolated esbuild0.25.10. evidence1 evidence2
Complete stable tool-ID inventory, grouped by the linked source contracts
  • adbContracts: inspect_adb_client, list_adb_devices, inspect_adb_device, list_adb_packages, pull_adb_package, read_adb_logcat, inspect_adb_package, pull_adb_file, push_adb_file, capture_adb_screen, list_adb_processes, list_adb_directory, list_adb_features, list_adb_services, inspect_adb_display, inspect_adb_window, read_adb_setting, collect_adb_bugreport, resolve_adb_packages, install_adb_package, uninstall_adb_package, start_adb_app, start_adb_activity, stop_adb_app
  • analysisViewContracts: inspect_analysis_view
  • androidContracts: inspect_android_package, search_android_classes, inspect_android_class, inspect_android_method, trace_android_references
  • apktoolContracts: inspect_apktool_client, decode_android_resources
  • applicationContracts: trace_application_feature, trace_javascript_semantics, compare_application_versions, compare_source_to_bundle, compare_javascript_export_shapes, build_reconstruction_obligation_ledger, evaluate_reconstruction_coverage, project_android_application_graph, project_apple_application_graph, project_harmony_application_graph
  • artifactContracts: inspect_artifact, extract_artifact, decode_interface_builder, inspect_keyed_archive, inspect_asset_catalog, trace_dylib_resolution
  • binaryDiagnosticsContracts: inspect_pe_resources, inspect_binary_layout, inspect_recorded_crash
  • browserContracts: list_browser_targets, inspect_web_page, analyze_web_bundle, observe_web_session, discover_webmcp_tools, compare_web_captures, capture_web_screenshot, compare_web_screenshots
  • browserScenarioContracts: capture_browser_scenario
  • captureContracts: inspect_packet_fields, inspect_packet_capture
  • cutterContracts: list_cutter_sessions, cutter_command
  • electronContracts: list_electron_targets, inspect_electron_page, analyze_javascript_application, reconcile_javascript_runtime, capture_electron_scenario, inspect_electron_fuses
  • enhancedContracts: inspect_native_dispatch_metadata, get_objc_classes, get_objc_protocols, batch_decompile, get_call_graph, analyze_swift_types, find_xrefs_to_name, binary_overview, analyze_function, inspect_native_api, trace_feature, trace_call_path, trace_native_ui_action, trace_native_values
  • evmContracts: inspect_evm_interface
  • firmwareContracts: inspect_firmware_regions, extract_firmware
  • flutterContracts: identify_flutter_build, inspect_dart_aot
  • fridaContracts: list_frida_devices, list_frida_processes, start_frida_session, load_frida_script, resume_frida_session, unload_frida_script, frida_session_status, close_frida_session, instrument_with_frida
  • gdbContracts: start_gdb_session, gdb_console, gdb_session_status, close_gdb_session
  • goContracts: inspect_go_binary
  • javascriptRecoveryContracts: recover_javascript_sources
  • javascriptRuntimeObservationContracts: list_javascript_runtime_targets, observe_javascript_runtime
  • jebContracts: inspect_jeb_client, open_jeb_project, list_jeb_units, decompile_jeb_item
  • managedContracts: inspect_managed_artifact, inspect_managed_members, inspect_managed_native_boundaries
  • managedWorkflowContracts: compare_managed_members, verify_managed_native_boundaries, import_managed_reconstruction, project_managed_application_graph
  • nativeContracts: observe_native_ui, capture_native_ui_scenario, observe_native_calls, inspect_macho, inspect_signature, inspect_plist, list_architectures, demangle_swift
  • officialContracts: annotate_native_function, inspect_native_load_image, inspect_native_data_type, inspect_native_instruction, resolve_native_call_targets, address_name, comment, current_address, current_procedure, current_document, goto_address, inline_comment, list_bookmarks, list_documents, list_names, list_procedures, list_segments, list_strings, next_address, prev_address, procedure_address, procedure_assembly, procedure_callees, procedure_callers, procedure_info, read_function_instructions, search_bytes, read_bytes, address_to_file_offset, procedure_references, procedure_pseudo_code, resolve_containing_procedure, search_procedures, search_strings, set_address_name, set_addresses_names, set_bookmark, set_comment, set_inline_comment, unset_bookmark, xrefs
  • pcapContracts: inspect_pcap_client, inspect_pcap_capture
  • reverseEngineeringContracts: inspect_with_objdump, execute_rizin_command
  • rizinDebugContracts: start_rizin_debug_session, rizin_debug_command, rizin_debug_session_status, close_rizin_debug_session
  • rustContracts: inspect_rust_binary
  • sessionContracts: open_binary, close_binary, binary_session, export_evidence_bundle, import_evidence_bundle, capture_process_scenario, compare_process_captures, compare_artifacts, compare_functions, compare_bundles, find_changed_behavior, build_call_path, correlate_static_and_runtime, verify_reconstruction, list_unknowns, record_unknown, update_unknown, verify_unknown_resolution, get_evidence_bundle, get_navigation_context, inspect_address_context
  • signalContracts: inspect_signal_decoders, decode_signal_recording
  • sqliteContracts: inspect_sqlite_database
  • wasmContracts: inspect_wasm_artifact, compare_wasm_interfaces
  • webNetworkCaptureContracts: inspect_web_network_capture
  • webRuntimeContracts: observe_web_execution, inspect_web_event_listeners
  • webScriptContracts: trace_web_source_location, trace_web_module_imports, export_web_scripts

Remaining ownership/lifecycle work: source entry routes are incomplete proof of dynamic leaf selection. Other native UI cancellation variants and Cutter GUI switching, arbitrary foreign targets, permanent cleanup denial/PID-reuse variants for every family, managed native-boundary verification, ADB device/server lanes, real IDA/JEB/Kuna and other operating systems remain unqualified unless a linked lane explicitly proves them. Native readiness, operation completion and positive cleanup proof remain separate facts. Do not turn these unknowns into absent targets, successful cleanup or universal support.

One-shot readers still have subprocess, file/snapshot and publication cleanup; they are not automatically lifecycle-inapplicable. The macOS-only backend declaration is a scoped unsupported-host fact.

Related existing Cutter capacity defect3330 is already owned by external PR3776; no duplicate implementation was started. Electron4282 remains open at this checkpoint.

Selected completed-task wall/CPU/process-family-memory measurements are recorded in the linked checkpoints. Native Qt5 version work has a full-wire+CLI serialization token proxy including its catalog; actual model token use and stable cold-OS-cache costs were not measured. Model billing is not inferred from byte counts or serialization proxies.

The parent audit remains open; this is a coverage ledger and a list of remaining work, not a completion declaration.

<!-- gh-comment-id:6219044780 --> @N0zoM1z0 commented on GitHub (Oct 16, 2026): Linux audit source-route inventory and coverage index. This enumerates **207 tool IDs across37contract families** against source `9a82046b07244e62df22076b64ded05ff9abc5db`; the current captured catalog has the same IDs. **Families are an index, not a claim of37canonical resource owners.** Entry routes are source-derived; dynamically selected leaf owners and every unnamed lifecycle phase remain unknown. Executed lanes retain their individual pinned revisions; earlier engine runs are not relabeled as latest-main tests. | Contract family / tools | Source entry route | Outcome and actual scope | |---|---|---| | [adb](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/contracts/adb/adbToolContracts.ts) (24) | [AdbProvider.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/adb/AdbProvider.ts) | **Unknown** — No physical-device workflow executed; client/server discovery and device operations not individually qualified here. | | [analysisView](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/contracts/analysisViewToolContracts.ts) (1) | [BinarySession.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/application/binary/BinarySession.ts), [registerAnalysisViewTool.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/server/registerAnalysisViewTool.ts) | **Executed subset** — Real Microsoft DLL retained-member Evidence: two consecutive MCP pages(offset0/5,limit5), with source/provenance and export retained. Other views/providers/failure phases unknown. [evidence1](https://github.com/morluto/rea/issues/4227#issuecomment-6213854861) [evidence2](https://github.com/morluto/rea/issues/4227#issuecomment-6219028158) | | [android](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/contracts/android/androidToolContracts.ts) (5) | [JadxProvider.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/android/JadxProvider.ts) | **Executed subset** — Real JADX/ApiDemos CLI/MCP; missing runtime/invalid JAR recovery and owned Java CLI termination. Other failure phases unknown. [evidence1](https://github.com/morluto/rea/issues/4227#issuecomment-6210632594) | | [apktool](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/contracts/apktool/apktoolToolContracts.ts) (2) | [ApktoolProvider.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/apktool/ApktoolProvider.ts) | **Executed subset** — Real Apktool3.0.3 resources and public SDK cancellation after Java handoff, same-connection reuse, owned cleanup. [evidence1](https://github.com/morluto/rea/issues/4227#issuecomment-6214778837) | | [application](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/contracts/applicationToolContracts.ts) (10) | [BinarySession.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/application/binary/BinarySession.ts), [registerApplicationTools.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/server/registerApplicationTools.ts) | **Partial** — Selected JS/artifact workflows and Wakaru oracles; not all ten application tools or reconstruction outcomes qualified. [evidence1](https://github.com/morluto/rea/issues/4227#issuecomment-6214778837) | | [artifact](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/contracts/artifactToolContracts.ts) (6) | [BinarySession.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/application/binary/BinarySession.ts), [CompositeProvider.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/application/binary/CompositeProvider.ts), [LazyAnalysisProvider.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/application/binary/LazyAnalysisProvider.ts), [ArtifactProvider.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/artifacts/ArtifactProvider.ts), [ArtifactResourceScope.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/artifacts/ArtifactResourceScope.ts) | **Partial** — Archive/Evidence and filesystem finalization exercised; remaining Apple resource decoders and failure phases unknown. [evidence1](https://github.com/morluto/rea/issues/4227#issuecomment-6210632594) [evidence2](https://github.com/morluto/rea/issues/4227#issuecomment-6213682747) | | [binaryDiagnostics](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/contracts/native/binaryDiagnosticsToolContracts.ts) (3) | [PeResourcesProvider.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/native/pe/PeResourcesProvider.ts), [PwntoolsDecoder.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/native/pwntools/PwntoolsDecoder.ts) | **Partial / defect fixed** — Real ELF layout and recorded-crash exec/cancel/reuse; #4435 fixed4011. Latest upstream PE-resource change not separately qualified in this audit. [evidence1](https://github.com/morluto/rea/issues/4227#issuecomment-6211806489) [evidence2](https://github.com/morluto/rea/issues/4227#issuecomment-6214778837) | | [browser](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/contracts/browserToolContracts.ts) (8) | [CdpBrowserProvider.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/browser/CdpBrowserProvider.ts), [CdpTargetSessionOwner.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/browser/CdpTargetSessionOwner.ts) | **Executed subset** — Real Chrome156 CLI/MCP, attached target/state preservation and selected transport cancellation/cleanup. Not universal target/platform coverage. [evidence1](https://github.com/morluto/rea/issues/4227#issuecomment-6209533148) | | [browserScenario](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/contracts/browserScenarioToolContracts.ts) (1) | [PlaywrightBrowserScenarioProvider.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/browser/PlaywrightBrowserScenarioProvider.ts), [PlaywrightScenarioSession.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/browser/PlaywrightScenarioSession.ts) | **Executed subset / defect fixed** — Chrome launch/attach, environment/storage/service workers; cleanup diagnostics fixed4403 via4406. Additional ownership phases remain unknown. [evidence1](https://github.com/morluto/rea/issues/4227#issuecomment-6209533148) [evidence2](https://github.com/morluto/rea/issues/4227#issuecomment-6210632594) | | [capture](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/contracts/captures/captureToolContracts.ts) (2) | [TsharkCaptureProvider.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/captures/TsharkCaptureProvider.ts) | **Executed subset** — Real TShark offline field/capture service; permission/capacity and remaining cancellation phases not universally covered. [evidence1](https://github.com/morluto/rea/issues/4227#issuecomment-6210632594) | | [cutter](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/contracts/cutterToolContracts.ts) (2) | [CutterBridgeClient.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/cutter/CutterBridgeClient.ts), [CutterBridgeService.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/cutter/CutterBridgeService.ts), [rea_bridge.py](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/bridge/cutter/rea_bridge.py) | **Defects fixed / executed subset** — 3946/4499,4497/4507 and4498/4514 merged. Real Qt5 metadata and SDK cancel after controlled native shell handoff; retained unknown Evidence export, no replay, receipt recovery and GUI preservation. Discovery queue cancellation also uses authenticated synthetic peers. GUI document switching and other fault variants unknown. [evidence1](https://github.com/morluto/rea/issues/4227#issuecomment-6218111625) [evidence2](https://github.com/morluto/rea/issues/4227#issuecomment-6219028158) [evidence3](https://github.com/morluto/rea/issues/4227#issuecomment-6219401148) | | [electron](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/contracts/javascript/electronToolContracts.ts) (6) | [CdpElectronProvider.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/browser/CdpElectronProvider.ts), [PlaywrightElectronActiveProvider.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/browser/PlaywrightElectronActiveProvider.ts), [registerElectronTools.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/server/registerElectronTools.ts) | **Defect remains** — Real Electron44.7 completed actions with missing visibility marker (#4282);4406 improves cleanup diagnostics, not that marker. Later180 cancellation update not requalified with Electron here. [evidence1](https://github.com/morluto/rea/issues/4227#issuecomment-6210632594) | | [enhanced](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/contracts/enhancedToolContracts.ts) (14) | [BinarySession.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/application/binary/BinarySession.ts), [CompositeProvider.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/application/binary/CompositeProvider.ts), [LazyAnalysisProvider.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/application/binary/LazyAnalysisProvider.ts) | **Partial** — Shared selected-provider routing and real Ghidra/Hopper journeys; all14tools/provider combinations not individually established. [evidence1](https://github.com/morluto/rea/issues/4227#issuecomment-6209533148) [evidence2](https://github.com/morluto/rea/issues/4227#issuecomment-6210632594) | | [evm](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/contracts/evm/evmToolContracts.ts) (1) | [EvmoleInterfaceProvider.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/evm/EvmoleInterfaceProvider.ts) | **Executed subset** — Real solc0.8.30/evmole0.9.3 static interfaces; source-owned EVM not executed and no network observed in scoped trace. [evidence1](https://github.com/morluto/rea/issues/4227#issuecomment-6214778837) | | [firmware](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/contracts/firmware/firmwareToolContracts.ts) (2) | [FirmwareProvider.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/firmware/FirmwareProvider.ts) | **Executed subset** — Real Binwalk/Unblob, extraction/depth/partial facts, readonly ext4 debugfs without mounts, Ghidra handoff. Other fault phases unknown. [evidence1](https://github.com/morluto/rea/issues/4227#issuecomment-6210632594) | | [flutter](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/contracts/flutter/flutterToolContracts.ts) (2) | [FlutterBuildProvider.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/flutter/FlutterBuildProvider.ts) | **Partial** — Official LocalSend1.18.2 Android ELF; build identification, strings and four AOT symbols. Full object pool/engine coverage unverified. [evidence1](https://github.com/morluto/rea/issues/4227#issuecomment-6214778837) | | [frida](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/contracts/fridaToolContracts.ts) (9) | [FridaInstrumentationManager.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/frida/FridaInstrumentationManager.ts) | **Executed subset** — Real Frida CLI and10MCPcalls; script lifecycle, paused close/resume, detach preservation, shutdown. Not arbitrary target coverage. [evidence1](https://github.com/morluto/rea/issues/4227#issuecomment-6210632594) | | [gdb](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/contracts/gdbToolContracts.ts) (4) | [GdbSessionManager.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/gdb/GdbSessionManager.ts) | **Executed subset / defect fixed** — Real GNU13.1 filenames, cancellation and correlated recovery; recorded Python exec/native identity fault4011 fixed4435. [evidence1](https://github.com/morluto/rea/issues/4227#issuecomment-6211806489) [evidence2](https://github.com/morluto/rea/issues/4227#issuecomment-6210632594) | | [go](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/contracts/go/goToolContracts.ts) (1) | [GoBinaryProvider.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/go/GoBinaryProvider.ts) | **Executed subset** — Thirty real Go metadata cases. Other formats/cleanup faults not universally qualified. [evidence1](https://github.com/morluto/rea/issues/4227#issuecomment-6210632594) | | [javascriptRecovery](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/contracts/javascript/javascriptRecoveryToolContracts.ts) (1) | [registerJavaScriptRecoveryTool.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/server/registerJavaScriptRecoveryTool.ts) | **Executed subset** — Official Wakaru1.14,12cases/eight finite JS execution oracles/six cross-chunk edges; no open-ended execution equivalence claim. [evidence1](https://github.com/morluto/rea/issues/4227#issuecomment-6214778837) | | [javascriptRuntimeObservation](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/contracts/javascript/javascriptRuntimeObservationToolContracts.ts) (2) | [V8InspectorProvider.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/inspector/V8InspectorProvider.ts) | **Executed subset** — Real Node24 Inspector targets, URL/source identity and preservation controls. Other failure phases unknown. [evidence1](https://github.com/morluto/rea/issues/4227#issuecomment-6209533148) | | [jeb](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/contracts/jeb/jebToolContracts.ts) (4) | [JebProvider.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/jeb/JebProvider.ts) | **Unavailable here** — No real JEB backend installed/licensed for this run; source/configuration tests are not real-provider verification. | | [managed](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/contracts/managed/managedToolContracts.ts) (3) | [DirectAnalysis.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/application/DirectAnalysis.ts), [BinarySession.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/application/binary/BinarySession.ts), [ArtifactResourceScope.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/artifacts/ArtifactResourceScope.ts), [directAnalysis.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/composition/directAnalysis.ts), [ManagedStaticProvider.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/dotnet/ManagedStaticProvider.ts), [registerManagedTools.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/server/registerManagedTools.ts) | **Executed subset / defects fixed** — Real Microsoft.Extensions.Primitives8 DLL; retained snapshots/hash cancellation and filesystem facts.4379/4443,4381/4446 merged. [evidence1](https://github.com/morluto/rea/issues/4227#issuecomment-6213682747) [evidence2](https://github.com/morluto/rea/issues/4227#issuecomment-6213854861) | | [managedWorkflow](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/contracts/managed/managedWorkflowToolContracts.ts) (4) | [BinarySession.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/application/binary/BinarySession.ts), [registerManagedWorkflowTools.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/server/registerManagedWorkflowTools.ts) | **Executed subset** — Real DLL/current9a:CLI303-member andMCP62-member comparisons,66-node/65-edge graph, inference-only exact-build import and same-connection reuse. Native-boundary verification workflow remains unqualified. [evidence1](https://github.com/morluto/rea/issues/4227#issuecomment-6219028158) | | [native](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/contracts/native/nativeToolContracts.ts) (8) | [BinarySession.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/application/binary/BinarySession.ts), [CompositeProvider.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/application/binary/CompositeProvider.ts), [LazyAnalysisProvider.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/application/binary/LazyAnalysisProvider.ts), [NativeMacOSProvider.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/native/NativeMacOSProvider.ts), [NativeMacOSProviderMetadata.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/native/NativeMacOSProviderMetadata.ts) | **Backend unavailable on Linux** — NativeMacOSProviderMetadata declares unsupported_host on Linux for this macOS-utility backend. No extrapolation to other providers or all native analysis. | | [official](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/contracts/officialToolContracts.ts) (41) | [BinarySession.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/application/binary/BinarySession.ts), [CompositeProvider.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/application/binary/CompositeProvider.ts), [LazyAnalysisProvider.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/application/binary/LazyAnalysisProvider.ts) | **Partial** — Real Hopper/Ghidra and shared binary journeys exercised selected operations; not all41tools across all dynamically chosen providers. IDA/Kuna real backends unavailable here. [evidence1](https://github.com/morluto/rea/issues/4227#issuecomment-6209533148) [evidence2](https://github.com/morluto/rea/issues/4227#issuecomment-6210632594) | | [pcap](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/contracts/pcap/pcapToolContracts.ts) (2) | [PcapProvider.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/pcap/PcapProvider.ts) | **Executed subset** — Real capinfos/TShark single-packet fixture, exact addresses/ranges and source preservation. Other fault phases unknown. [evidence1](https://github.com/morluto/rea/issues/4227#issuecomment-6210632594) | | [reverseEngineering](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/contracts/reverseEngineeringToolContracts.ts) (2) | [ObjdumpCommand.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/objdump/ObjdumpCommand.ts), [RizinCommand.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/rizin/RizinCommand.ts) | **Partial** — Real Rizin native command work plus inspected one-shot ownership; objdump cancellation phases not universally qualified. [evidence1](https://github.com/morluto/rea/issues/4227#issuecomment-6216227899) | | [rizinDebug](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/contracts/rizinDebugToolContracts.ts) (4) | [RizinDebugSessionManager.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/rizin/RizinDebugSessionManager.ts) | **Executed subset / defect fixed** — Real official Rizin0.9.1 normal close/reopen/EOF; unfinished-prefix/exit/drain faults4015 fixed4459. No automatic unknown-ownership recovery or real SDK cancellation claim. [evidence1](https://github.com/morluto/rea/issues/4227#issuecomment-6216227899) | | [rust](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/contracts/rust/rustToolContracts.ts) (1) | [RustBinaryProvider.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/rust/RustBinaryProvider.ts) | **Executed subset** — Official Rust1.97 auditable tool and fresh ELF. Other fault phases unknown. [evidence1](https://github.com/morluto/rea/issues/4227#issuecomment-6214778837) | | [session](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/contracts/sessionToolContracts.ts) (21) | [BinarySession.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/application/binary/BinarySession.ts), [ProcessCaptureLifecycle.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/process/capture/ProcessCaptureLifecycle.ts), [registerSessionTools.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/server/registerSessionTools.ts) | **Executed subset / defects fixed** — Binary open/close, Evidence/export/import, owned process/finalization and retained-resource lanes. Not every21tool transition or permanent cleanup denial qualified. [evidence1](https://github.com/morluto/rea/issues/4227#issuecomment-6209533148) [evidence2](https://github.com/morluto/rea/issues/4227#issuecomment-6213682747) [evidence3](https://github.com/morluto/rea/issues/4227#issuecomment-6213854861) [evidence4](https://github.com/morluto/rea/issues/4227#issuecomment-6216227899) | | [signal](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/contracts/signals/signalToolContracts.ts) (2) | [SigrokRecordingProvider.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/signals/SigrokRecordingProvider.ts) | **Executed subset** — Real sigrok0.7.2,21public cases/source preservation/paging/capacity and cleanup. Other hardware unknown. [evidence1](https://github.com/morluto/rea/issues/4227#issuecomment-6210632594) | | [sqlite](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/contracts/sqlite/sqliteToolContracts.ts) (1) | [SqliteDatabaseProvider.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/sqlite/SqliteDatabaseProvider.ts) | **Executed subset** — Exact SQLite values/source preservation and Evidence flow; broad filesystem faults not universally covered. [evidence1](https://github.com/morluto/rea/issues/4227#issuecomment-6209533148) | | [wasm](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/contracts/wasm/wasmToolContracts.ts) (2) | [WabtArtifactProvider.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/wasm/WabtArtifactProvider.ts) | **Executed subset** — Official WABT1.0.42,42CLI/MCPcases; verified final owned lineage. Other failure phases unknown. [evidence1](https://github.com/morluto/rea/issues/4227#issuecomment-6210632594) | | [webNetworkCapture](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/contracts/webNetworkCaptureToolContracts.ts) (1) | [HistoricalCaptureDecoder.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/browser/history/HistoricalCaptureDecoder.ts) | **Executed subset** — 144historical web cases plus seven native failures; exact scoped captures, not every archive/transport. [evidence1](https://github.com/morluto/rea/issues/4227#issuecomment-6214778837) | | [webRuntime](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/contracts/webRuntimeToolContracts.ts) (2) | [CdpWebRuntimeProvider.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/browser/execution/CdpWebRuntimeProvider.ts) | **Executed subset** — Real Chrome156 runtime listener/execution attribution, invalid selectors and termination controls at180; verified empty final lineage. [evidence1](https://github.com/morluto/rea/issues/4227#issuecomment-6218111625) | | [webScript](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/contracts/webScriptToolContracts.ts) (3) | [WebSourceLocationArtifacts.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/browser/assets/WebSourceLocationArtifacts.ts), [WebModuleArtifacts.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/browser/modules/WebModuleArtifacts.ts), [registerWebScriptTool.ts](https://github.com/morluto/rea/blob/9a82046b07244e62df22076b64ded05ff9abc5db/src/server/registerWebScriptTool.ts) | **Executed subset** — Chrome export/modules in initial lane; compiler-backed source-map/original-point/nested-map workflows at180, isolated esbuild0.25.10. [evidence1](https://github.com/morluto/rea/issues/4227#issuecomment-6209533148) [evidence2](https://github.com/morluto/rea/issues/4227#issuecomment-6218111625) | <details> <summary>Complete stable tool-ID inventory, grouped by the linked source contracts</summary> - **adbContracts**: `inspect_adb_client`, `list_adb_devices`, `inspect_adb_device`, `list_adb_packages`, `pull_adb_package`, `read_adb_logcat`, `inspect_adb_package`, `pull_adb_file`, `push_adb_file`, `capture_adb_screen`, `list_adb_processes`, `list_adb_directory`, `list_adb_features`, `list_adb_services`, `inspect_adb_display`, `inspect_adb_window`, `read_adb_setting`, `collect_adb_bugreport`, `resolve_adb_packages`, `install_adb_package`, `uninstall_adb_package`, `start_adb_app`, `start_adb_activity`, `stop_adb_app` - **analysisViewContracts**: `inspect_analysis_view` - **androidContracts**: `inspect_android_package`, `search_android_classes`, `inspect_android_class`, `inspect_android_method`, `trace_android_references` - **apktoolContracts**: `inspect_apktool_client`, `decode_android_resources` - **applicationContracts**: `trace_application_feature`, `trace_javascript_semantics`, `compare_application_versions`, `compare_source_to_bundle`, `compare_javascript_export_shapes`, `build_reconstruction_obligation_ledger`, `evaluate_reconstruction_coverage`, `project_android_application_graph`, `project_apple_application_graph`, `project_harmony_application_graph` - **artifactContracts**: `inspect_artifact`, `extract_artifact`, `decode_interface_builder`, `inspect_keyed_archive`, `inspect_asset_catalog`, `trace_dylib_resolution` - **binaryDiagnosticsContracts**: `inspect_pe_resources`, `inspect_binary_layout`, `inspect_recorded_crash` - **browserContracts**: `list_browser_targets`, `inspect_web_page`, `analyze_web_bundle`, `observe_web_session`, `discover_webmcp_tools`, `compare_web_captures`, `capture_web_screenshot`, `compare_web_screenshots` - **browserScenarioContracts**: `capture_browser_scenario` - **captureContracts**: `inspect_packet_fields`, `inspect_packet_capture` - **cutterContracts**: `list_cutter_sessions`, `cutter_command` - **electronContracts**: `list_electron_targets`, `inspect_electron_page`, `analyze_javascript_application`, `reconcile_javascript_runtime`, `capture_electron_scenario`, `inspect_electron_fuses` - **enhancedContracts**: `inspect_native_dispatch_metadata`, `get_objc_classes`, `get_objc_protocols`, `batch_decompile`, `get_call_graph`, `analyze_swift_types`, `find_xrefs_to_name`, `binary_overview`, `analyze_function`, `inspect_native_api`, `trace_feature`, `trace_call_path`, `trace_native_ui_action`, `trace_native_values` - **evmContracts**: `inspect_evm_interface` - **firmwareContracts**: `inspect_firmware_regions`, `extract_firmware` - **flutterContracts**: `identify_flutter_build`, `inspect_dart_aot` - **fridaContracts**: `list_frida_devices`, `list_frida_processes`, `start_frida_session`, `load_frida_script`, `resume_frida_session`, `unload_frida_script`, `frida_session_status`, `close_frida_session`, `instrument_with_frida` - **gdbContracts**: `start_gdb_session`, `gdb_console`, `gdb_session_status`, `close_gdb_session` - **goContracts**: `inspect_go_binary` - **javascriptRecoveryContracts**: `recover_javascript_sources` - **javascriptRuntimeObservationContracts**: `list_javascript_runtime_targets`, `observe_javascript_runtime` - **jebContracts**: `inspect_jeb_client`, `open_jeb_project`, `list_jeb_units`, `decompile_jeb_item` - **managedContracts**: `inspect_managed_artifact`, `inspect_managed_members`, `inspect_managed_native_boundaries` - **managedWorkflowContracts**: `compare_managed_members`, `verify_managed_native_boundaries`, `import_managed_reconstruction`, `project_managed_application_graph` - **nativeContracts**: `observe_native_ui`, `capture_native_ui_scenario`, `observe_native_calls`, `inspect_macho`, `inspect_signature`, `inspect_plist`, `list_architectures`, `demangle_swift` - **officialContracts**: `annotate_native_function`, `inspect_native_load_image`, `inspect_native_data_type`, `inspect_native_instruction`, `resolve_native_call_targets`, `address_name`, `comment`, `current_address`, `current_procedure`, `current_document`, `goto_address`, `inline_comment`, `list_bookmarks`, `list_documents`, `list_names`, `list_procedures`, `list_segments`, `list_strings`, `next_address`, `prev_address`, `procedure_address`, `procedure_assembly`, `procedure_callees`, `procedure_callers`, `procedure_info`, `read_function_instructions`, `search_bytes`, `read_bytes`, `address_to_file_offset`, `procedure_references`, `procedure_pseudo_code`, `resolve_containing_procedure`, `search_procedures`, `search_strings`, `set_address_name`, `set_addresses_names`, `set_bookmark`, `set_comment`, `set_inline_comment`, `unset_bookmark`, `xrefs` - **pcapContracts**: `inspect_pcap_client`, `inspect_pcap_capture` - **reverseEngineeringContracts**: `inspect_with_objdump`, `execute_rizin_command` - **rizinDebugContracts**: `start_rizin_debug_session`, `rizin_debug_command`, `rizin_debug_session_status`, `close_rizin_debug_session` - **rustContracts**: `inspect_rust_binary` - **sessionContracts**: `open_binary`, `close_binary`, `binary_session`, `export_evidence_bundle`, `import_evidence_bundle`, `capture_process_scenario`, `compare_process_captures`, `compare_artifacts`, `compare_functions`, `compare_bundles`, `find_changed_behavior`, `build_call_path`, `correlate_static_and_runtime`, `verify_reconstruction`, `list_unknowns`, `record_unknown`, `update_unknown`, `verify_unknown_resolution`, `get_evidence_bundle`, `get_navigation_context`, `inspect_address_context` - **signalContracts**: `inspect_signal_decoders`, `decode_signal_recording` - **sqliteContracts**: `inspect_sqlite_database` - **wasmContracts**: `inspect_wasm_artifact`, `compare_wasm_interfaces` - **webNetworkCaptureContracts**: `inspect_web_network_capture` - **webRuntimeContracts**: `observe_web_execution`, `inspect_web_event_listeners` - **webScriptContracts**: `trace_web_source_location`, `trace_web_module_imports`, `export_web_scripts` </details> Remaining ownership/lifecycle work: source entry routes are incomplete proof of dynamic leaf selection. Other native UI cancellation variants and Cutter GUI switching, arbitrary foreign targets, permanent cleanup denial/PID-reuse variants for every family, managed native-boundary verification, ADB device/server lanes, real IDA/JEB/Kuna and other operating systems remain unqualified unless a linked lane explicitly proves them. Native readiness, operation completion and positive cleanup proof remain separate facts. Do not turn these unknowns into absent targets, successful cleanup or universal support. One-shot readers still have subprocess, file/snapshot and publication cleanup; they are not automatically lifecycle-inapplicable. The macOS-only backend declaration is a scoped unsupported-host fact. Related existing Cutter capacity defect3330 is already owned by external PR3776; no duplicate implementation was started. Electron4282 remains open at this checkpoint. Selected completed-task wall/CPU/process-family-memory measurements are recorded in the linked checkpoints. Native Qt5 version work has a full-wire+CLI serialization token proxy including its catalog; actual model token use and stable cold-OS-cache costs were not measured. Model billing is not inferred from byte counts or serialization proxies. The parent audit remains open; this is a coverage ledger and a list of remaining work, not a completion declaration.
Author
Owner

@N0zoM1z0 commented on GitHub (Oct 16, 2026):

Checkpoint 10 — real native Cutter cancellation/recovery is now exercised on pinned main 9a82046b07244e62df22076b64ded05ff9abc5db with the unchanged shipped REA bridge and official Linux Cutter2.5.0 Qt5.

The public stdio MCP cutter_command runs ! <owned-fixture-script> through real Rizin. The script writes an independent start marker, then waits for a fixture-owned release file (also self-bounded). After observing the marker, the SDK request is cancelled:

{"native_command_started":true,"caller_wait_cancelled":true,"native_continued_until_owned_gate_release":true,"command_executions":1,"wait_abort_ms":1.06,"recovery_ms_after_gate_release":61.28,"same_connection_reuse":true,"retained_execution_state":"unknown","exported_records":2}

The native command is still running100ms after caller cancellation; the GUI remains alive. Releasing the fixture allows authenticated completion recovery and a successful ij on the same connection. The execution counter remains1: no command replay. export_evidence_bundle contains the cancelled command's partial Evidence with execution_state:"unknown", error:"transport-response-missing" and the correct host version. The earlier uncertainty remains an immutable observation even after recovery.

MCP shutdown preserves the attached GUI; the fixture later stops its own GUI. Source ELF bytes remain unchanged and final owned process lineage is verified empty. This tests caller cancellation and safe receipt recovery; it does not claim that cancellation forcibly stops arbitrary native work or closes a caller's application.

Whole task:2CLI/6MCPcalls plus catalog,9.47s wall,11.29s CPU,1.034GiB sampled process-family peak (two CPU cores, shared host). A first fixture attempt was rejected by Rizin command parsing before handoff; its refusal and verified cleanup were retained and are not counted as a cancellation reproduction. Detailed local evidence is in /tmp/rea-4227-lifecycle-20261016/cutter-native-cancel/.

Remaining Cutter gaps include actual GUI document switching, same-path reload identity, and other failure/cancellation variants. The published coverage index will be updated with this scoped native result. No additional product defect was found in this lane.

<!-- gh-comment-id:6219401148 --> @N0zoM1z0 commented on GitHub (Oct 16, 2026): Checkpoint 10 — real native Cutter cancellation/recovery is now exercised on pinned main `9a82046b07244e62df22076b64ded05ff9abc5db` with the unchanged shipped REA bridge and official Linux Cutter2.5.0 Qt5. The public stdio MCP `cutter_command` runs `! <owned-fixture-script>` through real Rizin. The script writes an independent start marker, then waits for a fixture-owned release file (also self-bounded). After observing the marker, the SDK request is cancelled: ```json {"native_command_started":true,"caller_wait_cancelled":true,"native_continued_until_owned_gate_release":true,"command_executions":1,"wait_abort_ms":1.06,"recovery_ms_after_gate_release":61.28,"same_connection_reuse":true,"retained_execution_state":"unknown","exported_records":2} ``` The native command is still running100ms after caller cancellation; the GUI remains alive. Releasing the fixture allows authenticated completion recovery and a successful `ij` on the same connection. The execution counter remains1: no command replay. `export_evidence_bundle` contains the cancelled command's partial Evidence with `execution_state:"unknown"`, `error:"transport-response-missing"` and the correct host version. The earlier uncertainty remains an immutable observation even after recovery. MCP shutdown preserves the attached GUI; the fixture later stops its own GUI. Source ELF bytes remain unchanged and final owned process lineage is verified empty. This tests caller cancellation and safe receipt recovery; it does **not** claim that cancellation forcibly stops arbitrary native work or closes a caller's application. Whole task:2CLI/6MCPcalls plus catalog,9.47s wall,11.29s CPU,1.034GiB sampled process-family peak (two CPU cores, shared host). A first fixture attempt was rejected by Rizin command parsing before handoff; its refusal and verified cleanup were retained and are not counted as a cancellation reproduction. Detailed local evidence is in `/tmp/rea-4227-lifecycle-20261016/cutter-native-cancel/`. Remaining Cutter gaps include actual GUI document switching, same-path reload identity, and other failure/cancellation variants. The published coverage index will be updated with this scoped native result. No additional product defect was found in this lane.
Author
Owner

@gensokyo-dev commented on GitHub (Oct 19, 2026):

Observed during the real Rizin UTF-8 history audit, independently of #5246: main 2dd5effe2a641e354ad273138d0906a759fab9c3, official Rizin 0.9.1 static Linux x86-64 (ab5614cf137608cffc5a3f4f471a91c995cfa7c0c35465bfb73876e5b95561ba), actual stdio MCP. Started a caller-selected durable PTY and /usr/bin/true (SHA-256 c79bf44242829108e323378531f4ac839513ca1fba45efd6583643526e1e9fd2), collected four complete/untruncated command observations, then close_rizin_debug_session returned cleanup_incomplete: Owned Rizin debugger inferior detach could not be verified: ENOENT: no such file or directory, open /proc/1726589/stat. An immediate explicit close retry succeeded with target_state: unknown; final owned process-family cleanup was verified, OOM kills 0. This one attempt is not counted as a successful completed-task benchmark.

Hypothesis, not a completed diagnosis: this very short-lived inferior can exit between detach and the post-detach identity/descriptor check. The history bug already reproduced through the real engine (CJK 49,176 B retained, malformed emoji boundary, decoded invalid UTF-8 18,000 B retained), so I am keeping this lifecycle observation separate and using a source-controlled short sleep/exit target to finish that audit. No cleanup code change or claim that this race is fixed.

<!-- gh-comment-id:6273199435 --> @gensokyo-dev commented on GitHub (Oct 19, 2026): Observed during the real Rizin UTF-8 history audit, independently of #5246: main `2dd5effe2a641e354ad273138d0906a759fab9c3`, official Rizin 0.9.1 static Linux x86-64 (`ab5614cf137608cffc5a3f4f471a91c995cfa7c0c35465bfb73876e5b95561ba`), actual stdio MCP. Started a caller-selected durable PTY and `/usr/bin/true` (SHA-256 `c79bf44242829108e323378531f4ac839513ca1fba45efd6583643526e1e9fd2`), collected four complete/untruncated command observations, then `close_rizin_debug_session` returned `cleanup_incomplete`: `Owned Rizin debugger inferior detach could not be verified: ENOENT: no such file or directory, open /proc/1726589/stat`. An immediate explicit close retry succeeded with `target_state: unknown`; final owned process-family cleanup was verified, OOM kills 0. This one attempt is not counted as a successful completed-task benchmark. Hypothesis, not a completed diagnosis: this very short-lived inferior can exit between detach and the post-detach identity/descriptor check. The history bug already reproduced through the real engine (CJK 49,176 B retained, malformed emoji boundary, decoded invalid UTF-8 18,000 B retained), so I am keeping this lifecycle observation separate and using a source-controlled short sleep/exit target to finish that audit. No cleanup code change or claim that this race is fixed.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
morluto/rea#1659
No description provided.