Why generation fencing?

Without a generation, a runner that blipped offline can reclaim → lose the job → wake up → and still “succeed,” overwriting the winner.

Decision

Every reclaim bumps a generation. Heartbeats, status, and terminal events from an older generation are rejected. The superseded runner learns on the next heartbeat and stops cooperatively.

Consequences

Rejected alternatives

Skimmable story: design/fencing.html.