feat(snapshot): interpret iOS node facts once at producer seams

Merged
TH
4d ago
+641-135

Summary

One synchronous capture-kit interpreter acquires native checked/password/editable facts and RN value semantics at runner snapshot/quality/querySelector, AX bridge, Limrun, and Appium adapter seams. Explicit facts win; unknown stays absent. Android reported states and provider heading/roleDescription remain.

Rename the #3589 module and its golden-driven test to ios-node-interpretation. R74 and ios-snapshot-acquisition.ts match main exactly: importing interpretation into acquisition would grow its eager closure from 9 to 10 modules. Remove duplicated Swift/TS rules and Swift state carriers; modal nodes preserve native values. 28 files; snapshot docs updated.

Closes #3524

Validation

Head 64573fd90119870854aee208572ebd61712ca584: focused tests (234), typecheck, lint, repository-wide format, host-locked pnpm check:affected --run (15,325 related tests), committed eager-closure/file-size checks (1,039), and layering tests (330) passed.

Original five-seam regression evidence:

base cfa96531aruntime refactor b1d30355f
28 failed, 67 passed95 passed

Prior live/native evidence covers runner private AX, recursive XCTest, bridge, Appium, Limrun, and a notification modal; temporary resources were cleaned up. No new live run is needed for this behavior-preserving module move. is checked is unavailable; checked facts were verified through snapshots and get attrs. Limrun's GenericElement RN fixture stays uninterpreted.

Diff vs main: 28 files, +641/−135. CI and cubic review pending on this head.