The main "entry point" when evaluating is the check that we have the WITH_ROUTE state. Then it checks that we are on target and don't have invalid junctions. Then it checks for various distance and times to maneuvers and decides what, if anything, to say. I guess that this should be evaluated on every position update.