This document proposes an adaptive and power-aware algorithm called Lazy Shadowing to achieve high resilience in extreme-scale computing environments through forward progress. Lazy Shadowing associates each process (main) with a replica (shadow) that executes at a reduced rate. Upon a main's failure, its shadow increases its rate to complete the task. Compared to existing fault tolerance methods, Lazy Shadowing can achieve 20% energy savings with potential reductions in solution time at extreme scales. The key techniques of Lazy Shadowing are shadow collocation, where multiple shadows are time-shared on a single core, and shadow leaping, where shadows can benefit from mains' faster execution during recovery without extra overhead.