Well, there are two things we could do:
Which one do you prefer?
Let's keep the complexity in one place, otherwise for each compiler we have to know all this stuff about why it has to be a set and why it has to have a unique ID, and how unique it has to be, etc.
I'd say the compiler just has a list of strings, then the post creates a config_changed up to its own requirements out of it.
I think this is better because while there is a chance 3rd parties will want to write a compiler plugin, noone outside the project is touching Post.