Ultimately, my argument is that I want to set autojoin to false and for it to remain false, and not to be changed when I happen to join a room; obviously when it's now used in place of 'joined', that's unavoidable. But then, I never want to autojoin a room, so arguably that should be a client setting and the attribute is useless to me too.

I think you are a bit late to the party there.

Since years in Gajim, we don't expose the user to protocol details of bookmarks. We removed all mentions of bookmarks. No user does need to know the protocol details how a client syncs known chats. Why would a user need to learn what "autojoining a MUC" means when using Gajim.

I think your fear that this language change in the XEP makes your usage impossible is overblown.

What the XEP describes for me is a fair, common sense implementation, in absence of any advanced settings that your client may offer.

I think all your wishes can be implemented by a client who offers more control for that, call it "advanced multi device muc join settings".

Is this discussion maybe just a different opinion on what "SHOULD" entails?
When i read the RFC keyword definition, it seems ok for me that a developer offers settings that ignore this SHOULD.

I think there are valid use cases for ignoring the autojoin flag, or storing join information locally instead of syncing it to pubsub etc. and this SHOULD would not stop me implementing settings to satisfy such use cases.

Regards
Philipp