mirror of
https://github.com/morluto/rea.git
synced 2026-11-05 06:45:22 +00:00
[GH-ISSUE #723] [Design] Reduce MCP discovery and result repetition while preserving complete contracts #324
Open
opened 2026-10-15 18:23:52 +00:00 by bsakaguchi
·
12 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#324
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 @N0zoM1z0 on GitHub (Oct 6, 2026).
Original GitHub issue: https://github.com/morluto/rea/issues/723
Before submitting
Decision needed
What compatible result/schema representation makes complete REA discovery and tiny-target findings easier for agents to consume without dropping Evidence, weakening validation, or hiding tools?
Context and evidence
Real SDK discovery returned all 117 tools. Compact UTF-8 measurements:
The JS fixture contained 422 text bytes and 65 visited AST nodes. The MCP
resultexactly repeatedevidence.normalized_result, and text repeated the structured envelope. Initial binary_session took 7.90 s and returned approximately 305 KB.The input-facing projection measured 167,799 cl100k_base proxy tokens. This is not the actual tokenizer, tool filtering, or context cost of every model host. Essential parameters in expanded Evidence-heavy schemas required manual projection to locate. No automatic model-host selection benchmark was performed.
Boundary and invariants
Preserve the complete stable canonical catalog, exact input/output types, Evidence normalized_result, useful inline findings, source identity, confidence, limitations, and unknowns. Retain text/structured semantic equivalence and validate schemas after SDK conversion.
Do not revive removed filtering APIs, assume cross-tool JSON references work in every client, remove output schemas, introduce arbitrary caps, or force resource reads for the next useful result. Separately validate CLI/MCP semantics and host compatibility.
Options and tradeoffs
Retained-reference inputs are a separate contract decision. They may reduce repeated schema/input material, but do not by themselves address result readability.
Success criteria and open questions
Open question: which repeated forms are required for current client compatibility, and which can be removed or represented more efficiently without losing information?
References
Hands-on public CLI/MCP evaluation, findings F02. Baseline: REA 4.0.1, source revision c3bc38bf6c74d2175a4680530dcadd6cab0e7791; evaluation date 2026-10-06.
Follow-up measurements to #264. Its historical text/structured mismatch is fixed in this baseline; the new concern is consumption/repetition under current complete contracts. #551 requires complete inline Evidence. #654 and #664 establish current stable-catalog guidance; do not reintroduce obsolete filtering claims. docs/mcp-contracts.md
Related evaluation issues: #722.
@hippoley commented on GitHub (Oct 8, 2026):
I’m testing #723 from the downstream-consumer side rather than from another MCP host.
One thing that seems worth preserving even if the result envelope becomes more compact is a small stable evidence projection that an external verifier can consume without depending on REA internals:
The reason is that a downstream compatibility/proof tool should be able to say “this claim is supported by these exact REA observations” without copying the full envelope or silently upgrading an inferred/truncated observation into a positive verdict.
I wrote the smallest consumer-profile experiment here:
https://github.com/hippoley/CounterProof/pull/172
(specifically
experiments/behavior_witness/interop/REA_EVIDENCE_V2.md)The fail-closed rule I’m testing is: if the comparison depends on an unknown/truncated/redacted dimension, incompatible comparison contract, missing provenance, or an inferred observation phrased as direct observation, the downstream result stays
UNKNOWNrather thanPASS.This is not a proposal to change REA’s Evidence v2 schema. I’m trying to answer one narrower question relevant to #723: is there a compact, explicitly supported consumer projection that can remain stable even if REA changes how much of the full Evidence envelope it renders inline for MCP clients?
If you already consider a subset of Evidence v2 to be the intended external-consumer boundary, pointing me at that contract would let me delete assumptions rather than grow another adapter.
@N0zoM1z0 commented on GitHub (Oct 9, 2026):
The latest DX-Ball audit adds a concrete native follow-up in #1247. Npm latest 6.1.0 and main
f4c99ab8now reject an oversized complete native dossier with a typed transport resource constraint, retained Evidence reference and export recovery; the default SDK connection remains usable. Native selected-facet inspection is still missing because the current shared view workflow covers JavaScript applications and ELF layouts.#1247 focuses on useful native views and finding eligible retained dossiers, preserving complete Evidence rather than silently trimming it. #1249 separately investigates snapshot materialization/storage cost. Historical repeated catalog archives were the project's helper copies, so they were not filed as REA automatically duplicating session catalogs. This complements #1065 without treating serialized bytes alone as agent context cost.
@N0zoM1z0 commented on GitHub (Oct 10, 2026):
#1433 is merged after 19/19 final-head checks. Stable content/dialect-bound output-schema IDs let the actual default SDK 2.3.1 Ajv provider reuse validators across unchanged list refreshes and reconnects; real stdio measurements show zero new compilations afterward. Changed schemas, availability and reconnect validation are covered. Complete discovery and default text/structured results remain intact.
This addresses repeated validator compilation, not catalog size or actual model context: the full 139-tool catalog is 1,884,470 compact bytes, and the first ordinary call still compiles 118 distinct outputs in about 2.43 seconds on two CPUs. That distinct eager cold cost is tracked at https://github.com/modelcontextprotocol/typescript-sdk/issues/2997. This broader design issue remains open.
@N0zoM1z0 commented on GitHub (Oct 10, 2026):
A fresh actual small-target CLI/SDK stdio MCP measurement from #1537 supplies another result-size baseline: a 2,421-byte JavaScript fixture with nine exports returns 785,206 CLI bytes and 1,644,176 bytes for the MCP reply. Full normalized results, Evidence IDs, text/structured parity, complete return-shape coverage, unchanged input and a subsequent ping all pass. Main and the indexed returned-reference implementation produce the same results.
Within the compact normalized result, the application graph occupies 64,768 bytes and the semantic graph 717,325 bytes (444 nodes, 359 relations, 88 fingerprints and 82 explicit unknowns). This fixture intentionally includes a 64-method receiver as well as duplicate/computed/spread/capture cases; these measurements are not a minimal single-export baseline or model billing tokens. The shared Evidence context table is already present (seven contexts), so it would be inaccurate to describe all repeated provenance as still unnormalized.
#1537 addresses redundant property scans and removes an exactly duplicated test group; it does not reduce these result bytes. I am keeping this compatible result/readability concern associated with #723 rather than treating a CPU optimization as a token fix.
@N0zoM1z0 commented on GitHub (Oct 11, 2026):
Current measurement on
morluto/rea@21650455a9c90a26e725c3505a3c17054cc4516c: complete discovery is 170 tools / 1,954,693 JSON bytes. That payload is unchanged by the SDK cache fix.The related cold-call cost is now verified against the real catalog: the existing upstream change reduces validator preparation from 170 to 1 and actual first-call compilation from 148 to 1, while full discovery and output validation stay intact. Five ordered experimental pairs measured first-call medians 6.286 s → 0.724 s. Flameox evidence, exact source revisions and verification scope.
This is an isolated test of the exact upstream owning module, not a deployed dependency change. Upstream issue #2997 being closed does not mean this has shipped: PR #2998 remains unmerged and the official client release remains 2.3.1. Keep catalog/result representation work in this issue separate from that pending client fix; no tool omission, schema bypass or payload reduction was used in the measurement.
@wu546526 commented on GitHub (Oct 13, 2026):
Adding a fresh data point to this design discussion from a real compatibility failure — full write-up in #2512.
rea-agents@6.4.0
tools/listarrives as a single JSON-RPC line of 1,954,727 bytes (170 tools):outputSchema1,493,900 (76%),inputSchema365,646,description58,941,annotations15,243, names+titles 7,352.A real host that caps one stdio line at 1 MB (pi-web-ui 0.104.4's built-in MCP bridge) kills the server at every handshake and loads 0 tools, while the pi CLI on the same machine (SDK 10 MB receive buffer) loads all 170 in 2.96 s. Two existing levers don't get under the cap:
REA_MCP_INPUT_SCHEMA_PROFILE=compact→ 1,772,799 bytes (trims inputSchema only), and #1143's shipped$refsharing (~1.9 MB — per-tool output contracts are largely distinct).So today there is a hard compatibility floor: ≤1 MB-frame clients cannot load REA at all. Proposal and success criteria in #2512 (opt-in output-schema-light advertisement, or
tools/listpagination).@pablodiazjorge commented on GitHub (Oct 15, 2026):
A real-host data point on context cost, from three preregistered Claude Code studies run on Windows with rea 6.4.0 and Ghidra 12.1.4 (rea-lab). In the latest one (study 3), 72 runs located functions in four stripped C programs with rea and 72 without it. Runs with rea used a median of 300,695 input tokens against 112,967 without it, and 2.3 times the median equivalent cost, for similar accuracy (68 and 71 of 72). In 32 of the 72 runs with rea, at least one result was too large for Claude Code to return inline and was saved to a file instead: 43 results, from
list_procedures,procedure_pseudo_code,search_procedures,list_stringsandprocedure_references. The agent read a saved result back in 18 of those runs. The study's addendum has the breakdown by tool. Per-run token usage and tool calls are in bench/results/study-3.Edit (16 October 2026): the first version said results were saved to a file in 18 runs. That is the number of runs that read one back; results were saved in 32.
@CassieFox23 commented on GitHub (Oct 18, 2026):
Checked on Linux: part of this is fixed on main by
6395e8d30(#1988). The commit's message says "Refs #723", which is why GitHub left this issue open.36d156ff0on Node 22.23.1, 24.18.0 and 26.11.1 (117 tests, 2 skipped).ZodErrorand wrongcapabilities. Some fail only for missing helpers.The tests cover grouped session and discovery facts, not repeated results or size. So part of this may still be open.
Thanks, N0zoM1z0, for the clear report.
🤖 Generated with Claude Code (Sonnet 5.5, verified by Opus 5.5) 🦊
@cathrynlavery commented on GitHub (Oct 19, 2026):
Size measurements for
binary_session, since the existing tests for #1988 cover grouping but not size.Setup: macOS 27.0 arm64, Node 24.18.0, stdio MCP via
@modelcontextprotocol/client, no Ghidra/Hopper/IDA installed. Sequence:open_binary {"path": "/System/Applications/Calculator.app"}, thenbinary_session {}. Sizes are characters of the result's text content;structuredContentserializes to the same length.b4938aed5tool_availabilityanalysis_provider_candidatesserver_identitycapabilitiesWith no target open, main returns 54,278 characters.
In a Claude Code session on 6.4.0, the result was too large to return inline and Claude Code saved it to a file instead. I have not checked whether Claude Code accepts the 56,752-character result from main inline. On main,
tool_availabilityandanalysis_provider_candidatestogether are 96% of the result, so those two are where any further reduction would come from.@shockstricken commented on GitHub (Oct 28, 2026):
Another data point for result repetition, on rea-agents 6.8.0 (Ghidra provider, Linux x86_64, MCP over HTTP).
analyze_functionreturns the samelimitationslist twice: once at the Evidence top level and again insidenormalized_result(the function dossier). The list is about 25 entries of fixed provider text, so it is most of the reply for a small function. Projecting tofields: ["evidence_id"]returns only the ID, so projection is a working workaround.Observed on a raw-binary target; the steps below are the minimal equivalent and were not run verbatim.
Reproduction:
printf 'int main(void){return 0;}\n' > t.c && cc -O0 -o t t.copen_binary{"path": "<abs path>/t"}analyze_functiononmainwith nofields.limitationswithnormalized_result.limitations. Both hold the same entries.Source reading on
main:src/domain/functionDossierEvidence.tsbuilds the top-level list asnew Set([...evidence.limitations, ...dossier.value.limitations]), while the dossier innormalized_resultkeeps its own copy. #6426's fix deduplicated graph limitation text per page. Function dossiers appear to still carry both copies.@jgt87 commented on GitHub (Oct 28, 2026):
Confirmed on rea-agents 6.8.0 (released) and on main
6a226bd09.6a226bd09(source, Node 24.22.1)limitationsandnormalized_result.limitations(identical lists)Measurement
rea-agents 6.8.0 (npm, Node 26.12.1) and upstream
mainat6a226bd09(source, Node 24.22.1), Windows 11 Pro(10.0.26300). Synthetic Vite-style
build (generator
gen-vite-like.mjs, attached to #7735, 88 files):One module item view (a file whose application projection was refused):
normalized_result.item(mostlystatic_analysis.storage, 272 entries)limitations(28 strings)normalized_result.limitations(the same 28 strings)normalized_result.unknowns(31 entries)Five
limitationsarrays in the result hold 58 strings, 30 of them distinct.The 28 parent limitations appear twice in every item view, and again in each
further item the caller requests. For a fully projected module the view is
12,286 bytes, of which 4,975 bytes (40 %) are limitations.
On 6.4.0 through MCP, the same kind of view was about 110 KB per item, mostly
146 repeated limitation strings. Main is smaller, so the 6.4.0 numbers are
history, not a current reproduction.
Possible direction
Return the parent's limitations once per parent (by digest or reference) and
only item-specific limitations in each item view, as #723 proposes for other
results.
@morluto commented on GitHub (Nov 1, 2026):
A related real-provider workflow exposes repetition inside a single reconstruction claim, beyond the transport duplication described above. @gensokyo-dev @kaoru0822-kitauji @N0zoM1z0
Observed: On REA PR #8443 at
8dd4cf4a9, I analyzed_mainin two controlled, unexecuted Mach-O fixtures with Ghidra 12.1.4, retained/exported the dossiers, then used the compact-profile public stdio MCPcompare_functions→verify_reconstructionworkflow. The call comparison wasunchangedfor the observed sets; the verification correctly returnedunknownbecause static discovery was unreported. The single normalized claim serialized to 6,514 UTF-8 bytes, of which its 35-elementlimitationsarray occupied 5,855 bytes. All 15Left:provider limitations were repeated verbatim underRight:; further source-specific discovery limitations were also present. These are JSON byte measurements, not token counts or an end-to-end agent benchmark. The fixture hashes were unchanged. Replaying the same real dossiers in a target-free server at the parent commit produced a 6,046-byte Ghidra claim with 31 limitations; the new discovery qualifications account for four additional entries. Both full and compact profiles produced the same claim sizes. The analogous Kuna 1.986 run produced an unknown observed call comparison and an unknown verification; its claim was 2,781 bytes with 15 limitations.Source-derived explanation: Function comparison prefixes every source limitation with its side, and verification includes the whole comparison limitation list alongside dimension and source-specific limitations. This propagation already exists in the parent of #8443; the new discovery facts add useful qualifications, so removing them would be incorrect.
Design question: Can the result group identical side limitations and surface the limitations relevant to the selected claim while preserving side/source attribution, independently readable Evidence, complete access to the original caveats, and honest unknowns? Measure a complete representative task and validate full/compact schemas and client rendering before changing the contract. Whether the extra information changes agent decisions has not been measured.