Five problems
None of them is a commissioning problem
Each of these is something that goes wrong after the cells are commissioned and the safety case is signed, and each is answered by a rule rather than by a feature.
Every customer is a new cross-vendor integration
Mixed fleets get coordinated with bespoke glue code written per site and maintained by whoever wrote it. Here each vendor is an adapter written once against its own interface, and site-specific behaviour — zones, resources, rules — is configuration on the record rather than code in a branch.
Coordination software is one bug away from the safety case
Anything that can move a robot belongs inside the validated system. This layer sends tasks, missions and destinations through the interfaces vendors provide for that purpose, and has no code path that commands motion or touches a safety function — so adding it does not change what you validated.
A change to fleet behaviour goes live untested
A new rule, zone or charging policy is run in simulation against the customer’s own layout and recorded demand first, and it cannot be released until it has been. The release records which simulation it was approved against and who released it.
When something goes wrong, nobody can say what was sent
Every task sent to a robot carries the plan it came from, the state it was allocated against, the reason it went to that robot and the person who released the plan — and every refusal from a vendor system is recorded with the reason it gave. The record answers the question before the meeting starts.
Vendors report the same thing five different ways
Battery as a percentage, a voltage or a time remaining; a fault as a code or a sentence. Adapters map each onto one vocabulary and keep the original report beside it, so the customer gets one fleet view and a vendor engineer can still read their own data.