Cache-key derivation from workspace state for haz.
The seam between haz-cache's pure cache-key serialisation and
the workspace state a key is derived from. [build_cache_key]
gathers a task's resolved inputs, its hard-predecessor stream
hashes, and its environment from the validated workspace, and
folds them into a [haz_cache::CacheKey]; [resolve_input_files]
exposes just the input-resolution step for read-only consumers.
The derivation is pure and synchronous (no tokio runtime), so
both the executor (haz-exec) and the read-only haz why
introspection path depend on this crate without either pulling
the other in.
[pattern_walk] is the shared path-pattern projection and
recursive filesystem walker that input resolution builds on; the
executor reuses the same walker for output materialisation.