Astilba Cache · Development preview
Cache expensive server work without hiding the hard parts.
Explicit invalidation, classified stale-on-error behavior, privacy-aware storage scopes, and a portable capability boundary for TypeScript runtimes.
No npm package · no supported production setup
01 · Fit
A server cache, deliberately
Fits
- Database queries and upstream API responses
- Related-value invalidation after mutations
- User or tenant data with explicit sharing rules
- Portable Node, Bun, and edge-runtime integrations
Does not fit
- Browser request caching or component state
- A source of truth for application data
- A supported production cache today
- Implicit sharing when identity affects the value
02 · Smallest honest path
A miss, one load, then a hit
The current source can exercise the portable kernel with a bounded in-memory store. Timing policy and production release gates remain incomplete.
- Read product:sku-123MISS
- Run loadProduct()ORIGIN
- Store encoded resultWRITE
- Read product:sku-123HIT
03 · Guarantees and costs
The boundary is part of the API
Soft and hard invalidation have different meanings.
Soft expiry may refresh or serve eligible stale data; hard deletion makes older values unreadable.
Origin failures are classified before stale data is reused.
Transient failures may qualify; facts such as 403, 404, and 410 remain visible.
Strong reads pay for live authority.
When coordinated invalidation is configured, a strong read checks the Registry before serving or filling.
Private dependencies make the rendered response private.
Response cache tags are emitted only when every managed dependency has readable public scope.
04 · Release state
Implemented is not the same as released
Correctness kernelImplemented
Driver contractsImplemented
Cloudflare pathSource preview
React Router pathSource preview
Elapsed TTL and graceIncomplete
Public packageNot released