"Seven machines succeeded, one slept, one broke. That's three answers. Do not average them into one."
Nine machines, nine stories
A fleet-wide operation looks like one action, but it's really N independent ones running side by side. Each target has its own path through the state machine, its own events, its own ending. Treating the whole thing as a single success-or-failure throws away the one property that keeps fleet work sane: the machines don't share a fate.
The flattening lie
Say an upgrade finishes with seven hosts succeeded, one asleep and never started, and one failed. Flatten that to a single verdict and you get to pick your lie. Call it failed and you've cried wolf — seven machines are fine. Call it succeeded and you've hidden the wolf — one machine is actually broken. Either way, the number that matters is gone.
Three outcomes, kept apart
The honest shape keeps them separate: seven succeeded, one pending (a sleeping host is resumable work, not a casualty), one failed (a repair task with its own logs). Now the dashboard tells the truth at a glance, and each ending points at the right next action — nothing for the seven, wake-and-resume for the one, investigate for the other.
An isolated failure is not a campaign failure
Because targets are independent, one failed host becomes a repair task without cancelling the healthy peers mid-flight. The seven that were going to succeed still succeed. Only a genuinely systemic failure — the kind that suggests every remaining target will hit the same wall — pauses the unstarted work. One broken machine is a repair; a shared root cause is a stop.