Policy-driven fault management in distributed systems