With a tie on the ORDER BY key, the row_number of 1 is any one of the tied rows, chosen by scan order, which varies per execution. Nothing needs to write for the answer to change.
SELECT cust_id, plan FROM ( SELECT cust_id, plan, ROW_NUMBER() OVER ( PARTITION BY cust_id ORDER BY updated_at DESC) rn FROM subs ) t WHERE rn = 1;
SELECT cust_id, plan FROM ( SELECT cust_id, plan, ROW_NUMBER() OVER ( PARTITION BY cust_id ORDER BY updated_at DESC, sub_id DESC ) rn FROM subs ) t WHERE rn = 1;
The customer's plan flickers between refreshes of the same table — the bug that can't be reproduced because both answers are consistent with the query.
Extend the ORDER BY to a unique key, and decide which row should win as a business rule, not a technical accident.
ORDER BY updated_at DESC, <unique_key> DESC