[PR #2838] [MERGED] fix(apple): exclude AppleDouble sidecars from IPA components #5427

Closed
opened 2026-10-31 01:06:33 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/2838
Author: @yasshmittal
Created: 10/13/2026
Status: ✅ Merged
Merged: 10/13/2026
Merged by: @morluto

Base: main ← Head: fix/apple-ipa-appledouble


📝 Commits (2)

  • f0cef19 fix(apple): exclude AppleDouble sidecars from IPA components
  • a3decb6 test(apple): exercise the __MACOSX exclusion with a non-dotfile name

📊 Changes

2 files changed (+32 additions, -3 deletions)

View changed files

📝 src/domain/apple/appleApplication.test.ts (+28 -0)
📝 src/domain/apple/appleApplication.ts (+4 -3)

📄 Description

Summary

Fixes #2546.

Projecting an IPA inventory that contained AppleDouble metadata (._* files and __MACOSX/) reported those files as native-library and framework components. The same result reported complete-within-inventory coverage and stated that AppleDouble entries are excluded from bundle roles. ZIP, directory and DMG roots already excluded them.

Problem and expected behavior

attributeComponents in src/domain/apple/appleApplication.ts returned every IPA component before applying the sidecar filter used for the other root formats. The framework and library selectors then accepted the metadata paths. AppleDouble metadata remains an inventory fact, but it should not appear in roots, bundle roles, or anatomy components for any root format.

Change and scope

The sidecar exclusion is applied first, for every root format. IPA keeps its separate, documented rule of retaining non-sidecar components outside Payload/ (for example SwiftSupport/).

Contribution scope: an ordinary fix within existing boundaries; no maintainer scope decision applies.

Contract and boundary impact

  • Semantic owner and earliest changed stage: component attribution in src/domain/apple/appleApplication.ts.

  • Contribution scope fit and linked maintainer decision: not applicable (bug fix).

  • CLI and MCP/tool-catalog contract: schema unchanged; IPA component lists no longer contain AppleDouble paths.

  • Provider, bridge, target-format, or platform compatibility: none.

  • Evidence, artifact, provenance, or reconstruction contract: inventory Evidence is unchanged; only the projection's component lists change.

  • Target selection, authority, upstream behavior, and cleanup details: not applicable (pure projection).

  • Generated metadata, package, or installation impact: none.

  • Read existing files or captured data.

Evidence and regression coverage

  • Tests added or updated: src/domain/apple/appleApplication.test.ts. The issue's IPA fixture plus a __MACOSX/ entry gives these results:

    • native_libraries contains only the real libreal.dylib and the out-of-payload SwiftSupport library.
    • frameworks is empty.
    • executables keeps the real executable and library.
    • The AppleDouble limitation is still reported.
  • Base reproduction or other evidence: on the base revision the test fails, listing Payload/Fixture.app/Contents/Resources/._libfoo.dylib as a native library.

  • User-visible CLI/MCP output: IPA component lists without ._*/__MACOSX/ entries.

  • Remaining proof gaps: a real IPA archive was not inventoried; the test uses authored inventory Evidence at the projection boundary, as the issue did.

  • Observed, derived, and inferred claims remain distinguishable.

  • Artifact identity, source provenance, and failed attempts remain preserved.

  • Unsupported, incomplete, unavailable, or uncertain outcomes remain visible.

Validation performed

Host: Windows 11, Node.js 24.21.0.

  • npx vitest run src/domain/apple/ src/application/apple: 120 passed (the new test fails on the base revision).
  • tests/boundary/filesystem/appleApplication.test.ts: 6 passed. The one failure (EPERM creating a symlink) occurs identically on the unmodified base revision because Windows restricts symlink creation.
  • npm run check: passed.

Compatibility, safety, and release

  • Breaking changes or migration steps: none.
  • Real Hopper/Ghidra, browser, or OS coverage: Windows only.
  • Package or release metadata impact: none.
  • Security, privacy, process, or containment review: pure projection change.

Before merge

  • This PR addresses a concrete problem or an agreed enhancement.
  • Material scope and authority questions are resolved, and any required maintainer scope decision covers the final diff.
  • The PR has one focused outcome and the title follows type(scope): outcome.
  • Related issue is linked, or the reason for not linking one is stated above.
  • Tests cover changed observable behavior and meaningful failure paths.
  • Owning docs, contracts, and generated metadata are updated where needed.
  • User-visible CLI/MCP changes include representative output.
  • I checked the final diff for secrets, unrelated cleanup, and unsupported claims.

🤖 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/2838 **Author:** [@yasshmittal](https://github.com/yasshmittal) **Created:** 10/13/2026 **Status:** ✅ Merged **Merged:** 10/13/2026 **Merged by:** [@morluto](https://github.com/morluto) **Base:** `main` ← **Head:** `fix/apple-ipa-appledouble` --- ### 📝 Commits (2) - [`f0cef19`](https://github.com/morluto/rea/commit/f0cef19a51002414e9cca58362fee6fb723f6538) fix(apple): exclude AppleDouble sidecars from IPA components - [`a3decb6`](https://github.com/morluto/rea/commit/a3decb6bd0a9c9d000f539ec233a5026f92577b1) test(apple): exercise the __MACOSX exclusion with a non-dotfile name ### 📊 Changes **2 files changed** (+32 additions, -3 deletions) <details> <summary>View changed files</summary> 📝 `src/domain/apple/appleApplication.test.ts` (+28 -0) 📝 `src/domain/apple/appleApplication.ts` (+4 -3) </details> ### 📄 Description ## Summary Fixes #2546. Projecting an IPA inventory that contained AppleDouble metadata (`._*` files and `__MACOSX/`) reported those files as native-library and framework components. The same result reported complete-within-inventory coverage and stated that AppleDouble entries are excluded from bundle roles. ZIP, directory and DMG roots already excluded them. ## Problem and expected behavior `attributeComponents` in `src/domain/apple/appleApplication.ts` returned every IPA component before applying the sidecar filter used for the other root formats. The framework and library selectors then accepted the metadata paths. AppleDouble metadata remains an inventory fact, but it should not appear in roots, bundle roles, or anatomy components for any root format. ## Change and scope The sidecar exclusion is applied first, for every root format. IPA keeps its separate, documented rule of retaining non-sidecar components outside `Payload/` (for example `SwiftSupport/`). Contribution scope: an ordinary fix within existing boundaries; no maintainer scope decision applies. ## Contract and boundary impact - Semantic owner and earliest changed stage: component attribution in `src/domain/apple/appleApplication.ts`. - Contribution scope fit and linked maintainer decision: not applicable (bug fix). - CLI and MCP/tool-catalog contract: schema unchanged; IPA component lists no longer contain AppleDouble paths. - Provider, bridge, target-format, or platform compatibility: none. - Evidence, artifact, provenance, or reconstruction contract: inventory Evidence is unchanged; only the projection's component lists change. - Target selection, authority, upstream behavior, and cleanup details: not applicable (pure projection). - Generated metadata, package, or installation impact: none. - [x] Read existing files or captured data. ## Evidence and regression coverage - Tests added or updated: `src/domain/apple/appleApplication.test.ts`. The issue's IPA fixture plus a `__MACOSX/` entry gives these results: - `native_libraries` contains only the real `libreal.dylib` and the out-of-payload `SwiftSupport` library. - `frameworks` is empty. - `executables` keeps the real executable and library. - The AppleDouble limitation is still reported. - Base reproduction or other evidence: on the base revision the test fails, listing `Payload/Fixture.app/Contents/Resources/._libfoo.dylib` as a native library. - User-visible CLI/MCP output: IPA component lists without `._*`/`__MACOSX/` entries. - Remaining proof gaps: a real IPA archive was not inventoried; the test uses authored inventory Evidence at the projection boundary, as the issue did. - [x] Observed, derived, and inferred claims remain distinguishable. - [x] Artifact identity, source provenance, and failed attempts remain preserved. - [x] Unsupported, incomplete, unavailable, or uncertain outcomes remain visible. ## Validation performed Host: Windows 11, Node.js 24.21.0. - `npx vitest run src/domain/apple/ src/application/apple`: 120 passed (the new test fails on the base revision). - `tests/boundary/filesystem/appleApplication.test.ts`: 6 passed. The one failure (`EPERM` creating a symlink) occurs identically on the unmodified base revision because Windows restricts symlink creation. - `npm run check`: passed. ## Compatibility, safety, and release - Breaking changes or migration steps: none. - Real Hopper/Ghidra, browser, or OS coverage: Windows only. - Package or release metadata impact: none. - Security, privacy, process, or containment review: pure projection change. ## Before merge - [x] This PR addresses a concrete problem or an agreed enhancement. - [x] Material scope and authority questions are resolved, and any required maintainer scope decision covers the final diff. - [x] The PR has one focused outcome and the title follows `type(scope): outcome`. - [x] Related issue is linked, or the reason for not linking one is stated above. - [x] Tests cover changed observable behavior and meaningful failure paths. - [x] Owning docs, contracts, and generated metadata are updated where needed. - [x] User-visible CLI/MCP changes include representative output. - [x] I checked the final diff for secrets, unrelated cleanup, and unsupported claims. 🤖 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-31 01:06:33 +00:00
bsakaguchi changed title from [PR #2838] [MERGED] fix(apple): exclude AppleDouble sidecars from IPA components to [PR #2838] fix(apple): exclude AppleDouble sidecars from IPA components 2026-11-04 18:25:04 +00:00
bsakaguchi changed title from [PR #2838] fix(apple): exclude AppleDouble sidecars from IPA components to [PR #2838] [MERGED] fix(apple): exclude AppleDouble sidecars from IPA components 2026-11-04 19:26:00 +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#5427
No description provided.