I'm really puzzled at some #GoLang "conventions":
https://github.com/mholt/archives/issues/3#issuecomment-3212123684
In this issue, a smaller-than-produced-value type is exposed on a factory API: this would make sense if coding defensively, to reduce the API surface, but not here, IMO.
Forcing consumers to do runtime upcasting because of a convention feels wrong, but I'm perhaps missing part of the picture somewhere.
To me, making something "fail at compile time, when wrong" is a massive value proposition for a compiled language.