This is indeed not possible (and you would need to constraint 'b to a polymorphic variant that does not contain `Ok rather than a constraint-free polymorphic variants).
This is a deliberate limitation of the OCaml type system compared to the underlying theory. When objects and polymorphic variants were added to OCaml, the type system was deliberately designed to ensure that the complicated row type variables were never visible to the users.