[PR #1460] [MERGED] perf(apple): stop repeating the archive path in Interface Builder evidence #2901

Closed
opened 2026-10-17 21:11:36 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/1460
Author: @kaoru0822-kitauji
Created: 10/10/2026
Status: ✅ Merged
Merged: 10/10/2026
Merged by: @kaoru0822-kitauji

Base: main ← Head: perf/apple-ib-evidence-descriptions


📝 Commits (1)

  • a2c4554 perf(apple): stop repeating the archive path in Interface Builder evidence

📊 Changes

2 files changed (+46 additions, -1 deletions)

View changed files

📝 src/domain/apple/interfaceBuilderGraph.test.ts (+43 -0)
📝 src/domain/apple/interfaceBuilderGraph.ts (+3 -1)

📄 Description

Summary

Every Interface Builder node and edge evidence record in decode_interface_builder prefixed its description with the archive's relative path, for example Contents/PlugIns/XLDAacOutput.bundle/Contents/Resources/German.lproj/XLDAacOutput.nib: object 81. The same record already states that path in artifact_path (and its digest in artifact_sha256). Real bundles carry thousands of objects across many localized nibs, so this one prefix was a large share of the output.

Descriptions now name only the decoded item: compiled document, object 81, outlet o_quality, segue showBuild, and so on. No field changes. artifact_path, artifact_sha256, node IDs and coverage facets are unchanged. Other producers of nativeMetadataEvidenceSchema already use descriptions without the path (for example Provider symbol …), and nothing in REA parses this text.

Measurements

rea decode-interface-builder <app> --format json on installed macOS apps, compact bytes:

App main this branch Saved
XLD 7,384,003 6,615,851 10.4%
KeepingYouAwake 1,917,492 1,744,905 9.0%
Transmission 6,893,875 6,445,757 6.5%

MCP results carry the Evidence in both text and structured content, so a call saves twice these bytes.

Verification

  • New src/domain/apple/interfaceBuilderGraph.test.ts case: every evidence record names the archive once in artifact_path, and no description repeats the path. It fails on main and passes here.
  • npm run check:changed (39 files, 393 tests) and npm run typecheck pass.
  • Locally, the ibtool-compiled cases in tests/boundary/filesystem/interfaceBuilderBundle.test.ts and nibNativeHierarchy.test.ts cannot run, because this Mac has Command Line Tools only (ibtool requires Xcode). They fail the same way on main. The other 123 Interface Builder tests pass. The macOS "Real Apple artifact CLI/MCP E2E" CI job runs the compiled cases. Neither file asserts description text.

Refs #723, #1065.

🤖 Generated with Claude Code


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/morluto/rea/pull/1460 **Author:** [@kaoru0822-kitauji](https://github.com/kaoru0822-kitauji) **Created:** 10/10/2026 **Status:** ✅ Merged **Merged:** 10/10/2026 **Merged by:** [@kaoru0822-kitauji](https://github.com/kaoru0822-kitauji) **Base:** `main` ← **Head:** `perf/apple-ib-evidence-descriptions` --- ### 📝 Commits (1) - [`a2c4554`](https://github.com/morluto/rea/commit/a2c45540c0f9420f447e66842ef5ae1001f1c746) perf(apple): stop repeating the archive path in Interface Builder evidence ### 📊 Changes **2 files changed** (+46 additions, -1 deletions) <details> <summary>View changed files</summary> 📝 `src/domain/apple/interfaceBuilderGraph.test.ts` (+43 -0) 📝 `src/domain/apple/interfaceBuilderGraph.ts` (+3 -1) </details> ### 📄 Description ## Summary Every Interface Builder node and edge evidence record in `decode_interface_builder` prefixed its `description` with the archive's relative path, for example `Contents/PlugIns/XLDAacOutput.bundle/Contents/Resources/German.lproj/XLDAacOutput.nib: object 81`. The same record already states that path in `artifact_path` (and its digest in `artifact_sha256`). Real bundles carry thousands of objects across many localized nibs, so this one prefix was a large share of the output. Descriptions now name only the decoded item: `compiled document`, `object 81`, `outlet o_quality`, `segue showBuild`, and so on. No field changes. `artifact_path`, `artifact_sha256`, node IDs and coverage facets are unchanged. Other producers of `nativeMetadataEvidenceSchema` already use descriptions without the path (for example `Provider symbol …`), and nothing in REA parses this text. ## Measurements `rea decode-interface-builder <app> --format json` on installed macOS apps, compact bytes: | App | main | this branch | Saved | |---|---|---|---| | XLD | 7,384,003 | 6,615,851 | 10.4% | | KeepingYouAwake | 1,917,492 | 1,744,905 | 9.0% | | Transmission | 6,893,875 | 6,445,757 | 6.5% | MCP results carry the Evidence in both text and structured content, so a call saves twice these bytes. ## Verification - New `src/domain/apple/interfaceBuilderGraph.test.ts` case: every evidence record names the archive once in `artifact_path`, and no description repeats the path. It fails on main and passes here. - `npm run check:changed` (39 files, 393 tests) and `npm run typecheck` pass. - Locally, the ibtool-compiled cases in `tests/boundary/filesystem/interfaceBuilderBundle.test.ts` and `nibNativeHierarchy.test.ts` cannot run, because this Mac has Command Line Tools only (`ibtool requires Xcode`). They fail the same way on main. The other 123 Interface Builder tests pass. The macOS "Real Apple artifact CLI/MCP E2E" CI job runs the compiled cases. Neither file asserts description text. Refs #723, #1065. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-17 21:11:36 +00:00
Sign in to join this conversation.
No milestone
No project
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#2901
No description provided.