gen-cache-attic — typed cache-probe layer for the gen engine.
The engine consults a [CacheClient] for every derivation before
triggering a build. A hit short-circuits the rebuild; a miss flows
into the local builder. The trait is the swap-in seam: today's
prime impl is [NoCacheClient] (always reports miss); the
production impl is [AtticClient] (HEAD-probes the substituter
URL). Future impls (cachix, R2, S3) drop in without touching the
engine.