mirror of
https://github.com/morluto/rea.git
synced 2026-11-05 06:45:22 +00:00
Open
opened 2026-10-31 01:13:16 +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#6282
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?
📋 Pull Request Information
Original PR: https://github.com/morluto/rea/pull/4516
Author: @Wendy-hub
Created: 10/16/2026
Status: 🔄 Open
Base:
main← Head:claude/zen-hopper-ysqwkm📝 Commits (7)
4ec47eefix(managed): name unavailable sides in member comparisons720d00bfix(managed): compare CIL operands by nominal identity across buildse6fa9cffix(managed): decode each shared operand blob once per inspectionee13cd5fix(managed): keep known catch class changes beside unnamed classesf25cb03Merge morluto/main into claude/zen-hopper-ysqwkm7a6b565fix(managed): charge the bytes operand identities hashef1fbbeMerge morluto/main into claude/zen-hopper-ysqwkm📊 Changes
23 files changed (+1646 additions, -211 deletions)
View changed files
📝
docs/managed-code-analysis.md(+77 -11)📝
src/contracts/managed/managedWorkflowExamples.ts(+2 -0)📝
src/contracts/managed/managedWorkflowToolContracts.ts(+1 -1)📝
src/domain/analysisView/managedMemberView.ts(+9 -1)📝
src/domain/managed/managedArtifact.ts(+21 -0)📝
src/domain/managed/managedMemberComparison.ts(+5 -1)📝
src/domain/managed/managedMemberComparisonCoverage.ts(+90 -7)➕
src/domain/managed/managedMemberComparisonDimensions.ts(+186 -0)📝
src/domain/managed/managedMemberComparisonItems.ts(+36 -100)📝
src/domain/managed/managedMemberSignatureIdentity.ts(+19 -0)➕
src/dotnet/ManagedCilOperandIdentity.ts(+345 -0)📝
src/dotnet/ManagedDecodeBudget.test.ts(+24 -0)📝
src/dotnet/ManagedDecodeBudget.ts(+20 -0)📝
src/dotnet/ManagedMemberInspector.test.ts(+199 -8)📝
src/dotnet/ManagedMemberInspector.ts(+10 -0)📝
src/dotnet/ManagedMemberInspectorCore.ts(+98 -21)📝
src/dotnet/ManagedMemberInstructionDecoder.ts(+2 -0)📝
src/dotnet/ManagedMemberRows.ts(+4 -1)📝
src/dotnet/ManagedMetadataHeaps.ts(+88 -39)📝
src/dotnet/ManagedMethodBodyReader.ts(+96 -3)...and 3 more files
📄 Description
Summary
compare_managed_membersreported almost every method as changed between twobuilds of the same source. Method bodies and exception classes were compared by
build-local metadata tokens, so any shifted TypeRef, MemberRef, Field,
MethodDef or
#USrow read as a CIL change. Signatures already compare bynominal type names (#3059); bodies did not. This PR names CIL token operands at
the producer and uses those identities where the raw bytes differ.
It also fixes how a comparison reports a side whose member inspection is
unavailable(for example over the 64 MiB representation budget). That side nowappears with its reason instead of the comparison reading as an empty
difference.
No issue is linked: none was filed, and the reproduction is described below.
Problem and expected behavior
#USitem moves the rows a method body references, with the body otherwise
identical. Before:
status: "changed",dimensions: ["cil"], or["exception-shape"]when a catch class row moved. Expected:unchanged.Violated invariant: build-local tokens are only meaningful with their own
artifact and MVID ("A caller cannot carry
0x06001234into a new MVID").builds.
Terraria.IO.WorldFilereported 58 of 58 methods changed. Anindependent ECMA-335 reader that resolves every token to its namespace, name,
owner, signature or literal found all 58 bodies identical.
compare-managed-memberson those builds returned 0members with "At least one managed member observation is partial." and
"...predates ExportedType inspection...", which is false for current Evidence,
and dropped the
resource-limitreason entirely.Change and scope
Two fixes, and three follow-ups from automated review:
fix(managed): name unavailable sides in member comparisons. Eachunavailable side is named in the comparison limitations with its coverage
issues. "Partial" is reported only for partial sides, and the ExportedType
caveat only for Evidence that is not unavailable. The analysis-view paging
error no longer asks for a newer runtime for an unavailable parent.
fix(managed): compare CIL operands by nominal identity across builds.ManagedCilOperandIdentity.tsgives each token operand a framed identity.It reuses the existing owners: type-name digests, the MemberRef rows,
member ownership and resolved signatures.
nominal_il_sha256: the raw CIL with each 4-byte tokenreplaced by its identity, so switch targets and constants stay exact.
Typed exception clauses gain
class_identity_sha256. Inspections attestcil_operand_resolution: "nominal-v1".new nested scope.
in-place renames require. Where the bytes differ, the nominal digests
decide. A missing digest leaves the facet
unknownwith acil-operand-not-resolvedlimitation.limitation.
fix(managed): decode each shared operand blob once per inspection.Rows that share one blob (TypeSpecs, MethodSpec instantiations, member
and stand-alone signatures) share its decoding, cached per heap index
and form and charged to the representation budget.
fix(managed): keep known catch class changes beside unnamed classes.Catch classes compare clause by clause, so a class REA cannot name in
one clause no longer hides a known class change in another.
fix(managed): charge the bytes operand identities hash. Each identitypart (a literal, member name, or digest) and each resolved blob is
charged to the representation budget by its size before it is hashed,
so overlapping heap items and shared long names stay within the budget.
Not included, and open for maintainer input:
unchanged. This is the existing rename-tolerant design, now stated in a
limitation.
compare-managed-membershas no type selection, so whole-assemblycomparison of large assemblies stays over budget. The MCP workflow can select
types.
callistand-alone signatures with unmanaged calling conventions stayunresolved, so they show as
unknown.ldtokenlabels every MemberRef operandmethod, so a FieldDef in onebuild and a MemberRef to the same field in the other differ in
call-shapeand
field-shape. This predates the PR and still reads aschanged, as itdid before.
Contribution scope: an ordinary fix within existing static managed inspection;
a maintainer scope decision is not applicable. I am happy to split the two
commits into separate PRs if preferred.
Contract and boundary impact
src/dotnet(operand identities andthe body reader); comparison in
src/domain/managed.not applicable.
(
nominal_il_sha256,class_identity_sha256,cil_operand_resolution,including the member summary and view context). Comparison semantics change:
renumbering-only bodies become
unchanged, and unresolvable onesunknown.The comparison limitations and the
compare_managed_membersdescription areupdated.
provider only.
Evidence parses, since the new fields default to
null.il_sha256andnormalized_il_sha256are unchanged.applicable.
docs:check,evidence:checkandmcp-catalog:checkpass.Expected effects (check known effects; use documentation-only on its own).
Unchecked items do not establish absence; leave uncertainties visible.
Evidence and regression coverage
Tests added or updated:
managedMemberComparisonFromMetadata.test.ts: renumbered type, literal andcatch-class rows stay unchanged; another type, literal or class is changed;
a missing row is unknown; historical Evidence uses tokens.
ManagedMemberInspector.test.ts: TypeSpec, MethodSpec, MethodDef, Field,MemberRef and
#USidentities are row-independent; unresolvable operandshave no digest and add no coverage issue.
managedMemberComparison.test.ts(path workflow) andmanagedMemberSummaryMcp.test.ts(MCP view): an unavailable side names itsreason.
ManagedDecodeBudget.test.ts: the nested transient scope.decoded once (
ManagedMemberInspector.test.ts); a known catch classchange beside an unnamed class is
changed, and without one the methodstays
unknown(managedMemberComparisonFromMetadata.test.ts); alonger literal charges at least its extra hashed bytes
(
ManagedMemberInspector.test.ts).different existing member. This includes
main's new test "preservesoperand-free opcode order when remapping renamed methods", which loaded a
missing Field row and now loads MemberRef row 1.
Base reproduction or other evidence: with the comparison change reverted, the
three cross-build tests (renumbered body, renumbered catch class, unresolvable
operand) fail. With the limitation change reverted, the two unavailable-side
tests fail. Each review follow-up test fails with its fix reverted.
User-visible CLI/MCP output (if applicable), MCP
compare_managed_membersofTerraria.IO.WorldFile(Windows vs Linux):{"unchanged": 28, "changed": 58, "unknown": 0}, with 53ciland5
cil, exception-shape;{"unchanged": 86, "changed": 0, "unknown": 0}.Across
WorldFile,NetMessage,MessageBuffer,Netplay,Lighting,Chest,UtilsandProgram, 433 of the 436 methods reported as changedbecame unchanged. The three remaining changes are differences the independent reader
also found:
Netplay.OpenPortandNetplay.ClosePort(platform-specificcode), and
Program..cctor(a platform flag).CLI whole-assembly compare now reports, for each side: "The left managed
member observation is unavailable, so none of its members were compared:
resource-limit at metadata.representation: Managed metadata exceeds the
67108864 byte representation budget".
Remaining proof gaps: one real pair of builds plus byte-built fixtures; no
real
calliwith unmanaged conventions; not run on Windows or macOS hosts.For evidence-bearing changes:
Validation performed
On head
ef1fbbe3(this branch merged withmainat293832ba), Linux,Node 24.18.0, npm 11.16.0:
npm run check:ci(typecheck, lint, format, knip, duplicates, TODO scan,architecture guards) and
npm run verify:test-discovery— pass, exceptknip, which reports the unused exportInspectApkSignatureInputinsrc/domain/apkSignature/apkSignatureQuery.ts; that file is identical tomain, which reports it toonpm run test:local --the 47 managed, analysis-view, application,composition and evaluation source test files — 1,176 passed
npm run test:focused --the 20 managed boundary, MCP, CLI and acceptancetest files — 234 passed
npm run docs:check,npm run mcp-catalog:check,npm run evidence:check— pass
Earlier, on head
720d00b2before the review follow-ups:npm run test:local --34 source test files — 577 passed, 3 skipped;npm run test:focused --22 test files — 356 passed.
Real target (static managed provider, no target execution): the CLI and MCP
comparisons above.
Cost, warm runs on this host:
9e7e13fbto720d00b2), selectedWorldFileinspection over four runs each: 2.3–2.8 s wall, 3.4–3.9 s CPU and
454–458 MiB peak RSS, both before and after. Output grows 0.15% (904,030 to
905,342 tokens). Whole-assembly comparison peak RSS goes from about 487 to
495 MiB.
720d00b2toee13cd57): the selectedWorldFileinspection output and the whole-assembly comparison result are identical.
Selected inspection, four runs each: 2.17–2.45 s to 2.06–2.29 s wall,
3.20–3.42 s to 3.08–3.36 s CPU, peak RSS 453–484 to 452–455 MiB.
Whole-assembly comparison, five interleaved runs each: 3.08–3.54 s to
3.26–3.59 s wall and 4.54–5.02 s to 4.75–5.02 s CPU (no difference beyond
noise), peak RSS 490–494 to 498–501 MiB, from the blob cache.
f25cb03ato7a6b565f), three interleaved runseach: the selected
WorldFileinspection output is identical (2.75–4.40 sto 2.81–3.04 s wall, 3.72–3.96 s to 3.88–4.03 s CPU, 472–476 to 473–477 MiB
peak RSS). The whole-assembly comparison result is unchanged apart from
Evidence ids: both inspections stay
unavailableat the representationbudget, now reached at IL offset 842,806 rather than 849,694 (4.12–5.67 s to
4.16–4.62 s wall, 511–512 to 511–514 MiB peak RSS).
Compatibility, safety, and release
historical Evidence keeps its previous comparison rules.
provider); Linux only.
statically. Identity caches and blob decoding are charged to the existing
representation budget, which still makes an inspection
unavailablewhen itis exceeded; any other resolution failure leaves that identity
null. Ablob that several rows share is decoded once per inspection, and every byte
an identity hashes is charged to that budget.
Author readiness
Human owner: @Wendy-hub
Before merge
type(scope): outcome.🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.