feat(ios): interpret React Native accessibility value semantics

Merged
TH
4d ago
+940-36

Summary

Interpret exact English Fabric/Paper iOS value encodings once in capture-kit across runner, AX bridge, Appium and limrun. Preserve value/type/native role and explicit facts. iosValueSemantics discloses heuristic role, mixed and expansion/busy evidence; absent expansion remains unknown. General expanded selectors remain outside this change; #3531 owns kind vocabulary.

Example: get attrs @e17 retains value: "checkbox, mixed" and adds iosValueSemantics.checked: "mixed", without inventing boolean checked.

A literal "checkbox, checked" value on an anonymous Other node fills public checked from heuristic evidence alone. Derived semantics are omitted from unchanged comparison; its inputs include editable/password eligibility. The redundant comparator/test and unrelated formatting hunk are removed.

21 files; includes semantic goldens, compact-attrs evidence preservation, snapshot docs. Closes #3527.

Validation

Head 54a271f007a2a26c370d6d973309bdc172c6a05d: serialized pnpm check:affected --run and eager-closure/test-file-size CI gates passed; 80 focused tests passed. An earlier gate at 9bbe4825b hit an unchanged temp-directory lifecycle test; model (25/25) and full reruns passed. All CI workflows passed, including Coverage, Integration Tests, smoke lanes and the mutation harness.

Eligibility regression through the real interpreter: 9bbe4825b 2 failed/42 passed → 54a271f00 44 passed. Explicit checked remains constant while metadata disappears when editable/password changes.

Prior iPhone 17 live evidence covers runner/AX unchecked→checked, mixed/expansion/busy; Appium source acquisition covers the same facts. en-GB verified on AX/runner; Appium en-GB fixture nodes unavailable. Limrun/Paper live targets unavailable; goldens cover them. Reproducible commands and evidence.

Fixture/session changes restored; temporary services stopped. No new live run in this round; no unresolved review threads at publication.