There is a problem with the alist->mapping! procedure in SRFI 146. As is normal in alists, earlier instances of a key take priority over later instances. When generating a mapping from scratch, there is no problem: if the association is not present, insert it, and if it is present, do not insert it.
However, when mappings are already partially populated, this won't work, because an association that is present in the mapping must be overridden when the first instance of the key is found, but not when later instances are found. So either the alist has to be preprocessed to remove duplicate keys, or some internal data structure is required to keep track of which keys have already been overridden. I think the extra time or space required for these actions would surprise the user.