After writing the observation language lexer, parser and interpreter myself, I found a tool called Lark that does it for me. I have simplified the code while increasing flexibility and usability.
1.1
I have built a unit testing framework for model validation. As a part of this I have created a syntax for encoding model observations. This syntax is used to automatically define new TestCase classes and methods that test the observation. Prooblems with this version include the inability to compare cross-conditions. This is in active development for v2.1