mirror of
https://github.com/morluto/rea.git
synced 2026-11-05 06:45:22 +00:00
[GH-ISSUE #8744] [Bug] Kuna session advertises dossier after its required project has failed #7533
Open
opened 2026-11-03 08:19:42 +00:00 by bsakaguchi
·
0 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#7533
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 @morluto on GitHub (Nov 3, 2026).
Original GitHub issue: https://github.com/morluto/rea/issues/8744
Before submitting
Area
Provider or capability discovery
Observed behavior
After a Kuna project export has definitively failed in a session,
binary_sessionreportsprocedure_assemblyunavailable once that operation fails, but still advertisesanalyze_functionas available. Callinganalyze_functionimmediately fails on the same settled project failure; only then does session status mark it unavailable.procedure_pseudo_coderemains usable through a standalone run.Reproduction
On REA
9ebbe67e05af08b567e215340da993c08dae378f, macOS arm64, Node 24.22.1 and released Kuna 1.989, use the owned two-function fixture and deliberate all-worker panic injection described in #8743. In one session:procedure_assemblyat0x100000328and wait for the project-failure error.procedure_pseudo_codeat the same address: standalone fallback succeeds.binary_session: the capability groups report assembly unavailable but groupanalyze_functionand pseudocode as available.analyze_functionfor that address: it returnscapability_unavailabledue to the already failed project. Callbinary_sessionagain:analyze_functionis now unavailable.Observed with full and compact stdio MCP schemas. The faults were deliberately injected, not a natural failure estimate. Target SHA-256
0e0ecf82c96e4918ee2ca1287dc25513d8fd13d5ab7fa5b98db00ad342f03930remained unchanged.Expected behavior
When the selected Kuna session knows the project export has failed, make project-dependent operation readiness discoverable without requiring a trial call to each operation, while preserving standalone pseudocode availability. Alternatively explicitly distinguish declared capability support from observed runtime readiness. Keep unknown, transient, cancellation and cleanup states distinct; do not mark the whole provider unavailable.
Impact and scope
An agent consulting session capability availability is directed toward a dossier operation that cannot succeed until project recovery, costing a failed call. It can still use standalone pseudocode. This is one injected failure scenario; other failure modes, provider recovery, CLI and autonomous-agent behavior remain untested.
REA version
9ebbe67e05af08b567e215340da993c08dae378fRuntime and platform
Node 24.22.1; macOS arm64; Kuna 1.989 behind a test-only fault wrapper.
Target and artifact context
Owned unexecuted arm64 Mach-O; fresh REA Kuna cache.
Interface
MCP
Earliest failure stage
Session runtime availability projection
Relevant output or evidence
Before the dossier call:
analyze_functionandprocedure_pseudo_codewere grouped withavailable: true, whileprocedure_assemblywas false. The dossier returnedcapability_unavailable; after that call it appeared in its own unavailable group.Typed outcome or recovery expected
Show a known failed shared prerequisite at the right dependency scope, without conflating project-dependent operations with independent provider operations, or show that availability has not been verified. Retain the observed failure and recovery context.
Analysis or suspected cause
Source-derived:
SessionRuntimeAvailabilityoverlaysAnalysisCapabilityUnavailableErroron the operation that observed it.KunaSessionClientrequires the same project for assembly andanalyze_function, whereas pseudocode has an independent fallback. Treating this as a provider-wide error would incorrectly hide working operations. Availability is not a guarantee that arbitrary calls succeed; this control concerns a settled prerequisite failure already known to the provider session.Additional context
Related #8743 concerns inaccessible project-failure records, and #8740 concerns fallback Evidence wording. cc @gensokyo-dev @kaoru0822-kitauji @N0zoM1z0
Working alternatives after the settled project failure
Using the same deliberately failed real Kuna 1.989 project and target, one session in each MCP profile called
batch_decompilefor both functions,decompile_all, andprocedure_calleesafter the assembly error. Batch returned two successful standalone pseudocode items; directory export wrote two files, with no failed or remaining functions; the callees query succeeded with an empty result and the provider's call-coverage limitation. Batch and directory Evidence included the project-failure and single-function caveats; the directory index associated those caveats with both functions. The target hash remained unchanged. This is a working alternative for this fixture, not equivalence to a complete project dossier, proof of no callees, or a natural failure frequency. Main still has the contradictory single-function timing wording tracked by #8740.Controlled repair and reopen
In separate fresh-cache compact and full MCP sessions, I used a test-only Kuna wrapper that injected the same project-worker panics while a local marker existed. After assembly and dossier failed,
binary_sessionreported the dossier unavailable. I closed the binary, removed the marker (the wrapper executable itself was unchanged), reopened the same target in the same MCP server, and requestedanalyze_function. The new project completed, the dossier succeeded, and session capabilities reported it available again in both profiles. Target SHA-256 stayed0e0ecf82c96e4918ee2ca1287dc25513d8fd13d5ab7fa5b98db00ad342f03930. This validates one explicitly repaired test condition and reopen, not automatic recovery or behavior across other failure types. A prior combined run reused a successful cache between profiles and was discarded; the reported runs used separate caches.Real deadline recovery control
Using released Kuna 1.989 directly, without a fault-injection wrapper, I started fresh REA MCP servers with
REA_KUNA_PROJECT_TIMEOUT_MS=10and separate cache roots. In both compact and full profiles,procedure_assemblyfailed because the project'skuna functionsinventory command did not complete within that deadline. The top-level error wascapability_unavailable, retainedprovider_timeoutas the underlying export code, and named both the setting and the need to restart REA and reopen the target. I closed the session and server, started a new server with the same cache and a 180,000 ms deadline, reopened the same target, and successfully requested its completeanalyze_functiondossier in each profile. The target SHA-256 remained0e0ecf82c96e4918ee2ca1287dc25513d8fd13d5ab7fa5b98db00ad342f03930. This verifies one deliberately tiny deadline and its documented recovery, not natural timeout frequency or a timeout during the later decompile-project command.Project-command deadline control
With real Kuna 1.989 on main
9ebbe67e, a test-only wrapper injected a worker stall duringdecompile-project, after inventory completed. In both full and compact stdio MCP profiles with a 1,500 msREA_KUNA_PROJECT_TIMEOUT_MS,procedure_assemblyreturnedcapability_unavailable, retained the underlyingprovider_timeout, identifiedkuna decompile-project, and instructed a restart with a larger setting. After closing REA, removing the stall injection, starting a new server with a 180,000 ms deadline, and reopening the target,analyze_functionsucceeded in both profiles. The target SHA-256 remained0e0ecf82c96e4918ee2ca1287dc25513d8fd13d5ab7fa5b98db00ad342f03930. This tests a deliberately injected stall and a combined repair (removing the stall and raising the deadline); it does not show that a larger deadline alone would have fixed the stall or establish natural timeout frequency.Existing PR and background-failure control
On unmodified #8748 head
6d3f4c72de58bc75b39cff9df1fe8e3f4129f3a5, real Kuna 1.989 in compact and full MCP profiles reproduced the original control with the all-worker panic injection: afterprocedure_assemblyreported the failure, session status marked both assembly and dossier unavailable while standalone pseudocode remained available. In separate fresh-cache controls, removing the test-only fault and reopening restored dossier availability and a successful result. The target hash remained unchanged.A distinct fresh-cache control on that same PR head started only
procedure_pseudo_code; it succeeded through the standalone path. After itsraw_result.project_export.stateexplicitly becamefailed,binary_sessionstill marked both assembly and dossier available in both profiles because no project-dependent call had yet reported the failure. No assembly or dossier call preceded this status check. This is a deliberately injected all-worker failure, not a natural frequency claim. Source inspection is consistent: the PR propagates sibling unavailability from an operation's failure, while a successful standalone observation does not emit that failure. The control leaves open whether the intended contract is to expose known background state immediately or only after a dependent request; it does not negate the PR's improvement to the original reported sequence.Readiness ownership
Source inspection on #8748
6d3f4c72de58bc75b39cff9df1fe8e3f4129f3a5: the Kuna session already owns the current export state and exposes it in successful pseudocode raw metadata, whilebinary_sessionbuilds capability availability from route declarations andSessionRuntimeAvailability's observed operation outcomes. The proposed sibling-failure mechanism improves status after a dependent refusal but has no path for a background project failure observed only by the Kuna session. A complete solution would need a provider-owned, session-scoped readiness observation or an explicitly unknown readiness contract, propagated without treating standalone Kuna operations as failed; it must also address changes on completion, invalidation, close/reopen, composite routing, cleanup and notification semantics. This is source-derived design analysis, not a proposed implementation or evidence that any particular notification is currently promised.Combined readiness and overflow recovery controls
A disposable, uncommitted merge of #8748 head
6d3f4c72de58bc75b39cff9df1fe8e3f4129f3a5and #8747 heada8e7ce415e51b454580d677899b40719a7baf2aebuilt and passed two separate real Kuna 1.989 MCP controls in compact and full profiles. With test-only all-worker failure injection, assembly and dossier were unavailable after the assembly refusal, while standalone pseudocode remained available. With a separate test-only oversized standalone output and delayed project, the initial pseudocode failure was retryable, assembly completed the project, and retrying pseudocode succeeded. The target SHA-256 remained0e0ecf82c96e4918ee2ca1287dc25513d8fd13d5ab7fa5b98db00ad342f03930. These are injected, separate failure scenarios; they do not resolve the background-readiness gap above or establish general integration coverage.Recovery text in session availability
In the same deliberately injected all-worker failure on main
9ebbe67e, afterprocedure_assemblyreturned its failure,binary_sessionin both compact and full MCP profiles marked that operation unavailable and repeated Kuna's instruction to inspect per-function records. Unlike the operation error, the session availability reason did not include the advice to resolve the cause and reopen the target. In a separate test-only control, removing the injected fault did not make a repeated assembly call succeed in the same binary session, while closing and reopening the target did. The target was not executed and its SHA-256 remained0e0ecf82c96e4918ee2ca1287dc25513d8fd13d5ab7fa5b98db00ad342f03930.This identifies a recovery-context difference between the operation error and the session capability projection; it does not establish that the same remedy works for every failure or that diagnostic files are available. See #8743 for the removed-records issue. Any readiness design should keep recovery connected to the observed failure without assuming a universal retry remedy.
Producing boundary for lost recovery
Source-derived at
9ebbe67e:KunaSessionClient.exportUnavailableattaches the cause and recovery in theAnalysisCapabilityUnavailableError.userMessage; its basemessageis constructed separately from the provider, operation and raw reason. SharedSessionRuntimeAvailability.runtimeFailureReasonrecords the basemessagefor this error type, then the session status projection uses that recorded string. Thus the observed missing reopen guidance is not caused by Kuna failing to generate it. This shared projection can also discard distinct user-facing messages from other providers, but no separate real-provider reproduction has been performed. A correction should preserve the applicable user-facing recovery without asserting that a failure remains current after lifecycle changes or exposing cleanup-dependent actions as safe.