Alright, so here are the plausible alternatives
1a. New type-class-based behaviour without extension
1b. New type-class-based behaviour gated by an extension
2. Just a warning (when main isn't at type IO () or IO Void)
3a. A warning + the new type-class-based behaviour gated by an extension. With the extension, types that don't implement the type class raise an error.
3b. A warning + the new type-class-based behaviour gated by an extension.
With the extension, types that don't implement the type class raise a warning (which could have a different phrasing than without the extension).
Let's vote!