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 · Cache source is private · 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
- A portable kernel tested on Node, Bun, and workerd
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 reviewed private 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
2 reads1 origin load
03 · Guarantees and costs
The boundary is part of the API
| Guarantee | Boundary made visible |
|---|---|
| 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
Local chaos demoSource-only evidence app
Elapsed TTL and graceIncomplete
Public packageNot released