Coerce a version string to a clean SemVer (strip build metadata).
String? semverCoerce(String version) { final parsed = SemVer.tryParse(version); return parsed?.version; }