New idea, room owner based:
A room can be in one of two states, “saved” and “not saved.” A room has a custom name/URL iff it is saved. A saved room is associated with a specific user’s account, who is considered to be the owner of the room. All objects spawned in saved rooms are persistent, with the resources for those objects (like disk) charged to the account who saved the room.
Unless overridden at creation time, a room starts unsaved and all objects spawned in the room are automatically deleted when the creator of the object leaves the room. At any time, anyone who is logged in may save and take ownership of an unsaved room via a HUD button.
When the room is saved, the saver is prompted to name the room. Once saved, all users in the room who have created objects are prompted if they would like to save their objects to the room or delete them. Until a user chooses save or delete, the contract for the objects doesnt change.
Once saved, a room will have an always-visible icon that describes the fact that the room is owned by user X and all objects created in the room will be saved to the room unless they are manually removed. This should also be disclosed anywhere natural such as the create object modal.
The only people who can delete objects in the room are the creator of the object or the owner of the room (ie the person who saved it.)
Eventually, the owner of the room can create a scene from the room.
This model has some positive aspects: it allows a natural transition from empheral to non-ephemeral, that is one way and global, it allows a single expert user to “drive”, it sidesteps some issues around ownership transfer and confusion around who owns the state, is a bit more clear since all objects are either persistent or not, and ties nicely into naming the room and accounts