This means manually adding :extend to all files in etc/themes?
Yes.
I've now done that.
Two comments:
. When adding the :extend attribute to a face, we should make sure
all of that face's definitions have the same value of it, even if
the default definition of the face for some 'class' of displays
doesn't need it (e.g., because it specifies only the foreground
color). This is so that if users customize the face, the results
will look uniform regardless of which face attributes they
customize. Otherwise, if the user customizes the background color
or :underline or some other similar attribute, the appearance will
be different from that on other classes of terminals, and that is
baaaad...
. Some of the themes we have in core customize faces defined by
unbundled packages. I didn't change the definitions of those
faces; it's up to the respective package developers and/or users
to come up and ask for such changes, if it turns out the packages
added the :extend attribute and we didn't.