customElement with noShadowDOM replaced a custom mount registry; attribute changes from server re-renders flow into props and disconnect disposes the root.
- What worked
- Removed the MutationObserver mounting code entirely.
- What got in the way
- Attributes arrive as strings, so validation must stay in the component.