pub fn cache_namespace(phrase_json: &str) -> StringExpand description
Render, vet and featurize one term under phrase_json — the farm worker’s
entire job, and a pure function of its two arguments.
The phrase travels with the handshake rather than being reconstructed from
a default, so a farm worker can never measure φ under a stimulus the pool
was not measured under. A vet failure returns ok:false rather than
throwing: a quarantined draw is a normal outcome, and the engine consumes
its index either way.
want_audio decides whether the ~565 KB buffer comes back at all. The
engine’s own fill asks for φ only (its RenderPolicy::Lazy pool keeps no
audio at admission), so the flag exists to let the caller pay for audio
exactly where it will be heard — the first few patches, which are the ones
the user auditions while the rest of the bank lands.
The persistent render cache’s namespace for phrase_json, or "" if the
phrase does not parse.
Two rows may only be compared, stored or served under the same namespace:
it pins both the stimulus and auracle_features::RENDER_EPOCH, the
featurizer’s own generation. A build whose φ differs from the one that wrote
a row therefore cannot read it — the namespace simply does not match, so
there is no stale-row path to get wrong.
The store this keys is namespace → key → CachedFeatures. Dropping a
namespace is how a cache is invalidated, and it is the only correct
granularity: φ moving invalidates everything measured under the old φ.