Directives don't get self-closing tags
When editing and re-saving an afform via the GUI editor, it goes from this:
<div af-block="Email">
<block-email-default />
</div>
to this:
<div af-block="Email">
<block-email-default></block-email-default>
</div>
That's because there is a hard-coded whitelist (CRM_Afform_ArrayHtml::$protoSchema
) of tags which are allowed to self-close.
A couple solutions come to mind, but maybe the simplest is to switch from a whitelist to a blacklist. I honestly can't think of many tags which can't be self-closing. I don't think modern browsers really care.