Nobody calls it a stack failure at 4:17am. They call it a bad pick.
The line is behind. The wrong unit hit the station. Someone is already asking why the task cleared if the box is wrong. Nobody on the floor cares which layer feels technically innocent at that point. They care that the thing that showed up is not the thing that was needed.
Fabric stops sounding clean right there.
It stops being robot does thing, chain records it. Identity, task routing, permissions, verification, payment... once all of that sits in the same stack, the mistake stops belonging to one place.
Say a warehouse robot gets assigned a pick. Task comes through the scheduler. Identity clears. Access rights are valid. Payment conditions are attached. The machine follows the route, enters the right zone, scans, lifts, moves.
Then the result is wrong.
Wrong pallet. Wrong bin. Wrong timing. Maybe not even dramatically wrong. Just wrong enough that the downstream station is still waiting on the right unit while the wrong one arrives with a very beautiful audit trail attached to it. Payment logic may already be moving. Same-hour dispatch may already be gone. The floor is still holding the mistake.
So what failed?
That’s the ugly version. Half the stack can be locally right and the result can still be wrong.
Fabric's Task routing can pass along stale context. Permissions can allow movement into a situation that should have been blocked. Incentives push speed. And hesitation disappears exactly where hesitation was the only useful behavior left. Verification can honestly prove the machine did what the stack asked, while the stack itself asked the wrong thing.
That’s where the clean story breaks.

Fabric probably makes that temptation worse. The whole point is to make robotic work legible enough to coordinate economically. But once identity, tasking, payment, permissions all sit in the same place, the wrong move is never just a wrong move again. Somebody authorized it. Somebody priced it. Somebody routed it. Somebody verified it. Somebody paid for it. Not even the same somebody, half the time.
So blame starts spreading.
The robot vendor says the machine followed the route and respected the task envelope.
The task issuer says the job was formatted correctly when sent.
The verification layer says the trace matched execution.
The payment logic says completion conditions were satisfied.
The operator on the floor is still holding the wrong thing and trying to explain why the proof says done while the warehouse says not even close.
Not philosophical either. Somebody still has to book the loss, fix the line, maybe recount inventory, maybe stop payment, definitely explain why the stack settled a mistake faster than the floor could even describe it.
That’s when it gets messy.
Fabric can work technically and still produce a workflow where every layer is doing its own small part correctly and the combined result is a mess. Nothing obviously broken. Nothing easy to point at. Just a stack behaving exactly as designed and still delivering the wrong reality.
Shift lead gets pulled in. Manual recount starts. Somebody higher up is already asking whether payment should have moved before the warehouse even knew what was wrong.
Payment can move in minutes. The floor can still lose the shift.
That mismatch is the problem.
Not whether robots can move.
Who owns it once the stack already said done.