mirror of
https://github.com/morluto/rea.git
synced 2026-11-05 06:45:22 +00:00
[GH-ISSUE #3333] [Bug] Distinct unresolved MCP workflows collide in the unknown registry #1202
Closed
opened 2026-10-15 18:31:58 +00:00 by bsakaguchi
·
2 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#1202
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 @coygeek on GitHub (Oct 14, 2026).
Original GitHub issue: https://github.com/morluto/rea/issues/3333
Before submitting
Area
MCP or agent integration
Observed behavior
A second unresolved
build_call_pathrequest on the same ordinary stdio MCP connection fails withrevision_conflictinstead of returning its ownunknownresult. Changing only the goal address from0x3000to0x4000triggers the failure after the earlier unresolved path succeeds. Both requests use the same authenticated function Evidence and missing-callee frontier.The first goal returns
status: "unknown". The second returnsisError: truewith no structured result. Replaying0x3000succeeds again, andlist_unknownsreports only one call-path unknown. Afterclose_binaryand reimport of the original function-only bundle, the previously blocked0x4000request succeeds withstatus: "unknown". The server remains connected throughout.A second executed stdio MCP probe used the canonical managed/native verification example with a complete empty native-export inventory.
verify_managed_native_boundariesreturnedsummary.unresolved: 1formissing_one, then the samerevision_conflictdiagnostic for a distinct declaration namedmissing_two. Both adapters exhibit the same fixed-question registration pattern.Reproduction
0x2000for which no dossier is supplied. No binary or analysis engine is executed.Compare the two distinct goal requests with the repeated original goal, which controls for valid input and replay. The final close/reimport demonstrates recovery using only the original source Evidence bundle.
To reproduce the second affected adapter, rerun the same command with the following inline JavaScript inserted after
import_evidence_bundleand before the call-path loop. It creates authenticated managed declarations and a complete empty native-export inventory from the canonical repository example:The recorded reproduction used dependencies and the compiled runtime already present. The clean-checkout installation and build commands above are preparation instructions.
Expected behavior
Both goal requests should return complete call-path Evidence with
status: "unknown"and the missing callee limitation. An unresolved result from an earlier, distinct request must not prevent recording and returning a later result. Repeating the original request should remain supported. Both distinct unresolved managed imports should return their verification results.src/contracts/sessionToolContracts.ts:125advertises missing call-path dossiers as unknown.src/contracts/managed/managedWorkflowToolContracts.ts:116promises preservation of unresolved managed/native states.docs/tool-design.md:57requires unresolved relationships and partial facts to remain visible.Impact and scope
Impact level: P2, supported. Distinct valid investigations that retain unresolved results fail after the first result on a connection, and the failed call does not return its requested Evidence. This was observed in both call-path reconstruction and managed/native verification. Other tools using the same pattern were not executed.
Workaround status: available. The previously blocked request succeeds after closing and reimporting only the source Evidence. Closing clears the retained investigation, so export useful results first and keep unresolved workflows on separate fresh connections when their session history must remain available.
REA version
6.4.0 (main at
8dde6370d0)Runtime and platform
Node.js v26.10.0 on macOS 27.0.1. Host architecture was not recorded in the reproduction evidence. The managed/native fixture declares an
x86_64Mach-O subject; that is target metadata, not an observation of host architecture.Target and artifact context
Portable authenticated Evidence fixtures, with a function-only canonical Evidence bundle for
sample.bin, Mach-O format, an all-zero 64-character SHA-256 fixture digest, a start function at0x1000, and a missing direct callee at0x2000. The additional managed/native probe usesnative.bin, Mach-Ox86_64, the example's native subject digest, and a complete empty export inventory. All bundle content is generated inline; no physical target binary or analysis engine is required or executed.Interface
MCP
Earliest failure stage
Artifact or evidence registration
Relevant output or evidence
The second distinct goal returned this observed error instead of structured call-path Evidence:
The first goal and its replay returned
status: "unknown";list_unknownsreported one call-path unknown. Closing and reimporting the original bundle restoredstatus: "unknown"for the previously blocked goal. The managed/native probe returnedsummary.unresolved: 1formissing_one, followed by the same error formissing_two. These results came from executed stdio MCP calls; the reproduction was complete and locally reproduced.Typed outcome or recovery expected
On one connection, run both distinct unresolved call paths and require both to return their complete unknown Evidence without a registry conflict. Repeat the original request and verify that the retained records and unknown references remain consistent. Run both distinct unresolved managed imports and require both verification results to remain available. Preserve rejection of an explicit
record_unknownrequest that duplicates an existing stable identity; successful automatic recording must preserve that separate contract.The repeated original goal is the discriminating valid-input/replay control. Close/reimport is the demonstrated recovery control, not a replacement for successful retention of both distinct results in one investigation.
Analysis or suspected cause
Source-derived reasoning:
src/server/registerInvestigationTools.ts:147records different call-path results with the same question and domain, andsrc/server/registerInvestigationTools/helpers.ts:49passes that question to derived Evidence recording.src/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.ts:87uses the same pattern for the second observed tool.src/application/investigation/EvidenceLedger.ts:280rejects a later differing unknown revision withalready-exists. This source reasoning explains the observed failures but does not establish execution of other tools that use a similar pattern.Additional context
not_found; the current inputs genuinely lack a callee dossier and should retain separateunknownresults.@xu91102 commented on GitHub (Oct 14, 2026):
Confirmed on clean main
322506d0c0d39d3cd1e2e1c285c2cc23cfa73ee7, with the locked dependencies, Node 24.18.0 and the production stdio MCP server on macOS arm64.On one connection, goal
0x3000returnsunknown, goal0x4000returnsrevision_conflict/already-existswith no structured result, and replaying0x3000still succeeds. Only one call-path unknown is retained. Closing and reimporting the original function bundle lets0x4000succeed. The managed/native example also reproduces:missing_onereturns one unresolved declaration, whilemissing_twofails. Both use canonical, self-owned Evidence; no target binary or external analysis engine runs.The registry is correctly rejecting different revisions of the same unknown identity. The automatic workflow record uses a fixed question/domain while its supporting derived Evidence changes. I am preparing a correction at their shared record owner so distinct derived results coexist, with same-result replay, source/Evidence closure, bundle retention, atomic rollback and genuine manual/optimistic conflict controls preserved. I will link the PR after verification; this comment records current reproduction rather than a completed fix.
@morluto commented on GitHub (Oct 19, 2026):
Fixed on main in 95c8f57aa.
Root cause: automatic producers reused fixed question/domain identities while putting the result Evidence ID only in supporting links. Supporting links do not scope Unknown identity. Distinct derived workflows therefore conflicted; composed-workflow and process-capture producers instead caught the duplicate and silently retained only the earlier Evidence link.
A shared application constructor now scopes automatic questions to immutable result Evidence, validates the original question before adding that scope, and returns tagged failures. Investigation workflows, both managed workflows, composed CLI/MCP workflow residuals and process-capture residuals consume it. Explicit/manual creation, guarded updates, existing retained records and their identities are preserved. The superseded single-result call-path test was removed. PR #3503 at exact head
28726f8afwas reviewed and its author Dragolone credited; the PR was not merged. The broader producer scan and shared owner also address cases beyond that proposal.Executed validation: 86 focused tests across 14 files; 3 existing process-consumer tests; final 9-test native-API rerun; full static/type/format/module/architecture checks, docs checks (5 conformance tests), discovery of all 1,601 files and hooks/pre-push checks. Public regressions cover distinct unresolved call paths, reconstruction, managed member comparisons, managed/native verification, unavailable native API observations and process captures, with source-link and same-immutable-Evidence replay controls. Manual duplicate creation still rejects. Baseline REDs and whitespace/blank-question/error regressions were retained. Process coverage uses existing controlled Node fixture captures; Ghidra responses are controlled wire fixtures, not execution of Ghidra/Hopper/IDA.
Snapshot replay can add meaningful provenance and yield a different Evidence ID even when normalized facts match. Both immutable results retain independent linked questions; an exact warm Evidence replay is idempotent. No implicit support merging or inference that distinct provenance is equivalent was introduced.
Six final compiled SDK control workflows (plus six retained preliminary measurements and one smoke run) compared discovery, bundle import, unresolved call-path creation, exact repeat and list_unknowns. Normalized path, result Evidence ID, exact-repeat retained bundle and 207-tool catalog hash matched. Repeated-process medians: elapsed 2.549→2.566 s, CPU 3.318→3.339 s, sampled process-family RSS 735.3→739.0 MB. Serialized request estimate stayed 883 cl100k tokens; SDK replies including the entire catalog were 809,304→809,374. These are descriptive tiny-task measurements, not actual model-context, true cold-cache, speedup, large/fault-cost or cross-platform/provider qualification claims. Existing exported unknowns remain valid; old sessions are not backfilled with links already discarded before the fix.
DeepWiki was checked for navigation; its suggestion that mutation Evidence IDs inherently scope Unknown identity, and that ignoring duplicate errors prevents loss, was rejected against the current identity owner and the executed regressions.