No, it’s not that. But we don’t dispatch on kwargs, so when you define the (;a, b) constructor you overwrite the automatic (; a, b, c) constructor. They are both equivalent to a constructor with no arguments to dispatch.
The solution is to make c an optional kwarg.