Reglas y estructura de la base de datos de Firestore para compartir documentos entre usuarios

Estoy tratando de crear una aplicación que permita a los usuarios colaborar en listas. Todos los usuarios deben ser invitados para poder trabajar en la lista.

Estructuré mis datos de esa manera (basado libremente enesta publicación de blog) También esta estructura se puede cambiar si es necesario.

list
  list_1:
    users:
      owner:
        [email protected]: true
      shared:
        [email protected]: true
        [email protected]: true
    id
    name
    items:
      item_1:
        id:
        name:
      ...

Lo que estoy tratando de lograr: todos deberían poder crear listas. El creador se convierte en el propietario de la lista creada. Solo el propietario y los usuarios del documento "compartido" deberían poder leer y escribir en esta lista.

Supongo que la configuración de permisos debería verse así. Pero esto no está funcionando:

service cloud.firestore {
  match /databases/{database}/documents {
    match /lists/{listId}/{anything=**} {
        allow read, write: if !exists(resource.data.users.owner) ||
                               resource.data.users.owner == request.auth.token.email ||
                           ,    request.auth.token.email in resource.data.users.shared
    }
  }
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta