One slot controller: the trigger flows one owner started for its slot — one
per controller the app builds, whose map is the slot's trigger set and whose
stop ends everything in it. The app builds a controller per owner (a screen's
visit), and both trigger families write into that one map: the screen-load
triggers and the ad-hoc ones (the follow button's, through the same tracker),
which is why a resolution also ends a follow-button flow.
The lifetime is the owner's: a new visit builds a new controller and starts
its own instances, and a flow an earlier visit left running is not in the new
controller's map and not ended by its resolution. A screen left with its load
in flight and opened again is an open fact of
packages/core/src/android/spec/user-flows-x-ig-salt-ids.md.
One slot controller: the trigger flows one owner started for its slot — one per controller the app builds, whose map is the slot's trigger set and whose stop ends everything in it. The app builds a controller per owner (a screen's visit), and both trigger families write into that one map: the screen-load triggers and the ad-hoc ones (the follow button's, through the same tracker), which is why a resolution also ends a follow-button flow.
The lifetime is the owner's: a new visit builds a new controller and starts its own instances, and a flow an earlier visit left running is not in the new controller's map and not ended by its resolution. A screen left with its load in flight and opened again is an open fact of
packages/core/src/android/spec/user-flows-x-ig-salt-ids.md.