Pure move. SmartHomeConfig, its two refresh constants, the smarthome.Config
mapper, and the normalise and validate arms now sit together. The provider
check moves inside validateSmartHome, where the block it rejects is visible.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>