While reviewing docs for/trying to understand packages vs common_packages, I wondered if it would not be possible to use the same var name, "packages", at various levels of the tree, and have the more-specific levels do a list append; that way, each level defines which packages it knows to be necessary without the artificial split between "high-level" in common_packages and "low level" in packages (and the implication that there are only two levels of owners of package lists).

Something like "packages: {{packages|list}} + {{additional_packages|list}}" was suggested. It's not clear if Ansible allows the RHS to refer to the prior value of a variable in order to reassign it to the LHS.