I’m not sure truly ‘done’ exists on systems that interact with other systems unless it’s an entirely closed loop.
I reckon closed-loop systems can be ‘done’ every bit as much as hardware systems can be if the design, debugging and implementation are disciplined enough.