Add `DurableCacheEvaluator`
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 44
- Forks
- 7
- Avg merge
- 17h 16m
- Merged PRs (30d)
- 13
Description
Extend the existing in-memory caching prototype with a durable backend so that expensive CallableModel results survive process restarts. Long-running ETL, training, and reporting workflows can then resume without redoing completed work, and repeated runs across sessions reuse prior outputs.
Semantically this is the same as the in-memory cache: a write-through, invalidatable optimization. A miss simply triggers recomputation. It composes naturally with the in-memory cache as an L1/L2 layer.
Behavior
- Pluggable storage backend (
diskcacheis a reasonable default; object storage is a useful follow-on). - Same identity / cache-key semantics as the in-memory evaluator.
- Standard cache controls: TTL, size limits, manual invalidation.
Open questions
- Identity and staleness. What goes into the cache key beyond model identity and context? Source hashing, explicit user-bumped versions, or a combination?
- Large results. Inline storage of multi-GB results is impractical. Should result types be able to spill to external storage and store only a pointer in the cache record, and how does that interact with the arrow/narwhals/pandas result types?
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading the existing in-memory caching prototype and its identity and cache-key behavior. Resolve the open questions around staleness, durable storage, large results, TTL, size limits, and invalidation before implementing the evaluator. Done means results survive process restarts while preserving the in-memory cache semantics and supporting an L1/L2 composition.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- backend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100