is there no validation step of the tags? if we can reliably detect expressions then yes, we should throw an exception that the setup is invalid. i am not too familiar with the expression language - could it be that i write something that the expression language would interpret but that i intended as static string? does our code do something to trigger expression parsing?

maybe we could use an approach we did a lot in the cmf: configuration options that allow true, false and "auto". "auto" means the DI extension detects itself if a feature is available and enables it. false means its simply deactivated even if it is available, and true menas the DI extension checks if the component is available and throws an error early if its not.
if we use this for using the expression language in the tags, this should be more clear for the user.