I'm sure the merge is hinged on the primary key declared when the feature table is created. For this experiment I wrote the feature table first with only primary keys and then later added the features (~280), joined to the original primary key only dataframe, and wrote that using:

fs.write_table(

  name='dsci_features.ab_test',

  df=to_write_df,

  mode='merge'

)

The primary key are in the order they were originally written, they're also in order (customer id and observation date).