I took a look at vumi.config, and I can see that its definitely possible use the infrastructure to validate the deeply nested monitored_systems config. But I think the benefit of doing that would be open to debate.

In the the current version, I validate and process the config simultaneously, with minimal code and reading overhead. Introducing a subclass of ConfigDict which validates the config would mean adding more class boilerplate and another pass which still does the validation in an imperative non-declarative manner.

I think vumi.config works well for defining and validating simple config fields, since you can declaratively specify them. If we can build on it to do the same for complex fields (data structures with nodes of arbitrary types), then I think the benefit would be a no-brainer.