Since you’re looping through all LastSensedStimuli you’re calling HeardSomething everytime something changes in this actors perception (so every time it starts seeing this actor or stops seeing it, hears it or stops hearing it and same for all other senses you might have setup there). Also you’re never checking for SuccessfullySensed being true, so whether it can actually hear that actor (or has ever heard it) or not. If it has never heard that actor, then the StimulusLocation will be some random garbage value.
Then since you’re grabbing the latest hearing stimulus, that means that if the latest hearing stimulus had a RunnerStimuli tag, then you will call RunnerStateChanged to Warning and if that is what your blackboard condition is checking for, then you will execute that behavior tree branch you’ve shown in the image.
So what you need to change at least, is in HeardSomething check for SuccessfullySensed being true. Also depending on how you want to use/setup the perception logic, you could consider using OnTargetPerceptionUpdated instead of OnPerceptionUpdated. The difference there is that OnTargetPerceptionUpdated will give you the stimulus that has changed (so that you could then only execute HeardSomething if the update was actually triggered by the hearing sense and not any other sense).