cache curate flow's LLM call by items content hash
ByItemsContent cache policy hashes the scored items text — when the
top-200 list hasn't changed, the briefing is served from cache and
haiku is never called. 4h expiration. drops the timestamp from the
LLM prompt so input is purely content-dependent.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>