[PR #3502] [MERGED] fix(apple): stop counting single-object NIB connectors as ownerless #5785

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

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/3502
Author: @Dragolone
Created: 10/14/2026
Status: ✅ Merged
Merged: 10/22/2026
Merged by: @morluto

Base: main ← Head: fix/nib-single-object-connectors


📝 Commits (7)

  • 82f948e fix(apple): stop counting single-object NIB connectors as ownerless
  • ca41240 test(apple): keep unusable AppKit connector sources counted as ownerless
  • e6199b9 test(apple): split unusable connector source cases into their own block
  • ea50103 fix(apple): keep unknown NIB connectors unresolved
  • c3ed19e chore: sync current main before fixing AppKit connector classification
  • c4fd988 fix(apple): preserve unknown AppKit NIB connectors
  • a665dd5 fix(apple): share annotation connector semantics

📊 Changes

3 files changed (+314 additions, -4 deletions)

View changed files

📝 src/artifacts/apple/InterfaceBuilderAnalysis.ts (+4 -1)
📝 src/domain/apple/interfaceBuilderKeyedArchive.ts (+18 -3)
📝 tests/boundary/filesystem/interfaceBuilderBundle.test.ts (+292 -0)

📄 Description

Summary

Three AppKit connector classes annotate one object and omit NSSource; they must not inflate connection counts. The annotation distinction now lives in the shared Interface Builder domain parser and is used by both the keyed-archive parser and the NIBArchive projection. Only the three known classes with no encoded source are omitted; unfamiliar connectors and known annotations with an encoded null source remain unresolved evidence.

Validation and limits

  • npm run test:focused -- tests/boundary/filesystem/interfaceBuilderBundle.test.ts — 55 tests passed on a665dd554818418c5d3e2ce4c8864d1feb1a801b. The suite exercises a NIBArchive fixture plus a public CLI workflow over a binary NSKeyedArchiver fixture containing all three annotations, an unknown NSFutureConnector, and a known annotation with NSSource: null.
  • npm run check:fast passed (typecheck and lint); the post-commit push precheck passed too.
  • npx oxfmt --check on the three changed files and git diff --check passed.
  • The previous exact-head Real Apple artifact CLI/MCP E2E failure on ea50103 exposed the unknown-connector producer regression and was fixed on c4fd988. The current change addresses the separate keyed-archive omission reported on c4fd988. On current head a665dd554818418c5d3e2ce4c8864d1feb1a801b, hosted checks were pending at the latest query; no post-fix hosted result is claimed.
  • These are synthetic encoded fixtures and public CLI tests. No Apple provider or Apple-generated artifact was executed; the claim is limited to the two tested encodings.

Scope

This preserves the existing read-only Interface Builder parsing boundary. It changes neither CLI/MCP schemas nor target selection, Evidence provenance, or package metadata.

Author readiness

Human owner: @Dragolone

  • 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.

🔄 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/3502 **Author:** [@Dragolone](https://github.com/Dragolone) **Created:** 10/14/2026 **Status:** ✅ Merged **Merged:** 10/22/2026 **Merged by:** [@morluto](https://github.com/morluto) **Base:** `main` ← **Head:** `fix/nib-single-object-connectors` --- ### 📝 Commits (7) - [`82f948e`](https://github.com/morluto/rea/commit/82f948ebbd1a932ddf78d37e5ffd013a2d4a07ab) fix(apple): stop counting single-object NIB connectors as ownerless - [`ca41240`](https://github.com/morluto/rea/commit/ca4124048fd08b6f6dad4e54f278df20dc05e20a) test(apple): keep unusable AppKit connector sources counted as ownerless - [`e6199b9`](https://github.com/morluto/rea/commit/e6199b9f6a8765d0d4b4649baec77e3af06b61fa) test(apple): split unusable connector source cases into their own block - [`ea50103`](https://github.com/morluto/rea/commit/ea50103c21f3b1522933a518f8fb64ce7afdf197) fix(apple): keep unknown NIB connectors unresolved - [`c3ed19e`](https://github.com/morluto/rea/commit/c3ed19eff58d3f05d41d8a8f71dc7fcf59f5dd99) chore: sync current main before fixing AppKit connector classification - [`c4fd988`](https://github.com/morluto/rea/commit/c4fd9888cf0015efdbfdd11b01d752e484ff6bda) fix(apple): preserve unknown AppKit NIB connectors - [`a665dd5`](https://github.com/morluto/rea/commit/a665dd554818418c5d3e2ce4c8864d1feb1a801b) fix(apple): share annotation connector semantics ### 📊 Changes **3 files changed** (+314 additions, -4 deletions) <details> <summary>View changed files</summary> 📝 `src/artifacts/apple/InterfaceBuilderAnalysis.ts` (+4 -1) 📝 `src/domain/apple/interfaceBuilderKeyedArchive.ts` (+18 -3) 📝 `tests/boundary/filesystem/interfaceBuilderBundle.test.ts` (+292 -0) </details> ### 📄 Description ## Summary Three AppKit connector classes annotate one object and omit `NSSource`; they must not inflate connection counts. The annotation distinction now lives in the shared Interface Builder domain parser and is used by both the keyed-archive parser and the NIBArchive projection. Only the three known classes with no encoded source are omitted; unfamiliar connectors and known annotations with an encoded null source remain unresolved evidence. ## Validation and limits - `npm run test:focused -- tests/boundary/filesystem/interfaceBuilderBundle.test.ts` — 55 tests passed on `a665dd554818418c5d3e2ce4c8864d1feb1a801b`. The suite exercises a NIBArchive fixture plus a public CLI workflow over a binary NSKeyedArchiver fixture containing all three annotations, an unknown `NSFutureConnector`, and a known annotation with `NSSource: null`. - `npm run check:fast` passed (typecheck and lint); the post-commit push precheck passed too. - `npx oxfmt --check` on the three changed files and `git diff --check` passed. - The previous exact-head `Real Apple artifact CLI/MCP E2E` failure on `ea50103` exposed the unknown-connector producer regression and was fixed on `c4fd988`. The current change addresses the separate keyed-archive omission reported on `c4fd988`. On current head `a665dd554818418c5d3e2ce4c8864d1feb1a801b`, hosted checks were pending at the latest query; no post-fix hosted result is claimed. - These are synthetic encoded fixtures and public CLI tests. No Apple provider or Apple-generated artifact was executed; the claim is limited to the two tested encodings. ## Scope This preserves the existing read-only Interface Builder parsing boundary. It changes neither CLI/MCP schemas nor target selection, Evidence provenance, or package metadata. ## Author readiness <!-- The human owner completes these declarations before requesting review. The PR author is the owner by default. A different owner must explicitly accept ownership on this PR. AI agents must leave these declarations to a human to dictate to them or there could be catastrophic consequences for many users of REA. Draft PRs may leave them unchecked. These declarations record initial readiness when opening the PR for review; later pushes do not require a new human sign-off. Keep the description and validation evidence current as the work changes. See CONTRIBUTING.md#pull-request-ownership-and-readiness. --> Human owner: @Dragolone - [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. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-31 01:09:24 +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#5785
No description provided.