isRemoved
Indicates whether this traffic object has passed behind the user and should be removed.
This flag implements a two-phase removal process:
Phase 1: ViewModel sets this to
true, signaling the UI to start exit animationPhase 2: After the next state update, the object is removed from the list entirely
The UI layer should observe this state via collectAsState() and use it to trigger fade-out or scale-down animations before the object disappears from the list.
Note: This is a public MutableStateFlow (not private with accessor) because:
The ViewModel needs to mutate it when objects pass behind the user
The UI needs to observe it for animation coordination
The tight coupling between ViewModel mutation and UI observation is intentional and essential for the delayed removal animation pattern