Figured out how to do the protocol logging. I reproduce below. Does this make sense? I'm definitely touching the same message, but is the UID inconsistent?
This is a log of these actions:
* set a message that was read to not read
* Did a "get messages" to refresh. The status of the message went back to read.
<1672868499<DONE
>1672868499>130 OK Completed
<1672868499<131 uid store 451388 -Flags (\Seen)
>1672868499>131 OK Completed
<1672868501<132 IDLE
>1672868501>+ idling
<1672868514<DONE
>1672868514>132 OK Completed
<1672868514<133 noop
>1672868514>133 OK Completed
<1672868514<134 getquotaroot "INBOX"
>1672868514>* QUOTAROOT INBOX
134 OK Completed
<1672868514<135 UID fetch 451392:* (FLAGS)
>1672868514>* 4389 FETCH (FLAGS (\Seen NonJunk) UID 451391)
135 OK Completed (0.000 sec)
<1672868516<136 IDLE
>1672868516>+ idling
<1672868523<DONE
>1672868523>136 OK Completed
<1672868523<137 noop
>1672868523>137 OK Completed
<1672868523<138 getquotaroot "INBOX"
>1672868523>* QUOTAROOT INBOX
138 OK Completed
<1672868523<139 UID fetch 451392:* (FLAGS)
>1672868523>* 4389 FETCH (FLAGS (\Seen NonJunk) UID 451391)
139 OK Completed (0.001 sec)
<1672868525<140 IDLE
>1672868525>+ idling