I was writing a patch recently and in order to test it, I needed to make changes to the test bundles.  I ended up making the same change across several files, and missing one (thanks to the reviewer for noticing that!).

Some of the other projects I'm involved with use symlinks to a base bundle with overlays:

./tests$ ls -l bundles/
total 20
-rw-rw---- 2 xav xav 5046 Sep 29 14:56 base.yaml
lrwxrwxrwx 1 xav xav    9 Sep 29 10:01 bionic.yaml -> base.yaml
lrwxrwxrwx 1 xav xav    9 Sep 29 10:01 focal.yaml -> base.yaml
drwxrwx--x 2 xav xav 4096 Sep 29 10:01 overlays
lrwxrwxrwx 1 xav xav    9 Sep 29 10:01 xenial.yaml -> base.yaml
./tests$ ls bundles/overlays/
bionic.yaml.j2  focal.yaml.j2  local-charm-overlay.yaml.j2  xenial.yaml.j2

This means that I can edit base.yaml just once, and if a change is specific to any of the particular bundles there's a place for that in the individual overlays.  When we have bundles for each release going back to Mitaka, this could be quite an effort saver.

I gather there's been some discussion around this already, and would be keen to see if there's a reason folks might avoid that pattern?