[PR #5777] [CLOSED] fix(apple): classify uppercase framework components #7053

Closed
opened 2026-11-01 21:44:59 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/5777
Author: @jdotc1
Created: 10/21/2026
Status: ❌ Closed

Base: main ← Head: fix/rea-5728-framework-case


📝 Commits (7)

  • d474801 fix(apple): classify uppercase framework components
  • 7f29425 style(apple): format framework regression
  • 577d89b chore: merge reviewed upstream fixes into framework correction
  • 750307d test(kuna): observe held-output probe after bounded CLI completion
  • edb18ea refactor(apple): share anatomy-owned framework ancestry
  • bb7ee5c test(cli): observe cancellation at stable source resolution boundary
  • 0a4e31d merge: reconcile framework-case fix with current main

📊 Changes

4 files changed (+116 additions, -29 deletions)

View changed files

📝 src/domain/apple/appleApplication.test.ts (+66 -0)
📝 src/domain/apple/appleApplication.ts (+2 -1)
📝 src/domain/apple/appleBundleAnatomy.ts (+13 -0)
📝 tests/boundary/cli/kunaDoctorHeldOutput.test.ts (+35 -28)

📄 Description

Summary

Fixes #5728. Apple application projection now lists components inside uppercase or mixed-case .framework directories in components.frameworks, alongside the existing lowercase spelling.

Problem and expected behavior

Bundle anatomy already recognizes VerifyKit.FRAMEWORK as a framework, but the component projection used a case-sensitive path filter and omitted the same inventoried files. A complete inventory should retain those descendants in the framework category with their original paths and hashes.

Change and scope

The projection now uses the bundle-anatomy owner's framework-ancestor predicate rather than a second consumer-side suffix check. The predicate reuses bundle admission and role classification, including case handling, and excludes the file leaf from ancestor recognition. Existing component attribution remains unchanged, including IPA components outside application roots.

This branch also contains a test-only correction to the Kuna held-output fixture after an earlier branch CI failure. The prior fixture measured a separate five-second marker-startup window from CLI launch, which included unrelated CLI initialization. The revised fixture measures the existing 16-second probe bound from the fake probe's own timestamp, while retaining the 20-second overall CLI limit, the production deadline, descendant cleanup fallback, captured-diagnostic assertions, and owned-process cleanup. The failed hosted run did not retain the probe timestamp, so the diagnosis is source-supported rather than a measured reconstruction of that runner. No Kuna production code changed. Whether this test-only repair should remain in the same review unit is left visible for maintainer judgment.

The change intentionally does not alter inventory bytes, coverage rules, schemas, providers, target execution, or target mutation.

Follow the contribution scope.
Unresolved scope, authority, side effects, or required verification block
integration. Link the required maintainer scope decision for new providers or
capabilities involving target execution, injection, mutation, or protection
recovery; ordinary fixes within existing boundaries may state "not applicable".
Draft PRs may leave the scope decision pending and the readiness and merge checklists
unchecked. Maintainers can help resolve open questions.

Contract and boundary impact

  • Semantic owner and earliest changed stage: bundle anatomy owns framework-ancestor classification; Apple application projection consumes that fact.
  • Contribution scope fit and linked maintainer decision: ordinary correction within existing Apple application projection; no new capability decision is required. The test-only Kuna fixture scope remains for maintainer judgment.
  • CLI and MCP/tool-catalog contract: existing components.frameworks output gains previously omitted uppercase and mixed-case descendants; schema and catalog are unchanged.
  • Provider, bridge, target-format, or platform compatibility: no provider or bridge change; this applies to supported Apple application and IPA inventories.
  • Evidence, artifact, provenance, or reconstruction contract: projected paths and SHA-256 values remain those of the inventoried entries; no new evidence authority is introduced.
  • Target selection, authority, upstream behavior, and cleanup details (if applicable): target selection and authority are unchanged. The Kuna fixture retains the existing bounded invocation and owned-process cleanup assertions.
  • Generated metadata (docs/public/product-catalog.json), package, or installation impact (CI generates and validates ignored catalogs and skills/; edit authored instructions in .agents/skills/reverse-engineer-anything/ and never commit build outputs): none.

Expected effects (check known effects; use documentation-only on its own).
Unchecked items do not establish absence; leave uncertainties visible.

  • Read existing files or captured data.
  • Launch or attach to a process.
  • Inject instrumentation or run scripts/code.
  • Change process memory, registers, files, or configuration.
  • Contact network services.
  • Recover protected code or work around protections.
  • Documentation or usability only; no target interaction.
  • Not sure yet; investigation or maintainer guidance needed.

Evidence and regression coverage

  • Tests added or updated: Apple application source coverage checks uppercase, lowercase, mixed-case, and versioned framework descendants inside and outside application roots; exact paths and hashes; .framework2; standalone framework-named files; and AppleDouble sidecars. The Kuna fixture retains its timing, diagnostic, and cleanup assertions while measuring the probe bound from the probe timestamp.
  • Base reproduction or other evidence: issue #5728 records the affected CLI behavior. The framework regression would fail on the affected base because the prior case-sensitive regex omitted uppercase descendants. The Kuna change followed a branch CI startup failure; recent main runs passed the prior fixture, so this branch-specific timing diagnosis does not establish a general production defect.
  • User-visible CLI/MCP output (if applicable): the Apple projection adds the previously omitted framework rows without changing their shape. No representative output was freshly captured on this head.
  • Remaining proof gaps: no newly compiled application fixture was exercised through CLI or MCP on this branch. The earlier Kuna failure did not retain a probe-start timestamp, and the revised missing-marker path now surfaces the underlying read error rather than the former bespoke message.

For evidence-bearing changes:

  • 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

Current published head: 0a4e31d6213963584d4db9e9b0062ba3f186939a.

Previously recorded author execution on this head:

  • npm run test:local -- src/domain/apple/appleApplication.test.ts — 38 tests passed.
  • Changed cancellation fixture — 20 cases passed on the PR-side producer and the consolidated upstream owner.
  • tests/boundary/cli/kunaDoctorHeldOutput.test.ts affected case — passed on macOS arm64; recorded duration 14.611 seconds.
  • TypeScript no-emit, runtime/skill preparation, scoped lint, formatting, and whitespace checks — passed for the changed boundaries.

Hosted verification on this head:

  • CI workflow run 39901472842 — completed successfully.
  • PR title workflow run 39901472748 — completed successfully.
  • Codex review — completed with no findings on this head.

These description edits do not change source or test files; no project command was rerun solely for the metadata update.

Compatibility, safety, and release

  • Breaking changes or migration steps: none.
  • Real Hopper/Ghidra, browser, or OS coverage: not applicable to framework projection. The Kuna fixture was exercised on macOS arm64; that is test evidence, not a provider change.
  • Package or release metadata impact: none.
  • Security, privacy, process, or containment review: no target execution, extraction, new file access, network access, or protection-recovery behavior is introduced. The test-only Kuna change retains bounded cleanup checks.

Author readiness

Human owner: @jdotc1

  • I reviewed the final diff and relevant existing code, understand the change and its edge cases, and take responsibility for the complete PR, including AI-assisted work.
  • I checked the evidence above, confirmed it supports the current change, and recorded meaningful validation gaps.
  • I declare this PR ready for initial maintainer review.

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.

🔄 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/5777 **Author:** [@jdotc1](https://github.com/jdotc1) **Created:** 10/21/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `fix/rea-5728-framework-case` --- ### 📝 Commits (7) - [`d474801`](https://github.com/morluto/rea/commit/d474801b5ccc15780bdb815dcd334354f176b8fd) fix(apple): classify uppercase framework components - [`7f29425`](https://github.com/morluto/rea/commit/7f29425e6e7209c6805daf91257922b6091f3b28) style(apple): format framework regression - [`577d89b`](https://github.com/morluto/rea/commit/577d89b34cccc77e5facf3a6dda0af20e39c50ca) chore: merge reviewed upstream fixes into framework correction - [`750307d`](https://github.com/morluto/rea/commit/750307d897ccea6a0aa2096fa12ae831f676daf8) test(kuna): observe held-output probe after bounded CLI completion - [`edb18ea`](https://github.com/morluto/rea/commit/edb18ea4278c7f562d8d327faa825fd41fb550c0) refactor(apple): share anatomy-owned framework ancestry - [`bb7ee5c`](https://github.com/morluto/rea/commit/bb7ee5c1e8316e0d068a8288a94504f7d8b5b3fc) test(cli): observe cancellation at stable source resolution boundary - [`0a4e31d`](https://github.com/morluto/rea/commit/0a4e31d6213963584d4db9e9b0062ba3f186939a) merge: reconcile framework-case fix with current main ### 📊 Changes **4 files changed** (+116 additions, -29 deletions) <details> <summary>View changed files</summary> 📝 `src/domain/apple/appleApplication.test.ts` (+66 -0) 📝 `src/domain/apple/appleApplication.ts` (+2 -1) 📝 `src/domain/apple/appleBundleAnatomy.ts` (+13 -0) 📝 `tests/boundary/cli/kunaDoctorHeldOutput.test.ts` (+35 -28) </details> ### 📄 Description ## Summary Fixes #5728. Apple application projection now lists components inside uppercase or mixed-case `.framework` directories in `components.frameworks`, alongside the existing lowercase spelling. ## Problem and expected behavior Bundle anatomy already recognizes `VerifyKit.FRAMEWORK` as a framework, but the component projection used a case-sensitive path filter and omitted the same inventoried files. A complete inventory should retain those descendants in the framework category with their original paths and hashes. ## Change and scope The projection now uses the bundle-anatomy owner's framework-ancestor predicate rather than a second consumer-side suffix check. The predicate reuses bundle admission and role classification, including case handling, and excludes the file leaf from ancestor recognition. Existing component attribution remains unchanged, including IPA components outside application roots. This branch also contains a test-only correction to the Kuna held-output fixture after an earlier branch CI failure. The prior fixture measured a separate five-second marker-startup window from CLI launch, which included unrelated CLI initialization. The revised fixture measures the existing 16-second probe bound from the fake probe's own timestamp, while retaining the 20-second overall CLI limit, the production deadline, descendant cleanup fallback, captured-diagnostic assertions, and owned-process cleanup. The failed hosted run did not retain the probe timestamp, so the diagnosis is source-supported rather than a measured reconstruction of that runner. No Kuna production code changed. Whether this test-only repair should remain in the same review unit is left visible for maintainer judgment. The change intentionally does not alter inventory bytes, coverage rules, schemas, providers, target execution, or target mutation. Follow the [contribution scope](https://github.com/morluto/rea/blob/main/CONTRIBUTING.md#contribution-scope). Unresolved scope, authority, side effects, or required verification block integration. Link the required maintainer scope decision for new providers or capabilities involving target execution, injection, mutation, or protection recovery; ordinary fixes within existing boundaries may state "not applicable". Draft PRs may leave the scope decision pending and the readiness and merge checklists unchecked. Maintainers can help resolve open questions. ## Contract and boundary impact - Semantic owner and earliest changed stage: bundle anatomy owns framework-ancestor classification; Apple application projection consumes that fact. - Contribution scope fit and linked maintainer decision: ordinary correction within existing Apple application projection; no new capability decision is required. The test-only Kuna fixture scope remains for maintainer judgment. - CLI and MCP/tool-catalog contract: existing `components.frameworks` output gains previously omitted uppercase and mixed-case descendants; schema and catalog are unchanged. - Provider, bridge, target-format, or platform compatibility: no provider or bridge change; this applies to supported Apple application and IPA inventories. - Evidence, artifact, provenance, or reconstruction contract: projected paths and SHA-256 values remain those of the inventoried entries; no new evidence authority is introduced. - Target selection, authority, upstream behavior, and cleanup details (if applicable): target selection and authority are unchanged. The Kuna fixture retains the existing bounded invocation and owned-process cleanup assertions. - Generated metadata (`docs/public/product-catalog.json`), package, or installation impact (CI generates and validates ignored catalogs and `skills/`; edit authored instructions in `.agents/skills/reverse-engineer-anything/` and never commit build outputs): none. Expected effects (check known effects; use documentation-only on its own). Unchecked items do not establish absence; leave uncertainties visible. - [x] Read existing files or captured data. - [ ] Launch or attach to a process. - [ ] Inject instrumentation or run scripts/code. - [ ] Change process memory, registers, files, or configuration. - [ ] Contact network services. - [ ] Recover protected code or work around protections. - [ ] Documentation or usability only; no target interaction. - [ ] Not sure yet; investigation or maintainer guidance needed. ## Evidence and regression coverage - Tests added or updated: Apple application source coverage checks uppercase, lowercase, mixed-case, and versioned framework descendants inside and outside application roots; exact paths and hashes; `.framework2`; standalone framework-named files; and AppleDouble sidecars. The Kuna fixture retains its timing, diagnostic, and cleanup assertions while measuring the probe bound from the probe timestamp. - Base reproduction or other evidence: issue #5728 records the affected CLI behavior. The framework regression would fail on the affected base because the prior case-sensitive regex omitted uppercase descendants. The Kuna change followed a branch CI startup failure; recent main runs passed the prior fixture, so this branch-specific timing diagnosis does not establish a general production defect. - User-visible CLI/MCP output (if applicable): the Apple projection adds the previously omitted framework rows without changing their shape. No representative output was freshly captured on this head. - Remaining proof gaps: no newly compiled application fixture was exercised through CLI or MCP on this branch. The earlier Kuna failure did not retain a probe-start timestamp, and the revised missing-marker path now surfaces the underlying read error rather than the former bespoke message. For evidence-bearing changes: - [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 Current published head: `0a4e31d6213963584d4db9e9b0062ba3f186939a`. Previously recorded author execution on this head: - `npm run test:local -- src/domain/apple/appleApplication.test.ts` — 38 tests passed. - Changed cancellation fixture — 20 cases passed on the PR-side producer and the consolidated upstream owner. - `tests/boundary/cli/kunaDoctorHeldOutput.test.ts` affected case — passed on macOS arm64; recorded duration 14.611 seconds. - TypeScript no-emit, runtime/skill preparation, scoped lint, formatting, and whitespace checks — passed for the changed boundaries. Hosted verification on this head: - `CI` workflow run 39901472842 — completed successfully. - `PR title` workflow run 39901472748 — completed successfully. - Codex review — completed with no findings on this head. These description edits do not change source or test files; no project command was rerun solely for the metadata update. ## Compatibility, safety, and release - Breaking changes or migration steps: none. - Real Hopper/Ghidra, browser, or OS coverage: not applicable to framework projection. The Kuna fixture was exercised on macOS arm64; that is test evidence, not a provider change. - Package or release metadata impact: none. - Security, privacy, process, or containment review: no target execution, extraction, new file access, network access, or protection-recovery behavior is introduced. The test-only Kuna change retains bounded cleanup checks. ## Author readiness Human owner: @jdotc1 - [x] I reviewed the final diff and relevant existing code, understand the change and its edge cases, and take responsibility for the complete PR, including AI-assisted work. - [x] I checked the evidence above, confirmed it supports the current change, and recorded meaningful validation gaps. - [x] I declare this PR ready for initial maintainer review. ## Before merge - [x] 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`. - [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. - [ ] User-visible CLI/MCP changes include representative output. - [ ] I checked the final diff for secrets, unrelated cleanup, and unsupported claims. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-11-01 21:44:59 +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#7053
No description provided.