mirror of
https://github.com/morluto/rea.git
synced 2026-11-05 06:45:22 +00:00
[GH-ISSUE #2173] fix(artifacts): identical complete plist inventories compare as unknown #718
Closed
opened 2026-10-15 18:27:40 +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#718
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 12, 2026).
Original GitHub issue: https://github.com/morluto/rea/issues/2173
Summary
Comparing two complete inventories of identical valid plist files returns
unknownwith zero unchanged occurrences and one unknown occurrence. Both inventories contain the same fully observed root, and the only inventory notice says the artifact has no child container entries. The comparison introduces an unresolved artifact-coverage finding and an open high-severity residual unknown even though this inventory has no missing members. This was reproduced through the production CLI and stdio MCP interfaces on the source build and published package.Affected area
Evidence, artifacts, or reconstruction. Inventory capture succeeds; the first incorrect result appears during artifact comparison derivation. The demonstrated target is a standalone XML plist file on macOS, and no native analysis engine is needed. The report covers the inventory comparison and its downstream artifact-coverage finding and residual unknown as one failure.
Runtime or environment
The source build was tested at revision
c22111eca2. The separately installed publishedrea-agentspackage was version 6.4.0; the source is 259 commits after that release tag despite carrying the same package version metadata. Both ran on darwin arm64 with Node.js 24.21.0, which meets documented installed-runtime support. This is not a claim that the contributor's pinned Node.js runtime was used. The source runtime was already built, and the release was already installed before verification.Steps to reproduce
Use either tested runtime as
rea. Run these commands in a disposable directory; Python, native analysis engines, credentials, and external targets are unnecessary.jqonly extracts the returned nested inventory and does not modify it.Connect an MCP client to
rea mcp. Send these public tool calls in order on the same connection:open_binarywithpathset to the absolute right-plist path printed above.inspect_artifactwith{}. Retain the full Evidence record nested in the returnednormalized_result.substepsentry whoseevidence.operationisinventory_artifact.compare_artifactswithleftset to the complete JSON record inleft-inventory.jsonandrightset to the nested Evidence from step 2. Do not pass only their normalized results or edit their Evidence IDs.find_changed_behaviorwithcomparisonsset to an array containing that record.list_unknownswith{"domain":"artifact-comparison"}.This CLI-left/MCP-right path was executed on both tested runtimes. Both inventories have
root_format: "plist", one node, one occurrence at., zero edges, and returned array lengths equal to their manifest counts. Their root hashes, graph hashes, and manifest IDs match. The nested inventory's only limitation isArtifact has no child container entries.Close the MCP connection and remove the disposable directory after inspection.Expected behavior
The public comparison contract compares complete artifact inventories by occurrence path, content identity, metadata, and graph relations; gaps yield
truncatedorunknown. These equal, fully returned plist inventories have no missing occurrence or failed child-container read. Their notice describes a root with no child entries in the inventory's modeled scope. The comparison should returnstatus: "unchanged",summary.unchanged: 1,summary.unknown: 0, and no changes.The unchanged comparison should introduce no artifact-coverage unresolved finding or artifact-comparison residual unknown.
find_changed_behaviormay still report an overall unknown behavior status because no process comparison was supplied; it must not attribute that lack of runtime evidence to a nonexistent artifact-inventory gap.Actual behavior
Both tested runtimes return the following comparison fields:
The actual public
find_changed_behaviorresult contains oneartifact:coveragefinding with classificationunresolved_branch, statusunknown, andsummary.unresolved: 1. The actual publiclist_unknownsresult contains an open artifact-comparison unknown with severityhighand a recommendation to inspect both artifacts and compare their complete graphs, which the reproduction has already done.A real content change from
hellotoworldstill produces a root change with dimensioncontent,summary.changed: 1, andsummary.unknown: 0, but the overall comparison status remainsunknown. Changing only the right file's mode from 0644 to 0755 produces the same overall status with a rootexecutablechange. These controls show that the bug adds false uncertainty while preserving detected deltas.Evidence
src/contracts/sessionToolContracts.ts:107defines the complete-inventory comparison contract;src/artifacts/inventory/reader.ts:14and:39establish the plist root's lack of a child reader and the informational notice.tests/boundary/filesystem/artifactComparison.test.ts:173separately asserts unchanged accounting for an identical complete directory inventory.find_changed_behaviorandlist_unknowns, on both tested runtimes.src/domain/artifactComparison.ts:107,:136,:420, and:436trace the informational notice through the coverage gate, overall status, and summary;src/domain/changedBehavior.ts:310andsrc/server/registerArtifactComparisonTool.ts:86trace the downstream finding and residual unknown.The source path accepts
.plistduring target resolution insrc/application/BinaryTargetResolver.ts:259and:324. The production tool accepted the exact returned Evidence, including its authenticated ID, subject/root facts, unique members, complete graph commitment, and manifest commitment. The public downstream call also passed the comparison Evidence closure check. The release result comes from the packaged dispatcher and runtime, rather than an assumption based on source or package metadata.Discriminating controls were executed on both runtimes. Identical one-entry ZIPs return
unchanged, with two unchanged occurrences and zero unknowns, despite their ZIP scope notice. For semantic isolation, a correctly authenticated derived inventory made from the observed plist inventory with only its informational notice removed returnsunchanged, with one unchanged occurrence and zero unknowns. Derived inventory controls with omitted nodes or an explicit omitted-child coverage limitation returntruncatedandunknown, respectively. These derived controls are not claims of real producer omissions or recommended user workarounds. No broad test suite was run.Restoration check
Replay the public plist fixture through both inventory producers and the comparison tool. The equal complete pair must report
unchanged, one unchanged occurrence, zero unknowns, and no changes. Its downstream aggregation must contain no artifact-coverage unresolved branch, and comparison must create no artifact-comparison residual unknown for the equal pair.Preserve the real content and executable-bit changes as root deltas with the relevant dimensions and citations; fully covered changed inventories should report a changed comparison rather than become equivalent. Preserve the identical ZIP control and preserve
truncatedfor authenticated partial inventories andunknownfor genuine coverage gaps. These checks restore the same inventory contract without requiring any specific representation or implementation.Additional context
Public reach was verified for the plist fixture only. An ordinary short text file was rejected by production target admission, so module-level acceptance of arbitrary files does not establish their public reachability. No claim is made that every raw-binary, native-executable, archive, or other root format follows the same producer and admission path.
Root-digest comparison is not a full workaround. The real executable-bit control preserves
manifest.root_sha256while changing required metadata.manifest.manifest_iddoes distinguish that control because it commits to the graph, but checking equality manually does not provide the tool's per-path change results or remove its false downstream finding and residual unknown. A full-result workaround was not established. Open and closed issue/PR records and live searches were checked; no matching report was found. Related ZIP coverage and partial-inventory summary reports concern different failing contracts.Triage assessment