@@ -29,11 +29,10 @@ reliability, modal behavior, stack/tab behavior, and simulator polish.
2929 ` codex/rn-module-fabric-turbomodule-worklets `
3030 - Created from ` refactor ` at
3131 ` f3d0b3f4ac6f6ff5753d321e7bb7ecc7e78f3443 ` .
32- - Branch split audit from 2026-06-28 23:36 EDT:
33- ` HEAD ` , ` refactor ` , and their merge-base all resolve to ` f3d0b3f4 ` .
34- ` git diff refactor...HEAD ` is empty, so no RN-module commits have landed
35- on top of ` refactor ` yet. The RN work is currently dirty working-tree
36- state on this RN branch.
32+ - Branch split audit from 2026-06-28 23:36 EDT confirmed the RN work was
33+ separated from ` refactor ` ; subsequent RN/runtime primitive commits now live
34+ on ` codex/rn-module-fabric-turbomodule-worklets ` and are tracked in draft
35+ PR #46 .
3736 - Keep this branch for RN module / Fabric / TurboModule / worklets work.
3837 Preserve the original ` refactor ` branch for the Node-API runtime/direct
3938 engine backend PR.
@@ -111,6 +110,44 @@ During this thread `agent-device` was version `0.18.0`; the npm package is
111110
112111## Current Verified State
113112
113+ Update from 2026-06-29 16:55 EDT:
114+
115+ - Simulator-only rule remains active. Do not use physical iPhone/iPad devices.
116+ - Draft PR #46 branch is cleanly on
117+ ` codex/rn-module-fabric-turbomodule-worklets ` ; the previous writable-member
118+ correction was committed/pushed as ` 7eae675d ` .
119+ - GitHub Actions run ` 28399361627 ` on ` 7eae675d ` still failed only in iOS
120+ simulator ` ApiTests.js Appearance ` :
121+ ` UILabel.appearance().textColor ` read back ` undefined ` after assignment.
122+ macOS stayed green.
123+ - Root cause refinement:
124+ - The failed read can happen even if the UIAppearance setter path succeeds.
125+ - Root runtime object expandos were keyed by ` &runtime ` , but V8 host-object
126+ callbacks construct fresh stack ` Runtime ` wrappers for get/set calls. That
127+ makes a value cached during assignment invisible to the later read under a
128+ different wrapper address.
129+ - Current runtime fix:
130+ - Root ` NativeApiBridge ` object expandos now key per-runtime values by stable
131+ backend runtime state for V8/JSC/QuickJS via ` runtime.state().get() ` .
132+ - Hermes/JSI keeps using the real JSI runtime reference fallback.
133+ - Source coverage now guards against reintroducing the per-callback stack
134+ wrapper key in root object expandos.
135+ - Local verification after this correction:
136+ - ` node packages/react-native/test/runtime-objc-property-setter.test.js `
137+ passed.
138+ - ` git diff --check ` passed.
139+ - ` npm run check:ffi-boundaries ` passed.
140+ - Runtime RN JS tests passed:
141+ ` for f in packages/react-native/test/*.test.js; do node "$f" || exit 1; done ` .
142+ - ` npm run build:macos-cli ` passed and compiled/linked the edited V8 bridge.
143+ - Narrow local iOS simulator repro could not launch because the local
144+ metadata-generator x86_64 build still fails to link against the arm64-only
145+ Xcode ` libclang.dylib ` ; keep using GitHub Actions for the authoritative iOS
146+ simulator result until that local toolchain mismatch is fixed.
147+ - Not done:
148+ - Commit/push the stable runtime-expando key fix and watch fresh PR CI.
149+ - If CI turns green, resume the dedicated simulator-only RNS parity sweep.
150+
114151Update from 2026-06-29 16:05 EDT:
115152
116153- Simulator-only rule remains active. Do not use physical iPhone/iPad devices.
0 commit comments