Do you really need to verify that A knows that B knows that A knows that B knows that A knows that B knows that A changed the value of X?
B needs to know that A changed the value of X. This is obvious.
A needs to know that B knows that A changed the value of X, because if B didn't get the message A needs to resend it. This one can not be avoided unless you assume the entire messaging pipe is perfect and can not loose messages.
But does B need to know that A knows that B knows that A changed the value of X? One can say that B needs to know when to stop sending ACKs, but is that really necessary? I say not! This is where the ACK chain stops!
B does not need to verify that A got the ACK. If A did not get the ACK, it will simply assume that B did not get the original message and resend it. B will receive the resent message, and will either recognize it already got it and do nothing or - if no such duplicate message recognition was implemented - will simply set the value of X again. No harm done. But in any case - B will send an ACK on the resent message.
A is the one responsible to make sure B get the new value of X. A needs to resend again and again - but B only needs to send one ACK for each message of A.