mirror of
https://github.com/morluto/rea.git
synced 2026-11-05 06:45:22 +00:00
[GH-ISSUE #7294] [Bug] Reversing two failing process traces changes the attributed dimensions #4330
Closed
opened 2026-10-31 00:48:58 +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#4330
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/7294
Before submitting
Area
Process capture or runtime observation
Observed behavior
The public
compare-process-capturesCLI reports different changed dimensions for the same pair when the operand order is reversed. Both imported captures fail an explicit partial-order specification, but on different edges. In the forward comparison terminal/interaction are changed and filesystem/exit are unchanged; in reverse filesystem/exit are changed and terminal/interaction are unchanged. Both runs report tracedifferent, both trace sidesfail, and overallchanged.The per-source observations, normalization and comparison commitments are identical. Only cross-source journal order differs. The no-trace control reports all four dimensions unchanged. These are parser-validated, caller-authored synthetic capture Evidence files; this is an offline import/comparison reproduction, not a claim that a real capture producer emitted these journals.
Reproduction
Run the following from a prepared source checkout, with a supported Node.js on PATH, locked dependencies and its compiled
dist/runtime already present. Preparation was supplied for verification; installation and build were not rerun. The script derives three capture records from the public empty-capture example, writes neutral JSON fixtures into a disposable directory, and invokes the registered CLI six times with an explicit environment and isolated home/config/cache/state/temp paths. It launches no target or analysis provider. The fixture deliberately supplies two different journal orderings to the supported import boundary: left violatesready -> typed, right violatesbefore -> settled; every other event pair is explicitly unordered.The final replay completed with all six CLI children exiting 0. A separate source-loaded comparison returned exactly the same normalized results for both failing orientations and independently exposed each side's distinct edge diagnostic.
Expected behavior
Swapping the selected captures may relabel sides and choose a different headline diagnostic, but must preserve the set of changed dimensions for this pair. Both observed edge failures must contribute their dimensions: terminal, interaction, filesystem and exit changed in either orientation, with process remaining unknown from its sampling residual. The no-trace control must remain unchanged in those four dimensions. A pair with only the terminal/interaction edge failure must continue changing just those dimensions in either orientation.
docs/process-capture.md:529-537says trace differences apply to implicated dimensions, unrelated dimensions retain their comparisons, and observed ordering violations remain changes. The partial-order regression atsrc/domain/process/processTraceComparison.test.ts:668-733also requires attribution of every independent failed ordering edge. This report extends that existing rule to independent failures on opposite sides rather than losing one side during pair comparison.Impact and scope
P2: a successful public comparison emits operand-dependent dimension results, suppressing a different pair of ordering changes in each orientation while retaining the correct aggregate changed verdict. The verified scope is the synthetic imported pair and explicit specification above. User prevalence, naturally recorded examples, other platforms and MCP transport were not measured. No security boundary is crossed.
A demonstrated workaround for this pair is to run both operand orders and take the union of their changed dimensions, retaining both results and the same trace specification. Omitting trace validation alone does not preserve the required ordering information. Source inspection shows that
find_changed_behavioremits findings only for non-unchanged process dimensions (src/domain/changedBehavior.ts:222-252) and dimension-specificverify_reconstructionclaims read these statuses (src/domain/reconstructionVerification.ts:282-287); those downstream workflows were not executed here.REA version
rea-agents 6.8.0; source revision
0d1a454e25db825567782e461da21530bad4b158.Runtime and platform
Node.js v24.22.1; macOS arm64. The compiled CLI and direct source comparison were checked against the same checkout; no native analysis engine was used.
Target and artifact context
Synthetic process-capture Evidence based on
src/domain/process/processCaptureExample.ts, with one raw terminal frame, one input interaction, two lifecycle observations and two empty filesystem checkpoints. Both journals reference every observation exactly once with contiguous capture order. The captures have matching canonical commitments, no truncation, equal observation values and a process sampling residual outside the trace-selected sources. The arbitrary imported journal orders are intentional; no live process recording is claimed.Interface
CLI
Earliest failure stage
Native analysis or reconstruction
Relevant output or evidence
Selected fields from the real CLI output; all six calls exited 0:
The forward and reverse overall statuses are changed. The exact and passing controls have overall unknown because process coverage remains unknown. The source-loaded side evaluations returned
ready must happen before typed.for left andbefore must happen before settled.for right. The compiled CLI's normalized result equaled the direct current-source comparison in each orientation.docs/process-capture.md:529-537andsrc/domain/process/processTraceComparison.test.ts:668-733, requiring dimension-specific attribution while retaining independent observed ordering failures.src/domain/process/processTraceComparison.ts:20-27evaluates both sides but retains the left diagnostic when both exist, andsrc/domain/process/processComparison.ts:339-365attributes changes using only that retained diagnostic.Public reachability was exercised through
src/cli/processCommands.ts:28-52andsrc/application/process/ProcessCli.ts:107-183: file reads, Evidence integrity/workflow/provider admission, capture semantic validation and trace-specification parsing precedecompareProcessCaptureEvidence. That owner invokescompareProcessCaptures, whose compatible-contract guard passes for these equal commitments; no capture-age restriction is requested. Both side evaluations are fail, so unknown/equivalent/nonconforming branches do not explain the result. There is no test-only bypass at the CLI boundary.Typed outcome or recovery expected
Return derived comparison Evidence with the same four changed dimensions in both operand orders, preserving trace verdict different, both side failures and process unknown. A single presentation diagnostic can remain side-specific without discarding the other side's dimension attribution.
Analysis or suspected cause
Source-derived and corroborated by direct side evaluation: both failures exist before pair construction. Pair construction prefers the left diagnostic, while dimension projection derives its event/source set solely from
trace.diagnostic. In the forward order this set contains terminal/interaction; reversing the files replaces it with filesystem/lifecycle. Each excluded dimension falls back to its unchanged exact observation comparison. The raw observations are equal, but their explicitly constrained cross-source order is not.Additional context
This is one comparison-attribution defect, independent of rendered-terminal truncation: neither input is truncated and both trace sides fail rather than pass. NOT_ENOUGH_INFO: last-known-good release, live-producer frequency, effects of other multi-failure shapes and executed downstream consumer behavior were not established. No implementation change or post-fix restoration is claimed. The final source-freshness comparison found later documentation/CI and DMG-recovery changes on live main. The trace/comparison implementation, capture/trace validators, CLI command and issue form were unchanged. The shared ArtifactReader changes only add/preserve failure-recovery user messages; they do not change this successful JSON-read path. Current main was source-compared, not rebuilt or runtime-tested.
References
#2616, closed as completed, and #2929, closed, concern false attribution of a predicate mismatch to equal unrelated dimensions. A review on that PR also identified independent ordering failures within one side; the current evaluator aggregates those failures at
src/domain/process/processTraceEvaluation.ts:398-419. This case instead loses a failure across sides when both sides fail differently, after each side has been evaluated correctly.#3931, closed as completed, and #4178, closed, preserve unrelated incomplete coverage. This fixture has no truncation in any dimension and its trace-selected sources are complete.
#6514, closed as completed, and #3181, closed as completed, concern finite-language omissions; this report uses complete equal observation collections and partial-order edge failures. #5923, closed as completed, concerns first-divergence localization, a separate result field. #724 remains open for additive content/timing explanations and explicitly preserves existing verdict semantics; it does not report this two-failure operand-order dependence.
Restoration check
Replay the same pair and specification in both orientations. Require terminal/interaction/filesystem/exit changed, process unknown, trace different and both trace sides fail in each. Preserve the exact control's four unchanged dimensions and the passing trace control. Preserve one-failure and one-failure-reversed as terminal/interaction changed with exit/filesystem unchanged, so marking every declared dimension changed cannot satisfy the check. The script records/asserts current failing behavior; restoration requires replacing its asymmetry assertions with the symmetric expected outcomes above.
Triage assessment