Repository navigation
Commit fa4109d
authored
refactor(contracts): drop the Limrun iOS denials its facts already make (#2815)
* refactor(contracts): make the springboard buttons optional members and drop the Limrun denials
ADR 0019 keeps a stub that throws `unsupported` out of an interactor: an owner with no
control says so with its facts, and the facts are what the binding consults. `home` and
`appSwitcher` reached the Limrun iOS direct session's interactor only through
`bindSystemButton`, which the catalog calls for exactly the buttons a binding's facts
admitted — and `limrunSystemButtonOperationFacts` refuses both cells on that leg
(`homeUnavailableIos`/`appSwitcherUnavailableIos`, or `liveSessionUnavailable` when no
session is live). The interactor denials were therefore unreachable code pretending to be
an implementation, and the fact hints already carried the identical wording.
Both members become optional, following #2715's `actionButton` shape: the system-button
binder already fails closed through `requireInteractorMethod`, so a fact that admits a
button its interactor cannot serve names the missing button instead of answering a silent
no-op. Apple, Android, HarmonyOS and the Vega TV leg keep their real mechanics.
* refactor(contracts): make the clipboard halves optional members and drop the Limrun denials
The Limrun iOS direct session's clipboard legs were unreachable code pretending to be an
implementation. `bindClipboardRead`/`bindClipboardWrite` are reached only through the
catalog, which binds a half exactly when the owner's fact admits it, and
`limrunClipboardOperationFacts` refuses both halves on that leg
(`clipboardUnavailableIos`, or `liveSessionUnavailable` with no live session). The
Android leg stays honest: it rides the same `createAndroidInteractor` the local family
binds, and its cells stay available.
Both members become optional and the binders now fail closed through
`requireInteractorMethod`, naming the half with the labels `CLIPBOARD_LEG_LABELS`
introduces and the catalog adopts — a fact that admits a half its interactor cannot
serve reports the missing method instead of resolving an absent member as a TypeError.
Apple, Android, Linux and the WebDriver clipboard extension keep their real mechanics.
* refactor(contracts): make the TV remote an optional member and drop the Limrun denial
The Limrun iOS direct session's remote leg was unreachable code pretending to be an
implementation. `bindTvRemote` is reached only through the catalog, which binds the press
exactly when the owner's fact admits it, and `limrunNavigationOperationFacts` refuses the
cell on that leg (`tvRemoteUnavailableIos`, or `liveSessionUnavailable` with no live
session) — a phone/tablet direct session has no remote receiver. The Android leg stays
honest: its cells gate on `device.target === 'tv'` and ride the real Android interactor.
The member becomes optional and the binder now fails closed through
`requireInteractorMethod`, naming the press with the label the catalog already used — a
fact that admits a press its interactor cannot serve reports the missing method instead
of resolving an absent member as a TypeError. Apple tvOS, the Android TV leaf, and Vega
keep their real mechanics.
* refactor(provider-limrun): drop the Limrun iOS gesture denial the facts already make
The iOS direct session refused every gesture tier through
`limrunGestureFacts` (`iosGestureUnavailable` on live sessions, the liveness cell
otherwise), and `bindGestureOperations` binds a tier only when its cell is available —
so the interactor's throwing `performGesture` could never run. The member is already
optional on `Interactor`, and the binder already escalates an advertised tier with no
executor to `invalidRuntimeContract` rather than a refusal (ADR 0019 §2), a path pinned
by `gesture-runtime.test.ts`. What remained was unreachable code pretending to be an
implementation; the fact cell is now the single source of the agent-facing wording.
* test(interactors): narrow the optional members at pinned implementation call sites
The Vega, Apple-runner-provider, and core interactor tests drive interactors that really
do carry home/appSwitcher/tvRemote/readClipboard/writeClipboard, but the factory hands
them an Interactor, and those members are optional now. Same `!` narrowing #2715 and
#2807 applied at their own pinned call sites: the assertion still runs the real method,
and an owner that ever stopped carrying it would fail in the factory's own test rather
than silently skipping the press.1 parent d988768 commit fa4109d
11 files changed
Lines changed: 146 additions & 58 deletions
File tree
- packages
- contracts/src
- platform-apple/src/__tests__
- platform-vega/src/__tests__
- provider-limrun/src
- src/core/__tests__
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
| 2 | + | |
2 | 3 | | |
3 | 4 | | |
4 | 5 | | |
| |||
96 | 97 | | |
97 | 98 | | |
98 | 99 | | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
69 | 69 | | |
70 | 70 | | |
71 | 71 | | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
72 | 78 | | |
73 | 79 | | |
74 | 80 | | |
| |||
87 | 93 | | |
88 | 94 | | |
89 | 95 | | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
90 | 109 | | |
91 | 110 | | |
92 | 111 | | |
93 | 112 | | |
94 | 113 | | |
95 | 114 | | |
96 | 115 | | |
97 | | - | |
| 116 | + | |
| 117 | + | |
98 | 118 | | |
99 | 119 | | |
100 | 120 | | |
| |||
106 | 126 | | |
107 | 127 | | |
108 | 128 | | |
109 | | - | |
| 129 | + | |
| 130 | + | |
110 | 131 | | |
111 | 132 | | |
112 | 133 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
5 | | - | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
6 | 10 | | |
7 | 11 | | |
8 | 12 | | |
9 | | - | |
| 13 | + | |
10 | 14 | | |
11 | 15 | | |
12 | 16 | | |
| |||
58 | 62 | | |
59 | 63 | | |
60 | 64 | | |
61 | | - | |
| 65 | + | |
62 | 66 | | |
63 | 67 | | |
64 | 68 | | |
| |||
74 | 78 | | |
75 | 79 | | |
76 | 80 | | |
77 | | - | |
78 | | - | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
79 | 91 | | |
80 | 92 | | |
81 | 93 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
356 | 356 | | |
357 | 357 | | |
358 | 358 | | |
359 | | - | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
360 | 366 | | |
361 | 367 | | |
362 | | - | |
363 | | - | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
364 | 382 | | |
365 | 383 | | |
366 | 384 | | |
| |||
374 | 392 | | |
375 | 393 | | |
376 | 394 | | |
377 | | - | |
378 | | - | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
| 405 | + | |
379 | 406 | | |
380 | 407 | | |
381 | 408 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
| 2 | + | |
2 | 3 | | |
3 | 4 | | |
4 | 5 | | |
| |||
39 | 40 | | |
40 | 41 | | |
41 | 42 | | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
35 | 35 | | |
36 | 36 | | |
37 | 37 | | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
38 | 41 | | |
39 | 42 | | |
40 | 43 | | |
| |||
52 | 55 | | |
53 | 56 | | |
54 | 57 | | |
55 | | - | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
56 | 63 | | |
57 | 64 | | |
58 | 65 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
71 | 71 | | |
72 | 72 | | |
73 | 73 | | |
74 | | - | |
| 74 | + | |
75 | 75 | | |
76 | | - | |
| 76 | + | |
77 | 77 | | |
78 | | - | |
| 78 | + | |
79 | 79 | | |
80 | 80 | | |
81 | 81 | | |
| |||
92 | 92 | | |
93 | 93 | | |
94 | 94 | | |
95 | | - | |
96 | | - | |
| 95 | + | |
| 96 | + | |
97 | 97 | | |
98 | 98 | | |
99 | 99 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
42 | 42 | | |
43 | 43 | | |
44 | 44 | | |
45 | | - | |
| 45 | + | |
46 | 46 | | |
47 | | - | |
| 47 | + | |
48 | 48 | | |
49 | 49 | | |
50 | 50 | | |
| |||
129 | 129 | | |
130 | 130 | | |
131 | 131 | | |
132 | | - | |
133 | | - | |
134 | | - | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
135 | 135 | | |
136 | 136 | | |
137 | 137 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
44 | 44 | | |
45 | 45 | | |
46 | 46 | | |
47 | | - | |
48 | | - | |
49 | | - | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
50 | 50 | | |
51 | 51 | | |
52 | 52 | | |
| |||
228 | 228 | | |
229 | 229 | | |
230 | 230 | | |
231 | | - | |
232 | | - | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
233 | 234 | | |
234 | 235 | | |
235 | 236 | | |
| |||
267 | 268 | | |
268 | 269 | | |
269 | 270 | | |
270 | | - | |
271 | | - | |
| 271 | + | |
272 | 272 | | |
273 | 273 | | |
274 | 274 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
322 | 322 | | |
323 | 323 | | |
324 | 324 | | |
325 | | - | |
326 | | - | |
327 | | - | |
328 | | - | |
329 | 325 | | |
330 | 326 | | |
331 | 327 | | |
| |||
336 | 332 | | |
337 | 333 | | |
338 | 334 | | |
339 | | - | |
340 | | - | |
341 | | - | |
342 | | - | |
343 | | - | |
344 | | - | |
345 | | - | |
346 | | - | |
347 | | - | |
348 | | - | |
349 | | - | |
350 | | - | |
351 | | - | |
352 | | - | |
353 | | - | |
354 | | - | |
355 | | - | |
356 | | - | |
357 | | - | |
358 | | - | |
359 | | - | |
360 | | - | |
361 | | - | |
362 | 335 | | |
363 | 336 | | |
364 | 337 | | |
| |||
0 commit comments