
I haven't read the underlying proposals, so I apologize if the following is covered, but my understanding of the discussion is that the x.f notation is intended to disambiguate f to be a field name of the type of x and therefore be advantageous over "f x" notation where f is presently in the global namespace.
Here's another idea, I'm not sure if this one has come up before: f.x desugars as M.f x, where 'M' is the module that defines the type of 'x'. It's an error if 'x' is not monomorphic. You still can't have the same record name in two different records in the same module, but this way the record selector is monomorphic, and it's up to desugaring to find the defining module and if it's imported (I'd expect an error if not). However, I'd still want the prefix functional notation so it could be composed with other functions, and at that point, why have the postfix dot notation at all? Just say that '#x' requires a monomorphic argument, and desugars to 'M.x' where 'M' is the module that the type of its argument lives in, and combine as normal: (#y . #x) record. This way it's not even specific to records.