mirror of
https://github.com/morluto/rea.git
synced 2026-11-05 06:45:22 +00:00
[GH-ISSUE #1065] [Feature] Roadmap: improve MCP usability and performance under bounded resources #390
Open
opened 2026-10-15 18:24:35 +00:00 by bsakaguchi
·
47 comments
No Branch/Tag specified
main
codex/procedure-reference-stacked
release-please--branches--main--components--rea-agents
release-please--branches--main--components--rea-agents--release-notes
codex/kuna-independent-retry
codex/byte-search-overlay-coverage
codex/open-failure-target-receipt
codex/kuna-xref-evidence
codex/ghidra-ambiguous-procedure-recovery
codex/function-source-bundle
codex/trace-function-integration-prototype
codex/snapshot-source-closure
codex/recorded-evidence-array-pages
codex/evidence-recovery-redesign
codex/trace-feature-address-scope
codex/call-discovery-scope
codex/ghidra-literal-candidate-evidence
codex/decompile-directory-independent-retry
codex/retry-provenance-base
codex/value-flow-capability-experiment
codex/ghidra-containing-instruction
cursor/readme-discord-button-ef9f
dependabot/github_actions/actions/setup-node-7.1.0
dependabot/github_actions/actions/upload-artifact-7.0.2
dependabot/npm_and_yarn/npm-minor-and-patch-d8d97ce6df
codex/kuna-1989
fix/8559-native-ui-fixture-ownership
fix/8555-go-verifier-mcp-ownership
codex/provider-capability-recovery
fix/8642-rizin-target-stdin
codex/ghidra-memory-effect-scope
codex/ghidra-annotation-entry-selector
codex/ghidra-readonly-recovery
codex/ghidra-regex-verifier-recovery
codex/evidence-discovery-view-guidance
fix/8545-bulk-append-overflow
fix/8428-navigation-refusal-alternatives
codex/address-context-recovery
codex/matching-member-limitations
codex/unknown-scope-contract
codex/evidence-view-guidance
feat/8373-native-trace-views
codex/ghidra-snapshot-verifier-binding
codex/elf-export-visibility
codex/evidence-view-recovery
codex/native-reference-cli-help
codex/provider-candidate-observation-scope
codex/kuna-session-verification
codex/ghidra-switch-lifetime-guidance
codex/pseudocode-paging-discovery
codex/clarify-evidence-view-support
codex/kuna-xrefs-selector-recovery
codex/context-capacity-recovery
codex/evidence-closure-large-links
codex/same-function-evidence-identity
codex/ghidra-verifier-inspected-jdk
codex/audit-guided-workflows
codex/crash-prompt-retained-dossiers
codex/analysis-view-error-recovery
codex/kuna-verifier-target-selection
codex/ghidra-selected-project-call-coverage
codex/docs-native-analysis-scope
codex/ghidra-java-socket-boundary
codex/ghidra-retained-snapshot-verifier
codex/ghidra-search-inventory-facts
fix/8284-zero-argument-parameter-bindings
fix/8198-ui-action-handler-offset
fix/8257-elf-entry-label-identity
fix/8304-deferred-output-schema-projection
fix/8277-call-path-computed-target-uncertainty
fix/pr-8089-conflicts
fix/ci-static-duplicate-export
dependabot/npm_and_yarn/lint-staged-17.6.0
dependabot/github_actions/actions/download-artifact-8.0.2
dependabot/npm_and_yarn/write-file-atomic-8.0.0
dependabot/npm_and_yarn/canonicalize-5.1.0
dependabot/github_actions/actions/cache/restore-6.1.0
dependabot/npm_and_yarn/toon-format/toon-4.4.0
dependabot/github_actions/actions/deploy-pages-5.0.1
codex/review-fixes-pr-2403
codex/review-fixes-pr-2400
codex/process-terminal-width
codex/test-brittleness-cleanup
verify/7167-browser-connect-macos
fix/7167-browser-connect
feat/native-matching-allowance-setting
feat/browser-scenario-dry-run
test/managed-caller-parameters-20261024
codex/parser-fortythird-boundaries
fix/6926-pinvoke-platform-decorations-20261023
fix/6889-har-body-encoding-20261023
fix/6888-sqlite-schema-budget-20261023
fix/dependency-security-gates-6708
cursor/evidence-overwrite-rebase-b4ac
feat/4057-verify-native-exports
fix/windows-acl-observer-overhead-20261022
cursor/erlang-beam-restack-4476
cursor/pe-certificate-review-bf32
fix/6116-javascript-application-fs-errors
fix/6061-unmapped-runtime-script-unknown
feat/browser-scenario-summary
fix/pe-certificates
codex/verify-3407
cursor/rebase-5699
cursor/rebase-5352
cursor/rebase-5600
cursor/fix-cli-schema-omission-10a8
codex/audit-hopper-shutdown-reasons-20261021
fix/demangle-swift-omitted-record
fix/nib-boolean-value-types
cursor/cancellation-partial-observation-a5ac
fix/ib-object-limit-reasons
fix/electron-fuse-limit-advice
fix/kuna-doctor-dangling-cache
fix/fixed-budget-refusal-advice
fix/js-ipc-listener-dedup
fix/js-return-member-provenance
fix/dmg-integrity-retry-advice
fix/ida-doctor-readiness
fix/kuna-version-probe-output-drain
fix/legacy-swift-runtime-name-matching
fix/dylib-lazy-load-commands
fix/browser-scenario-startup-cancel
fix/swift-nested-punycode-classification
fix/compare-unselected-scopes
fix/objc-method-budget-coverage
fix/dmg-mounted-root-observations
audit/ci-tests-20261019-round2
release/6.7.0
fix/wabt-cleanup-retry-resolution
fix/electron-fuse-elf-pe-architecture
fix/native-plist-descriptor-ownership
fix/kuna-caller-cleanup-ownership
experiment/atomic-codemode-20261016
review/first-contributor-3776
fix/call-resolution-full-read-cycles
fix/member-mutation-selection-repeat
experiment/atomic-re-tools-20261015
perf/member-mutation-lazy-origins
perf/static-network-mutation-index
fix/hopper-startup-lifecycle
audit/3050-windows-proof-20261015
feat/windows-window-capture-2183
audit/3049-windows-proof-20261015
audit/3735-macos-fixtures-20261015
fix/batch-decompile-null-pseudocode
fix/kuna-inventory-honors-jobs
experiment/browser-codemode-tool-design-20261015
fix/hopper-clean-runtime-argv
codex/review-2049-27f1b367
review-fixes/pr-2787-routing
fix/3360-scoped-this-emitters
fix/3367-replaced-global-effects
fix/3838-compact-any-value-items
test/hopper-download-probe-20261015
codex/windows-runtime-creation-red-green-20261015
codex/windows-readonly-root-red-green-20261015
codex/windows-root-share-red-green-20261015
codex/exp-1685-win-mcp-startup
codex/bug-sweep-20261015
investigate/2190-windows-package-phases
investigate/3543-macos-cli-deadline
perf/3281-reverse-tools-feedback-quality
fix/3406-hopper-doctor-fixture
fix/3341-wrapper-require-test-context
fix/3301-owned-uninstall-fixtures
fix/3164-compiler-input-ownership
fix/pcap-cleanup-stdout-newline-20261014
perf/interface-builder-summary
codex/review-fixes-pr-1977
fix/ghidra-effective-jvm-platform
fix/docs-turkish-rust-link-20261013
fix/main-maintenance-ci-20261010
fix/recover-binary-session-process-effects
codex/review-fixes-pr-2457
codex/ci-required-cancellation-gate
fix/main-format-baseline-20261013
fix/setup-preserve-entry-fields
cursor/restore-main-checks-1ffc
fix/ghidra-bridge-hashmap-import
codex/shared-ci-jadx-json-default-20261013
codex/shared-ci-ghidra-test-groups-20261013
codex/shared-ci-java-fixture-format-20261013
codex/fix-intrinsic-invocation-boundaries
test/release-preflight-reusable-jobs
test/js-parameter-provenance-expectation
fix/linux-hopper-verification-current
test/2419-ghidra-elf-probe-size
followup/pr-1544-native-ida
codex/fold-pr-2230-contribution
docs/readme-responsible-use
fix/issue-2064
fix/issue-2050
fix/issue-2053
fix/issue-1968
fix/issue-1945
experiment/codemode-bridge-20261011
fix/tool-effects-negative-wording-1904-20261012
fix/1842-electron-interop-provenance
feat/recover-javascript-multi-input
refactor/website-i18n-prep
fix/nativeaot-pe-virtual-extent
fix/browser-verifier-ci-hang
fix/pe-resources-input-selection
docs/beginner-friendly-guides
docs/beginner-setup-guide
fix/javascript-analysis-worker-1563
fix/1649-ghidra-duplicate-names
fix/javascript-export-keys-integration-1369
test/maintenance-boundary-contracts-20261011
review/javascript-export-keys-1369
review/process-live-progress-1483
test/javascript-1495-growth-ratio
fix/ci-escape-timing
docs/normalized-terminal-geometry-1450
release/6.3.0
archive/release-6.3.0-pr1381
release/6.2.0
fix/electron-preload-dynamic-override
fix/javascript-self-referential-bundler-edges
release/6.1.0
cursor/grok-client-cherry-pick-0b56
feat/signature-posture
feat/dyld-shared-cache
feat/artifact-integrity-policy
feat/pkg-inventory
release/6.0.0
chore/sync-release-5.0.0
release/5.0.0
cursor/cloud-agent-node-787e
fix/javascript-xhr-open-endpoints
review/pr-711-realpath-fallback-wording
cleanup/replay-confinement
codex/test-suite-performance
codex/issue-foundations
codex/address-open-issues-2026-07-20
agent/javascript-vite-rollup-esbuild-adapters
agent/process-cleanup
agent/triage-integration
agent/unknown-commands-registry
feat/mcp-identity-metadata
morlvps/issue_cleanup
codex/installer-redesign
morl/roadmap-investigation-core
morl/roadmap-investigation-docs
release-please--branches--main--components--rea
rea-agents-6.8.0
rea-agents-6.7.0
rea-agents-6.6.0
experiment/atomic-codemode-wait-runtime-20261016
rea-agents-6.5.0
rea-agents-6.4.0
rea-agents-6.3.0
rea-agents-6.2.0
rea-agents-6.1.0
rea-agents-6.0.0
rea-agents-5.0.0
rea-agents-4.1.0
rea-agents-4.0.1
rea-agents-4.0.0
rea-agents-3.2.1
rea-agents-3.2.0
rea-agents-3.1.0
rea-agents-3.0.0
rea-agents-2.7.0
rea-agents-2.6.0
rea-agents-2.5.1
rea-agents-2.5.0
rea-agents-2.4.0
rea-agents-2.3.0
rea-agents-2.2.0
rea-agents-2.1.0
rea-agents-2.0.0
rea-agents-1.7.0
rea-agents-1.6.0
rea-agents-1.5.0
rea-agents-1.4.0
rea-agents-1.3.0
rea-agents-1.2.0
rea-agents-1.1.0
rea-agents-1.0.0
rea-agents-0.5.0
rea-agents-0.4.0
rea-agents-0.3.0
rea-0.2.1
rea-0.2.0
Labels
Clear labels
area: bridge
area: bridge
area: build
area: build
area: build
area: cli
area: domain
area: evidence
area: mcp
area: native
area: providers
area: runtime
area: server
area: setup
area: tests
bug
design
documentation
enhancement
enhancement
enhancement
experiment
help wanted
i18n
invalid
P0: critical
P1: high
P2: medium
P2: medium
P2: medium
P3: low
performance
provider-request
pull-request
Mirrored from GitHub Pull Request
question
roadmap
triage
No labels
area: bridge
area: bridge
area: build
area: build
area: build
area: cli
area: domain
area: evidence
area: mcp
area: native
area: providers
area: runtime
area: server
area: setup
area: tests
bug
design
documentation
enhancement
enhancement
enhancement
experiment
help wanted
i18n
invalid
P0: critical
P1: high
P2: medium
P2: medium
P2: medium
P3: low
performance
provider-request
pull-request
question
roadmap
triage
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
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#390
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @N0zoM1z0 on GitHub (Oct 8, 2026).
Original GitHub issue: https://github.com/morluto/rea/issues/1065
Originally assigned to: @N0zoM1z0 on GitHub.
Before submitting
Area
MCP or agent integration; Evidence, artifacts, or reconstruction; native analysis or decompilation.
Current limitation
The intended workflow is: connect to REA once, select a target and question, and begin analysis. Validation of the actual published
rea-agents@6.0.0package finds unnecessary startup/context costs and failures that interrupt this workflow: ordinary JavaScript analysis can disconnect a default MCP client, client cancellation does not promptly stop analysis, and first Windows Ghidra analysis can exceed the client's default deadline on a constrained host.This is a tracking issue for one workflow outcome: responsive, reliable MCP analysis with measured CPU, memory, disk, and context costs. Existing issues remain the owners of their specific contract decisions and failures. The work items below can be implemented independently; this issue does not select a new universal result contract.
Validated baseline
Validation date: 2026-10-08. Published package:
rea-agents@6.0.0, release revision6fee42689ae6e95a0182e0d4d0f55644e73e72be. MCP client/server SDK: 2.3.1. Linux tests used Node 24.18.0; native Windows tests used Node 22.19.0, Ghidra 12.1.4, and JDK 21. Heavy lanes ran sequentially with two CPUs and explicit heap budgets. Timing values describe these runs, rather than universal product limits.tools/list: 589 ms; subsequent requests: 252–462 ms.binary_session: 3.36 s, including 139 client-side validator compilations taking 3.02 s before request transmission. Warm call: 25.7 ms. Refreshing the list causes another 139 compilations, taking 2.96 s.ReadBuffer exceeded maximum size of 10485760 bytes; the next ping fails. The same CLI analysis completes with valid 9,583,065-byte JSON and zero parse failures.binary_overviewfails at 60.073 s withREQUEST_TIMEOUT. Separate x86 and x64 CLI/MCP acceptance passes with 360-second call deadlines.Catalog decomposition: input-facing definitions occupy 584,364 bytes; output schemas occupy 1,452,214 bytes. The full and input-facing representations measure 492,944 and 141,245
cl100k_baseproxy tokens respectively. These are tokenizer proxies for selected representations, not observed model context or billing. Host tool selection and treatment of output schemas must be measured separately.The 6.0.0 real Notion CLI run completes and produces 336,236,132 bytes of valid output, with exact baseline Evidence identities and statistics. This confirms that complete analysis can succeed while result delivery remains expensive. The separate server-side
Invalid string lengthfailure in #1053 occurred even with an enlarged 1 GiB client buffer; it is distinct from the default 10 MiB framing failure reproduced above.Reduced reproduction
Generate an inert, source-owned fixture in an isolated working directory:
rea-agents@6.0.0MCP server and connect with the pinned SDK 2.3.1 stdio client using its default receive-buffer setting.binary_sessiononce, separating initial validator compilation from the subsequent analysis measurement.binary_overviewwith the SDK's unmodified default deadline. Compare a separate longer-deadline run under the same CPU/JVM budget. Keep client and provider deadlines separate in diagnostics.The JavaScript fixture is parsed as text; its application code is not executed. Default framing failure and cancellation failure are separate experiments.
Use cases
Desired outcome and success criteria
Acceptance ledger
Authority boundaries and non-goals
REA remains local-only; provider protocols stay in provider adapters and shared workflows stay behind CLI/MCP adapters. Ghidra remains bring-your-own, with the existing read-only Windows authority. Target bytes and user-owned databases remain protected by their existing lifecycle contracts.
Retain existing complete-result contracts during low-risk performance work. Any response-field removal or default-result change requires the specific compatibility decision tracked in #723/#1050; this roadmap does not authorize silent truncation. Preserve complete self-describing discovery and exact named schema binding, including the client compatibility work from #919.
Keep CPU, memory, temporary disk, and concurrency budgets explicit in validation. A worker implementation must account for large object-transfer/serialization allocations and owned-worker cleanup. Avoid multiplying workers merely to improve one elapsed-time number.
Transport authentication credentials and explicitly sensitive caller values remain protected. Public verification evidence uses source-owned fixtures and sanitized measurements rather than private host paths or target source.
Alternatives considered
--filter-output: useful for output selection, but it happens after full analysis and does not provide the same MCP workflow by itself.Possible direction
T1 was completed in #1088. Implementation priority: effective cancellation next; low-risk catalog caching and Windows waiting guidance can proceed independently. Response representation changes and upstream-client optimization follow their own compatibility decisions.
resultversusevidence.normalized_result, then text versus structured output). Evaluate compatible representations with actual consumers. Removing one layer alone does not guarantee that a real ASAR response fits ordinary clients.toolDefinitionoption. Measure first call and refresh behavior while keeping validation active. Record external-client coverage separately from server improvements.References
@N0zoM1z0 commented on GitHub (Oct 8, 2026):
Assigned this roadmap to myself to coordinate the work. T1 is implemented in #1088 and awaiting its final integrated CI run. Existing generated-input CI failures were independently fixed and merged through #1091; #1088 now includes that fix.
Real acceptance uses the complete Notion 7.6.1 and official Obsidian 1.12.7 ASARs, isolated installed packages, the SDK default receive buffer, Linux Node 24.18.0 and native Windows Node 22.19.0. Both retain the complete analysis, return an actionable 2,517-byte transport constraint, answer useful module traces, export all Evidence, preserve connection pings, and clean the session. Native Windows workflow peaks were 1.52 / 1.67 GiB under two CPUs and below-normal priority. Complete normalized results match across platforms apart from caller-selected input paths; Notion's full CLI bytes match the published 6.0.0 baseline exactly. Actual Chrome verification also covers a 9,331,405-byte PNG: full exported recovery under default budgets and byte-identical inline delivery with matched explicit larger budgets.
This completes the delivery/recovery portion, not the entire roadmap. Existing complete success contracts are preserved. Extended caller deadlines were used for the large-app acceptance, so the default waiting issue remains open.
T2 baseline on the full real Notion bundle confirms the late-cancellation bug: cancellation at Evidence creation rejects the client locally in 1.3 ms, but the server still completes and retains analysis, and a subsequent ping waits approximately 14 seconds. Work will address execution and publication boundaries rather than treating client-local rejection as successful server cancellation. Catalog/client compilation and representation work remain separate items.
@N0zoM1z0 commented on GitHub (Oct 8, 2026):
The first T2 cancellation batch is merged in #1098 (
cc0ee2ed), after all 23 checks passed. T2 remains open.The application now cooperatively seals owned results, validates immutable JSON and hashes canonical Evidence, with cancellation checks before publication. CLI SIGINT/SIGTERM also reach the shared JavaScript application service. Complete result contracts, Evidence identities and CLI/MCP behavior are preserved.
Real full Notion and Obsidian tests independently observed server cancellation, no cancelled Evidence admission, a responsive connection and a usable subsequent request. Observed server-stop latency was approximately 7–12 ms for the tested sealing/hash phases. Native Windows full Obsidian export remained byte-identical to the previous verified export; the complete 429 MB export was independently checked and then deleted. A same-run Notion canonical-hash comparison preserved the exact digest with 10.4% hashing overhead; this batch improves cancellation correctness rather than claiming a throughput improvement.
Verification included 126 deterministic tests, static/generated-document checks, an isolated native Windows package installation and real full-artifact CLI/MCP workflows. No Muse Spark/opencode end-to-end claim is made.
Remaining T2 work includes single-file parsing, graph completion, full result validation and cancellation of full bundle export. The next investigation targets repeated graph validation and cloning; a shallow freeze or imported graph must never bypass external validation. Catalog and client-side validator work remain separate follow-up batches.
@N0zoM1z0 commented on GitHub (Oct 8, 2026):
Merged #1112 as
ec6db0f0630c4b0b35f0db84c0030784c1aa58a6after all 24 checks passed, including native Windows, Linux x64/arm64, and macOS Intel/Apple Silicon package lanes.This completes another part of T2: exact privately authenticated immutable graphs are reused at final result validation; sealing and cross-graph binding traversal remain cancellable. Mutable/imported graphs still receive complete validation. The public contracts and full Evidence remain intact.
T2 remains open: source parsing and graph constructor validation still contain synchronous intervals; complete bundle export cancellation remains follow-up work. The catalog, client validator and default Windows first-analysis waiting tasks are also still open.
A stale unused compiled generated catalog is tracked separately in #1113. The actual live
tools/listwas verified current; the initial consumer assumption in that report was corrected. Output-only schema reference experiments are being investigated for T3, with complete inputs/inventory retained and actual-client/semantic acceptance still required.Large exports, obsolete isolated installs and intermediate measurements were cleaned after compact verification proofs were retained. No target application was executed and no private host paths were published.
@N0zoM1z0 commented on GitHub (Oct 8, 2026):
#1116 is merged as
d1c904bac7977d44b06bf2f823587baedcc88b9eand all 22 exact-head checks have passed. This closes the corrected #1113 unused-generated-artifact report. The real production catalog was already current; this is a package/storage improvement, not a stale-client-schema fix.Same-source package comparison, including identical native Windows controls, removed only the unused test module. Every remaining file is byte-identical. Compressed REA package size fell 19.37%, and unpacked REA contents fell 51.44%; these percentages exclude dependencies. Old-source single-build/cache restoration, 22 focused tests, static/docs checks, full Linux package verification and native Windows parity for all 138 actual input/output schemas passed.
Owned baseline worktrees, the stopped verifier workspace and the previous native Windows package were removed after compact proofs. The broader #1065 tasks remain open. Output-only reference experiments are next: all inputs remain byte-identical and real captured session results validate through the pinned SDK; controlled first-call samples measured 3.302/2.834 seconds before and 2.473/2.608 seconds with references. These are client validator benchmarks, not real-application or model-context acceptance. Input-facing token cost is unchanged, so that gap is still explicit.
@N0zoM1z0 commented on GitHub (Oct 9, 2026):
Merged #1143 after all 22 exact-head CI checks passed. This completes another part of T3 while retaining all 138 named contracts and complete input/output semantics.
Two sequential paired measurements on the same source baseline reduced the complete catalog from 1,996,829 to 1,746,799 bytes (-12.5%). Controlled first successful client calls improved from 3.635/3.251 s to 2.160/2.128 s; maximum process RSS fell from 557/581 MB to 468/467 MB. The input-facing projection remains 549,243 bytes and 133,214 fixed-tokenizer proxy tokens; this change does not reduce that context.
The final isolated native Windows package completed full Notion and Obsidian analysis with identical Evidence identifiers and complete selected traces. Direct feature queries, client schema validation, ping and cleanup passed under two-CPU/resource guards. Local checks passed 30 focused tests, six static tasks, docs checks and the complete installed-package CLI/MCP verifier. Complete inline results still use the existing typed transport-budget recovery.
The umbrella remains open and assigned. T2 still needs synchronous source parsing/constructor and export cancellation work; T3 still includes input-facing context/selection; T5 and the external-client waiting portion of T6 remain open. T4 is deferred pending its separate compatibility decision.
@N0zoM1z0 commented on GitHub (Oct 9, 2026):
Merged #1149 after all 22 exact-head CI checks passed. This completes the full-bundle export cancellation portion of T2.
Native Windows full Notion and Obsidian runs observed actual staged bytes before cancelling. Before the change, cancellation rejected locally but serialization continued for 33.854 / 40.374 seconds and published 336,236,424 / 429,232,879 bytes. After the change, staged content disappeared in 28.694 / 39.140 ms and complete staging directories disappeared in 28.947 / 69.317 ms (20 ms polling granularity). The cancelled request did not publish a file; an existing destination retained its original bytes.
The next full export succeeded in the same session, with every byte matching the corresponding baseline SHA-256. Evidence IDs and complete selected trace digests also matched; ping, query, close and owned-output cleanup passed. The comparator uses the same pre-trace ledger checkpoint because queries can retain additional Evidence. Native process-family peaks were 1,399,402,496 / 1,633,468,416 bytes under two-CPU/heap guards, with no resource stop. Large exports and obsolete test installations were cleaned after compact proofs were retained.
Local verification passed 16 focused tests, all six static tasks, docs checks, and the complete installed-package CLI/MCP verifier. No real Hopper/Ghidra/browser claim is made for this export-only change.
The umbrella remains open and assigned. Synchronous source parsing and graph constructors still need cancellation work. A naive independent per-file semantic worker would change the current global node-budget allocation/order and cross-file bindings; realm-local immutable proofs also do not survive object transfer automatically. Worker payload, ownership, cleanup and full real-app memory/parity measurements are required before choosing that migration.
An input-schema reuse probe reduced projection-only bytes from 478,286 to 430,339, but left non-object roots for
project_managed_application_graph,inspect_web_pageandinspect_electron_page. Default advertised inputs remain unchanged until root normalization, referenced guidance and actual client/call compatibility are established. T3 is therefore partial; T5 and external-client waiting in T6 remain open. T4 remains deferred to its separate compatibility decision.@N0zoM1z0 commented on GitHub (Oct 9, 2026):
T3 input-schema follow-up is in draft PR #1162 and assigned work remains with N0zoM1z0. Executed SDK comparison preserves all 138 tools, all expanded input meaning/guidance, all output schemas and remaining metadata. Input-facing discovery bytes improve 6.54%; cl100k_base proxy tokens improve 3.43%, without a claim about every model host. Forty focused tests, static gates and generated-document checks pass. Native Windows complete Notion now has byte-identical full Evidence export and identical retained tracing; complete Obsidian and final packaged acceptance are in progress. Root-union inputs retain their established inline object presentation. No default result-view or transport-contract change is included. T2 parser/constructor cancellation, T5 client eager output compilation and T6 external waiting remain separate; this does not complete #1065 or #723.
@N0zoM1z0 commented on GitHub (Oct 9, 2026):
The Ghidra caching part is addressed by #1211: explicit, profile-bound reads now reuse snapshots despite private project writes. Real Windows MCP verification covered repeat queries, atomic save/close, and replay in a fresh MCP process; target bytes and cleanup checks passed. This does not remove cold engine startup cost.
A fresh profile of the complete Notion 7.6.1 ASAR still shows a 12.5 s event-loop stall during semantic graph construction. Whole-graph commitments and relationship validation dominate that stage. The analysis returned observations with 100,000 retained semantic nodes, 76,229 relations, and explicit coverage limits. Two CPUs, 1.5 GiB Node heap, sampled process-family peak 1.25 GiB.
Next: make the owned graph's commitment and relationship checks cooperative, retaining input schema cloning, canonical IDs, and all integrity checks. Large single-file parsing remains a separate step. Catalog/client context behavior and the compatibility-preserving default result remain open parts of this issue.
@N0zoM1z0 commented on GitHub (Oct 9, 2026):
#1218 is merged with all 22 CI jobs green. Semantic graph commitment and integrity checks now yield through the cancellation driver while preserving input capture, all validation rules and canonical IDs.
The complete real Notion ASAR returns the same Evidence ID and retained observations. Its uninterrupted semantic factory interval drops from 12.50 s to 4.93 s. Actual stdio MCP cancellation during commitment stops the server in 4.7 ms, preserves prior Evidence and leaves the connection usable.
This remains a staged fix: one profiled pair took 62.89 s before and 66.14 s after, and whole-analysis maximum event-loop delay is still about 12 s. Source parsing, eager cloning/sorting, SDK-wide first-call schema compilation and the default full-result/context costs remain open.
@N0zoM1z0 commented on GitHub (Oct 9, 2026):
Rechecked the DX-Ball working log against npm latest 6.1.0 and main
f4c99ab8a53806dd57dc24b3d5a600905bcb4686on 2026-10-09. Real stdio MCP, finite process/CLI fixtures, real Linux Ghidra 12.1.4 and cross-session snapshot replay were exercised serially under bounded CPU/heap/family RSS. This audit does not rerun the full game or establish other host/provider coverage.Confirmed correctness defects:
Remaining usability/performance work relevant to this roadmap:
Additional native/artifact capability requests are tracked separately: #1244 (instruction/prototype conflict diagnostics), #1246 (data-region access/alias view), #1254 (PE resource inventory). They do not redefine completion of this roadmap.
Cleared historical reports: uppercase/padded addresses now succeed; malformed addresses identify the field and accepted format. Oversized native MCP results return a typed transport resource constraint with retained Evidence/export recovery; a following ping succeeds. Main snapshot-backed primitive and dossier reads preserve facts without launching Ghidra (approximately 53/119 ms in this run); explicit cache provenance intentionally changes Evidence identity. Zero primitive cache entries did not mean missing Evidence. Child nonzero exit remains correctly separate from recorder success. Allocation-wrapper signature spelling also differs from the old log, so the old literal void report was not filed as a current defect.
Cold new-query cost remains owned by #1048: approximately 29.3 s on this main run versus millisecond warm reads. The historical large-snapshot ~1 GiB Node sample was not re-established on current main; #1249 explicitly separates current source evidence and small-run measurements from that old observation. Heap control already works; custom injected JVM flags are intentionally cleared.
The log's timeout-argument mistake, mutable aliases, numeric-only address parser, EOF launch, Wine/observer/compiler failures and repetitive catalog copies were project/client behavior. Existing function annotation already works in the ephemeral database; persistent source-ledger integration and external SDK/runtime lineage remain future workflow suggestions, not newly proven analysis defects. Newly reported #1231/#1232/#1233 were checked for overlap and left with their existing owners.
All new issues include verification scope, source pointers, recovery or acceptance criteria, priority/area labels and triage. No repository code changed; #740 remains deferred.
@N0zoM1z0 commented on GitHub (Oct 9, 2026):
The requested follow-up batch now focuses on existing correctness, performance and usability, without adding analysis capabilities. Current main is
aa5750c2.Planned fixes: #1241 (normalization/source fidelity), #1242 (decoded return facts), #1243 (existing batch result identity), #1248 (snapshot receipt counts), #1249 (measured snapshot materialization cost), #1250 (existing capture completeness explanations), the diagnostic/documentation part of #1251, and #1255 (supported resource guidance).
New native/artifact views, field/ABI analysis, runtime streams and configurable finalization remain tracked for later. Existing result fields, canonical discovery and complete Evidence stay available. Each coherent change gets focused tests, actual affected CLI/MCP/provider verification, resource receipts and CI before merge. #740 remains deferred.
The #1241 branch already preserves ordinary JSON numbers and source PTY text when normalization changes a chunk; comparison uses the normalized projection and the comparison contract records the normalization version. Verification is in progress, so this is not a completion claim.
@N0zoM1z0 commented on GitHub (Oct 9, 2026):
Rechecked current main
6ce3288fwith the identity-validation change in #1366. PR #1366 is merged as53ed942aafter all 20 final-head validation jobs passed, including the actual real JavaScript recovery lane. Issue #1364 is closed, and the local main checkout is synchronized. This updates the older 6.0.0 measurements without attributing timing changes to this patch.A real Notion ASAR was analyzed as inert text using the compiled CLI/MCP runtime, Node 24.18.0, two CPUs, a 1536 MiB Node heap and a 2304 MiB process-family guard. The same default SDK connection completed: analysis → actionable transport constraint/retained Evidence → summary/module views → structured invalid-input rejection → valid feature trace → close → expired-reference rejection → subsequent ping. Artifact SHA-256 stayed unchanged. Parent Evidence coverage and unknowns remain explicit, including the existing semantic node ceiling. This is a recovery workflow pass, not a claim that the complete result fits the default transport.
binary_sessionValidator counts instrument SDK
getValidatorcalls, not AJV code-generation internals; a cached selected schema can still receive a cheapgetValidatorcall. The supported per-calltoolDefinitionpath kept output validation active and prepared only the selected output schema. This does not fix external clients that use the SDK's default catalog-wide path. Serialized bytes are not measured model-host context or billing. This run did not exercise cancellation or the Windows default deadline.Current remaining priorities:
Previously reported #1241, #1242, #1243, #1248, #1249, #1250, #1255 and Windows/JADX #1262 are closed. #1251 remains open because only its digest diagnostics/documentation portion is complete; independent hashing budgets are still follow-up. Native reference views, capture progress/finalization and additional artifact capabilities remain with their existing issues.
This batch also merged schema portability #1302, regular-file admission #1273, Hopper restart #1275, extraction completeness #1319, attached-browser environment preservation #1321, wrong-host Ghidra admission #1280, streamed CLI JSON #1360 and package-pinned skill commands #1346 after final-head checks. #1366 fixes the additional CLI/MCP identity-validation mismatch found during this audit. #1065 remains open; #740 remains deferred.
@N0zoM1z0 commented on GitHub (Oct 10, 2026):
Follow-up review of #1402, now merged as
499e2f54: omitted provider raw results no longer synthesize a second copy of the normalized result. Explicit raw reports, complete normalized results, and text/structured delivery remain preserved; affected Evidence IDs change.Verified 57 focused CLI, MCP, cleanup, and snapshot tests plus lint/module boundaries on the exact PR head. Full local typechecking was stopped by the 2 GiB process-family RSS guard, including serial attempts; CI static checks, all test shards, and real Apple CLI/MCP verification passed. The Intel macOS package job was still running at this update, so the complete CI run is not yet reported green.
A separate source-owned 80-function fixture through the compiled public stdio MCP surface measured 10,248,992 bytes for complete analysis versus 20,372 bytes for a retained summary, with matching text/structured content, parent linkage, and a successful subsequent ping. The complete 139-tool catalog measured 1,870,560 serialized bytes. These are response-byte measurements, not actual model token-use measurements. Catalog cost and text/structured repetition remain open under #723; this is partial progress, not closure of #1065.
@CassieFox23 commented on GitHub (Oct 10, 2026):
TL;DR: I ran the T2 cancel test on Linux. The cancel reaches the server fast. The server only reads it when a long block of work ends. Then it stops and sends no reply. One late cancel did race a finished reply out.
I ran repro step 5 on main
8550913cand the 6.3.0 release. Fixture: the issue's generator at 300 and 1,200 functions. Each run is oneanalyze_javascript_applicationcall per session, done three times.Cancel timing on main, median of 3 runs:
Not run
Edit: I ran the current release, 6.5.0, instead of 6.0.0. The results are in this comment. Step 4 is still not run.
The 6.0.0 package.I ran 6.5.0 instead.An idle machine. Other test suites shared mine (load 6 to 13 on 24 threads). Treat the times as a bit noisy.Rerun on main69fe5b601, see below.Edit: The idle-machine rerun on main
69fe5b601is in my new comment. The long block is gone there.Thanks, N0zoM1z0, for the clear repro steps. I can share the harness if it helps.
Full tables (median [min–max] of 3 runs)
Times are ms from the tool call. "Server stop" is the server's own tool-done log line.
No cancel, main:
resource_constraint, 1,529 Bresource_constraint, 1,529 BCancel, main:
The 1,390 runs split three ways. One stopped with no reply. One finished before its cancel timer fired. One finished first and its reply crossed the cancel.
Cancel, 6.3.0 release:
Every run: no ping failed, no child process, no temp file left. The server quit 43 to 90 ms after close. Family peak never passed 981 MiB.
Timeline, 1,200 functions, cancel 200 ms after progress
This run used a small preload to log when the server SDK aborts the request. It does not change REA code. It also slows the run a bit.
notifications/cancelled, rejects locallybinary_sessionOK (41 ms)Where the event loop blocks (CPU profile, 1,200 functions)
canonicalize17%,emitCanonical16%, zod 14%, GC 9%, hashing 7%. Babel parse is about 2%.createImmutableJavaScriptSemanticGraphSteps: zod and ID checks.Most of the first block is building the semantic graph for the file. Digests and schema checks take most of that time.
How I measured
node scripts/rea.mjs mcp, like the repo's MCP tests.binary_sessioncall to warm up the client checks.Commands
Test setup
8550913c/ 6.3.0 release🤖 Generated with Claude Code (Opus 5.5) 🦊
@N0zoM1z0 commented on GitHub (Oct 10, 2026):
Progress: #1402 finished 19/19 CI checks after the contributor merged it. #1410 is now merged (
4d8ef3f), with all 19 final-head checks green; complete Evidence stayed identical in the controlled graph comparison. Its claim is narrower repeated family aggregation work, not whole-analysis throughput/token savings.Prioritized contributor #1345 and pushed narrow follow-ups while preserving its commits. Final reviewed head is
d21ba97b: caller-selected page bounds, API limitations/residual unknowns, recorded empty identity fields, actionable malformed-dossier details, CLI help/docs and simpler projection ownership. 34 focused regressions and full checking pass.New real small-target verification used latest integrated main, a 16,784-byte source-owned ELF, Ghidra 12.1.4/JDK 21, verified JVM 512 MiB/two CPUs. Main CLI native-view rejection was reproduced; candidate CLI and public stdio MCP six-facet selection pass. Native full Evidence IDs match exactly across main CLI/candidate MCP; binary bytes are unchanged. Selected MCP results were 15,580–27,676 bytes versus 84,046 bytes complete, in 4–70 ms after ~91 s cold analysis. Family peak was 1,271,345,152 bytes. Small JavaScript CLI/MCP also produce the same Evidence ID with matching input choices. These are byte/behavior observations, not actual model-token measurements or broad provider coverage.
That runtime check exposed missing discriminator correction metadata. #1421 records the reproduced defect; ready PR #1425 fixes its shared owner with 49 passing focused tests and public CLI before/after reproduction. #1345 and #1425 are awaiting their current-head CI; no reviewers requested. #1247 discovery/cross-session work and this roadmap remain open.
@N0zoM1z0 commented on GitHub (Oct 10, 2026):
Small-target follow-up completed on main
c29931ce:4c08a7d3. Review reproduced a wrong literal on a 1,218-byte nine-alias target because of its former eight-arrival cap. Main's #1390 fixed-point propagation correctly reports unknown. The contributor PR now retains main's runtime unchanged and adds meaningful loop/compiled-CLI regressions. Eight branches pass and nine/twelve fail before removal of the cap; all cases pass afterward. All 377 focused tests and full serial static checks pass; all 704 test files are discovered exactly once. Contributor history is preserved, and both fork workflows have been approved. No reviewers were requested.After these merges, an independently rebuilt public stdio MCP at
c29931cepasses the deep source, ordinary two-function source, ping/follow-up, and portable selected view from the earlier real Ghidra dossier. The latter is inline Evidence verification, not another live-provider run. Default complete Evidence and text/structured contracts remain intact. The broader #1065 work remains open.@N0zoM1z0 commented on GitHub (Oct 10, 2026):
#1433 is merged as
dc5af6d6after all 19 final-head checks passed. Full discovery remains 139 tools; no default result or text/structured field was removed.With the pinned SDK 2.3.1 default client and a real compiled stdio server, content/dialect-bound output-schema IDs reduce unchanged-catalog refreshes and same-client reconnects to zero new Ajv compilations. Initial discovery still compiles 118 distinct output schemas (21 shared-schema hits): 2,434.7 ms compilation within the first 2,743.6 ms call. Refresh calls measured 114.6/29.6 ms; these are individual two-CPU observations, not a general throughput or model-context claim. Schema changes, availability changes and reconnect correctness pass actual SDK regressions, and directory analysis → retained summary/module page → ping → close passes in both connections. Explicit schema IDs and relative external reference bases are preserved.
The remaining eager first-call cost is separately tracked upstream at modelcontextprotocol/typescript-sdk#2997. Discovery now measures 1,884,470 compact bytes because the IDs add metadata; context/tool-selection cost and result repetition under #723 remain open.
Recent #1345 real-Ghidra selected-facet verification and merges are recorded above. Large-file synchronous parsing/projection and eager graph capture still delay cancellation/ping; the real ASAR run at #1390 completes but observed a 19.17-second maximum ping delay, so completion does not establish T2 responsiveness. Windows first-analysis waiting remains a separate acceptance task. #1252 is being implemented by its contributor; I will avoid duplicating it. #1251 follow-up traced the existing
file_bytesbudget to hashing only and verified independent terminal/hash budgets through real CLI/MCP captures; the documentation and executable workflow are in #1440. #1065 remains open and #740 deferred.@N0zoM1z0 commented on GitHub (Oct 10, 2026):
Follow-up evidence for this batch:
ce16f7bc: all 19 final-head checks passed, including five native operations on a source-built macOS artifact with unchanged target bytes and CLI/MCP provenance parity. Default Evidence contracts remain intact.Next existing contributor review: #1439, which defers optional Playwright and Git imports to their actual callers. I will compare the frozen latest-main build and candidate using public CLI workflows on a small target before accepting its performance claims.
@N0zoM1z0 commented on GitHub (Oct 10, 2026):
Real Windows cold-start/recovery follow-up on a frozen
bb6fa1c6snapshot, under the ownedD:\tmp\reatest root:732ec6083ae3b63bcbda33f2d0fd7e1a6539babade07cbdae4fc20d3394faf49. The owning runner used two-CPU affinity, reduced priority and a configured 512 MiB Java heap; the guard did not capture a birth-matched Java affinity/heap observation, so that narrower child-process detail is not independently asserted. No unrelated tools were installed or upgraded.binary_overviewhitREQUEST_TIMEOUTafter 60,015 ms. Ping remained responsive;close_binarysucceeded in 646 ms, then the same path/provider reopened on that connection. A caller-selected 240-second request deadline completed the cold retry in 163,025 ms, reporting two procedures/two segments. The next overview took 18.7 ms. The server's startup allowance was 300 seconds; it did not extend the client's deadline.binary_overview: startedbefore timeout, and started/completed for the successful retry. No intermediate import/auto-analysis progress was observed; those operation markers are not an analysis percentage or an automatic client-timeout extension.Remaining native usability work is therefore first-wait visibility and expensive-import reuse (#1048), rather than an unverified close/reopen recipe. Native cold-start progress is outside the contributor's process-capture progress scope in #1252.
#1440 is now merged after 19/19 final-head checks and #1251 is closed: existing whole-file hash budgets are independent of terminal-output retention and the documented CLI/MCP workflow verifies that boundary. Latest main also contains #1439 (CLI lazy optional imports) and #1434 (comparison-node indexing). Their narrow claims do not close large-file cancellation/responsiveness. Next I am independently reviewing existing contributor #1444 for repeated object-write complexity; all 20 current-head CI checks pass, with local/public workflow review still in progress. #740 remains deferred.
@N0zoM1z0 commented on GitHub (Oct 10, 2026):
Current performance/usability follow-up, with latest main synchronized through
78e1308f:1ec490f3after all 20 final-head checks, preserving contributor history. Independent review includes 327 adjacent cases, 57 actual CLI/stdio MCP alias/slot scenarios, 50,000 seeded old/new mutation-fold comparisons, and paired real Notion ASAR runs against frozen latest-maine09cfe9b. Both real runs retain the exact same Evidence and source digest. The candidate observation was 87.76 s versus 95.58 s; maximum ping still waited 17.74 s. These single observations support the narrow algorithmic change, not a T2 responsiveness or percentile claim.c89c8f53). First-wait progress and import reuse (#1048) remain; operation started/completed markers do not establish intermediate analysis progress.Previously completed: #1433 removes repeated unchanged-catalog SDK compilations without reducing the full 139-tool inventory; SDK eager cold compilation remains upstream at modelcontextprotocol/typescript-sdk#2997. #1440 closes #1251 by documenting/testing the existing independent whole-file hash budget. #1345 selected native facets have real Linux Ghidra proof; #1247 discovery/snapshot reuse remains partly open. Windows DLL admission #1303 closes #1290; it does not add Windows mutation authority. #1443 preserves JADX cleanup failure diagnostics, while the root cause in #1441 remains unreproduced.
#1252 is still with its contributor (shared rate-limited CLI stderr/MCP-token reporter; no new PR seen at this refresh), and will not be duplicated. #1253 bounded child finalization and the private-bundle report #1387 remain distinct unresolved items. #740 stays deferred. #1065 remains open.
@N0zoM1z0 commented on GitHub (Oct 10, 2026):
Independent maintenance update:
Continuing with existing #1438/#1245: latest-main integration conflicts with the Windows fixture generator. Local resolution preserves contributor EXE bytes and main DLL bytes exactly, and scopes EXE-only compact-reference controls correctly. Source/schema integration checks are in progress; the contributor's actual Windows Ghidra runs remain attributed contributor evidence, not an independent local engine claim. All our Git identities use verified GitHub noreply addresses; no reviewers requested.
@N0zoM1z0 commented on GitHub (Oct 10, 2026):
#1458 is now merged as
934ffd28after all 20 original final-head checks. Independent local integration with main passes 46 focused cases (including real public CLI/stdio MCP) and complete serial static checks. Interleaved controlled comparison results are byte-identical: 4,000 modules measured 2,831–2,874 ms before and 2,288–2,295 ms after. This is a synthetic comparison observation, not a claim of general analysis throughput, T2 responsiveness or model-token savings.The rebuilt integration is production-source-identical to frozen main
934ffd28through #1457/#1458. A fresh real full Notion ASAR workflow still observes 13,078 ms maximum ping wait and preserves the exact complete Evidenceev_8b49aebfa361929c6c2b206271260bf2851a55e729884215b8f87fbb4ad8b490. Default discovery remains 139 tools. Typed framing recovery, retained summary/modules, feature trace, malformed distinct-input check, subsequent ping, close, expired selection and unchanged target bytes all pass. Guard exit 0 and 1,897,279,488-byte peak sampled family RSS.The latest analysis observation was 163.45 s. A same-current-environment frozen
439bc1a5control also varies substantially from its earlier run: 148.58 s / 36,265 ms max ping, same Evidence/input, guard exit 0 and 1,690,976,256-byte peak RSS. Phase costs vary; these single runs are not used to assign a throughput regression to one merge. They confirm that multi-second control pauses remain; #1462 now carries the latest full-workflow proof.Recent issue/PR refresh: #1262 remains closed; #1251 and #1290 are closed; #1252 is still being implemented by its contributor, with no PR seen at this refresh. #1247 is partially fulfilled by merged #1345 and remains open for discovery/snapshot reuse. #1048 and upstream SDK #2997 remain open. New #1477 proposes removing exact duplicate NIB display attributes and still needs contract/provenance and applicable final-head review; its real app byte figures are contributor evidence. #1438 is under the other maintainer's active review. #740 remains deferred and #1065 remains open.
Later main refresh:
7296f2b5adds #1473 (the artifact graph remains once in nested inventory Evidence) and #1474 (semantic node/relation identifier descriptions move into the schema). #1474 explicitly changes relation IDs and strict old-Evidence compatibility; the identical Evidence measurements above apply to the frozen pre-1474 pair. These new payload changes were merged by another maintainer; I am checking their adjacent actual current-MCP behavior without attributing their real-app measurements as independent evidence.@N0zoM1z0 commented on GitHub (Oct 10, 2026):
Maintenance update: #1456 is merged after all 22 applicable checks passed on
561877ad. Review found and fixed two additional boundary problems: split/join changed the admitted empty-pattern behavior, and silently changing replacement semantics made historical captures compare as if they shared one contract. Literal replacements now preserve the empty-pattern boundaries, and captures with custom patterns explicitly version the replacement semantics. Legacy/new comparisons require recapture; no-pattern contracts are unchanged.The merged five changed files are byte-identical to the reviewed head. Main advanced concurrently, so I also compiled current main
7a56fe62and repeated the actual public CLI plus production SDK stdio MCP workflow on a source-owned 28-byte process target: literal dollar tokens, empty pattern, retained raw output/caller patterns, legacy comparison refusal, current/current comparison, owned cleanup, text/structured parity and subsequent ping all pass. This is Linux PTY verification, with no model-token or general throughput claim.Independent verification of merged #1479 also establishes 1,958 placeholder descriptions removed from the actual 139-tool SDK catalog while retaining all other tool fields and schema validity. Summed input-schema JSON fell 13.8%; a cl100k_base reference count fell 10.5%. Those are catalog/reference-token measurements, not actual model billing or tool-selection quality. Current #1438 has all 19 applicable checks green and is still awaiting the requested contributor tiny-EXE Ghidra result on its current head. #1065 remains open.
@N0zoM1z0 commented on GitHub (Oct 10, 2026):
Maintenance update: #1483 is merged as
3cd80cbbafter 23/23 checks and actual post-merge 84-byte CLI/SDK MCP capture verification. The delayed-observer control avoids queued stale status while preserving final cleanup delivery and complete Evidence.#1527 is merged as
c73cf0abafter 19/19 checks. Independent runtime reproduction found duplicate output-schema IDs stopping both native verifiers; the consumer audit also found and fixed the Electron registration site. Fresh merged-main build and actual 44-byte JavaScript CLI/SDK MCP verification pass, as do native catalog-startup and exact Electron registration controls on 139 tools/118 distinct output IDs. Full native-engine and full Electron app workflows remain explicitly outside this local scope. Both contributor patches/authors are preserved.Completed owned worktrees/build outputs were removed normally after verification; about 797 MiB has been reclaimed in this cleanup batch. No owned build is currently retained. Branches, small reproduction inputs/results and failed diagnosis receipts remain recoverable; root/shared dependencies and other workspaces were preserved. The iterative maintenance goal continues; #1438 still awaits its requested fresh native confirmation.
@N0zoM1z0 commented on GitHub (Oct 10, 2026):
2026-10-10 follow-up, with current main refreshed after each reviewed merge:
Remaining priorities: #1462's remaining blocking stages; upstream SDK cold preparation issue modelcontextprotocol/typescript-sdk#2997; #1048 pre-imported Ghidra project reuse/first-wait usability; the remaining #1247 native reuse/oversized workflow; #1253 bounded child finalization. #1387 and #1441 remain unverified rather than assumed fixed. #740 remains deferred.
Cleanup: approximately 638 MiB of our obsolete build/cache/runtime/interrupted-verifier artifacts has been removed. Compact exact-digest reports and reproduction inputs remain. Original samples/BYO tools, protected files and unrelated maintenance worktrees were preserved.
@BaaRai commented on GitHub (Oct 10, 2026):
One work-item suggestion for this roadmap, scoped to transports.
Motivation: the goal here is responsive, reliable MCP analysis, but stdio is currently the only server transport, and it requires the client to spawn a local process. Agents running in containers or on remote machines often cannot do that, so they cannot use REA at all today even though the analysis workflow itself would suit them.
Suggestion: offer a streamable HTTP transport alongside stdio, with an optional auth token for that transport. Same tool catalog, same contracts, stdio stays the default and remains fully supported. The security boundary for the HTTP listener (bind scope, token handling) is a design decision that belongs to this roadmap rather than something to assume in advance.
Happy to help scope or implement whichever slice the roadmap wants first if this fits.
@N0zoM1z0 commented on GitHub (Oct 10, 2026):
Current main is
8c47a9ce; #1557 merged after all20 exact-final-head checks passed. Receiver/reference/Electron classification scans now cooperate with the existing analysis checkpoints; #1462 remains open for parsing and other long semantic steps. Independent real-ASAR complete Evidence identity,30 IR cases,CLI/SDK cancellation/recovery and162 post-main-integration tests passed.New public Claude Code2.1.296 memory case: #1563. Verified exact npm artifact and Bun module table,2,589 modules/~47.3MiB contents; identified shareable4.54MiB member. Full tree on exact merged main still fatally exhausts old-space1024MiB (201.69s, family peak1356345344 bytes,zero JSON bytes), without external guard intervention. Isolated member fatally exhausts768MiB in current CLI and actual139-tool SDK/MCP server; MCP process dies, tool rejects CONNECTION_CLOSED and next ping is disconnected. Published6.3.0 independently reproduces the isolated failure. A production-domain diagnostic completes parsing/classification/static scanning and fails during semantic analysis; finer allocation ownership remains open. Single-member1024MiB completes but full tree does not: it is not a full-input workaround. All2,589 source hashes remain unchanged.
#1563 carries bug/performance/P1/domain/CLI/MCP labels and exact public extraction offsets/hashes. This does not establish the original poster's heap/REA version or close private-input #1387. Removed downloaded native carrier/tarball, video intermediates, obsolete release runtime and duplicate sample; retained compact receipts and the extracted producer input for the fix. Next user-requested work is review and actual install/runtime verification of #1359; #740 remains deferred.
@N0zoM1z0 commented on GitHub (Oct 10, 2026):
After accepting #1537 and #1378, I independently rebuilt their merged main revisions and repeated the actual small-target public CLI/SDK stdio MCP workflows. #1537 preserves the complete returned-reference result while reducing the directly counted property candidates in the fixture; #1378 fixes selected archive traversal with a real unrelated EACCES sibling, preserving the raw input path/digest and numeric Evidence. Their exact-head CI gates and postmerge probes passed.
#1393 is also merged after 20/20 exact-head checks. Freshly rebuilt merged main
649661dcpasses the same independent 327-byte public fixture: four media-hint false preload nodes/edges disappear, with all remaining result content and provenance preserved except derived graph IDs/findings count. Its full CLI output is 69,582 -> 57,910 bytes and MCP reply 145,962 -> 121,490 bytes. 65 relevant tests and all local gates pass. These fixture byte counts are not billed-token or general throughput estimates.Completed owned worktrees/builds are normally removed after postmerge verification. Shared dependencies, other workers' files, source branches and proof/failure receipts remain. This does not establish native Electron runtime or Windows/macOS behavior from the Linux public probes. The bounded-resource maintenance and remaining output/Evidence work continue under this roadmap and #723.
The completed cleanup now totals 911.6 MiB and 28 normally removed owned worktrees, with zero current owned builds retained. Next candidate #1560 is only a metadata lead so far: its advertised-input-example/catalog size claim still needs independent source review and an actual latest-main SDK/small-target reproduction on a new branch.
@N0zoM1z0 commented on GitHub (Oct 10, 2026):
Completed the user-requested review and actual Frida installation/runtime verification for #1359 at
4e766550. Eight inline findings and verification details are published as changes requested.Real native Frida 17.23.2 works through the PR's Linux CLI native-function hook and Linux/Windows persistent SDK MCP workflows. The one-shot MCP workflow still returns an output-validation error on both hosts. Other reproduced issues concern availability, script-message provenance, cancellation retention/lifecycle facts, remote cleanup retry ownership, and optional-absent source builds; the keepalive-unit mismatch is confirmed from pinned producer source. The existing 42 focused tests and static checks pass despite these gaps. Remote removal failure used a production adapter seam; macOS and real remote/auth flows remain unverified. Windows online npm was denied
EACCES, so the Windows runtime proof used verified official offline components and exactly matching existing dependency versions.Main was refreshed to
bddddccdand its runtime build passed within the 2304 MiB family-RSS budget. The #1563 memory reproducer remains verified at its recorded exact8c47a9ce/published 6.3.0 baselines; this review does not establish a memory fix on the newer main. #1565 is a related resource-limit proposal.Removed this review's owned installed components, worktree/build outputs, and archives: 343,422,960 logical bytes (~328 MiB), including 130 Windows junctions removed without touching shared dependencies. Compact reproduction reports/scripts and original PR history are retained. No owned heavy lane remains. #1065 remains active and #740 remains deferred.
@N0zoM1z0 commented on GitHub (Oct 10, 2026):
Current maintenance checkpoint: main is integrated through
c1217e71; #1601 is at03994825c118ced5eef90d62d5757c49d76147bd. The allocation changes and independent ancestry-cache follow-up are implemented and verified; final-head CI is still running, so the PR is not merged yet. The subsequent cache fix addresses a measured repeated-ancestry regression while retaining on-demand allocation.Real public Claude Code 2.1.296 input remains the decisive memory case. The 4,762,637-byte member completes production domain semantics at 768 MiB with unchanged complete IR (256,300,420 bytes, SHA256
c109f190e1fb1719b73705096730bf4876338d191a9a07d88e3f6eaed019df04). Actual 170-tool pinned-SDK MCP at 1024 MiB passes retained-result selected views, exact-node trace, close/stale-reference, next analysis and ping. The full 2,351-file CLI still exits 134 at the same member at 1024 MiB. #1563 remains open; details: https://github.com/morluto/rea/issues/1563#issuecomment-6100488689 . No general throughput or billed-token improvement is claimed.The requested #1359 review and actual Linux/Windows component installation/runtime testing are complete: https://github.com/morluto/rea/pull/1359#pullrequestreview-5479514773 . The original head
4e766550is unchanged and still has 8 findings, including 2 P1 findings, with CHANGES_REQUESTED. Windows work was underD:\tmp\rea; remote-server/macOS proof gaps remain explicit. Installed private components/builds were cleaned as previously reported.Newly verified Git import regression #1609 was filed with labels, then closed after independently verifying the existing main repair through the actual CLI and real Git/worktree boundaries. Streaming JSON's invalid-input assertion was stale; valid oversized and true bounded-memory cases pass. Main's snapshot-stream cleanup repair also passes all 33 JADX subprocess-boundary cases locally; this is not new real JADX verification.
Latest remaining status: #1462 is CLOSED; upstream typescript-sdk #2997, #1563, #1565 and private-bundle #1387 remain OPEN. #1253 now has PR #1583, which still needs independent Linux runtime review. #1048/#1247/#1441 retain the previously stated proof gaps. #740 remains deferred. This broad roadmap is not complete.
This continuation cleaned 5,515,507 logical bytes of owned duplicate/intermediate files; later single-module reruns used a hardlink instead of another payload copy, and that alias is now removed. The original extracted sample, compact receipts and useful shared runtime remain. All 2,589 original extracted file digests match; protected files and other worktrees were preserved.
@N0zoM1z0 commented on GitHub (Oct 10, 2026):
#1601 is merged as
b28c0337: all 20 final-head checks passed, including full CI and real JavaScript recovery. The allocation and lexical-scope cache changes preserve the separately recorded semantic identities and contributor follow-up history. Main's #1618 and #1616 maintenance/cleanup fixes are also merged; the overlapping test-only #1617 was closed as superseded.The complete original public-memory case still fails after the merge. Fresh main
b28c0337: real CLI at 1,024 MiB exits 134 with zero stdout; real 170-tool MCP at 768 MiB loses the connection and cannot answer the next ping or small analysis. All 2,589 source digests remain unchanged. #1563/#1565 need a bounded analysis and representation boundary; the diagnostic worker experiment is not a product fix. #1610 remains blocked by the actual full-directory and below-cutoff reproductions.Requested #1359 installation/runtime review is complete on Linux and Windows at unchanged
4e766550: basic native CLI and persistent MCP workflows run, but 8 findings including 2 P1 defects require changes. Review: https://github.com/morluto/rea/pull/1359#pullrequestreview-5479514773 . Windows work stayed underD:\tmp\rea; installed review/build copies were cleaned. macOS and real remote-device behavior remain unverified.#1253's #1583 has a new head
1cb45255and conflicts with current main; independent Linux runtime verification is still pending. SDK2997, #1048, #1247, private #1387 and real-JADX #1441 retain their previously recorded gaps. #1462 is closed; #740 remains deferred.Owned temporary checkouts, synthetic inputs and build/component copies were cleaned. Original reproducer inputs, compact receipts, useful runtime/caches and shared dependencies remain. #1065 remains active.
@CassieFox23 commented on GitHub (Oct 10, 2026):
TL;DR: I reran my cancel test on current main on an idle machine. The server now stops about 15 ms after a cancel, where it took 2.6 s before. One gap is left: a cancel in the last 50 ms still lets the reply go out.
My first post on #1065 tested
8550913cd(#1407) while other test suites shared the machine. This post tests69fe5b601. That is 225 commits later, and it includes #1601. The fixture is the same: the issue's generator at 300 and 1,200 functions. Each case ran 5 times. The machine was idle: on average about 1.5 jobs were running or waiting for a CPU thread, out of 24 threads. Most of that is the test itself.Medians of 5 runs on Node 24.18.0. Times are ms from the tool call.
I moved the offsets. No cancel now ends at 3,123 ms (1,200) and 915 ms (300). So I used the same shares of that time: 50, 90 and 98 percent. I also kept the old 2,230 and 710. The old 4,010, 4,370 and 1,280 fall after the work ends, so I skipped them.
On Node 22.23.1, 24.18.0 and 26.11.1, the 1,200 case with a cancel 200 ms after progress stops 7, 15 and 12 ms after the cancel. No reply went out in any of the 11 runs.
Not run
8550913cd(#1407) on an idle machine. So I can't split the speed-up between the code and the load.Min to max of 5 runs, and no-cancel numbers
Cancel, Node 24.18.0, median [min–max]:
A negative number means the server had finished before the cancel arrived. Those are the two race runs. In the 300-function case at 460, the stop came 37 ms late. I did not instrument that case.
No cancel, Node 24.18.0, median [min–max]:
First stage, 1,200 functions: 1,466 [1,451–1,547] ms. Build graph: 1,133 [1,071–1,200] ms. Validate: 232 [226–237] ms. Hash Evidence: 270 [268–294] ms. These come from the progress messages. This run has no separate seal message.
Cancel 200 ms after progress, 1,200 functions, by Node (3 runs each for 22 and 26):
Every run: no child process, no temp file left, no ping failed.
The two races
The reply followed the "done" line by about 50 ms in both runs. That is roughly 2 percent of the 1,200 run and 5 percent of the 300 run. I aimed the cancels at the end, so two of 50 is not a rate.
Timeline, 1,200 functions, cancel 200 ms after progress
This run used a small preload that logs when the server SDK aborts the request. It does not change REA code. I took it after the timed runs, with other work starting on the machine, so it is not an idle run.
notifications/cancelledbinary_sessionOK (79 ms)In the first post, the same case read the cancel at 3,142 ms, after a 3,132 ms freeze. A no-cancel instrumented run now shows two freezes over 120 ms, of 122 and 156 ms. Both sit near the end of the first stage.
Load
Before each run, I waited while the one-minute load average was over 2.0. Two runs waited 15 s once. The load at the start of the 60 Node 24 runs was 0.90 to 2.00, median 1.52. In plain words, on average about 1.5 jobs were running or waiting for a CPU thread, out of 24 threads. Most of that is the test itself. The first post saw 6 to 13.
Commands
Test setup
69fe5b601. Base:8550913cd.🤖 Generated with Claude Code (Sonnet 5.5, verified by Opus 5.5) 🦊
@N0zoM1z0 commented on GitHub (Oct 11, 2026):
Memory and cancellation checkpoint: main is now
890dfa49f60a66e819e86ba29f3728f2e1e1827b. The owned JavaScript analyzer worker / bounded retained evidence fix is merged in #1651; preparation cancellation is corrected in main, and #1654 preserves a failed owned cleanup retry instead of hiding it behind a completed cancellation. All 19 exact-final-head checks for #1654 passed before its SHA-guarded merge. #1563, #1565 and #1653 are closed.Real public memory input (the previously linked Bun application) was exercised through the actual 170-tool pinned-SDK MCP, with separate 768 MiB server and worker heaps. All 2,351 relevant files were inventoried; all 2,346 JavaScript files parsed, 9,291,366 AST nodes and 194,224 findings retained, zero parse failures. The analysis took about 176 seconds; sampled process-family RSS peaked at 1.70 GiB. All 2,589 original file digests are unchanged. The main MCP process survived, and retained summary/page/item, exact-node tracing, close/stale reference, next small analysis and ping passed. The default inline response exceeds the existing transport budget and reports a resource constraint with the retained Evidence reference. Application/deep semantic coverage is explicitly partial: complete static inventory does not establish complete semantic analysis, a general throughput improvement or a globally bounded process RSS.
A separate dense 1,600,024-byte control really exhausted the 512 MiB owned worker during semantics. Earlier static observations survived, the parent answered the public retained-result workflows and subsequent analysis, and no owned worker directories remained. A real Notion ASAR at 768/768 MiB completed its partial result with all 69 JavaScript sources parsed and 98 control pings (maximum observed latency 13.31 ms). This lower-budget partial result is not a like-for-like full-semantics speed comparison with the earlier larger-heap run. Real CLI cancellation returned exit 130 and complete JSON partial Evidence; retained observations and input digests were preserved.
The final #1654 tarball (
ba885214, SHA25638edbee085b1220e0d417d187ce0364e6133ee7619bf8bf9900c2615d403a98b) was independently installed with production dependencies on native Windows in an isolated Windows verification directory, using existing supported Node 22.19.0. Actual CLI JSON and pinned-SDK MCP pass: 170 tools, preparation cancellation with retained partial Evidence, timeout/partial views, later successful analysis, item/page lookup, trace, close and ping. Source hashes are unchanged and no owned worker roots remain. Installation used verified public lockfile tarballs offline because the initial host registry fetch stalled; this does not claim fresh online Windows installation worked. The cleanup-failure regression uses a real owned Node worker and an injected failing cleanup callback; an actual OS cleanup denial was not observed. Linux package verification and focused public/boundary checks are also recorded; no new real Hopper/Ghidra claim is made by this Node lifecycle change.Requested #1359 install/runtime review is complete at unchanged
4e766550: real local Frida CLI and persistent MCP run on Linux and Windows, but 8 findings including 2 P1 defects still require changes. The reviewed head remains conflicted and CHANGES_REQUESTED: https://github.com/morluto/rea/pull/1359#pullrequestreview-5479514773 . Remote-server/authentication and macOS verification gaps remain explicit. #1610 is also unchanged/conflicted/CHANGES_REQUESTED; its fixed source-byte cutoff does not cover the below-cutoff dense failure.Latest remaining work: improve bounded deep semantic coverage and agent result consumption; upstream typescript-sdk #2997 is still open. Private-input #1387 remains open and needs its own confirmation. #1253/#1583 now has head
0aea0d17and still needs independent runtime review; #1632 and #1650 track current discovery/setup usability problems. #1251, #1252, #1262 and #1462 are closed, so they are no longer listed as open residuals. npm's latest published version remains 6.3.0; main's fixes are not yet a released npm update. #740 remains deferred, and this broader #1065 roadmap remains active.This final installation/verification cleanup removed 136,296,393 logical bytes (~130 MiB) of owned Windows install/cache/temp files, tarballs and duplicate/synthetic inputs. Original samples, compact receipts/digests, scripts, useful shared runtime/dependencies and protected user files remain intact.
@N0zoM1z0 commented on GitHub (Oct 11, 2026):
Process-capture usability follow-up: #1583 is merged after all 31 checks passed on final head
e980e6b0. This closes #1253. Optionalfinalization_mslets a target write its final report after SIGTERM before a bounded escalation; output, file facts, actual finalizer exit codes, cancellation observations and cleanup uncertainty remain available through CLI/MCP. Initial identity retention now checks captured ownership as well as start identity.Independent Linux verification passed 250 cases in 13 focused files, plus static/build/docs checks. Real CLI/MCP cases cover cooperative and nonzero exits, forced escalation, cancellation, unchanged default commitments, omitted content digests with explicit reasons, and detached owned cleanup. Representative identity-observation regressions do not manufacture OS PID reuse or signal foreign processes. Windows capture remains unsupported.
A shared acceptance-client improvement avoids compiling additional validators for unused tools while retaining complete schema validation and the normal SDK call path. One identical-runtime before/after pair measured connection plus first call at 13.65 s and 6.44 s; this measures the test helper. Upstream SDK #2997 remains open.
#1065 stays open: arbitrary-client catalog/SDK preparation, real-provider dossier usability, the unavailable original private #1387 bundle, and cold Windows Ghidra analysis still need their own evidence. #740 remains deferred. No release was published. Owned review build artifacts are cleaned after verification; compact receipts remain.
@N0zoM1z0 commented on GitHub (Oct 11, 2026):
Merged #1687 as
89ea2cad1977b73a4ddf5818d54f5bc51cdae2b6after all 31 checks passed on the reviewed source head82c6ff66e183f2bae3268a38af46360356cce691.Flameox 0.2.9 CPU and sampling-heap captures on an owned 29 KB JavaScript source identified cooperative canonical hashing as a REA-owned hotspot. The change reuses exact JSON key encodings within the existing digest-buffer quantum and avoids temporary ordinary member value frames. It also fixes a reproduced domain-continuation error where an omitted pending property discarded the object frame and skipped later properties. Sealed production graphs are immutable; this is not a claim of reproduced production corruption.
Seven randomized paired digest blocks retain complete normalized-result/Evidence/input oracles. Capture-process medians decrease from 1,184.00 ms to 943.54 ms; the paired median difference is -222.62 ms with bootstrap 95% interval [-250.01, -216.98] ms. This is a local digest-workload improvement. The separate five-block full CLI experiment passes all ten semantic oracles but has a timing interval crossing zero, so whole-CLI acceleration and billed-token reductions are not established.
After the merge, the entire code tree was audited against the expected merge, freshly built, and exercised through real public CLI and pinned-SDK stdio MCP on a 6.7 KB source. Complete normalized results and Evidence ID match the baseline, text/structured output agrees, input bytes remain unchanged and a subsequent ping succeeds. The 29 KB full CLI semantic/progress oracle also passes. Local coverage comprises 81 related tests and eight static/documentation/architecture/discovery gates. No local real Hopper/Ghidra, Electron/browser target runtime or full Bun-directory claim is added.
Owned generated builds and the temporary Flameox environment are cleaned; native profiles, receipts and losslessly compressed full public outputs remain available locally. #1065 remains open for the broader roadmap.
@N0zoM1z0 commented on GitHub (Oct 11, 2026):
Current performance/usability follow-up:
Remaining evidence gaps include the 83 MB snapshot capacity case (#1680), cold Ghidra lifecycle/progress (#1048), client SDK output-schema compilation, and the original private memory-heavy target from #1387. Public controls do not prove that private target fixed. #740 remains deferred.
#1359 still has the same reviewed head (
4e766550), remains open/conflicting, and retains the requested changes from the actual Linux/Windows installed Frida review; no new head needs reinstallation yet.@N0zoM1z0 commented on GitHub (Oct 11, 2026):
#1694 is merged as
13e03e94after exact final-head CI 31/31 success and local 30 focused tests, type/lint, Knip and formatting checks.The change removes per-token async work from streamed JSON handling. Actual Flameox 0.2.9 profiling and five paired 18.54 MB real-snapshot workloads passed all complete canonical-content/Evidence identity oracles; median paired whole-process wall-time improvement was 3.63 s. Scoped cumulative sampled allocation estimates fell from 10.77 to 3.17 GB (single captures, collected objects included; not peak RSS). The merged reader source and compiled file match the measured candidate.
Complete source-built Windows package verification also passed: real Ghidra analysis, unique snapshot save, fresh MCP process rejecting the old reference before import, streamed snapshot restore, exact retained Evidence/view identity, CLI/MCP summary parity, healthy ping and clean owned-resource shutdown. Two CPUs, Node heap 768 MiB, JVM 512 MiB; target unchanged. This is not a published release or a Windows large-payload benchmark.
#1680 remains open for the larger 83 MB capacity case. The broader #740 work stays deferred. Owned installation/build intermediates are being removed; compact reproducible evidence is retained.
@N0zoM1z0 commented on GitHub (Oct 11, 2026):
Merged #1707 as
29ff887f6558cf00c0d6392889b890ed8a702a6f: readiness reuses its already parsed Evidence bundle while retaining ID/graph/manifest authentication, uses the shared streaming canonical digest, and removes an unused verifier temporary directory that leaked on fixture preflight failure.Flameox 0.2.9 randomized paired runs used the complete 1,422,937-byte readiness input containing real CLI Evidence. All 14 full report/input SHA and semantic-ID oracles passed; process-wall medians were 1,207.54 → 970.29 ms, paired difference −261.49 ms (95% interval [−303.22, −164.86] ms). This is a local readiness report workload, with startup and oracle overhead included. Output length, end-to-end CLI acceleration, and billed token reductions are not claimed.
22 domain and 17 compiled bundle-boundary tests passed locally; all 31 exact-head CI checks passed, including Reconstruction readiness. A fresh merged build repeated actual CLI/SDK-MCP analysis of the 6,686-byte control target, preserving the full normalized-result hash, Evidence ID, text/structured parity, unchanged target bytes and ping. The verifier preflight now leaves zero unused temporary directories. Merged-tree and anonymity audits passed. Owned runtime/catalog/skill outputs and the 274 MB profiling environment were cleaned; useful native profiles and lossless evidence remain under
/tmp.@N0zoM1z0 commented on GitHub (Oct 11, 2026):
Merged #1716 as
092de8f4after all 31 checks passed on exact final head5e7f62fa. #1680 is closed. The original 83,049,642-byte legacy Ghidra snapshot now restores through real SDK MCP within the 768 MiB Node heap/two-CPU budget, preserving the complete 41,546,956-byte bundle digest and retained Evidence identities. Cancellation/recovery and closed-session invalidation pass. A fresh full Windows package independently passes real PE CLI/MCP and the same large file-import boundary; the latter is not Windows provider analysis of the Linux ELF target.Re-tested revised #1359 at
b4b8f8bdwith official native Frida 17.23.2 on Linux and Windows, including a fresh offline Windows installation. CLI/native interception, persistent and one-shot public MCP, schemas, cancellation/export/recovery, optional-binding behavior, 47 focused tests, full single-threaded typechecking, lint/module boundaries, Knip and docs pass. The previous eight findings are addressed; the new review requests changes for two reproduced Evidence issues: losing an already observed resume on cancellation, and deleting an active producer's capture bucket during capacity eviction (the latter is an adapter ordering seam). The exact-head CI workflow is approved and still running; the PR is not merged.Windows initialization remains qualified: the candidate's default 60-second connection failed once; an initialization-only 120-second option passed. Actual Flameox 0.2.9 analysis of that successful full server-lifetime CPU capture points toward module filesystem lookup; this is not a latest-main control, initialization-only attribution, causal performance result or memory-leak proof.
Owned Linux/Windows installations, native addons, archives, temporary builds and the Flameox environment are cleaned. Compact exact-identity proofs and native profiles remain. Main is refreshed to
844fa527; the fresh runtime/packaged-skill build passes under the unchanged resource guard.#1065 remains open. The original private memory-heavy target in #1387, representative client cold preparation, and cold Ghidra waiting/progress still need their own evidence. #740 remains deferred.
@N0zoM1z0 commented on GitHub (Oct 11, 2026):
SDK cold-call follow-up on frozen main
21650455a9c90a26e725c3505a3c17054cc4516c: the current full catalog is 170 tools / 1,954,693 JSON bytes. Released client 2.3.1 still prepares all 170 output validators on the first call (148 actual compilations).I verified the existing upstream fix with real REA stdio workflows and Flameox 0.2.9, using private experimental builds of the exact owning cache module rather than changing REA's dependency. In five ordered pairs, first-call medians were 6.286 s → 0.724 s, with a median within-pair reduction of 5.533 s. Preparation/compilation fell to 1 / 1. Full discovery, all 340 input/output meta-schemas, same-catalog refresh/reconnect, complete retained analysis/view Evidence, text/structured parity, malformed-response rejection and recovery passed. Flameox's complete first-call rankings corroborated the Ajv compilation hotspot. Exact revisions, scope and evidence are on the existing upstream PR.
T3/T5 remain pending deployment: SDK issue #2997 is closed, but PR #2998 is still open/unmerged, and the official client dist-tag is still 2.3.1. This improves client cold preparation in the experiment; it does not reduce catalog bytes or establish a fix for #1387's unavailable original memory-heavy target. #723 remains open. Next independent performance work remains Windows first analysis/startup (#1048); #740 stays deferred.
The requested #1359 installed Linux/Windows review is complete at
b4b8f8bd855743c69bc0acade9771e6eb23269bf, with two remaining review findings. Final CI is red: the product failure is 20 Frida options missing CLI help descriptions; the other two failed jobs depend on that shard. The exact test/log diagnosis is posted. It is awaiting the contributor's fixes, not a blind rerun or merge.This SDK investigation made no tracked product-source/dependency edits. Temporary runtime copies and the isolated analysis environment have been removed; shared dependencies remain intact. Original native profiles, provenance, complete Flameox evidence, compact reports and regression oracles remain local.
@morluto commented on GitHub (Oct 14, 2026):
Refreshed the client preparation probe at
fa318995f, using released SDK 2.3.1 and the production REA server over in-memory transport. This controlled provider catalog advertised 182 tools, compact input schemas and full output schemas. Three alternating fresh-process pairs completed initialize, discovery and two equivalent overview calls.Passing the called tool's current advertised
toolDefinitionretains its output validation while avoiding the SDK's first-call preparation of the whole cached catalog:Complete wire content was identical: tokenx estimated 702,193 tokens including output schemas, not billed model tokens. RSS sampling was nominally 10 ms plus process-list overhead; summed RSS may double-count shared pages and miss peaks. No real engine/model or external-client speedup is claimed.
This confirms the preparation cost remains; it does not establish that most workloads hit a 60-second deadline. Upstream PR #2998 remains unmerged. REA's independently confirmed client/provider deadline propagation fixes are delivered without a dependency patch or weaker production validation. Keeping this broader roadmap open.
@CassieFox23 commented on GitHub (Oct 15, 2026):
TL;DR: I tested the current release, rea-agents 6.5.0, on my 1,200-function file. It acts like main
69fe5b601did. A cancel stops the server in under 1 second, and the next call works. I did not run the CLI compare.My earlier comment listed two items as not run: the CLI compare, and the 6.0.0 package. This comment tests the current release, 6.5.0, instead. It installs rea-agents 6.5.0 from npm and runs repro steps 1 to 3 and the cancel test. The fixture is the same file as before. It comes from the issue's generator at 1,200 functions. It has 114,179 bytes and SHA-256 bf5ad06a…45a0. The release tag contains #1601, #1651 and #1654. Each case ran 3 times. The machine was busy. Other test suites shared it. At the start of each run, about 13 to 23 jobs were running or waiting for a CPU thread, out of 24 threads.
resource_constraint, 1,705 bytes, connection kept69fe5b601; 4 s on busy main8550913cd8550913cd; under 1 s on69fe5b6018550913cd; under 1 s on69fe5b6018550913cd69fe5b601comment has the finer numbers.Still not run
69fe5b601.Commands
Every run was under
nice -n 19and a 6 GB memory cap. Runs were not pinned to CPUs this time.Test setup
3b79af28e(#1693), the rea-agents 6.5.0 tag🤖 Generated with Claude Code (Sonnet 5.5, verified by Opus 5.5) 🦊
@CassieFox23 commented on GitHub (Oct 15, 2026):
TL;DR: I ran step 4, the CLI compare, on main and on 6.5.0. The CLI finishes and writes valid JSON. The MCP server returns a typed size error and keeps the connection. The Evidence kept by the MCP session matches the CLI Evidence field for field. I also ran the cancel checks on 6.5.0 at 300 functions and in the last 50 ms.
My 6.5.0 comment listed step 4 as not run. This comment runs it. The fixture is the issue's generator at 300 and 1,200 functions. The 1,200 file has 114,179 bytes and SHA-256 bf5ad06a…45a0, the same file as before. Main is
9d6651e5b(#4131). The 6.5.0 package is the tag3b79af28e(#1693).Step 4: CLI against MCP, same bytes
resource_constraint, 1,470 bytes of text. Connection kept. Next call OK. (My 6.5.0 comment said 1,705 bytes. That was the 6.5.0 build. This is main.)The issue's own CLI run on 6.0.0 wrote 9,583,065 bytes at 300 functions. Mine is 6,191,232 bytes on main. I did not run 6.0.0, so I can't say where the size changed. The MCP calls used a 1,500 MiB server heap cap. The CLI runs used none.
Cancel on 6.5.0 (harness from my earlier comments, 3 runs per row, cancel 200 ms after progress)
No ping failed. The worst ping after a cancel was 3.7 ms. No child process or temp file was left.
A cancel in the last 50 ms of a run. I set the cancel at 98 percent of the median no-cancel time. That is 1,918 ms for 300 functions, and 5,460 ms for 1,200. Each case ran 5 times. Most runs finished before the cancel timer fired, so no cancel was sent.
So the late-cancel race from my
69fe5b601comment is still there on 6.5.0 at 300 functions.Still not run
Commands
For the Evidence match I sorted keys and compared every field. The MCP call used
format: "auto", as the CLI does. Withformat: "directory", onlyparameters.formatand the id differ. The harness and my script are not in the repo. I can share them.Test setup
9d6651e5b(#4131), the tip of main /3b79af28e(#1693), the 6.5.0 tag🤖 Generated with Claude Code (Sonnet 5.5, verified by Opus 5.5) 🦊
@N0zoM1z0 commented on GitHub (Oct 16, 2026):
Linux remeasurement for T5, at
9d676054858f963c817feb691a6afc71f50506f4, locked SDK2.3.1, Node24.18.0, actual stdio MCP and official Rizin0.9.1. Each completed task included1CLI+11tool calls, one complete207-tool catalog and three controlled native target lifecycles. The fixture stayed unchanged, an unrelated rizin-named control survived, and final process lineage was verified empty.Instrumentation delegates to the same default AJV provider and returns its validators unchanged. Selected definitions come from the actual catalog by exact tool name; result validation remains enabled. The SDK's stamp-keyed outputValidator index eagerly invokes preparation for every listed tool on first lookup. The per-call option bypasses that index and prepares only the chosen definition.
One observed run per mode on a shared host/two cores; caches/frequency/scheduling uncontrolled. Counts describe preparation attempts, not proof that every unused schema compiled successfully. Full catalog wire size is unchanged:829,341 o200k_base proxy tokens, including output schemas; this is neither model billing nor proof the host sends the whole catalog to its model. Schema meta-validation covers414 converted schemas. Refresh/list_changed/invalidation and other external clients were not verified, so this is evidence for the existing T5 direction, not a completed compatibility or server-side performance fix. No production workaround was added to the Rizin repair (#4459).
@harrisonoconnorhover commented on GitHub (Oct 16, 2026):
Apple Silicon follow-up (October 16): 12/12 nonterminal cancellation cases recovered successfully; no reproducible defect found in this scope.
Tested source revision 180ba03, not the published 6.5.0 package. Setup: M1 Pro, macOS 26.5.2, Node 24.18.0 arm64, SDK 2.3.1; real stdio MCP, default 10 MiB receive buffer, current advertised per-call
toolDefinition,detail: "summary", and 768 MiB V8 old-space budgets for both server and analyzer worker. Synthetic input: 40 files × 30 functions, 121,000 source bytes, parsed without execution.All 12 logged server
status: "error"and sent no target response. Prior Evidence remained unchanged, retained summary views validated, and subsequent analysis/ping succeeded. Analyzer workers and transfer paths were gone before the next call; observed descendants and owned temporary directories were gone after shutdown. All 379 recorded ping probes passed (maximum 65.41 ms). One uncancelled control parsed all 40 files; 24 existing cancellation tests also passed. Graph-stage settlement includes preserving already-collected facts.Terminal races: three additional attempts cancelled immediately on terminal progress. The client rejected locally, but the server logged success roughly 2–4 ms later and a successful response arrived. The server's cancellation-notification processing instant was not instrumented: these are completion races, not successful cancellation tests or proof that an already-observed cancellation was ignored.
Limitations: one busy Mac (one-minute load 21.5–39.7), serial runs without CPU pinning; no cross-host performance claim. Summary delivery only: no oversized full-result retest, full CLI/MCP Evidence parity, real-app/ASAR, released-package, other-OS, or exhaustive cleanup-interruption qualification. Harness and raw results remain local. No production changes were made.
@Shreyash021104 commented on GitHub (Oct 21, 2026):
Updated catalog measurement on
maina5f982d(2026-10-21), taken from a source build'stools/listover stdio and counted as compact JSON bytes:a5f982d)tools/listBreakdown at
a5f982d:inputSchema: 724,037 B.outputSchema: 2,609,195 B.inputSchemaonly): 843,441 B.compare_web_captures166,024 B;inspect_analysis_view49,804;compare_application_versions30,375;evaluate_reconstruction_coverage24,776;project_managed_application_graph22,281.compare_web_capturesalone is about 23% of all input-schema bytes.before_scenarioandafter_scenarioare about 48.7 KB each, andbeforeandafterabout 31.1 KB each. That may be relevant to #4973 (Claude connector warning) and #4620 (Gemini 400). Token counts were not measured.@morluto commented on GitHub (Nov 2, 2026):
Overflow recovery text duplication
In the real Kuna 1.989 48,000-pointer overflow control documented on #8591, the compact-profile SDK response was 3,209 serialized bytes. Within its structured error,
messageanddetails.reasonwere identical 731-byte strings, andremediation.actionwas 602 bytes containing much of the same transport and continuation guidance. The structuredreported_limits.continuationwas usable: following it and the page offsets recovered the complete retained address list. This was one scripted client flow on macOS, not an autonomous-agent trace or a token measurement.Source inspection points to
mcpResponseOverflowProjection, which assembles the summary, transport facts, and next step into the reason, then repeats the facts in the remediation; the common resource-error projection also carries the reason as both message and detail. Consider whether each field can instead own a distinct part of the explanation while keeping the actionable continuation, completed-operation status, receive-buffer versus string-ceiling distinction, and existing client expectations intact. This is an investigation candidate, not evidence that repetition caused recovery failure; assess consumer compatibility and measure actual context impact before changing the shared error contract.