mesh_confirm_join
ChatGPTJoin only after explicit user approval of the prepared exact outing, using its unchanged intentId. Consumes no Mesh passes. joined/already_joined with receipt are the only booked outcomes. declined/expired/payment_required/no_longer_joined/invite_required are not booked. For unknown_outcome check get_join_status using the same intentId; do not create a replacement intent or claim failure/success.





