This paper presents a specification-based approach that addresses several known challenges including false positives and domain knowledge errors.  Our approach begins with a goal graph and plans.  Source code is annotated with goals and events and precompiled to emit those at run time.  Plans are automatically translated into a rule-based recognizer.  An oracle is produced from the pre- and postconditions associated with the plan’s goals.  When the program is executed, goals and events are emitted and automatically tested against plans and oracles.  The concept is demonstrated on a small example and a larger publicly available case study.