Elamur GroupantsโŒ•
โ˜ฐ

mova-serve-cache

The groupant beside tools/mova-serve/src/cache.rs in the Mova repository: what the code computes, what it never does, how to go back from its outputs, its invariants, cost and checks.

Facts

Implementation material. A Mova code model describes this code at one source revision: partial models, finite checks and their stated scope. It is not a reviewed general exposition, and its labels are shown as written, never raised.

Components

componentlabelwhere
ApproximantpartialApproximant
Astpartialsyntax.json
Costsymbolic source derivedCost
DescriptantpresentDescriptant
InvariantpartialInvariant
Testsexecuted bounded checksTests

Obernants

The typed relations around the forward model: the behaviour complement (what the code never does), the reverse reconstruction (every input compatible with an output) and specialised views.

relationtypelabelwhere
Behavior complementbehavior complementpartial source derived modelBehavior complement
Reverse reconstructionreverse reconstructionpartial source derived modelReverse reconstruction
Model presencemodel presencepartial source derived modelModel presence

Model text

Descriptant

A byte-bounded cache with W-TinyLFU admission (Einziger, Friedman & Manes 2017): a 1% window LRU, a segmented main LRU (probation 20%, protected 80%), and a count-min sketch of 4-bit counters halved every 10 ร— width accesses.

Approximant

insert โ†’ window; window overflow โ†’ candidate; admit iff freq(candidate) > freq(victim); get: probation hit โ†’ protected; protected overflow โ†’ probation.

Invariant

Bytes โ‰ค capacity after every call; each key in exactly one segment; the eviction order is a function of the call sequence (ticks, fixed seeds, ordered maps).

Cost

O(log n) a call; a sketch reset O(width) every 10 ร— width accesses.

Behavior complement

No expiry by time, no thread safety of its own (the caller holds a mutex), no doorkeeper filter.

Reverse reconstruction

top recovers the protected-first order of keys; the stats recover hits, misses, admissions, rejections and evictions.

Model presence

Cache::lru is the same structure with admission and the protected segment off: the negative control.

Tests

cache::tests: a one-off flood of 5 000 unique keys keeps all 20 popular keys under W-TinyLFU and evicts all 20 under the plain LRU control; the size bound over a skewed stream of 20 000 calls and two identical runs; aging after five halvings; oversized values refused.

Provenance

This page in Markdown โ†’ https://md.groupants.elamur.ai/free/en/mova/tools/mova-serve/src/cache.rs.groupant/