To at least *detect* bad slot values consider setting up suitable rules that throw an exception, or whatever. The task of generating these straightforward rules can be automated with a userfunction. You might then, for instance, write
(deftemplate SrcTemp (slot destFact)) (deftemplate DstTemp (slot id)) ;; set up the check for SrcTemp/destFact (fact-in-slot SrcTemp destFact DstTemp) An implementation of fact-in-slot can be found on this Jess Wiki page<http://herzberg.ca.sandia.gov/jesswiki/view?FactInSlotUserFunction>