mirror of
https://github.com/morluto/rea.git
synced 2026-11-05 06:45:22 +00:00
[PR #2684] [CLOSED] perf(artifacts): add opt-in Interface Builder summary delivery and pages #5310
Closed
opened 2026-10-31 01:05:37 +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#5310
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/2684
Author: @kaoru0822-kitauji
Created: 10/13/2026
Status: ❌ Closed
Base:
main← Head:perf/interface-builder-summary📝 Commits (7)
f993d33perf(artifacts): add opt-in Interface Builder summary delivery and pagesda49ea2fix(artifacts): describe incomplete Interface Builder graphs accuratelya92b960fix(mcp): validate delivery detail before removing it7b9ab77fix(mcp): reject invalid delivery selections through typed preflight94e360ctest(artifacts): assert SDK argument rejection at its boundaryf3cd103Merge remote-tracking branch 'origin/main' into HEAD95bcaa0Merge remote-tracking branch 'origin/main' into HEAD📊 Changes
3 files changed (+21 additions, -15 deletions)
View changed files
📝
.agents/skills/reverse-engineer-anything/references/native-and-artifacts.md(+5 -0)📝
src/domain/analysisView/webNetworkCaptureView.ts(+4 -15)📝
tests/boundary/mcp/interfaceBuilderSummaryMcp.test.ts(+12 -0)📄 Description
Summary
Over MCP,
decode_interface_buildercurrently fails on ordinary apps. The complete graph for XLD.app is 6.7 MB (1,980,857 o200k tokens) and for Transmission.app 6.3 MB. The text andstructuredContentcopies together exceed the default 10 MiB response budget, so the caller getsresource_constraint("its complete MCP response exceeds the stdio response budget") instead of an answer. A caller who only wants the windows, outlets or actions of one nib had no way to ask for less.This PR adds the same opt-in delivery #2634 added for
inspect_macho, which WASM, EVM, managed, Android, Dart AOT and pcap already have. Refs #2016, #1065.Problem and expected behavior
Smallest trigger:
open_binary /Applications/Transmission.app, thendecode_interface_builder {}returnsresource_constraint. Expected: a first call can return a bounded answer while the complete Evidence stays retained for exact pages.Change and scope
src/domain/analysisView/interfaceBuilderView.ts(new) owns Interface Builder views.available_counts, tallies by node kind, edge relation and coverage status, and decoder truncation.kind: "interface-builder"pages: coverdocuments,nodes,edgesorcoveragein original order. For nodes and edges, an optionaldocumentkeeps rows whose recordedevidence[].artifact_pathequals that exactdocuments[].relative_path. That's the producer's own attribution; nothing is reparsed from IDs. An undecoded path is refused instead of returning an empty page. Every page carriessource_truncated.graph.target_sha256must both equaltarget_sha256.decode_interface_buildergets an optionaldetailand a complete-or-summary output schema. Delivery detail is stripped before execution and from Evidence parameters, so the summary'sparent_evidence_idequals a complete call's Evidence ID. The preflight refusessummarybefore decoding when the server keeps no Evidence (the fix from #2634).Related cleanup: the new view would have been the ninth copy of three patterns, pushing jscpd to 3.02% (threshold 3.0%). Each now has one owner:
parseAnalysisViewResult(analysisViewParent.ts) parses a parent's normalized result and maps issues intosource.normalized_result. It replaces the identical blocks in the WASM, EVM, managed, Android, Dart AOT, web capture, Mach-O and IB views.retainedSummaryDelivery/withoutDeliveryDetail(retainedSummaryDelivery.ts) own the preflight and summary hooks and the shared registration options type used by the artifact, native and managed registrations.openProductionTarget(tests/support/mcp/productionSession.ts) owns the "production session plusopen_binary" setup in five MCP tests.Duplication is now 2.98%. Behavior of the existing views and registrations is unchanged; their suites pass.
Docs:
docs/mcp-contracts.md,docs/native-investigation.md, the skill reference, and theinspect_analysis_viewdescription.Not included: changing the producer's representation. Nodes repeat the document path in
id,nameand evidence, and limitations list eachmax_documentsomission; that's a contract question. The default stays complete, and the CLI is unchanged (inspect-analysis-viewwith inline Evidence already supports the new kind).Contribution scope: not applicable. This is the established opt-in delivery pattern with no new execution, mutation or authority.
Contract and boundary impact
Semantic owner and earliest changed stage: projection of retained
decode_interface_builderEvidence; MCP delivery selection inregisterArtifactTools.Contribution scope fit and linked maintainer decision: not applicable.
CLI and MCP/tool-catalog contract: additive. The new optional
detailand summary output variant, and a newinterface-builderview request/result. Omitted detail keeps the old result and Evidence identity.Provider, bridge, target-format, or platform compatibility: none. The decoder receives the same parameters.
Evidence, artifact, provenance, or reconstruction contract: the complete Evidence and its ID are unchanged. Views are derived Evidence linked to the retained parent.
Generated metadata, package, or installation impact: catalog regenerated at build;
docs:checkpasses.Read existing files or captured data.
Evidence and regression coverage
src/domain/analysisView/interfaceBuilderView.test.ts(any platform) covers:tests/boundary/mcp/interfaceBuilderSummaryMcp.test.ts(any platform; production session, realUIKitOutlet.xmlnib archives in a two-document.app) checks:detail.parent_evidence_idequals the complete Evidence ID.document-filtered node read equals the complete nodes attributed to that nib (and is a strict subset).Real applications (macOS, real MCP stdio, this branch)
resource_constraint; CLI JSON 6,734,711 B / 1,980,857 tokresource_constraint; CLI JSON 6,313,752 B / 1,948,182 tokFor both apps, the summary's parent equals the CLI complete Evidence ID, and paging every node 500 at a time reproduces all nodes exactly. Decoding takes 0.5–1.5 s for complete and summary alike (same analysis); each page takes about 30–40 ms. Tokens are o200k_base via tiktoken. CPU and peak memory weren't measured separately, because only delivery differs.
About 7 KB of each XLD response is the producer's 69 limitations, and they appear twice (normalized result and Evidence envelope), as in every view. I left that envelope repetition alone.
Catalog cost:
tools/listgrows from 687,395 to 690,367 o200k tokens (+2,972, +0.43%).decode_interface_builderadds 862 andinspect_analysis_viewadds 2,110. Each page's rows use the existing strict graph schemas, so the union can't strip fields (the #2634 Greptile finding).Validation performed
npx vitest run src— 5,127 passed. One failure,src/ida/IdaWorkspaceThinning.test.ts"copies exactly the selected slice when later slices follow it across read boundaries", fails identically on unmodified main on this host.npm run test:focused --with these files passes:interfaceBuilderSummaryMcp,nativeMachoSummaryMcp,nativeDemangleMcp,keyedArchivePrototypeKeyMcp,keyedArchiveNumberMetadataMcp,artifactMcp.inlineInventory,analysisSummaryDetailMcp,toolSchemaValidity,serverIdentity,managedArtifactSummaryMcp,wasmArtifactMcp,evmInterfaceMcp,androidPackageSummaryMcp,dartAotSummaryMcp,pcapRetainedView,analysisViewCli,analysisViewMcp,sazWebCapture,qlogCapture,retainedApplicationEvidenceMcp,binaryDiagnosticsMcp,interfaceBuilderUIKitKeyedArchive,dylibResolutionMcp,enhancedTools.01,keyedArchiveSelection,targetContentProvenance.npm run check:fast,npm run typecheck,npm run format:check,npm run docs:check,npm run knip,npm run jscpd(2.98%),npm run verify:architecture-guards— pass.Compatibility, safety, and release
Before merge
type(scope): outcome.🤖 Generated with Claude Code
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.