What "fact" means here

In DeepTap's model a fact is not a string. It is a structured claim with: the claim itself, the source URL, the section anchor, the extraction timestamp, the confidence prior assigned at extract time, the rerank score from the layer that promoted it, the firewall verdict from the inspection step, and the decay class chosen at deposit time. Facts are tenant-scoped; one tenant's cache is invisible to another, and the optional private corpus binding scopes them further.

This shape lets the next caller skip retrieval entirely when the cache holds a fact that answers the new query inside its decay window.

Decay schedules

Not every fact ages the same way. DeepTap classifies every deposit into one of four decay classes at deposit time:

Volatile
Minutes

Live prices, breaking news, current standings, anything that changes faster than a human can write a paragraph about it.

Fast
Hours to days

Active personnel, current product specs, regulation that is in flight, anything tied to a quarterly cadence.

Slow
Weeks to months

Architectural facts, signed agreements, published case law, anything that changes only on a clear event.

Permanent
Indefinite

Historical events, fixed mathematical relations, settled identity. Permanent facts age out only on explicit invalidation.

Cache hit behavior

When a query lands, the first pipeline layer hashes the normalized form, looks it up in the tenant-scoped cache, and checks every candidate fact's decay window. A hit means the rest of the pipeline does not run. The response envelope flags the hit so the caller can show provenance, and the credit cost reflects the cache-hit path rather than the full depth-1 cost.

A miss is honest. The cache short-circuits only when a fact is fresh enough to trust. Stale facts are evicted, not surfaced.

Cache invalidation

Three triggers invalidate facts: the decay window expires, a contradicting deposit lands with higher confidence, or the tenant calls the explicit invalidation endpoint. Contradiction handling logs the conflict so an operator can audit the chain. Explicit invalidation is the recommended path when a downstream system has independent ground truth that drift has not yet reflected in the cache.

What happens when a query has no useful cache hits

Same thing as a fresh query, plus a deposit step. The full seven-layer pipeline runs. Search fans out, extraction runs, the firewall inspects, rerank scores, and the surviving top-K facts deposit into the cache with the appropriate decay class. The next caller benefits.

Cache growth, illustrated

query 1 query 5 query 25 query 100 query 500 facts
Cache size accumulates fastest on early queries that touch fresh territory; growth bends toward saturation as overlap with prior queries increases. Curve is structural; specific shapes vary by tenant and corpus.

Why this matters

A search wrapper pays full cost every call. A knowledge engine pays the deposit once and reuses on every subsequent query that overlaps the same territory. Over a long-lived agent's lifetime the difference is structural, not marginal. The fact cache is the reason DeepTap calls itself a knowledge engine, not a search wrapper.