If I understand correctly, your declaration for type t is a standard variant definition, and is therefore not extensible. Instead, your .re file should contain:
and in the .rei file, you need to at least include the first line to export the fact that t is extensible:
type t('a, 'b) = ..
(* you can also include the constructor declarations of the .re file
if you want to make the constructors Top and Exact public.
type t('a, 'b) +=
| Top: ...
| Exact(string): ...
*)