I fail to see how this can work; the concept of 'already' is totally subjective due to latency. It is just as likely that the situation presented in that figure will shortly be resolved in favour of A2 and A3 as other users see that branch 'first' before B3.
You need an objective way to sort this out.
I guess OP would say B should
never witness both A2 and A2+, users are supposed to get
enough witness for A chain before considering a transaction confirmed.