[PR #782] [CLOSED] fix: recover serialized native NIB view hierarchy #2238

Closed
opened 2026-10-16 21:16:05 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/782
Author: @rudycelekli
Created: 10/6/2026
Status: ❌ Closed

Base: main ← Head: fix/rea-nib-view-hierarchy-20261006


📝 Commits (2)

  • bfeaf5a fix: recover serialized native NIB view hierarchy
  • ed0fc10 ci: exercise native compiled NIB hierarchy regressions

📊 Changes

5 files changed (+637 additions, -21 deletions)

View changed files

📝 .github/workflows/ci.yml (+2 -0)
📝 src/application/InterfaceBuilderAnalysis.ts (+93 -21)
➕ src/application/NibNativeHierarchy.test.ts (+177 -0)
➕ src/application/NibViewHierarchy.test.ts (+189 -0)
➕ src/application/NibViewHierarchy.ts (+176 -0)

📄 Description

Summary

Recover explicitly serialized NSSuperview and native NSWindowTemplate.NSWindowView relationships from compiled AppKit NIBs. The previous owner-root traversal omitted the actual view tree while reporting complete hierarchy coverage.

The bounded iterative projection preserves recognized legacy roots and merges shared object IDs once. Missing, unsupported, cyclic, conflicting and bounded links make hierarchy coverage partial and hierarchy_complete false; no parentage is inferred.

Verification

Signed DCO production head bfeaf5a694adf9010e603a586fd4d484c059313f is based on upstream 69be514c67c8b2eb8b450355a9782d9237748fda. Fresh all 22 open PR file inventories show no overlap; all 20 authored open PR feedback/threads/checks were freshly audited without actionable source feedback or conflicts.

  • Actual xcrun ibtool compiles ordinary, deep and window AppKit XIB fixtures. Before, the built public CLI omits all 5/41 native view links in ordinary/deep fixtures while claiming complete hierarchy.
  • Six native regression cases fail against original production source. Final focused run passes 32 tests across five files, including actual producer ordinary/deep/window cases, a native hierarchy beyond the depth bound, both view/window object-budget controls, and explicitly synthetic missing-parent/cycle/conflict/unsupported/retained-limit/record-bound/merge controls.
  • The actual built CLI and separate real SDK stdio MCP sessions recover all 5/41/6 encoded links for ordinary/deep/window fixtures and return identical results.
  • Required matching npm run verify:interface-builder passes with actual native ibtool and cc through the artifact provider.
  • npm run check: all five tasks pass, 125 existing lint warnings and zero errors. check:fast passes two cached tasks; SSH signature, DCO and diff checks pass.

The source XIB and compiler output establish the producer contract; ibtool --hierarchy cannot inspect these compiled NIBs and is not claimed as a positive oracle. The decoder still exposes only recognized serialized objects/relationships, with existing unknown-field limitations. Native proof is macOS AppKit only; no UI instantiation, target execution, model inference, Windows or deep-engine claim. No full check:pr or hosted-CI-green claim.

Latest upstream 4bfd8038be0a60c43a452bec15e23799a0b040c0 adds semantic/reference/prompt fixes and conformance documentation, with no changes to these files, their NIB graph/decoder callers, dependencies or policy. The fresh advance receipt is empty for those paths.

AI-assisted implementation and independent source review. Fixes #781. Refs #480 (compiled hierarchy only).

macOS CI regression coverage

Signed DCO maintenance head ed0fc101d27b394b7cccfc12e98629912b179817 adds an explicit focused step to the existing apple-artifacts job (macos-14), before the existing metadata/Interface Builder verifier:

npm run test:focused -- src/application/NibNativeHierarchy.test.ts

That exact local command passes all six actual native cases (ordinary/deep/window hierarchy, depth bound and both object-budget controls). Required check passes five tasks and check:fast passes two tasks. The new head's hosted checks are pending; the prior green production run is not proof that this new step has executed on GitHub. The separate plist-selection CI step in #773 is after the existing verifier, keeping the insertions independent. This is maintenance of the same fix, with no new PR or bug count.

Hosted macOS update: the new native regression step has completed successfully and the job log reports all six native NIB cases passed: https://github.com/morluto/rea/actions/runs/37514259153/job/112443092386. This verifies the updated step itself; remaining hosted contexts are audited separately.


🔄 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/782 **Author:** [@rudycelekli](https://github.com/rudycelekli) **Created:** 10/6/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `fix/rea-nib-view-hierarchy-20261006` --- ### 📝 Commits (2) - [`bfeaf5a`](https://github.com/morluto/rea/commit/bfeaf5a694adf9010e603a586fd4d484c059313f) fix: recover serialized native NIB view hierarchy - [`ed0fc10`](https://github.com/morluto/rea/commit/ed0fc101d27b394b7cccfc12e98629912b179817) ci: exercise native compiled NIB hierarchy regressions ### 📊 Changes **5 files changed** (+637 additions, -21 deletions) <details> <summary>View changed files</summary> 📝 `.github/workflows/ci.yml` (+2 -0) 📝 `src/application/InterfaceBuilderAnalysis.ts` (+93 -21) ➕ `src/application/NibNativeHierarchy.test.ts` (+177 -0) ➕ `src/application/NibViewHierarchy.test.ts` (+189 -0) ➕ `src/application/NibViewHierarchy.ts` (+176 -0) </details> ### 📄 Description ## Summary Recover explicitly serialized `NSSuperview` and native `NSWindowTemplate.NSWindowView` relationships from compiled AppKit NIBs. The previous owner-root traversal omitted the actual view tree while reporting complete hierarchy coverage. The bounded iterative projection preserves recognized legacy roots and merges shared object IDs once. Missing, unsupported, cyclic, conflicting and bounded links make hierarchy coverage partial and `hierarchy_complete` false; no parentage is inferred. ## Verification Signed DCO production head `bfeaf5a694adf9010e603a586fd4d484c059313f` is based on upstream `69be514c67c8b2eb8b450355a9782d9237748fda`. Fresh all 22 open PR file inventories show no overlap; all 20 authored open PR feedback/threads/checks were freshly audited without actionable source feedback or conflicts. - Actual `xcrun ibtool` compiles ordinary, deep and window AppKit XIB fixtures. Before, the built public CLI omits all 5/41 native view links in ordinary/deep fixtures while claiming complete hierarchy. - Six native regression cases fail against original production source. Final focused run passes 32 tests across five files, including actual producer ordinary/deep/window cases, a native hierarchy beyond the depth bound, both view/window object-budget controls, and explicitly synthetic missing-parent/cycle/conflict/unsupported/retained-limit/record-bound/merge controls. - The actual built CLI and separate real SDK stdio MCP sessions recover all 5/41/6 encoded links for ordinary/deep/window fixtures and return identical results. - Required matching `npm run verify:interface-builder` passes with actual native `ibtool` and `cc` through the artifact provider. - `npm run check`: all five tasks pass, 125 existing lint warnings and zero errors. `check:fast` passes two cached tasks; SSH signature, DCO and diff checks pass. The source XIB and compiler output establish the producer contract; `ibtool --hierarchy` cannot inspect these compiled NIBs and is not claimed as a positive oracle. The decoder still exposes only recognized serialized objects/relationships, with existing unknown-field limitations. Native proof is macOS AppKit only; no UI instantiation, target execution, model inference, Windows or deep-engine claim. No full `check:pr` or hosted-CI-green claim. Latest upstream `4bfd8038be0a60c43a452bec15e23799a0b040c0` adds semantic/reference/prompt fixes and conformance documentation, with no changes to these files, their NIB graph/decoder callers, dependencies or policy. The fresh advance receipt is empty for those paths. AI-assisted implementation and independent source review. Fixes #781. Refs #480 (compiled hierarchy only). ## macOS CI regression coverage Signed DCO maintenance head `ed0fc101d27b394b7cccfc12e98629912b179817` adds an explicit focused step to the existing `apple-artifacts` job (`macos-14`), before the existing metadata/Interface Builder verifier: ```sh npm run test:focused -- src/application/NibNativeHierarchy.test.ts ``` That exact local command passes all six actual native cases (ordinary/deep/window hierarchy, depth bound and both object-budget controls). Required `check` passes five tasks and `check:fast` passes two tasks. The new head's hosted checks are pending; the prior green production run is not proof that this new step has executed on GitHub. The separate plist-selection CI step in #773 is after the existing verifier, keeping the insertions independent. This is maintenance of the same fix, with no new PR or bug count. Hosted macOS update: the new native regression step has completed successfully and the job log reports all six native NIB cases passed: https://github.com/morluto/rea/actions/runs/37514259153/job/112443092386. This verifies the updated step itself; remaining hosted contexts are audited separately. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-16 21:16:05 +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#2238
No description provided.