Any cached value must have an explicit, testable “when does it become stale?” policy, plus a fallback path when updates may be missed.
Apply this as a checklist: 1) State the cache scope & dependencies: What inputs does this cached data depend on? (e.g., harness selection + auth secrets, repo path + embedding config, shared snapshot version, identity key/authorization) 2) Enumerate invalidation triggers (at minimum):
Example pattern (Rust-style pseudocode):
enum CacheState<T> { Fresh(T), Stale { reason: String } }
fn should_invalidate(reason_from_inputs: Option<&str>, integrity_ok: bool) -> bool {
!integrity_ok || reason_from_inputs.is_some()
}
async fn get_with_invalidation(cache_key: Key) -> Result<Value> {
let entry = load_cache(cache_key)?;
if should_invalidate(entry.integrity_ok == false, entry.dep_version_changed) {
invalidate(cache_key);
return fetch_from_source(cache_key).await;
}
// If push might have been missed or we’re not confident it’s current:
if entry.age > TTL || entry.last_update_suspicious {
return fetch_and_replace(cache_key).await;
}
Ok(entry.value)
}
Result: fewer “mysteriously stale” UIs, safer authorization handling, and consistent behavior across both local and remote/daemon-backed caches.
Enter the URL of a public GitHub repository