Hash definition and data tree into a stable cache key.
The definition is the identity of what we solve, so a binary definition is
hashed over its full content (fnv1aBytes) — a length-only or sampled key
would let two different .gh files collide and serve one's cached solve for
the other. .gh files are small enough that a single linear pass is
negligible. (Note this differs from stableStringify's sampled handling of a
Uint8Array found inside the dataTree, where sampling is a deliberate
per-solve perf tradeoff.)
Hash definition and data tree into a stable cache key.
The definition is the identity of what we solve, so a binary definition is hashed over its full content (
fnv1aBytes) — a length-only or sampled key would let two different.ghfiles collide and serve one's cached solve for the other..ghfiles are small enough that a single linear pass is negligible. (Note this differs fromstableStringify's sampled handling of aUint8Arrayfound inside the dataTree, where sampling is a deliberate per-solve perf tradeoff.)