mirror of
https://github.com/morluto/rea.git
synced 2026-11-05 06:45:22 +00:00
[GH-ISSUE #7290] [Bug] DOL Evidence cannot be bundled or saved in an analysis snapshot #4329
Closed
opened 2026-10-31 00:48:57 +00:00 by bsakaguchi
·
1 comment
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#4329
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 26, 2026).
Original GitHub issue: https://github.com/morluto/rea/issues/7290
Before submitting
Area
Evidence, artifacts, or reconstruction
Observed behavior
After a supported GameCube DOL target produces one authenticated Evidence record, the production MCP handlers for
get_evidence_bundlein summary and complete modes,export_evidence_bundle, andclose_binarywithsnapshot_pathfail with a Zod format-discriminator error. The accepted manifest formats excludegamecube-dol, although the Evidence subject schema accepts it with architecturepowerpc. The empty session bundle succeeds before the observation. These runtime observations use a selected fixture provider with a concrete analysis profile, not a real Ghidra engine.Reproduction
Use Node.js 24.22.1 and the checkout's locked dependencies. Run the following block from the repository root. It generates a 288-byte DOL containing a 256-byte header and eight ordinary PowerPC
blrinstructions: one aligned 32-byte text section at file offset 256 and load address0x80003100, with its entry at that address and no data or BSS. The script uses the source loader, production target admission, provider registry, binary session, MCP server, and MCP client; only provider readiness and observation results are fixtures. All generated files and server configuration belong to a disposable directory. This exact block's JavaScript was executed successfully once; a separate longer probe also reproduced the failure and passed raw-binary export/snapshot controls.Expected behavior
DOL observations that authenticate under the Evidence schema should be representable in the canonical bundle, discoverable through summary mode, and exportable to disk. A DOL session with a concrete provider profile should support the advertised snapshot-save path.
docs/ghidra-dol.mddocuments explicit DOL admission throughopen_binaryand the stock POSIX Ghidra lane;docs/mcp-contracts.mddocuments canonical bundle delivery, retained-record summary discovery, and export for complete Evidence.Impact and scope
The reproduced failure starts after the first DOL-subject record is retained. Both bundle detail modes, export, and snapshot save fail in the tested selected-provider session. The save failure creates no output and leaves
binary_session.result.opentrue; closing without a snapshot succeeds. A raw-binary/6502 session with the same fixture provider exports and saves a snapshot successfully. This is a bounded failure of DOL Evidence persistence, with no observed corruption, silent record loss, or failure of the analysis operation itself. Individual successful MCP replies can still be retained separately; that does not provide the bundle round-trip or cached-session replay. No equivalent workaround for those two operations was established. Real Ghidra execution and other CLI analysis variants were not run in this reproduction; their shared bundle-construction path is source-derived scope.REA version
6.8.0, source revision
0d1a454e25db825567782e461da21530bad4b158.Runtime and platform
Node.js 24.22.1; macOS 27.0.1 arm64; linked in-memory MCP transports. No Ghidra process starts in the executed reproduction.
Target and artifact context
Synthetic MEM1 GameCube/Wii DOL; format
gamecube-dol, architecturepowerpc; authenticated Evidence record and canonical Evidence bundle; provider-profile-bound analysis snapshot.Interface
MCP
Earliest failure stage
Artifact or evidence registration
Relevant output or evidence
src/domain/evidence.ts:84admits the DOL subject branch;src/domain/analysisSnapshot.ts:97admits DOL execution subjects and targets; the DOL and MCP guides cited above establish supported admission and persistence behavior.src/domain/evidenceBundle.ts:23selects only the first two Evidence subject branches for the manifest union, andcreateEvidenceBundleat line 106 parses each non-null subject through that union; the executed public MCP handlers insrc/server/registerSessionRecordTools.ts:54and:87request the bundle before exporting or summarizing it.The complete executed reproduction is the fixture-provider MCP case above; it does not establish real-engine execution. The supported real-provider path is explicit
open_binarywithformat: "gamecube-dol"andprovider_id: "ghidra"on POSIX, with a ready official installation, no existing-project mode, and no conflicting language override.BinaryTargetResolvervalidates the header and derivespowerpc;GhidraProvider.inspectTargetSupportadmits that executable architecture on POSIX, whileghidraProcessorUnsupportedReasonexplicitly exempts DOL from ELF-only PowerPC checks.resolveGhidraAnalysisProfileselects stockPowerPC:BE:32:defaultand commits the DOL section facts.GhidraProviderClientprepares the DOL import and returns a successfuladdress_nameexecution without replacing its subject;BinarySessionExecution.bindExecutionTargetsupplies the selected DOL subject, and the session/server records it. No subsequent bundle guard exempts that admitted format. Windows Ghidra, Hopper, IDA, conflicting language settings, and existing-project imports are outside this path.Snapshot export has additional guards: an active concrete provider profile, no invalidated analysis state, and an executable session. The executed fixture is a selected registry candidate with a matching profile, rather than an auxiliary-only provider, and passes those guards.
BinarySessionRecords.exportAnalysisSnapshotthen calls the ledger's bundle exporter before writing the file. The independently executed direct snapshot call throws atcreateEvidenceBundle, matching the MCP snapshot failure. Snapshot import also uses the same bundle schema; importing a DOL-containing snapshot successfully was not executed.Typed outcome or recovery expected
Return the normal canonical bundle or summary, export receipt, and snapshot-save receipt for the admitted DOL record. Preserve the current safe behavior that a failed save does not close the live session. A raw schema exception does not identify a usable recovery path for an intact supported observation.
Analysis or suspected cause
The source subject union contains detected-format, raw-binary, and DOL branches, but the artifact-manifest union is constructed from only the detected-format and raw-binary branches. That discrepancy is sufficient to explain the format-discriminator failure for each non-null DOL subject, independent of the producing engine. Summary filters cannot bypass it because the handler constructs the full immutable bundle before applying the summary selection. CLI delivery with
--evidence_outputalso calls the same constructor; no one-shot DOL CLI export was executed, so this report does not claim a measured failure for every CLI command or delivery variant.Additional context
An auxiliary-only fixture with no active deep-provider profile can fail snapshot export earlier with a profile-related integrity error; that signal alone does not establish this snapshot-schema failure. The supplied reproduction selects a profile-bearing candidate to reach the failing bundle projection. Related but different reports are #7082/#7081, which concern a conflicting DOL language override, and #6240, which introduced DOL analysis. The known-good raw-binary control establishes that the fixture profile and snapshot mechanism work for an admitted manifest format. NOT_ENOUGH_INFO: the first affected release and last known-good DOL persistence revision have not been established.
Restoration check
With the same generated DOL and profile-bound MCP sequence, the first retained observation must remain authenticated and retain its original subject identity; summary and complete bundle reads must succeed, export must write a canonical bundle with that DOL artifact and record, and snapshot save must write the snapshot and close the session. Re-import that bundle in a fresh session and reopen the same DOL with the saved snapshot to verify record preservation and replay binding. Keep the empty-session and raw-binary export/snapshot controls passing. Preserve rejection of unsupported DOL architectures and malformed headers; success must not be obtained by removing the subject, discarding records, or bypassing authentication.
Triage assessment
References
@coygeek commented on GitHub (Oct 31, 2026):
I checked this against latest main, and the issue appears resolved. The original problem was that after I recorded an authenticated GameCube DOL observation,
get_evidence_bundlein both summary and complete modes,export_evidence_bundle, andclose_binarywithsnapshot_pathall failed with a Zodinvalid_unionerror on theformatdiscriminator, because the bundle artifact manifest only accepted the detected-format and raw-binary subject branches and rejectedgamecube-dol, even though the Evidence subject schema itself accepted a DOL subject with architecturepowerpc. The fix in commit50822e1ef, merged via PR #7481 (merge commit54756ff24) intomain, changessrc/domain/evidenceBundle.tsso the artifact manifest is built withwithEvidenceSubjectDeclarationfromsrc/domain/evidenceSubject.ts, which includes all three subject branches, includinggamecube-dolwith architecturepowerpc. The same shared helper is now used bysrc/domain/evidence.tsandsrc/domain/analysisSnapshot.ts, so Evidence, bundles, and snapshots no longer disagree about this admitted format. PR #7481 also adds regression coverage for exactly the reported flow: a DOL session test that saves withclose_binaryandsnapshot_path, verifies the savedgamecube-dol/powerpctarget and artifact manifest, reopens from the snapshot, and replays the read without re-running the provider, plus vocabulary tests that require the DOL format to pass through Evidence creation, immutable bundle creation, snapshot target parsing, and target summary. That covers the bundle reads, export, and snapshot-save path that were failing. Closing as resolved.