@@ -74,7 +74,10 @@ function isRequest(
7474test ( 'an admitted is inspects once, binds once, and answers through the bound capture' , async ( ) => {
7575 const fixture = selectorCaptureFixture ( { snapshot : ( ) => buttonSnapshot ( ) } ) ;
7676 const sessionStore = makeSessionStore ( ) ;
77- sessionStore . set ( 'is-bound' , makeAndroidSession ( 'is-bound' , { appBundleId : 'com.example.app' } ) ) ;
77+ sessionStore . publish (
78+ 'is-bound' ,
79+ makeAndroidSession ( 'is-bound' , { appBundleId : 'com.example.app' } ) ,
80+ ) ;
7881
7982 const response = await dispatchIsViaRuntime ( {
8083 req : isRequest ( 'is-bound' , [ 'visible' , 'id=auth_continue' ] ) ,
@@ -95,7 +98,7 @@ test('is absent uses the bound readAny capture for selector-first input without
9598 snapshot : ( ) => ( { nodes : [ ] , backend : 'xctest' , producer : 'apple-runner' } ) ,
9699 } ) ;
97100 const sessionStore = makeSessionStore ( ) ;
98- sessionStore . set ( 'is-absent' , makeIosAppSession ( 'is-absent' ) ) ;
101+ sessionStore . publish ( 'is-absent' , makeIosAppSession ( 'is-absent' ) ) ;
99102
100103 const response = await dispatchIsViaRuntime ( {
101104 req : isRequest ( 'is-absent' , [ 'label="Removed row"' , 'absent' ] ) ,
@@ -133,7 +136,7 @@ test('is absent bypasses a cached no-match snapshot before evaluating the bound
133136 } ) ,
134137 } ) ;
135138 const sessionStore = makeSessionStore ( ) ;
136- sessionStore . set (
139+ sessionStore . publish (
137140 'is-absent-fresh' ,
138141 makeIosAppSession ( 'is-absent-fresh' , { snapshot : cachedAbsent } ) ,
139142 ) ;
@@ -168,7 +171,7 @@ test('is absent fails closed for a quality-less legacy iOS root-only capture', a
168171 } ) ,
169172 } ) ;
170173 const sessionStore = makeSessionStore ( ) ;
171- sessionStore . set ( 'is-legacy-sparse' , makeIosAppSession ( 'is-legacy-sparse' ) ) ;
174+ sessionStore . publish ( 'is-legacy-sparse' , makeIosAppSession ( 'is-legacy-sparse' ) ) ;
172175
173176 const response = await dispatchIsViaRuntime ( {
174177 req : isRequest ( 'is-legacy-sparse' , [ 'absent' , 'label="Removed row"' ] ) ,
@@ -200,7 +203,7 @@ test('is absent fails closed for a quality-less legacy iOS root-only capture', a
200203test ( 'is absent rejects depth and scope before binding with typed invalid arguments' , async ( ) => {
201204 const fixture = selectorCaptureFixture ( ) ;
202205 const sessionStore = makeSessionStore ( ) ;
203- sessionStore . set ( 'is-absent-flags' , makeIosAppSession ( 'is-absent-flags' ) ) ;
206+ sessionStore . publish ( 'is-absent-flags' , makeIosAppSession ( 'is-absent-flags' ) ) ;
204207
205208 for ( const [ flag , value ] of [
206209 [ 'snapshotScope' , 'Login' ] ,
@@ -233,7 +236,7 @@ test('an unavailable capture fact refuses before any bind', async () => {
233236 // The watchOS sentinel shape: capability-supported today, no snapshot backend at the owner.
234237 const fixture = selectorCaptureFixture ( { capture : unavailableCapture } ) ;
235238 const sessionStore = makeSessionStore ( ) ;
236- sessionStore . set ( 'is-refused' , makeAndroidSession ( 'is-refused' , { appBundleId : 'com.a' } ) ) ;
239+ sessionStore . publish ( 'is-refused' , makeAndroidSession ( 'is-refused' , { appBundleId : 'com.a' } ) ) ;
237240
238241 const response = await dispatchIsViaRuntime ( {
239242 req : isRequest ( 'is-refused' , [ 'visible' , 'id=auth_continue' ] ) ,
@@ -262,7 +265,7 @@ test('an iOS session with no tracked app is refused with the open hint, not answ
262265 snapshot : ( ) => buttonSnapshot ( ) ,
263266 } ) ;
264267 const sessionStore = makeSessionStore ( ) ;
265- sessionStore . set ( 'is-no-app' , makeIosSession ( 'is-no-app' ) ) ;
268+ sessionStore . publish ( 'is-no-app' , makeIosSession ( 'is-no-app' ) ) ;
266269
267270 const response = await withTestDeviceInventory (
268271 { } ,
@@ -291,7 +294,7 @@ test('an iOS session WITH a tracked app still answers, so the refusal is the pla
291294 snapshot : ( ) => buttonSnapshot ( ) ,
292295 } ) ;
293296 const sessionStore = makeSessionStore ( ) ;
294- sessionStore . set ( 'is-with-app' , makeIosAppSession ( 'is-with-app' ) ) ;
297+ sessionStore . publish ( 'is-with-app' , makeIosAppSession ( 'is-with-app' ) ) ;
295298
296299 const response = await dispatchIsViaRuntime ( {
297300 req : isRequest ( 'is-with-app' , [ 'visible' , 'label=Continue' ] ) ,
@@ -308,7 +311,7 @@ test('an iOS session WITH a tracked app still answers, so the refusal is the pla
308311test ( 'an Android session with no tracked app proceeds, because the owner advertises the without-active-app capture' , async ( ) => {
309312 const fixture = selectorCaptureFixture ( { snapshot : ( ) => buttonSnapshot ( ) } ) ;
310313 const sessionStore = makeSessionStore ( ) ;
311- sessionStore . set ( 'is-android-no-app' , makeAndroidSession ( 'is-android-no-app' ) ) ;
314+ sessionStore . publish ( 'is-android-no-app' , makeAndroidSession ( 'is-android-no-app' ) ) ;
312315
313316 const response = await dispatchIsViaRuntime ( {
314317 req : isRequest ( 'is-android-no-app' , [ 'visible' , 'id=auth_continue' ] ) ,
@@ -329,7 +332,7 @@ test('an Android session with no tracked app proceeds, because the owner adverti
329332test ( 'a refused request reaches the device by no route at all' , async ( ) => {
330333 const fixture = selectorCaptureFixture ( { capture : unavailableCapture } ) ;
331334 const sessionStore = makeSessionStore ( ) ;
332- sessionStore . set ( 'is-direct-refused' , makeIosAppSession ( 'is-direct-refused' ) ) ;
335+ sessionStore . publish ( 'is-direct-refused' , makeIosAppSession ( 'is-direct-refused' ) ) ;
333336 mockRunAppleRunnerCommand . mockResolvedValue ( {
334337 found : true ,
335338 nodes : [
@@ -389,7 +392,7 @@ test('a failing predicate answers COMMAND_FAILED from the bound capture', async
389392 } ) ,
390393 } ) ;
391394 const sessionStore = makeSessionStore ( ) ;
392- sessionStore . set ( 'is-direct-false' , makeIosAppSession ( 'is-direct-false' ) ) ;
395+ sessionStore . publish ( 'is-direct-false' , makeIosAppSession ( 'is-direct-false' ) ) ;
393396 mockRunAppleRunnerCommand . mockResolvedValue ( {
394397 found : true ,
395398 text : 'Apple Account' ,
@@ -444,7 +447,7 @@ test('a miss on a surface that never settled carries the unsettled fact, and the
444447 const sessionStore = makeSessionStore ( ) ;
445448 const session = makeIosAppSession ( 'is-unsettled' ) ;
446449 markDeferredInteractionOutcome ( { session, command : 'scroll' , positionals : [ ] , flags : { } } ) ;
447- sessionStore . set ( 'is-unsettled' , session ) ;
450+ sessionStore . publish ( 'is-unsettled' , session ) ;
448451 const isVisible = ( ) =>
449452 dispatchIsViaRuntime ( {
450453 req : isRequest ( 'is-unsettled' , [ 'visible' , 'id=target' ] ) ,
@@ -486,7 +489,7 @@ test('a read after a scroll that moved nothing carries the no-effect outcome, an
486489 const sessionStore = makeSessionStore ( ) ;
487490 const session = makeIosAppSession ( 'is-no-effect' , { snapshot : makeSnapshotState ( [ row ] ) } ) ;
488491 markDeferredInteractionOutcome ( { session, command : 'scroll' , positionals : [ 'down' ] , flags : { } } ) ;
489- sessionStore . set ( 'is-no-effect' , session ) ;
492+ sessionStore . publish ( 'is-no-effect' , session ) ;
490493 const isVisible = ( ) =>
491494 dispatchIsViaRuntime ( {
492495 req : isRequest ( 'is-no-effect' , [ 'visible' , 'id=row' ] ) ,
0 commit comments