Very strongly recommended: Martha Wells: Artificial Condition: The Murderbot Diaries.
This is one scene: perhaps the best "tell, not show" scene I have read in a long time: Martha Wells: The Last Stand of the Four ComfortUnits of Ganaka Mining Pit: "In the corridor near the living quarters, I found the other ready room, the one for the ComfortUnits...
...Inside were four shapes that were clearly cubicles, but smaller. Their doors stood open, the plastic beds inside empty. In the corner there was space for a recycler, but no weapons lockers, and the storage cabinets were all different. I stood in the center of the room. The cubicles for the murderbots had been closed, not in use. Which meant none of the SecUnits had been damaged and all had been either out on patrol, on guard, or in the ready room, probably standing around pretending not to stare at each other.
But the cubicles for the sexbots were open, which meant they had been inside when the emergency occurred and the power shut off. If the power is off, you can manually open a cubicle from the inside, but it won’t shut again. It meant they had deployed during the “incident.”
I used the energy weapon in my arm again to power the first cubicle’s emergency data storage. I didn’t have anywhere near the energy needed to get the whole thing powered up, but the data storage box is for holding error and shutdown information if something goes wrong during a repair. (There are a lot of other things you can do with it if you’ve hacked your governor module, like use it to temporarily store your media so the human techs won’t find it.) SecSystem might have used it before its catastrophic failure. It had been used. But by the ComfortUnits, to download their data during the incident. It was patchy and hard to put together, until I realized the ComfortUnits had been communicating with each other.
I stood there for five hours and twenty-three minutes, putting the data fragments together.
There had been a code download from another mining installation for the ComfortUnits, supposedly a patch purchased from a third party ComfortUnit supplier. The ComfortUnits had all flagged it as non-standard and needing review by SecSystem and the human systems analyst, but the techs who had downloaded it ordered them to apply it. It turned out to be well-disguised malware. It hadn’t affected the ComfortUnits, but had used their feeds to jump to SecSystem and infect it.
SecSystem had infected the SecUnits, bots, and drones, and everything capable of independent motion in the installation had lost its mind.
In between the running and shooting and the humans screaming in the background, the ComfortUnits had managed to analyze the malware and discover it was supposed to jump from them to the hauler bots and shut them down. This would disrupt operations so the other mining installation could get their shipment to the cargo transport first. This had been a sabotage attempt, not a mass murder. But a mass murder was what was happening.
The humans had managed to get an alert out to the port, but it was clear help would not arrive in time. The ComfortUnits noted that the SecUnits were not acting in concert, and were also attacking each other, while the bots randomly smashed into anything that moved. The ComfortUnits had decided that taking SecSystem back to factory default via its manual interface was their best option.
ComfortUnits are more physically powerful than a human, but not a SecUnit or bot. They had no inbuilt weapons, and while they could pick up a projectile or energy weapon and use it, they had no education modules on how the weapons worked. They could pick one up, try to aim it, pull the trigger, and hope the safety wasn’t engaged.
One by one the file downloads had stopped.
One had signaled that it would try to decoy SecUnit attention away from the others, and three acknowledged.
One had heard screams from the control center and diverted there to try to save the humans trapped inside, and two acknowledged.
One had stayed at the entrance to a corridor to try to buy time to reach SecSystem, and one acknowledged.
One reported reaching SecSystem, then nothing...