[PR #1506] [MERGED] fix(mobile): bound framework conventions to path segments #2926

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

📋 Pull Request Information

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

Base: main ← Head: codex/bound-mobile-framework-conventions


📝 Commits (2)

  • 56ebb97 fix(mobile): bound framework conventions to path segments
  • 843354b fix(mobile): reconcile bounded conventions with shared runtime hints

📊 Changes

7 files changed (+163 additions, -7 deletions)

View changed files

📝 docs/android-analysis.md (+6 -1)
📝 docs/apple-application-analysis.md (+10 -0)
📝 src/domain/android/androidApplication.ts (+1 -1)
📝 src/domain/apple/appleApplication.test.ts (+1 -1)
📝 src/domain/apple/appleApplication.ts (+2 -1)
📝 src/domain/nativeConvention.ts (+6 -3)
➕ tests/acceptance/applications/mobileFrameworkConventions.test.ts (+137 -0)

📄 Description

Closes #1489.

Android and Apple inventory projections used substring matches to infer framework families and bridge bases. For example, libcommunity.so was labelled Unity and MyApp.framework was labelled Flutter. Apple also inferred Swift/Objective-C from any dylib or framework-shaped path.

Use one bounded convention matcher per platform for both runtime-family hints and bridge bases. Android matches complete known library filenames; Apple matches complete known framework segments. Generic App.framework no longer identifies Flutter by itself, and generic dylib/framework paths no longer establish Swift/Objective-C. Keep the existing result schemas and inventory/candidate coverage semantics. Apple limitations now explicitly identify runtime families as inventory-derived hints and explain that a bridge basis comes only from the native path and repeats for each paired script.

Validation:

  • The new compiled CLI/real stdio MCP regression failed on the original code, reproducing incorrect bridge bases and runtime families.
  • 26 tests passed across four files: the new acceptance journey, Android/Apple composition and coverage, and Apple domain projection.
  • Acceptance uses source-owned APK/IPA ZIP fixtures, real artifact inventories, misleading names, known positive conventions, multiple paired components, exact runtime-family expectations, and identical CLI/MCP Evidence.
  • npm run check, npm run docs:check, npm run verify:test-discovery, and git diff --check passed.

The checks establish portable inventory projection behavior. They do not execute Android/iOS apps, decode language metadata, or verify actual framework loading. Implementation was developed with AI-agent assistance and verified with the checks above.


🔄 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/1506 **Author:** [@thangldw](https://github.com/thangldw) **Created:** 10/10/2026 **Status:** ✅ Merged **Merged:** 10/10/2026 **Merged by:** [@morluto](https://github.com/morluto) **Base:** `main` ← **Head:** `codex/bound-mobile-framework-conventions` --- ### 📝 Commits (2) - [`56ebb97`](https://github.com/morluto/rea/commit/56ebb97a38fbbf71b9357db59a832f2910d02298) fix(mobile): bound framework conventions to path segments - [`843354b`](https://github.com/morluto/rea/commit/843354b12460821e63b4f6b8d6fd927cd8ee77d1) fix(mobile): reconcile bounded conventions with shared runtime hints ### 📊 Changes **7 files changed** (+163 additions, -7 deletions) <details> <summary>View changed files</summary> 📝 `docs/android-analysis.md` (+6 -1) 📝 `docs/apple-application-analysis.md` (+10 -0) 📝 `src/domain/android/androidApplication.ts` (+1 -1) 📝 `src/domain/apple/appleApplication.test.ts` (+1 -1) 📝 `src/domain/apple/appleApplication.ts` (+2 -1) 📝 `src/domain/nativeConvention.ts` (+6 -3) ➕ `tests/acceptance/applications/mobileFrameworkConventions.test.ts` (+137 -0) </details> ### 📄 Description Closes #1489. Android and Apple inventory projections used substring matches to infer framework families and bridge bases. For example, `libcommunity.so` was labelled Unity and `MyApp.framework` was labelled Flutter. Apple also inferred Swift/Objective-C from any dylib or framework-shaped path. Use one bounded convention matcher per platform for both runtime-family hints and bridge bases. Android matches complete known library filenames; Apple matches complete known framework segments. Generic `App.framework` no longer identifies Flutter by itself, and generic dylib/framework paths no longer establish Swift/Objective-C. Keep the existing result schemas and inventory/candidate coverage semantics. Apple limitations now explicitly identify runtime families as inventory-derived hints and explain that a bridge basis comes only from the native path and repeats for each paired script. Validation: - The new compiled CLI/real stdio MCP regression failed on the original code, reproducing incorrect bridge bases and runtime families. - 26 tests passed across four files: the new acceptance journey, Android/Apple composition and coverage, and Apple domain projection. - Acceptance uses source-owned APK/IPA ZIP fixtures, real artifact inventories, misleading names, known positive conventions, multiple paired components, exact runtime-family expectations, and identical CLI/MCP Evidence. - `npm run check`, `npm run docs:check`, `npm run verify:test-discovery`, and `git diff --check` passed. The checks establish portable inventory projection behavior. They do not execute Android/iOS apps, decode language metadata, or verify actual framework loading. Implementation was developed with AI-agent assistance and verified with the checks above. --- <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:54 +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#2926
No description provided.