During a BMC firmware update, a new object is created that includes the xyz.openbmc_project.Software.Version interface (https://github.com/openbmc/phosphor-bmc-code-mgmt/blob/dedcb9a6a4f5e756b1996e99a0a4e5e03b06d84c/image_manager.cpp#L221)
This interface plays a crucial role in listing all the firmware inventory using the Redfish GET request. (https://github.com/openbmc/bmcweb/blob/5db33d60ca6c3be2b799f5fd0fd311c37917fd70/redfish-core/lib/update_service.hpp#L843C23-L843C23)
However, when performing a firmware update and calling the GET request from /redfish/v1/UpdateService/FirmwareInventory The result list includes the new BMC firmware object, even though it is not yet active.
(In case the project uses PLDM for firmware updates, only active images will be listed in the result.) The behavior of including the new firmware object which is not active yet, in the result list, is the correct behavior ? I didn't found clear answer at DMTF documentation
It can be depending on your design. It is a firmware image you have installed on some local media and can discover, so it is valid to show that in your inventory. I do think it might be worth extending the firmware update white paper to help explain these different cases and design patterns so client have some idea of what they can expect. But at least in my opinion, what you're doing right now is acceptable.