A transaction's commit_timestamp can be set both by WT_SESSION::timestamp_transaction and by WT_SESSION::commit_transaction. In rare cases (such as when applying updates on a secondary), the commit timestamp can change multiple times in a transaction's lifetime.
We have an interface to query a timestamp earlier than any running transaction. This query should only apply to the first (and earliest) commit_timestamp set for any transaction. In other words, we must track the first supplied timestamp and keep it immutable until the transaction completes.