The handlers.llm.Template constructor should introspect the body of the default rule it is given and ensure that it is not manifestly invalid, assuming doing so is tractable.
Since we currently don't use and don't expect any nontrivial behavior in the body, this could just mean parsing the body's source code or bytecode and checking that it exactly matches raise NotHandled, perhaps after applying inspect.unwrap.