No, replacing firmware files is not viable.
Let me give you a practical example. In the course of SOF development, we routinely copy new test firmware+topology in the location of distribution-managed files. It's classic that when there is a distribution update in the background to install the latest SOF release, our test files are overwritten and it's not usual for developers to lose time trying to figure out why the functionality changed. We do need to have multiple paths and NEVER override what is provided by the distributions. it's the moral equivalent of /usr/bin v. /usr/local/bin.
Use /lib/firmware/updates/*. That precedes over the standard path /lib/firmware/*. (Also /lib/firmware/updates/$VERSION has even higher priority.)
thanks for the feedback Takashi, I had no idea this even existed :-)
The documentation is here: https://www.kernel.org/doc/html/latest/driver-api/firmware/fw_search_path.ht...
I guess that removes the need for udev rules to select the firmware+topology in simple cases, e.g. if you have only one custom version or an image overlay.