The Adaptive Window, From the Ground Up

How Caffeine divides cache capacity between recency and frequency, and adjusts that balance as the workload changes. A guide to the design and its evidence for readers who know caching but are new to this controller.

Part I (§1–§4): the problem and the alternatives. What the window controls, why adaptation is hard, and what the original reactive climber already does well.

Part II (§5–§9): the controller. Each mechanism is introduced by the failure it prevents. Chapter 9 brings them together.

Part III (§10–§12): the evidence and the limits. Measurements, a diagnostic field guide, and a recap of the design.

Read one chapter at a time, or use Contents to jump. The expandable notes explain detailed decisions and their measured costs; you can follow the main explanation without opening them.

For a shorter first pass, read the cache layout (§1.2), the failure modes (§2.6), the controller map (§5), and the recap (§12).

1 · The problem: one knob between two philosophies

A cache is a bet about the future. Recency and frequency offer two ways to make that bet, and real workloads need both. In W-TinyLFU, one number controls the balance: the admission window's share of capacity.

1.1 Recency and frequency

Recency policies (the LRU family) bet that whatever was touched most recently will be touched again soon. That is the right bet for drifting working sets: a user session, a batch job walking a table, a queue's write-then-read rhythm.

Frequency policies (the LFU family) bet on whatever was touched most often, which is the right bet for skewed popularity: hot products, hot keys, the Zipfian head that dominates most production traffic.

Each bet has a characteristic failure. A table scan can flush an LRU's working set; a shift in popularity can leave an LFU retaining formerly hot keys at the expense of new arrivals. Real workloads expose both weaknesses. A database page cache serves popular pages and scans; a CDN node serves viral objects and one-shot crawlers.

the recency–frequency spectrum and the knob that moves along it recency drifting working sets frequency skewed popularity sessions, queues, batch scans hot keys, viral objects, the Zipf head most real workloads: both at once pure LFU fails here (drift starves behind stale reputations) pure LRU fails here (one scan flushes the working set) window (LRU) main (LFU-guarded) W-TinyLFU makes the mix one number: the window fraction, and this document is about choosing it
Fig. 1 — The tradeoff: each pure policy fails at the far end from its philosophy, and real traffic mixes both ends at once. W-TinyLFU turns the mix into one movable boundary.

Neither philosophy is shipped pure; each carries a bias and pays to correct it. TinyLFU is frequency-biased, so W-TinyLFU puts a small LRU window in front of it to buy recency back. Merlin (OSDI '26) runs the correction the other way, buying frequency back for its 2Q lineage with an epoch popularity sketch and a ghost queue. Caffeine's correction is a single number, and choosing it is this document's subject.

So the question isn't "recency or frequency?" but "how much of each, right now?" W-TinyLFU makes that a physical quantity: a budget of C slots, split between a space that serves new arrivals and a space that guards the established core.

1.2 W-TinyLFU in five minutes

Caffeine's bounded cache splits capacity into two spaces with different admission rules:

The TinyLFU admission filter connects them. When the window overflows, its victim becomes a candidate for main and is admitted only if its popularity beats main's next victim. Popularity comes from a frequency sketch (a 4-bit count-min sketch, halved every 10·C accesses so reputations age). The filter is what stops scans: a once-seen key loses the popularity contest, flows through the window, and never touches main. The aging is what stops drift. Two details matter later: the filter admits a slightly-losing candidate with small probability (jitter that breaks pathological deadlocks), and the sketch is an estimate by design.

W-TinyLFU anatomy window LRU · recency main (SLRU) · frequency probation protected new keys TinyLFU freq(candidate) > freq(victim)? the climber adjusts the window / main share of capacity (initially 1%)
Fig. 2 — W-TinyLFU’s anatomy. The window fraction is the one number that moves.

Movement is mechanical: new keys enter the window; window victims contest admission; admitted candidates enter probation; hits promote within main. An entry never moves between window and main on a hit. One number therefore controls the entire balance: the fraction of capacity that is window. At 1% the cache is nearly pure frequency; at 80% it is nearly LRU.

1.3 The knob matters

If the best fraction were roughly universal, a constant would do. It is not close. The chart below sweeps a fixed window across four real traces (no adaptation; every split is its own simulation): a looping scan wants no window at all and decays to nothing as one grows, corda is useless without a window and then plateaus, OLTP peaks in the middle, and the financial trace rises to a broad shelf. No point on the axis is good for everyone, and the spread between a trace's best and worst split runs from a few points to the entire hit rate.

hit rate vs fixed window size, four real traces loop @512 loop @512 · static 1% window: 49.94 loop @512 · static 5% window: 47.96 loop @512 · static 10% window: 45.40 loop @512 · static 15% window: 42.94 loop @512 · static 20% window: 40.37 loop @512 · static 25% window: 37.90 loop @512 · static 30% window: 35.34 loop @512 · static 40% window: 30.30 loop @512 · static 50% window: 25.25 loop @512 · static 60% window: 20.12 loop @512 · static 70% window: 15.10 loop @512 · static 80% window: 10.04 loop @512 · static 90% window: 5.01 loop @512 · static 99% window: 0.46 corda @1k corda @1k · static 1% window: 0.60 corda @1k · static 5% window: 1.18 corda @1k · static 10% window: 16.29 corda @1k · static 15% window: 32.37 corda @1k · static 20% window: 33.33 corda @1k · static 25% window: 33.33 corda @1k · static 30% window: 33.33 corda @1k · static 40% window: 33.33 corda @1k · static 50% window: 33.33 corda @1k · static 60% window: 33.33 corda @1k · static 70% window: 33.33 corda @1k · static 80% window: 33.33 corda @1k · static 90% window: 33.33 corda @1k · static 99% window: 33.33 OLTP @8k OLTP @8k · static 1% window: 57.44 OLTP @8k · static 5% window: 59.10 OLTP @8k · static 10% window: 59.62 OLTP @8k · static 15% window: 60.07 OLTP @8k · static 20% window: 60.28 OLTP @8k · static 25% window: 60.35 OLTP @8k · static 30% window: 60.44 OLTP @8k · static 40% window: 60.87 OLTP @8k · static 50% window: 61.06 OLTP @8k · static 60% window: 60.81 OLTP @8k · static 70% window: 60.66 OLTP @8k · static 80% window: 60.23 OLTP @8k · static 90% window: 59.61 OLTP @8k · static 99% window: 58.93 financial1 @32k financial1 @32k · static 1% window: 32.93 financial1 @32k · static 5% window: 35.86 financial1 @32k · static 10% window: 36.42 financial1 @32k · static 15% window: 36.67 financial1 @32k · static 20% window: 36.79 financial1 @32k · static 25% window: 36.92 financial1 @32k · static 30% window: 37.04 financial1 @32k · static 40% window: 37.32 financial1 @32k · static 50% window: 37.21 financial1 @32k · static 60% window: 37.14 financial1 @32k · static 70% window: 37.65 financial1 @32k · static 80% window: 37.71 financial1 @32k · static 90% window: 37.41 financial1 @32k · static 99% window: 36.83 the window / main balance, measured: four traces, opposite answers 0 20 40 60 1% 25% 50% 75% 99% static window, % of capacity →    loop @512   corda @1k   OLTP @8k   financial1 @32k
Fig. 3 — Hit rate under every fixed split, one simulation per point: every curve is a different answer, and the answers also move with cache size and with time.

Three consequences frame everything that follows.

That first consequence is the payoff for adapting at all. The reactive climber of §3 already collects most of it, so what this document adds is measured against that climber rather than against a static window.

1.4 Why this knob, and not another

Region sizing is not the only place adaptivity could live, and it is not a new place to put it. ARC (FAST '03) is the precedent: a recency list, a frequency list, and a boundary that moves toward whichever side its ghost lists say is starved. That is the same knob this document adapts, driven by a different signal (§4.4). The Middleware '18 paper on adaptive software cache management, which this design descends from, introduced the hill climber for W-TinyLFU and aimed it at two dials: the window size, and the frequency sketch's aging rate, where faster aging biases admission toward recency. Adapting the window was at least as good on every trace, so the sketch dial was dropped.

Later work mostly moved adaptation off allocation and onto a scoring constant or a global threshold. Cacheus (FAST '21) hill-climbs the learning rate behind LeCaR's expert weights, Hill-Cache (ICDE '24) the decay constant of an LRFU-style score, and Merlin (OSDI '26) adapts hotness and popularity thresholds. The pattern is structural. A constant or a threshold is an indirect dial, since its effect on the hit rate is mediated by the whole key population. Its response curve is workload-warped before the controller ever touches it, and it tends to need a correction of its own. Merlin carries a ghost queue because its thresholds misjudge hot and popular objects.

Caffeine largely gets the threshold question for free. TinyLFU admission compares two entries (the candidate against the incumbent victim) rather than testing either against a global score, so the admission bar self-adjusts to whatever the local contest is. What that leaves undecided is allocation: how much capacity each philosophy controls. That is a direct dial (move a boundary, capacity shifts), it is meaningful at every workload, and its units are the cache's own. So the region split is the knob, and everything else stays fixed policy.

2 · Why this is a hard control problem

The cache observes only the split it is currently using. Trying another split costs hits, and a later improvement might come from the workload rather than the move. These constraints make adaptation difficult even before we consider the shape of the optimum. The chapter ends with six failure modes that guide the design in Part II.

2.1 The terrain

Call the objective HR(w): the hit rate as a function of the window fraction, workload and capacity held fixed. The phrase "hill climbing" suggests a smooth peak. What the sweeps actually find (§1.3 showed real examples; the appendix has more) reduces to four recurring shapes, and each one defeats a different kind of algorithm:

the four terrain shapes an adaptive policy must survive A · a plateau with a cliff flat: nothing to find, motion is pure cost the only danger is concentrated here window size → B · a deceptive valley local signals rest here, self-consistently the peak is across a step local evidence cannot see window size → C · the peak can sit at either wall one workload's best is ~1% another's is ~LRU window size → D · and it moves this phase the next phase yesterday's peak is today's cliff, sometimes faster than sampling can see window size →
Fig. 4 — The four shapes, schematically. A, C and D occur in the real sweeps of §1.3 and the appendix; B is Fig. 4b below. No smooth concave hill appears anywhere in the measured corpus.
a deceptive valley in a real trace: P3 @152508 46 48 50 52 LRU 50.29 LRU 50.29 P3 @152508 · static 1% window: 48.16 P3 @152508 · static 5% window: 47.45 P3 @152508 · static 20% window: 45.72 P3 @152508 · static 40% window: 46.87 P3 @152508 · static 60% window: 49.48 P3 @152508 · static 80% window: 51.75 P3 @152508 · static 90% window: 51.15 P3 @152508 · static 95% window: 50.71 P3 @152508 · static 98% window: 50.55 peak 51.75 density rests here · w1.4 shipped climber 46.98 static window fraction (%)
Fig. 4b — Shape B in a real trace. P3 @152508: growing the window off 1% costs 2.4 points before it pays, and the payoff arrives only past 40%. The density controller rests at 1.4%, inside the valley; §5.3 shows why, and why the escape does not reach it.

In optimization terms, this is a zeroth-order problem: the cache observes the objective's value, but not its slope. That value is noisy, the curve changes with the workload, and each move has a cost. The next four subsections explain these constraints.

2.2 You only see the point you stand on

An optimizer would like to evaluate HR(w) at several w and compare. The cache cannot: it runs one split, on live traffic, and observes only what that split earns. Everything else is a counterfactual.

Each sample provides four cheap counters: total hits, window hits, probation hits, and misses. These do not reveal the derivative dHR/dw, or how hit rate would change with window size. There is no paired trial at another split, and comparing samples taken at different times mixes the window's effect with changes in the workload (§2.4).

The classic answer is ghost state: ARC keeps metadata for recently evicted keys, so a "ghost hit" says you evicted this too soon, and each ghost list acts as a gravitational pull on the split, the hope being that opposing pulls settle at the right equilibrium. Caffeine rejects this family deliberately. The reason deserves precision.

A ghost hit answers "would this key have survived?", but pricing a resize needs "would this allocation earn more?", and those differ in both directions. The region might have needed to be far larger than the ghost implies before that key survived, with everything displaced from the other region silently charged against the move.

The benefit of growing a region is not uniform: it can be near zero until the region spans a reuse distance, then large (shape B above), so the marginal nudge a ghost hit justifies never crosses the gap. Sometimes the right decision is even to shrink a region and accept its losses because the other side pays better; per-key gravity has no way to say so. §4.4 adds the measured half of this argument.

So the constraint stands: every measurement is taken at the current operating point, and moving the operating point is the only way to learn about anywhere else. Exploration and exploitation share one live cache.

2.3 Moving costs, and information arrives slowly

Three physical facts shape every design decision:

2.4 The noise: weather vs climate

The natural goal signal is the sampled hit rate, differenced across samples: did the last move help? The difficulty is arithmetic. A window step's true effect is often under one percentage point, while the workload's own sample-to-sample swing is ±1–3pp on quiet traces and ±10–20pp on phase-structured ones. The difference measures the weather, not the move: a step gets credit when the workload happened to improve and blame when it soured. Here is what that does to a competent goal-metric climber (the reactive climber, which §3 introduces in full) on flat terrain, where the correct behavior is to stop:

corda_large @ 8192 — reactive climber: the window wanders, and every move costs window as % of capacity sample hit rate % corda_large @ 8192 — reactive climber: the window wanders, and every move costs 0 20 40 60 80 100 every fixed window scores 33.3 sample number →    hit rate   % window  ·  22 samples; final hit rate 30.96, 2.4pp lost to churn on a flat curve
Fig. 5 — Chasing weather: on corda’s flat terrain the right move is to stop, but sample-to-sample weather keeps triggering restarts, and the motion costs 10.5 points. The failure is in the signal, not the tuning.

Averaging isn't an exit either: suppressing ±15pp weather takes long averages, which means reacting slower than workloads change. The noise floor and the drift rate squeeze the usable bandwidth from both sides. The shipped design's answer (§5) is structural rather than statistical: find a signal in which the weather cancels, and reserve the goal metric for the few decisions nothing else can adjudicate, taken slowly and behind noise-cleared margins (§7, §8).

2.5 There is no setpoint

Classical feedback control regulates toward a known target; a thermostat knows the temperature it wants. Here nobody knows what hit rate the workload permits, so there is no hit-rate target to regulate toward. A PID loop built around an assumed target accumulates an error whose zero need not be attainable or desirable. Earlier designs tried this and produced the worst results measured on the benchmark (−32 to −98pp on flat terrain); anti-windup did not rescue them.

The task is instead extremum seeking: search for an unknown, moving optimum by making changes and observing their effects. Each change carries the cost described in §2.3. The density controller in §5 does use a balance target, but that target is derived from regional measurements, not from an assumed achievable hit rate.

Why §5 turns out to be regulation after all

The disqualification above applies to the goal metric. It does not apply to the density error of §5, and the distinction is the whole design. The controller of §5 commands a change in window size and the cache accumulates it, so the plant is a pure integrator and the proportional law of §5.3 is integral action with a setpoint, namely error = 0. There is no second integrator to wind up because the plant is the integrator.

So the PID result was not "integrators explode here". It integrated HR − target, an error whose zero was invented, through a plant that already integrates: a biased signal driving a double integrator winds to a rail and stays, and no anti-windup variant can repair a wrong zero. The density error's zero is a physical balance condition between two measured quantities, so it has a true zero by construction. The move that worked was not "avoid regulation" but put the integrator on a signal that has a true zero, which is also why §4.2's failure does not generalize to §5.

The rest of the design also has established control-theory names. They matter when judging whether a proposed change preserves the mechanism:

Together these make the shipped machine an event-triggered, non-dithering extremum seeker, and that too is derivable rather than stylistic. Classical extremum seeking adds a continuous dither and correlates the output with it, paying §2.3's motion cost on every sample (corda: every fixed window 33.3, an always-moving climber 22.8), so intermittent, revertible, adjudicated excitation strictly dominates it here.

2.6 The failure-mode checklist

Compressing the chapter: any adaptive-window design must answer six failure modes. Their names recur through the rest of the document.

Six failure modes an adaptive-window design must answer
  #    failure mode the trap in one sentence answered in
F-1 Chasing weather crediting window moves for the workload's own swings, so the window follows the noise (§2.4's chart) §5: a within-sample signal in which weather cancels
F-2 Churn at a flat optimum terrain with nothing to find still charges full price for motion §5: proportional control settles to a zero step
F-3 Pinning while blind a starved region produces no signal, and "no signal" read as "no value" holds an extreme forever §6: starvation is declared, and triggers a real experiment
F-4 Confident wrongness the proxy's equilibrium is self-consistent, sighted, and wrong; no local evidence will dislodge it §7: scheduled audits judged by the goal metric
F-5 Amnesia the controller walks away from a position it measured to be good, and nothing objects §8: the anchor and the guard rail
F-6 Polluted bookkeeping events that are not capacity-earned usage leak into the counters and steer the sizing §9.3: signal hygiene

Two standing constraints ride along rather than being solvable. The lag limit: phases faster than the sampling cadence are invisible by construction, and the only goal there is to avoid catastrophe (§11). Run-to-run variance: on alternation-heavy workloads the outcome is basin-dependent, with identical runs landing ±8pp apart, which disciplines how this design is measured as much as how it behaves (§10.1).

3 · The incumbent: the reactive climber

Before the machine this document builds, Caffeine answered §2 with twenty lines of code, and for seven years that answer held. This chapter is that design on its own terms: what it is, why it works, the properties it turns out to have been providing silently, and where it breaks. It is not a museum piece. It still ships as the climber for caches up to 4096 entries (§9.1), it is the baseline every measurement in §10 is differenced against, and for a cache that wants adaptivity at minimal complexity it remains the design to copy.

3.1 A law from the goal metric

The Middleware '18 paper (§1.4) posed the window question and answered it with the most direct instrument available: finite-difference hill climbing on the hit rate itself. Caffeine landed that climber in February 2019 and shipped it in v2.7.0, and it sized the window at every cache size until the density tier arrived. The whole law fits in a box:

The reactive climber. Sample the hit rate over 10 · C requests. When a sample closes, compare it with the previous one: held or improved, step the window in the same direction again; worsened, reverse. Decay the step 2% per sample so the walk converges. And if the rate moved by five points or more in either direction, treat the workload as changed: keep the direction the comparison chose, but re-seed the step to its full 6.25% of capacity. The entire persistent state is one remembered rate and one signed step.
one sample, one decision: the reactive law sample closes ΔHR = rate − previous held or improved? the direction question yes → same direction no → reverse moved ≥ 5 points? the era question yes → re-seed step at 6.25% · C no → decay step ×0.98 move by the step the entire persistent state: one remembered rate, one signed step
Fig. 6 — One sample, one decision. Direction comes from the last comparison, magnitude from the era test; nothing else is remembered.

Each constant is doing a job, and none of them was derived: they were found empirically against the stress test in §3.2. The period borrows the admission sketch's own aging sample, ten times capacity: long enough that a 1% window's hits are countable, short enough that a workload era contains several decisions.

The 6.25% seed is 1/16 of the range, floored at two entries so small caches can move at all; sixteen unreversed steps cross the whole range. The decay is the convergence the original implementation added when the raw Middleware climber kept oscillating around the best split. At 2% per sample the step halves in about 34 samples, annealing on an era's timescale rather than a trace's, since the restart re-arms it.

The five-point restart bar sits above per-sample weather on quiet traces (±1–3pp, §2.4) and far below a genuine era flip, which is measured in tens of points. Below 512 entries the same law runs gentler (grow-first, stretched period, slower decay) for §9.1's statistical reasons.

3.2 What working looks like

Two runs, both real. First, OLTP at 2048 entries, in the tier this law still owns. The trace is recency-heavy and wants a window that W-TinyLFU's static 1% default refuses it:

OLTP @ 2048 — the reactive climber finds the broad optimum in ten samples window as % of capacity sample hit rate % OLTP @ 2048 — the reactive climber finds the broad optimum in ten samples 0 20 40 60 80 100 best fixed window 47.2 (at 20%) LRU 42.8 seeded shrink, refuted in two samples restart upward; the climb sample number →    hit rate   % window  ·  44 samples; whole-trace 46.4, where a fixed 1% window scores 42.3
Fig. 7 — OLTP @ 2048, the shipped tier: the seeded shrink is refuted in two samples, the restart re-arms upward, and by sample ten the window is inside the broad optimum. The wobble that remains is §2.4's weather.

Second, the stress test the original implementation was tuned against, recreated with the law as it ships. A cache rarely serves one workload for life: the classic pre-cloud rhythm was interactive traffic through business hours and batch analytics overnight, and the same shift happens slowly as an application grows features that share its cache. The test compresses that into a splice of two bundled traces, a transactional vault workload for the day and an analytical loop for the night, so the optimal policy flips from LRU to MRU and back. At 513 entries the two regimes could hardly disagree more. Corda matches LRU only with the window wide open (a 1% window scores 0.6 against LRU's 33.3), while the loop rewards a closed one (a 1% window scores 45.1 where LRU scores 0.0):

the stress test @ 513 — blockchain vault, analytical loop, and back window as % of capacity sample hit rate % the stress test @ 513 — blockchain vault, analytical loop, and back 0 20 40 60 80 100 corda: best fixed 33.3 = LRU loop: best fixed 45.1 (LRU 0.0) opens until it matches LRU loop enters: crash, restart one entry: the MRU regime corda returns: reopen sample number →    hit rate   % window whole-splice 39.3; composite per-phase optimum 41.0, LRU 11.6, best fixed window 29.0
Fig. 8 — LRU → MRU → LRU: the window opens until the rate locks onto LRU, snaps shut two samples into the loop era, and reopens when the vault returns.

This chart is the law's character in one image. It can be confused: the blips in the loop era are restarts kicked off by weather, each costing a sample or two before the walk re-converges, and the corda phases wander because at LRU parity every window ties. Its strength is that each move is checked against hit rate itself, and a large change restores a useful step size. In this test, those two rules let it recover after each transition.

The flips are deliberately more abrupt than typical production changes, making this a stress test of recovery. Merlin (OSDI '26) names this adaptation pattern as one its architecture cannot express. Every §4 family that swaps the goal metric for a proxy gives the property up somewhere, and §7 exists to buy it back.

3.3 What the law provided silently

Two of the law's load-bearing properties were discovered by the successor work, when removing them turned out to be expensive.

The reversal is the window floor. Nothing in the reactive law bounds the window from below except the cache's one-entry minimum; the 2% floor that protects the density tier (§5) does not exist here. It was never needed, because the reversal rule (the classic bold driver: keep stepping while the rate holds or improves, reverse the moment it drops) cannot sustain a run past a single worsening sample. Give the law more commitment (a noise band on the reversal, a longer period, a confidence gate) and the implicit floor silently goes with it. Measured, a banded reactive law walks corda's window to nearly zero, where TinyLFU refuses every new arrival against an established victim, and the hit rate falls 31.0 → 1.1. Any modification that lengthens a run must bring an explicit floor with it.

The restart is an era detector, and it re-arms magnitude only. Direction still comes from the comparison; what the restart buys is a step large enough to matter in the new regime, which is what both of Fig. 8's recoveries are made of. The same five-point constant survives into Part II's machine as its one definition of "the workload changed", read by a walk's crash bar (§6.4) and by the anchor's stand-down (§8.2).

Why not just give it a noise band? (the measured answer)

The obvious repair for §3.5's magnitude problem is a band: reverse only on a drop that clears the noise, so runs survive jitter. Built four ways, it is dead everywhere. Real traces: +0.16pp mean over seven cells, never closing the gap to the shipped machine. Constructed families: five of six lose, by 10 to 26 points. A band buys commitment, and commitment without an adjudicator is a direction chosen by early noise that nothing can revoke. The reversal is the never-persistently-wrong property, and a band spends it. What a committed walk needs is a verdict on the evidence, which is §6's machinery.

3.4 The scorecard, seven years on

The reactive climber is the baseline for §10's measurements. On the adversarial battery's 51 paired rows it is ahead of the shipped machine on 18; on 28, the machine's edge is under a point. On the real 205-cell corpus the machine wins significantly on 41 cells and loses on 9, everything else a tie, for a whole-corpus mean edge of +0.38pp.

Both directions are true at once: most workloads never needed the machine, and the ones that did, where a signal starves or an optimum sits across a plateau, needed it badly.

The reactive law's own real-trace losses have two shapes. Where frequency should own nearly everything, it hovers above the tiny optimal window and pays for the visit, occasionally landing under LRU. Where the optimum is far away at scale, it crawls (§3.5). On sharp frequency cliffs, meanwhile, it matches the static optimum that the density signal's bias gives away. One measurement hazard remains: on constructed traps its runs are bimodal, so a single-seed comparison reads near-parity and is wrong. Use three runs, or a seeded pair.

3.5 Where it breaks

Three failure modes, all instances of §2.6's checklist, all measured. They are the agenda for the rest of the document.

the three failures, drawn on the hill the law walks A · chasing weather the rate swings on its own every move is charged; there is nothing to find B · the one-bit crawl the optimum step ≈ 0, still climbing the sign is measured; the distance never is C · the plateau wall the better peak no better → reverse crossing requires samples that look no better hit rate (vertical) against window size (horizontal) · the walk · the optimum
Fig. 9 — The three failures, drawn on the hill the law walks.

3.6 Should your cache ship it?

For many caches, yes. This is the document's off-ramp. Below a few thousand entries it is not a compromise at all: it is what Caffeine runs today, because at those sizes a sample does not contain the information the density signal needs (§9.1). Above them it is still a pragmatic choice.

Twenty lines, one remembered rate, one signed step: a small implementation whose decisions follow directly from the hit-rate comparison. §3.5's prices are real, but they are collected mostly on adversarial constructions and at scales the tiering now assigns to the machine; on ordinary traffic this law is usually within a point of the best Caffeine can do (§3.4).

The larger controller spends additional complexity on the cases where this simple design falls short. For an implementation that stops here, two rules matter: measure any variant at three runs or more (§3.4), and if you extend the law's commitment, add the window floor its reversal was silently providing (§3.3). The following chapters explain the additional mechanisms and the evidence for their cost.

4 · The design space: seven families, and where each breaks

Most plausible answers to §2 were built and measured in this project's history. This chapter is the map: each family gets its idea, its virtue, and the measured way it breaks. The shipped controller is a composition of the survivors, so knowing why the others fail is what makes it legible.

4.1 Follow the goal metric: hill climbing

The most direct answer to "no setpoint, no derivative" is finite-difference hill climbing on the hit rate itself: §3's incumbent, taking its place in the design space as family one. Its virtue is §3.2's: it judges moves by the actual objective, and the restart renews exploration when the workload changes. The shipped design keeps it in two roles: as the small tier's law (§9.1) and as the probe machine's walker (§6.3). Its three measured failures are §3.5's: it chases weather and churns on flat terrain (F-1/F-2, corda's 10.5pp), it cannot cross plateaus, and it learns one bit per sample. The last is the disqualifying price at density-tier scale: the magnitude of an imbalance is discarded, so a window that should move 30% of the range crawls there in decaying coin-flip steps:

OLTP @ 37376 — reactive climber window as % of capacity sample hit rate % OLTP @ 37376 — reactive climber 0 20 40 60 80 100 LRU 72.0 sample number →    hit rate   % window OLTP @ 37376 — density climber grows the window deliberately window as % of capacity sample hit rate % OLTP @ 37376 — density climber grows the window deliberately 0 20 40 60 80 100 LRU 72.0 sample number →    hit rate   % window
Fig. 10 — One bit per sample: the reactive climber knows the direction but discovers the magnitude one decaying coin-flip at a time; the §5 controller reads the imbalance’s size directly. +6.9 points between the panels.

Verdict: keep the goal metric where its statistics work, in small caches (§9.1) and in bounded, committed experiments that must cross plateaus deliberately (§6 re-uses this walker with its reversal rule retuned for that job).

4.2 Regulate to a target

PID and its relatives presume an error against a setpoint, and §2.5 explained why none exists. Tried anyway, in several dressings, the integrator is the part that fails: fed a proxy error with no true zero it winds the window to a rail and keeps it there. The measured best was lag; the measured worst was the largest regression in the benchmark's history. Regulation machinery answers a different problem.

4.3 Learn a model

If HR(w) were a parametric curve, a controller could fit it from a few probed points and jump to the argmax. Fig. 3 is the refutation: plateaus, cliffs, and steps are not quadratics, so a parabola fit invents a maximum wherever the noise leans. The family also pays §2.2 twice: measuring each fit point costs an excursion plus settling time, and the workload drifts out from under the fit while you collect them. Measured: unstable jumps, no configuration that beat the simple climbers.

4.4 Ask the counterfactual: ghosts and shadows

ARC's ghost lists, and their scaled-up form (shadow-simulate alternative configurations, switch to the winner), are the only family that genuinely answers §2.2. Rejecting them was a considered decision, on three grounds. The §2.2 argument: a ghost hit prices a key, not an allocation, and allocation value is non-uniform, so per-key gravity neither crosses valleys nor authorizes profitable sacrifices. The cost: ghost metadata scales with capacity, charged to every deployment for the minority of moments adaptation binds. The measured record: the approach has not proven better. On a LIRS loop trace at small sizes the ghosts miss the cycle entirely and don't help; at larger sizes ARC improves only modestly on LRU. Ghost feedback can be a useful ingredient (Merlin uses ghosts to compensate its threshold adaptation), but as the load-bearing signal it buys little for its footprint, which makes the footprint hard to justify.

The shipped design's §6 machine is this family rebuilt without ghosts: instead of simulating the counterfactual in metadata, run it for real, briefly, under a budget, and undo it if it disappoints. Reality is the one simulator with no fidelity gap; its cost is bounded by discipline instead of memory.

4.5 Arbitrate experts

Run both philosophies as "experts", score them, switch or blend. Scoring an unplayed arm needs ghosts (§4.4); A/B-ing in time inherits the weather (§2.4); and switching churns state (§2.3). Measured, the switching was driven by noise rather than merit. A late, subtler variant (blending a goal-metric nudge into steering continuously, gated by a confidence estimate) was built and instrumented carefully enough to deserve its own autopsy (§8.3). It fails for a reason that generalizes: continuous authority granted to a noisy judge is authority exercised by noise. The shipped design grants the goal metric authority only in discrete, committed, adjudicated doses.

4.6 Classify the workload

Perhaps the split could be looked up: measure skew or reuse-distance shape, map to a window. Two measurements close the road. Online skew estimators showed no usable correlation with the optimal window across the corpus (recency demand is about the timing of reuse, not the popularity histogram), and near-zero skew readings actively mis-steered looping workloads. The project's standing rule came out of this: classify your signal, not the workload. Decide per sample whether each measurement is trustworthy, rather than which archetype the traffic resembles. The starvation bar (§6.1), the stillness clock (§7.3), and the noise-cleared margins (§8.1) are all signal classifiers.

4.7 Compare marginal values directly: density

The last family drops both the cross-time comparison and the counterfactual and asks a within-the-moment question: of the capacity I own right now, which region earns more per slot? If one region's slots out-earn the other's, capacity is worth more there. No memory, no model, no ghosts, and one decisive property, developed in §5: both regions are measured in the same sample, so the workload's phase affects both regions together, allowing that shared effect to cancel.

The limitations are just as important. The signal sees only residents (F-3 remains), and measures average rather than marginal value. Four attempts to measure marginal value directly each traded gains on some workloads for losses on others (§11.1). Density can also settle at a self-consistent but suboptimal split (F-4). Part II starts with density steering, then adds a mechanism for each limitation.

What the design keeps. Goal-metric climbing remains useful in small caches, probe walks, and audit judgments, where its noise and speed are manageable. Density comparison supplies quieter ordinary steering. The other families did not justify their assumptions, noise sensitivity, or storage cost in the measured designs. Part II combines the two surviving signals and addresses density's blind spots.
corda: grow the cache, lose hits corda vault service — grow the cache, and the old climber loses hits 29 31 33 35 density tier → LRU 33.3 — every fixed window ties on this flat terrain one shared law below the boundary density climber: converges to the ceiling reactive climber: each doubling costs more 512 1k 2k 4k 8k 16k maximum size (entries) →   — density climber  — reactive climber   dashed = LRU  ·  hit rate %, N=3, spread ≤0.01
Fig. 11 — On corda’s flat terrain (every fixed window scores 33.3) the reactive climber’s churn compounds with scale, falling across four consecutive cache doublings, while the density climber converges to the ceiling. §10.2 lists four more real traces where the reactive climber lands below LRU.

5 · The density controller

The steering heart of the design: compare what each region's slots earn within one sample, and move capacity toward the better earner. This chapter derives the signal, shows why the weather cancels out of it, sets its three constants, and then states plainly what it cannot do. The three things it cannot do are the next three chapters.

Part II at a glance. Density steering is the default. Each other mechanism activates only when the default signal cannot answer a specific question.
How the window climber chooses a decision path
conditionmechanismjudge
C ≤ 4096reactive climber (§3)hit-rate direction
ordinary large-cache sampledensity steering (§5)regional hit density
small region is starvedprobe walk (§6)density against the frozen displaced edge
position has remained stillaudit walk (§7)hit rate against a frozen reference
sustained shortfall from a proven positionanchor veto (§8)noise-cleared hit-rate margin
Chapter 9 follows one sample through these paths in priority order.
The vocabulary of Part II

5.1 The signal

A slot of capacity is worth the hits it produces, and within one sample each region's hits are counted directly. So each region has a hit density: hits per slot per sample.

dw = windowHits / windowSize        dm = mainHits / (C − windowSize)

If the window's density is the higher one, its slots are out-earning main's and the split should shift toward the window. If main's is higher, the window should shrink. Equal densities mean rest. The steering error is the log of the ratio,

error = ln(dw / dm)

taken as a log so that the two directions are symmetric: "the window earns three times main" and "main earns three times the window" become +1.10 and −1.10 rather than 3.0 and 0.33. The sign says which way the split is out of balance and the magnitude says how far. Two integer counters implement it.

One caveat belongs here rather than later. Density is an average yield per slot, and the economic goal is to equalize marginal yields. The two are not the same, and §5.6 measures the bias the difference introduces.

5.2 Why this signal is quiet

This signal has the property that decides the design: the weather cancels out of it. Suppose a rough phase scales every region's earnings down by the same factor α, unrelated to the split:

error′ = ln(α·dw / (α·dm)) = ln(dw / dm) = error

The common factor cancels. Changes in the cacheable fraction of traffic can affect both regions together; comparing their densities within the same sample removes that shared effect. This is the advantage over §2.4's comparison across samples.

Cancellation is only first-order. A phase that shifts reuse between short and long distances changes the ratio, as it should: the preferred split may have changed too.

The same corda trace that defeated the reactive climber, under this controller:

corda_large @ 8192 — density climber: converge and hold window as % of capacity sample hit rate % probe walk: sample 3, window 6172 (75.3%), hr 33.4%, rung 16 probe walk: sample 4, window 5660 (69.1%), hr 33.3%, rung 16 probe walk: sample 5, window 5159 (63.0%), hr 33.3%, rung 16 probe walk: sample 6, window 4668 (57.0%), hr 33.3%, rung 16 probe walk: sample 7, window 4187 (51.1%), hr 33.3%, rung 16 probe walk: sample 8, window 3715 (45.3%), hr 33.4%, rung 16 probe walk: sample 9, window 3253 (39.7%), hr 33.3%, rung 16 probe walk: sample 10, window 2800 (34.2%), hr 33.3%, rung 16 probe walk: sample 11, window 2356 (28.8%), hr 33.4%, rung 16 probe walk: sample 12, window 1921 (23.4%), hr 33.3%, rung 16 probe walk: sample 13, window 1495 (18.2%), hr 33.3%, rung 16 probe walk: sample 14, window 1077 (13.1%), hr 33.3%, rung 16 probe walk: sample 15, window 668 (8.2%), hr 33.3%, rung 16 probe walk: sample 16, window 267 (3.3%), hr 33.4%, rung 16 probe walk: sample 17, window 164 (2.0%), hr 33.2%, rung 16 probe walk: sample 18, window 164 (2.0%), hr 32.9%, rung 16 probe walk: sample 52, window 6570 (80.2%), hr 33.3%, rung 32 probe walk: sample 53, window 5546 (67.7%), hr 33.3%, rung 32 probe walk: sample 54, window 4543 (55.5%), hr 33.3%, rung 32 probe walk: sample 55, window 3560 (43.5%), hr 33.3%, rung 32 probe walk: sample 56, window 2597 (31.7%), hr 33.3%, rung 32 corda_large @ 8192 — density climber: converge and hold 0 20 40 60 80 100 fixed-window ceiling 33.3 sample number →    hit rate   % window   dots = probe-walk samples 57 samples (density samples 2.5× more often); final 33.01 corda → 5×loop → corda phase-shift stress @ 8192 — the density climber window as % of capacity sample hit rate % probe walk: sample 3, window 6172 (75.3%), hr 33.4%, rung 16 probe walk: sample 4, window 5660 (69.1%), hr 33.3%, rung 16 probe walk: sample 5, window 5159 (63.0%), hr 33.3%, rung 16 probe walk: sample 6, window 4668 (57.0%), hr 33.3%, rung 16 probe walk: sample 7, window 4187 (51.1%), hr 33.3%, rung 16 probe walk: sample 8, window 3715 (45.3%), hr 33.4%, rung 16 probe walk: sample 9, window 3253 (39.7%), hr 33.3%, rung 16 probe walk: sample 10, window 2800 (34.2%), hr 33.3%, rung 16 probe walk: sample 11, window 2356 (28.8%), hr 33.4%, rung 16 probe walk: sample 12, window 1921 (23.4%), hr 33.3%, rung 16 probe walk: sample 13, window 1495 (18.2%), hr 33.3%, rung 16 probe walk: sample 14, window 1077 (13.1%), hr 33.3%, rung 16 probe walk: sample 15, window 668 (8.2%), hr 33.3%, rung 16 probe walk: sample 16, window 267 (3.3%), hr 33.4%, rung 16 probe walk: sample 17, window 164 (2.0%), hr 33.2%, rung 16 probe walk: sample 18, window 164 (2.0%), hr 32.9%, rung 16 probe walk: sample 52, window 6570 (80.2%), hr 33.3%, rung 32 probe walk: sample 53, window 5546 (67.7%), hr 33.3%, rung 32 probe walk: sample 54, window 4543 (55.5%), hr 33.3%, rung 32 probe walk: sample 55, window 3560 (43.5%), hr 33.3%, rung 32 probe walk: sample 56, window 2597 (31.7%), hr 33.3%, rung 32 probe walk: sample 57, window 1653 (20.2%), hr 87.7%, rung 32 corda → 5×loop → corda phase-shift stress @ 8192 — the density climber 0 20 40 60 80 100 sample number →    hit rate   % window   dashed = per-phase ceiling corda ceiling 33.3 (flat: every window ties) loop ceiling ~99 (fits at 8192) corda 5 × loop corda
Fig. 12 — The same trace under the density controller: near balance the proportional step is ~zero, so flat terrain finally costs nothing (33.0 vs the reactive 22.8), and the splice’s regime changes re-read immediately. Dots are probe-walk samples (§6).

5.3 From error to step

step   = sign(error) · min( 0.30·C, |error| · 0.03·C )
window = max(window + step, 0.02·C)

This is proportional control: move hard when far out of balance, barely at all near it. The reactive law needed a decay to converge and a restart to re-energize; here both come from the error's own magnitude. Three constants, three rationales:

Where this rests, and the bias that follows from it

Writing the error in shares makes its resting place explicit, taking logit(p) = ln(p/(1−p)) for the log-odds:

error = ln( (Hw/Cw) / (Hm/Cm) ) = logit(hitShare) − logit(capacityShare)

So error = 0 exactly when capacityShare = hitShare: each region holds capacity in proportion to what it earns. That equalizes average value, and the optimum equalizes marginals, H′w = H′m, the classical condition for partitioning a cache (Stone, Turek & Wolf 1992). The step is proportional to a log ratio, so it moves multiplicatively on the capacity simplex, which is what makes the gain scale-free.

The gap between the two conditions predicts §5.6's give-back, sign included. On a concave hit curve average ≥ marginal; write g = A − M, which widens as the curve saturates. At rest the averages are equal, so the marginals differ by gmgw and the larger gap marks the over-allocated region. The window is an LRU serving tight reuse and saturates fastest, so the window is over-allocated. That is the typical measured 0.5–2.5pp given back on frequency-optimal traces, with larger witnesses recorded in §11, and closing it means steering on marginals. The machine already measures probation's, §6.4's frozen baseline, and uses it in the verdict; steering on marginals directly was built and measured, and §11.1 records the frontier that keeps the average form at the wheel.

The same lens explains shape B. A deceptive valley is a stretch where the hit curve is not concave, and there every first-order matching rule rests self-consistently inside the valley. F-4 is not a defect peculiar to this proxy but how local rules behave on non-convex terrain, and the textbook escape is the one §6 builds: large-amplitude committed excitation, since extremum-seeking stability is only local (Tan, Nešić & Mareels 2006). §6.3's escalating stride is that amplitude term.

Measured, the prediction holds and the escape does not. On P3 @152508 (Fig. 4b) the error crosses zero at a 1.4% window against an 80% peak, losing 3.59 points; on fiu_webmail @195466, 6.9% against 90%, losing 4.55. A unimodal control rests for 0.00, so the controller has arrived, in the wrong basin. §6's walk cannot help: it is gated on blindness, and these windows are not blind. P3's earns two orders of magnitude above §6.1's bar; it is a low-quality earner rather than a silent one, and the bar counts hits, not precision, so no corner is declared. §7's audit is inert on the class. §11.1 carries this as the limit's open half.

5.4 What "earned nothing" may mean

The formula divides by earnings, so a region that earned nothing needs a rule of its own, and this corner held two real defects. The obvious guard, a tiny ε in place of zero, is the wrong one. Against a starved region, ln(dw/ε) is an error of about twenty nats, the strongest command the controller can emit, and a handful of stray hits on the other side is enough to buy it. The repair gives the signal's two consumers different floors. For steering, a starved region's density is floored at an eighth of the starvation bar spread over the region, so "earned nothing" is priced low rather than infinitely low. The probe verdicts of §6 keep the ε form, because they only run behind a bar that guarantees real signal.

The measured damage, and the surviving asymmetry

In an otherwise-dead sample (a pure scan phase), six stray window hits produced a +17.4-nat error and a full 30%-of-C step. A background trickle of 0.019% of requests, riding a victim's own scan phases, steered the window from 3% to 48% of the cache and cost the victim 8.3 points; at a 0.4% dose, 9.6 points. With the steering floor both doses measure flat.

One asymmetry survives deliberately: when main earns exactly nothing while the window earns anything, the error is enormous and the window balloons toward its structural maximum. That is a chosen prior: a region earning something takes everything donatable from a region earning literally nothing, and it is what rescues the cache when a scan has filled main with dead weight. Workloads that repeatedly black out main for a few samples pay ~1.2pp per episode for it, measured far above LRU throughout; the family built to trigger it on every other regime prices the prior at ~8pp against the static ceiling, and §11 carries that entry.

5.5 The sample period

Each decision consumes a sample of 4·C requests. Shorter periods allow more decisions but produce noisier densities; at 2·C, verdict noise prevented measured escapes. Longer periods leave finite traces with too few decisions. Four capacities per decision is the measured compromise.

The period is also capped by the sketch's aging period, which counts entries rather than bytes, so a byte-weighted cache cannot inflate it by its mean entry size. Elapsed time depends on capacity and request rate: adaptation may take minutes or hours in production. Sampling is a by-product of maintenance, so these decisions add no work to the request path (§9.3).

5.6 What this signal cannot do

With the virtues and debts on the table, each of the next three chapters pays one debt: starved-and-wrong gets the probe machine (§6), sighted-and-wrong gets the audit (§7), and "the controller optimizes a proxy" gets the anchor and guard rail (§8).

6 · The probe machine

Where the density signal admits it cannot see, the climber runs a real experiment. It walks the window for a bounded time, judges the result against the alternative at its true price, and undoes everything unless the walk clearly won. The state machine below is the whole shape; the rest of the chapter takes each transition with the workload that breaks without it. The stakes are the design's first requirement: without this machine, pure density steering can park about 28 points below LRU on a constructible workload and never leave.

Probe machine states DENSITY proportional step · floor REFRACTORY count blind samples; hold WALKING goal-driven stride · budget 16 base remembered CONFIRMED rung=1 · density holds the band blind corner, waiting refractory expired → launch fail/crash/budget: UNDO, rung×2 (crash: no doubling) adjudication confirms if starved again later (cheap re-probe)
Fig. 13 — The probe machine’s states. An audit (§7) enters the same WALKING state from a different trigger and judge.

6.1 Declaring blindness

A region is starved when its hits in a sample fall below the bar, max(4, requests/1024): one hit per thousand requests, floored for short samples. The constant was calibrated, not guessed. Trapped regions measure about two orders of magnitude below it, while floor-sized windows on frequency-bound traces earn comfortably above it. The bar is a signal classifier in §4.6's sense. It asks "is this measurement meaningful?", never "is this workload recency-ish?"

One fact shapes everything after. No threshold separates "starved because trapped" from "starved because the workload has no recency to offer". The two overlap on every resident-only statistic tried, per-entry reuse flags included; from inside the cache they look identical. That is why what follows runs experiments instead of computing a smarter predicate.

6.2 When to probe: starved and small

Starvation alone does not trigger a probe. The rule is the blind corner: probe only when the starved window is small. A window starved at a quarter of capacity or less probes upward; a sample in which both regions are dead probes away from the nearer wall, splitting at half. A large starved region needs no probe, because the other region's density already says what to do, and probing on its behalf is destructive. The scar behind that rule: a scan fills main, main earns nothing, and a naive rule concludes that the small, hard-working window should be raided mid-scan. An early variant lost double digits on corda to that logic.

A starved main beside a large window arms nothing either. At that wall the ratio can only point upward, so the window cannot move, stillness accrues by construction, and the audit of §7 owns the re-test. A probe once armed at that corner; it confirmed onto positions main could not price, and deleting it read as a gain or a tie on every cell where it had fired. Small-and-starved is the only corner where nobody can see and nothing else will look.

6.3 The walk

Inside the corner, control reverts to the goal metric. The walker is §3's climber, brought back for a bounded walk with its weaknesses patched for this job in three ways.

The machine remembers its launch point, and undo means returning there, step-capped with the remainder carried across samples. While a probe's aftermath cools down (the refractory), blind-corner samples hold still entirely. Falling through to a steering step during that hold was how the stray-hit trickle of §5.4 once bought its oversized steps.

6.4 How a walk ends

A walk can end through a crash, a reversal back past its launch point, its budget, or adjudication (Fig. 14). A crash compares the current hit rate with the rate frozen at launch: how much has the walk lost overall? A reversal compares the current sample with the previous one: did the last stride hurt?

These comparisons measure different things, so their thresholds need different treatment. They share a threshold only where both are based on the same estimate of sample-to-sample scatter. Only adjudication can keep the new position.

the four ends of a walk A · adjudication, the verdict launch watched region earned 4× the bar: confirmed → kept, ladder resets (deepens if steering reverses it) B · reversal launch a stride that hurt past the bar flips the driver re-crossing launch → failed C · crash launch rate fell past the crash bar undo now; a second in a row escalates the owning ladder D · budget launch ··· nothing else fired for 16 samples undo sample number →  ·  the line is the window's position  ·  dashed = the launch position
Fig. 14 — The four ends of a walk; only adjudication renders a verdict, and the sixteen-sample budget guarantees an ending when nothing else fires.
Crash: the rate falls below the launch rate by the crash bar. Undo now. One crash retries gently; a second consecutive crash escalates like an ordinary failure, on the crashing layer's own ladder.
Pricing the crash bar: scatter, depth, and persistence

Probe damage and a workload shift are indistinguishable at a single crash, so the retry price stays gentle (no backoff doubling) for one. A shift moves the rate once; a probe whose own damage crashes it does so on every attempt, so the second consecutive crash escalates on the walk's own ladder: audit crashes count on the audit layer's streak and rung, starvation crashes on the probe machine's, because on the shared form three exogenous pulses, paired with three lone audit crashes, drove the machine to the deepest rung and a 130-sample stand-down at the floor.

A starvation probe's bar is priced against the workload's own scatter: three measured deviations, floored at 5pp and capped at 15pp. Unpriced, weather aborted the walk that is a blind corner's only exit, and uncapped, all-blind workloads whose scatter is enormous let damaging walks roam; the cap keeps a real collapse aborting. The deviation is read live rather than frozen: the walk's own transient lifts the bar for as long as the walk is exposed to the weather.

An audit's walk keeps the absolute 5pp in depth (every depth pricing traded real-corpus basin cadence for constructed prizes), capped at 15% of the rate frozen at the arm. The cap exists because the threshold is a level test: a workload earning less than 5pp in total can never trip it, leaving a walk that halves the hit rate bounded by nothing but its budget (arc_S3). The cap binds only where the launch rate is under a third and is inert everywhere above it, so it narrows the bar where the absolute one is vacuous, the opposite of the pricings that died. The audit also prices persistence in time. A first audit crash aborts on its first below-bar sample, like a starvation probe. The retry of an equilibrium that already crashed one audit tolerates two below-bar samples, holding its committed direction at a decayed stride while the dip is adjudicated, and aborts on the third. Two samples of tolerance cross the terrain valley that a one-sample abort made an absorbing horizon (the moat family: the far bank is one stride past where the abort fired, at every rung), and they absorb one-sample pulses. A sustained collapse still aborts at 5pp, and a first abort stays cheap everywhere, since tolerance on every walk made short traces pay for longer failed excursions.

Reversal: a sample-to-sample drop past the reversal bar flips the bold driver, and a reversed walk that would cross back past its launch point ends there as a failure rather than walking out the far side.
Pricing the reversal bar, and the noise it must survive

The cross-back rule exists because one noisy blip once converted an up-probe into an unterminated down-walk that ground the window to a single entry. A starvation probe's reversal shares its crash bar, both being priced from the same live scatter. An audit's reversal takes the same 15% of the larger of the frozen rate and the noise band, under the same absolute 5pp cap: a difference test must never be priced below the noise it has to survive, and a reversal through base is charged as a completed failure (it doubles the audit ladder and its wait), so a bar the noise can trip is expensive. Priced by the level alone it was: on the give-back sentinel that exposed it (shieldtrap) the bar measured a median 0.28 deviations, and one walk died to a 0.17-deviation sample at a 14.4% window that, held, confirms at 56.4%. The level is not a new constant: 15% of the three-deviation band is 0.45 deviations, with a measured cliff at 0.5, so do not re-derive it. The absolute cap is what keeps the noise term out of the widening family every dead audit-bar candidate died in (§11).

Budget: sixteen samples, then undo and fail. Nothing else is guaranteed to fire; the crash exit is arithmetically dead when the base rate is under 5%, so without a hard budget an unlucky walk was a liveness hole.
Adjudication, the one ending with a verdict. Once the watched region has earned enough to judge, four times the bar, the verdict is rendered. An upward probe confirms only if the grown window out-earned, per slot, probation's density as it was frozen when the probe armed; the frozen density is scaled to the current sample's length first, since the two come from different samples. A confirmed position is kept and the retry ladder resets. If steering reverses the position in the same sample, the walk kept nothing and the ladder deepens instead (§6.5). Anything else, including "no better, no worse", is undone in full.
Why probation, why frozen: five designs, and the one priced trade

That verdict took five designs, and both of its choices are load-bearing. Why probation: follow a window-grow through §1.2's geometry: the quota comes out of protected, protected overflow demotes into probation, and probation expels its coldest tail. Probation's edge is what the grow displaces, so it is the true price. Why frozen: the walk contaminates its own evidence, since its demotions push warm entries into probation and enrich the live rate while the walk runs, so a live comparison becomes a veto that always says no.

Judging against main's average (the obvious simpler form) vetoes winning positions because the average is dominated by the protected core the grow never touches: a family of modest-reuse-band workloads sat 14–17 points below its achievable rate under that verdict, and three other trap families traded the same way. Judging against live probation was demonstrated to be absorbing on a construction with a protected-saturating hot core: the live variant pinned at the floor with zero confirmed probes ever (58.9) while the frozen baseline escapes (67.2). Freezing means the snapshot can be stale by walk's end; accepted, because every re-arm re-snapshots, so the error heals on the next attempt instead of compounding. Downward probes keep the plain average test (a window is one LRU; its edge is its average). "Neutral must fail" exists because an early version that kept no-better-no-worse positions let steering walk the window home and the probe re-fire, forever. The one priced trade: on a bistable low-hit-rate synthetic whose probation concentrates the reuse band, the frozen baseline vetoes an escape the sloppier average form occasionally confirmed by luck; no real-trace echo across the defended set, kept as a named sentinel.

In short, a walk ends by crash, reversal, budget, or verdict. The first three undo it. Only the verdict can keep it, and only against the price the walk actually displaced.

6.5 Strays, and escalating commitment

The subtlest mechanism resolves a real dilemma. When the window grows, its ledger fills with hits that are not evidence. Transferred hits come from probation entries that a grown boundary relabels as window entries, so their ordinary traffic now counts as the window's. Stray hits come from the extra slots incidentally catching re-touches the window deserves no credit for. Both grow with the window's size while their density stays low, so a deep walk manufactures its own earnings. Against a fixed adjudication trigger this cuts both ways. Where the small window is correct, strays trip the trigger early and the probe exits cheaply, which is right. Where the small window is a trap, the same early trigger fires one stride short of the reuse band, the verdict fails on stray-quality evidence, and the trap becomes absorbing. No single exit rule wins both cases; four rule families were measured onto this tradeoff.

Escalating commitment keeps early attempts cheap while giving repeated failures a way out. The first probe may stop at its first judgment opportunity.

A failed verdict deepens the retry rung: 16 → 32 → 64 samples, and incurs the corresponding refractory wait. A confirmation immediately reversed by steering also deepens the rung, without that wait. Crash endings follow §6.4's separate rule.

The deeper rungs require at least two, then ten, samples before adjudication can end the next walk. This commitment carries the probe beyond the stray-hit zone. It applies to confirmations as well as failures: an early confirmation on stray evidence would reset the ladder before the walk reached useful territory.

On the measured steady trap, this escalation produces an escape in about three rounds, roughly 100 samples. A workload whose floor is correct does not escalate far enough to pay the deep-walk price; its retries become rarer. Exempting confirmations from the minimum depth had a measurable cost: a long-trace escape fell from 53.3 to 38.7.

A confirm can be reversed because the two prices differ. The verdict compares the grown window with the probation it displaced; steering compares it with main's average, which the protected core dominates. When the window out-earns a thin probation edge but not the core, the verdict keeps the position and steering walks it home in the same sample. That round kept nothing, so the ladder counts it as a failure. Rewarded instead, the probe would repeat at the first rung and never commit a walk past a band that a first-round stride cannot reach.

One full episode, on a constructed reuse band behind a wide stray zone:

straywall @ 8192 — flat stride (pre-change): every deep round stalls in the wall window as % of capacity sample hit rate % probe walk: sample 1, window 163 (2.0%), hr 26.3%, rung 16 probe walk: sample 2, window 675 (8.2%), hr 28.8%, rung 16 probe walk: sample 36, window 163 (2.0%), hr 36.0%, rung 32 probe walk: sample 37, window 675 (8.2%), hr 37.8%, rung 32 probe walk: sample 38, window 1176 (14.4%), hr 37.2%, rung 32 probe walk: sample 39, window 1667 (20.3%), hr 36.3%, rung 32 probe walk: sample 40, window 2148 (26.2%), hr 35.4%, rung 32 straywall @ 8192 — flat stride (pre-change): every deep round stalls in the wall 0 20 40 60 80 100 LRU 57.5 sample number →    hit rate   % window   dots = probe-walk samples straywall @ 8192 — rung-scaled stride : the deep round clears the wall window as % of capacity sample hit rate % probe walk: sample 1, window 163 (2.0%), hr 26.2%, rung 16 probe walk: sample 2, window 675 (8.2%), hr 28.8%, rung 16 probe walk: sample 36, window 163 (2.0%), hr 36.6%, rung 32 probe walk: sample 37, window 1187 (14.5%), hr 37.1%, rung 32 probe walk: sample 38, window 2190 (26.7%), hr 35.6%, rung 32 straywall @ 8192 — rung-scaled stride : the deep round clears the wall 0 20 40 60 80 100 LRU 57.5 sample number →    hit rate   % window   dots = probe-walk samples
Fig. 15 — Escalating commitment on a reuse band behind a wide stray zone: flat strides stall inside the wall (top); rung-scaled strides punch through, and the verdict confirms on real evidence (bottom).

6.6 What it adds up to

The probe machine is §4.4's family rebuilt without ghosts: it doesn't simulate the counterfactual, it briefly becomes it, on the real cache, where measurement has no fidelity gap. Every discipline above bounds the cost of that experiment: arm only where the incumbent signal has recused itself, walk under budget, judge against the frozen true price, undo everything short of a confirmed win, and pay for repeated failure with patience instead of damage. On workloads that never trap, the whole machine amounts to a few shallow walks per era, measured on the real corpus as a ~1pp premium on three cells and nothing elsewhere. The premium is small because the payout is rare and large.

7 · The audit

The probe machine fires where the signal admits ignorance. The harder case is a signal that is sighted, settled, and wrong: every region earning above the bar, share-matching satisfied, and the cache resting on the wrong shelf of the terrain indefinitely. Since no resident-only statistic can detect this state, the design stops trying to detect and periodically tests: long-held positions get re-examined by the same walk machinery, judged by the goal metric.

7.1 The failure the starvation guard cannot see

Anatomy of a sighted false equilibrium. Take a mostly frequency-friendly workload plus a reuse band that needs a ~20% window, and add a thin stream of nearly-immediate re-reads: about 0.17% of requests. The trickle is served by even a floor-sized window, so the window earns ≈0.0017 × requests per sample, just above the starvation bar of ≈0.001 × requests. No starvation, no blind corner, no probe. The reuse band's entries die unseen in a 2% window (§5.6), share-matching is satisfied, and the cache runs 9 points below LRU forever while every local test passes. Nothing about the shape is exotic: a heartbeat, token checks, any tiny immediately-re-read fraction produces the sighting stream. The same arithmetic also arises naturally at scale, because absolute earnings grow with C while the bar tracks the sample, so the trap family that probes rescue at 8k re-pins quietly at 32k and above.

7.2 The audit contract

7.2.1 When audits arm

The audit. An audit becomes due when the positional-stillness counter reaches its current wait, normally 32. At the next eligible decision, it starts the §6 walker toward the farther wall. Each sample adds one to the counter when the window differs from its previous sampled position by no more than 2% of capacity; a larger move subtracts one, down to zero (§7.3).

The first audit after a start or a resize is a cold-start calibration, due after only four still samples. It uses §6's strides and crash, reversal, and budget exits, with the audit's own thresholds from §6.4.

The audit keeps its own rung and crash streak, separate from the starvation probe's. Only a completed failure at the deepest rung doubles the wait between audits, up to 512 samples. A settled workload is therefore re-tested less often.

7.2.2 One walker, two contracts

Both triggers drive the same walker, so the two are easiest to read side by side. The strides, the exits and the budget are shared; the arming, the pricing, the judge and the retry schedule are not:

Where starvation probes and audits differ
contract starvation probe (§6) audit (§7)
arms when the starved region is the small one the stillness counter reaches its wait: normally 32, or 4 after a (re)size; movement of at most 2% of C counts as still (§7.3)
direction away from the wall the starved region is pinned against toward the farther wall, alternating between audits; a park's first audit follows the walk that confirmed it while the claim stands
crash bar
level, vs the rate frozen at the arm
the live scatter, clamped to 5–15pp 5pp, capped at 15% of the frozen rate
reversal bar
first difference, vs the previous sample
the same bar 5pp, capped at 15% of the larger of the frozen rate and the scatter
crash tolerance aborts on the first below-bar sample the same, except a retry after a crash, which tolerates two and aborts on the third
judged by density, once the watched region earns 4× the starvation bar: against probation's density frozen at the arm growing, against main's average shrinking the goal metric, after a committed depth of five samples: four consecutive raw samples over the frozen reference plus the 1% margin, and at least one sample that beat the walk's own start
on a confirm keep it, plant the anchor, reset the ladder (deepen it if steering reverses the position at once, and park if that reversed confirm came at the deepest commitment with the goal metric's confirmation); steering resumes keep it, plant the anchor, and park, since density disagrees with the position by construction
on a failure undo in full; the refractory doubles 16 → 32 → 64 and the next walk commits deeper (2 samples, then 10) at scaled strides (×2, ×4) undo in full; the wait doubles toward 512 only on a completed failure at the deepest rung, and a crash never moves it

Both are bounded at sixteen samples, and the two ladders are strictly separate: an audit's endings never deepen the probe machine's rung or streak, and a starvation confirm leaves the audit schedule untouched.

The schedule's fine print: direction, calibration, ordering, cadence

Direction. The walk alternates at interior positions. A park's first audit is the exception: it follows the walk that confirmed the park, while the park stands and the smoothed rate has held within a restart threshold since the confirm, because a confirm ends a walk on evidence of improvement rather than on its exhaustion. A direction with less than one stride of room is refused: a walk sent into a nearer wall clamps on its entry stride, stands still for the rest of its budget, and that information-free expiry would be priced as a failed experiment, doubling both the refractory ladder and the audit clock.

Why the calibration arms at four. A sighted false equilibrium pins from its first sample, and waiting the standard clock spends most of a short trace motionless while the reactive tier would have been exploring from sample one; the mixture trap's entire deficit against it was this prefix. Every later wait uses the standard clock, and the schedule belongs to the audit layer alone: a starvation probe's confirm leaves it untouched, because the landing that confirm validates is density's opinion, which is what an audit must not take on faith. (That confirm once reset the schedule to the standard wait, spending the calibration before the first audit ever ran and handing the §7.3 position jam a 32-sample bar that ordinary burstiness can keep breaking; the same cross-subsystem latch shape as the fresh-park shield's, §8.2.) The priced cost has two parts. One is an early misconfirm window on a steadily rising workload, since a trend clears any raw streak (regimeramp ~−1.3 once the walk-beats-start gate recovered part of it, bounded by the shield plus the next audit). The other is the calibration's exploration on short traces whose escape came from a starvation probe (mixture d025 ~−0.9, still above LRU with a steady state 3 points over). The prize on sighted traps is the whole prefix (mixture stock +18.7, to above the reactive arm).

Ordering. An audit may also arm from a blind-corner sample the probe machine would otherwise spend holding. The blind-corner gate outranks the goal-metric branches, which is right for the guard rail (it adjudicates a shortfall on the starved sample) and wrong for an audit (it adjudicates over the samples that follow). With the audit ordered beneath the gate, a corner that never cleared sat motionless through its whole refractory while the clock said the position was due.

Cadence. The audit's endings neither deepen the starvation machine's ladder (which sets that machine's stride and commitment), nor re-arm its refractory, nor inherit its escalation. An unconfirmed audit retries on its ladder's cadence; a crash, lone or streak-escalated, keeps the cadence at any rung, because deferring the retry is what an exogenous pulse train would want.

7.2.3 Why hit rate judges the audit

One question decides whether audits work: who judges the walk? The first implementation reused the probe's density verdict and failed in the most instructive way in this project. On a wide-window equilibrium the audit walked the window from 80% of the cache down to 20% with the hit rate rising the whole way, and density failed the walk at depth five. The failure was structural: the audited position is density's own attractor, every step away registers as imbalance, and so the signal being audited also decides the audit. A proxy cannot adjudicate the re-examination of its own opinion.

The audit verdict. Audits are judged by hit rate. Confirmation requires all three conditions:

The reference is the smoothed rate of the position the walk leaves, frozen when the audit starts. Freezing prevents the walk from changing its own benchmark. Without confirmation, the walk exhausts its budget and undoes its movement, unless a crash or reversal ends it earlier.

The anchor's claim serves a different decision: whether the guard rail should return to a previously proven position. Using that claim to judge an audit could demand a hit rate from a workload regime that has already ended.

The audit measured against the anchor's claim, and what it cost

The claim was the reference for as long as an anchor was planted. It re-syncs to the live rate only while the window stands on the anchor, so a claim planted before a regime shift that lands with the window elsewhere outlives the regime that earned it, and every audit armed away from the anchor was judged against it. On the constructed witness the audit walked from a 23% hit rate to a 53% wall, sat there for ten samples, and failed at budget against a claim of 58% (31.2 against a 54.1 ceiling at 128 samples). On a real cloud-physics trace a claim planted while the cache filled held the confirm off a genuine prize and the walk ran past it to the floor (44.1 → 46.1 with the reference it leaves). Measured against the rate it leaves, the witness reads 48.5, sixty of the sixty-eight battery rows are bit-identical at eight seeds, and the rest move by 0.2 or less, or by a redraw. The alternative, discarding the claim on a swing that lands with the window still, is dead: the terrain's own collapse at the position a retreat left the window on is a still swing too, and there the claim is the memory the rail recovers the prize with (see the anchor rules below).

How the verdict was priced, and the misconfirm the beats-start gate closes

The bar is deliberately not priced by the rate deviation the way the rail's is. The deviation is workload-scale while the effect an audit resolves is the window's 1–10pp marginal contribution, and a deviation-priced confirm measured inert on every real cell of a 32-trace corpus: bars of 4.3–62.4pp (median 20.7) against 1–10pp effects, the 1pp floor binding on none, with instrumented walks measuring real +5.4pp and +11pp gains and rejecting them. A consecutive run prices the bar by run-length statistics instead. That is a sensitivity gain of roughly 2–3×, not noise-independence: the walk offers about a dozen overlapping chances, so a neutral position under symmetric scatter still leaks confirms at a material rate, and the priced costs on trending openings are this exposure. But the streak needs the positional gain to clear only the per-sample noise trough rather than three deviations, and raw samples carry no smoothing lag, so a confirm lands at the position that earned it. The asymmetry with the rail is intentional, since a false confirm self-heals at the next audit while a false veto churns the anchor continuously.

Why the streak alone is not enough. The reference is an absolute rate, and it can be older and colder than the walk it judges. That is sharpest for the cold-start calibration audit: it arms while the cache is still filling, so the anchor still carries the rate earned cold, every post-warm-up sample clears it, and the streak completes on the warm-up ramp alone, confirming whichever position the walk had reached by then. On a stationary control whose optimum is a 1% window, the first audit confirmed a 32.6% window while the raw hit rate was falling, and the landing spot is structural rather than incidental (the floor plus five 6.25% strides, about a third of the cache; measured at 0.326, 0.327, 0.344 and 0.361 across four independent constructions). The repair is a necessary condition rather than a re-pricing: the walk must match or beat its own starting sample at least once (inclusive and margin-free: a saturating arming sample makes a strictly-greater bar unsatisfiable, which silently disabled later confirms on a cadence sentinel). Re-pricing was tried first and trades: lifting the streak's bar to the arming sample, or to the smoothed rate, costs 2.5pp on a noisy escape, because a streak against a noise-inflated bar is fragile while a one-shot "did this ever help" gate is not. The separation is wide rather than marginal: the escapes beat their starting sample by 11.7–33.7pp, while the cold-start misconfirm never beats it at all (−0.18pp).

7.2.4 What the audit buys

Sighted false equilibrium. The whisper pin, the §7.1 shape built as a trap, converts from 9 points below LRU to 2 above it (55.5 → 66.8 against LRU's 64.6). The streak verdict buys the escape, and the cold-start calibration removes the pinned prefix.

Hit-rate weather. The escape survives rate modulation that defeated the earlier deviation-priced verdict. Under ±8pp of modulation the audit still reaches approximately LRU (65.2 at period 12, 64.5 at period 6) where the reactive climber reaches 59.4. A deeper dose crosses the audit's crash bar once, and §6.4's crash-streak tolerance repairs that to within half a point of LRU. The mixture family under the same modulation clears LRU on every seed (48.0 → 56.6 against 55.3), and the at-scale pins escape as far as each trace lets the ladder escalate.

Real corpus. On real traces the layer is neutral insurance on average (−0.03pp) and decisive on a few cells. On one cloud-physics cell (cp_w097 at 16k) the audits are worth 3.3 points, and the machine still finishes 3.2 behind the reactive climber there, because its confirms land at high windows, around 56% and 26%, rather than at the broad 5–15% static optimum. §11 separates that recovery from the steering bias it cannot repair.

Layer ablation. Across the 52-row constructed battery, removing the audit costs about 21 points for every one it returns (268 points lost over the 31 rows it helps, 13 regained over the 16 it hurts, worst single row 2.4). The gain is concentrated: without the audit, all eleven whisper, jam and pulse-train rows collapse to about 55.5, and the at-scale mixture pins collapse to 31–35. The rows it hurts are already far above LRU, and those losses are the duty-cycle price carried into §11.

Reading rule. Do not credit the bimodal-alternation battery mean to this layer. With N=8 and the arms rotated the audit is roughly inert there; the density tier produces the value on those rows.

the sighted false equilibrium — before and after the audit whisper @8192 · held pin (no audits): 55.5 whisper @8192 · with equilibrium audits: 64.07 LRU 64.57 mixture d025 @32768 (length-extended) · held pin: ~31 mixture d025 @32768 (length-extended) · with audits: 55.75 LRU 59.9 mixture d025 @65536 (length-extended) · held pin: 31.95 — zero probes ever fired mixture d025 @65536 (length-extended) · with audits: 51.70 the sighted false equilibrium — held pin vs the audit escape 0 20 40 60 80 55.5 64.1 whisper @8192 31.0 55.8 mixture d025 @32768 · long 32.0 51.7 mixture d025 @65536 · long no audits · with audits · dashed = LRU the 65536 cell carries no LRU anchor; it narrows a −27pp gap to the reactive climber to −8pp, ending mid-escalation
Fig. 16 — Results when the audit layer was introduced. Audits lift the whisper construction from 9 points below LRU to approximately LRU; the larger constructions recover as far as their trace lengths allow the retry ladder to progress. Later changes raise whisper to 66.8, about 2 points above LRU's 64.6 (§7.2.4).

7.3 The clock counts stillness of position

The clock behind "32 still samples" carries a lesson from hostile review. The first clock counted calm: samples without a big rate swing and without a big commanded step. Both halves are the wrong observable. A periodic crash-scale rate swing that arrives faster than the wait, which bursty traffic can produce innocently, zeroes a calm-based clock forever and disables the layer built to catch confident wrongness. And "no large commanded step" confuses the controller's requests with the cache's state: a position held against discarded commands, which is what the guard rail produces, is a held equilibrium worth auditing. The repaired clock counts positional stillness only. Samples whose actual window stayed within the band accumulate, and rate events never touch the count. It is a band rather than a point because held equilibria orbit; the transfer geometry alone keeps the window wiggling.

A later hostile review taught the same lesson from the other side. Positional stillness with a hard reset is an observable an adversary can drive too. A count that zeroes on any move past the band never completes if the window can be made to move once per wait, and density commands such a move for a modest earnings imbalance, a factor of about two between the regions (eband/gain). A whisper construction that merely modulates the delivery of its trickle, with the same volume, the same optimum, and LRU and every static window unchanged, held the count at zero on 121 of 122 samples and pinned the climber 8.9 points below LRU, at the audit-free value. It still jammed with ±50% jitter on the burst timing, so this was not an alignment stunt.

So the repaired clock decays by one on a moving sample instead of resetting. A mostly still workload still accumulates toward its audit, while a window that moves on at least half its samples, real motion rather than a held orbit, never accumulates. That half-motion threshold is analytic rather than realizable. Measured 50% and 67% motion cadences fail to jam, because steering does not hold a clean partial alternation, and the decisive control is that the audit-free arm outscores the layer there, so the layer is inert rather than suppressed. That leaves motion on every sample, aligned to the grid, as the only starving cadence (§11). The decay of one per moving sample is what the recovery rests on. The burst cadences that recover do so because the calibration audit gets a foothold, parks, and the park's own stillness sustains the audit cycle.

The companion repairs, and the ablations that prove each is needed

After a confirmed probe that density keeps, the retry ladder resets so re-probing is cheap (phase alternation depends on it), unless the confirm only re-finds ground the ladder had already confirmed and lost, which deepens it instead. An audit inheriting that reset would re-arm within a sample or two, so the audit retry is floored at the initial refractory (16 samples). On the periodic-swing construction the defended value is 63.7 against an undisturbed control's 63.8, and disabling either the positional clock or the retry floor alone gives the broken 55.2 back.

The position jam had a companion of its own: the starvation confirm's schedule write (§7.2) had already raised the wait to 32 before the first audit could run, which is what made "break one run per wait" cheap: one super-band move per 32 samples, no alignment required. Each repair recovers a different cadence of the attack (the schedule fix alone recovers the jittered burst, the decay alone the period-2.5 burst) and only together do they close every unaligned variant (56.0 → 66.4/66.5 against a 66.9 dose-matched control). The residue is the sample-aligned every-sample jam, which no consecutive-run clock survives; §11 carries it as a limit with a known study direction, priced with the grid's other alignment exposures.

8 · Memory: the anchor and the guard rail

The controller optimizes a proxy, so something must remember what the goal metric has actually witnessed and refuse to stand anywhere measurably worse. That memory is one remembered position with one remembered claim, plus the discipline that bounds the claim. Most of this chapter is that discipline; each rule answers a specific measured failure.

8.1 A place worth defending

Two failure shapes demand the memory. Share-matching's rest point moves with the traffic mix, so the controller can walk away from a better position that remains available (F-5). And a probe- or audit-won position can be quietly dismantled, since an audit's win is, by construction, a position density disagrees with. Measured concretely: a hot co-tenant occupying ~10% of main makes the walk home look density-balanced while the victim's rate falls.

The anchor records a proven window position and the smoothed hit rate earned there; that rate is its claim. The controller also tracks the current smoothed rate (≈5-sample memory) and its mean absolute deviation (MAD). The deviation starts wide, at 5pp, so a cold cache cannot veto early.

The guard rail returns the window to the anchor when the current position has earned measurably less. While away from the anchor, a smoothed rate below its claim by max(1pp, 3·MAD) for four consecutive samples triggers a return, using capped strides and a small budget. On arrival, the window parks.

The return also tests whether the claim is still valid. The claim is frozen when the return commits. At the end of the two-sample settle, a smoothed rate still a margin below that claim causes the controller to discard the anchor, release the hold, and re-seed its rate estimates. The rail supplies a return decision, rather than continuous steering.

One dynamic looks like a bug and is not: the margins widen just when the rate moves. A real step change feeds its |Δ| into the same deviation estimate that sets the margins, so for the first several samples after any step the rail and the ratchet hold fire, and they engage as the smoothing settles, typically after 5 to 10 samples. At the moment of a step, "the workload changed" and "the noise got louder" are the same observation. Acting before the two can be told apart is how §2.4's weather-chasers were built, and the scenario tests pin this lag on purpose.

8.2 The lifecycle

Each rule below closes one way the memory could lie: a claim seeded on transient evidence, a claim that outlives its regime, a return that proves nothing, or a paid-for position quietly dismantled.

In short, the anchor is planted only on evidence earned at rest or by a confirmed walk. It is re-synced while stood on, moved only on a cleared gain, discarded only by a crash at home, and defended by a veto whose return must re-earn the claim it acted on. What a swing, a blind corner, a shortfall, or a due audit does to each of these holds is tabulated mode by mode in §9.2.

the goal-metric layer's states STEERING density step · anchor ratchets AUDIT WALK probe machine · goal-metric judge VETO RETURN capped strides back to the anchor PARKED hold at anchor · clock runs still ≥ auditWait confirm: plant anchor, park fail: undo, retry on ladder sustained shortfall arrived: park crash-scale shift releases the hold; near-anchor crash discards the claim; own re-tests exempt
Fig. 17 — The goal-metric layer around the §6 machine: stillness accumulates toward audits, confirms plant the anchor (audit confirms also park), and a sustained shortfall vetoes back. A crash-scale swing releases holds, discarding the claim only when it lands nearby; the machine's own re-tests (a park's audit walk and retreat, a veto's return until its retest) are exempt.
trap families before and after the goal-metric layer periodic-swing construction (burst) · before: 55.2 periodic-swing construction (burst) · after: 63.7 undisturbed control: 63.8 10%-share co-tenant · victim before: 57.4 (broken-density strawman 55.5) 10%-share co-tenant · victim after: 59.6 undosed victim: 64.1 (in-trace static ceiling 67.7) phases d050 @8192 · pre-layer mean: 47.0 (bimodal family, N=5) phases d050 @8192 · with the layer: 51.9 mean (N=8, range 45.0–60.5) LRU 72.2 — the lag-limit family; a fixed window wins by never moving widepin @8192 · pre-layer: 45.1 widepin @8192 · with the layer: 54.9 mean over N=8 — still bimodal (basins ~44 / ~56), bar ≥50 holds LRU 71.8 trap families — before and after the goal-metric layer 0 20 40 60 80 55.2 63.7 rate-swing jam 57.4 59.6 co-tenant victim 47.0 51.9 phases d050 45.1 54.9 widepin before · after · dashed = the cell's reference (control, undosed victim, or LRU) phases and widepin are bimodal families; means over N=8
Fig. 18 — Trap families before and after the layer: the rate-swing jam fully closed, the co-tenant recovery partial by design, and the alternation families still far under LRU; that distance is §2.3’s lag limit, not this layer’s target.

8.3 Why hit rate does not continuously steer

If the goal metric deserves a veto, why not a vote? Blend a reactive step into density steering continuously, weighted by a confidence estimate, and let the two signals share the wheel. It would even dissolve a tier boundary. The blend was built and measured twice, once in the main line and once in a parallel instrumented study with pre-registered predictions, and it fails on three independent grounds that generalize beyond it.

These results explain the separation: density supplies ordinary steering, while hit rate guides bounded walks, judges audits, and triggers returns to the anchor.

9 · The assembled machine

This chapter is the maintainer's view: how size selects among three regimes, the full decision flow of one sample, where the numbers physically come from, and what the whole thing costs. Nothing new is designed here; it is the previous five chapters bolted together.

9.1 Size is a parameter: the three tiers

Everything in §5–§8 describes caches above 4096 entries. That controller is the density climber, named for its steering signal; in full, the goal-audited density climber, since density steers, probes rescue the blind corners, and the goal-metric layer audits what density cannot judge for itself. Below 4096 the reactive climber of §3 ships unchanged, and below 512 it runs with gentler tuning. Together they are the window climber, the one class that ships. The tiering follows from statistics rather than hedging. Adaptation quality depends on how many informative decisions a cache gets, and both the information in a sample and the price of a move change with C.

the three tiers by maximum size 512 4096 small reactive law, gentle: grow-seeded, slow decay standard reactive law (§3, ships unchanged) density tier the goal-audited density climber: density steers · probes rescue · audits re-test maximum size C →
Fig. 19 — One climber per size class. The chapters before this one describe the density tier; the two smaller tiers ship §3's reactive law.
one climber per size class: reactive vs density-everywhere vs the tiered design slowall loop@404: 38.80 stockall loop@404: 39.45 dall loop@404: 38.46 slowall gli@252: 14.55 stockall gli@252: 14.54 dall gli@252: 12.47 slowall cs@563: 33.42 stockall cs@563: 33.42 dall cs@563: 32.46 slowall OLTP@2048: 46.38 stockall OLTP@2048: 45.88 dall OLTP@2048: 47.14 slowall corda@37446: 27.06 stockall corda@37446: 27.06 dall corda@37446: 33.33 slowall OLTP@37376: 64.76 stockall OLTP@37376: 64.79 dall OLTP@37376: 71.73 one climber per size class: reactive vs density-everywhere vs the tiered design 0 25 50 75 100 38.8 39.4 38.5 loop@404 14.5 14.5 12.5 gli@252 33.4 33.4 32.5 cs@563 46.4 45.9 47.1 OLTP@2048 27.1 27.1 33.3 corda@37446 64.8 64.8 71.7 OLTP@37376 slowed reactive · reactive · density — each forced at every size; full opacity marks the winner (±0.5); N=3
Fig. 20 — Each law forced to run at every size; full opacity marks the winner. The large end is unambiguous at +6.3/+6.9, the small end is the mirror argument in a quieter voice, and the boundaries sit where these measurements cross.

9.2 One sample, end to end

The shape of one decision, in priority order; the full annotated listing is in the fold:

every maintenance cycle, after eviction:    // BLC.climb() → WindowClimber
  if sampleRequests < period: return        // period = min(4·C, sketchSample)
  if C ≤ 4096: reactive climber             // §3, §9.1
  else:
    crash stand-down on |ΔHR| ≥ 5pp         // release holds (§8.2); a crash
                                            //   near the anchor discards the
                                            //   claim; own re-tests exempt
    bookkeeping: smoothed rate · anchor     // §8.1–§8.2
    walk in flight → its endings            // stride / crash / reverse /
                                            //   adjudicate (§6.4, §7.2)
    undo or veto-return in flight → continue it
    blind corner → hold, or arm a probe     // §6
    sustained shortfall vs anchor → veto    // §8.1
    audit due → arm an audit                // §7.2
    parked → hold
    otherwise → the density step            // §5, the default
  stillness clock ticks; commit the step
The full sample, annotated
every maintenance cycle, after eviction:  // BLC.climb() → WindowClimber
  if sampleRequests < period: return      // period = min(4·C, sketchSample)
  hitRate = hits / requests
  if C ≤ 4096: reactive climber (§3, §9.1)
  else:
    bar   = max(4, requests >> 10)        // §6.1
    error = ln(d_w / d_m)                 // ε form, for probe verdicts
    span  = requests / frozenRequests     // §6.4: same length for both
    verdict = probeDown
      ? error                             // down-probe: average test
      : ln(d_w / (frozenProbation·span))  // up-probe: §6.4
    if |ΔHR| ≥ 5pp and not (shielded or parkTest or returnTest):
      // crash stand-down (§8.2); parkTest: the park's own audit walk;
      // returnTest: its retreat, or a veto's return until re-tested
      release any park or veto-return; discard the anchor only if
      the crash landed within its band (far crash = the rail's own
      evidence), and a discard re-seeds the smoothed rate + deviation
      from the next sample (§8.2); the audit clock is untouched (§7.3);
      a park stays shielded for one initial audit wait after its confirm
    update smoothed rate + deviation            // §8.1
    update the anchor: seed at rest; re-sync on-anchor; ratchet on
      margin-cleared improvement                // §8.2
    if probing:                                 // §6.4 / §7.2 endings
      crashBar = audit
        ? min(5pp, 0.15·launchRate)  // level test vs the rate frozen at
        : clamp(3·dev, 5pp, 15pp)    // the arm; pricing the audit's
                                     // depth trades basin cadence (§11)
      reversalBar = audit
        ? min(5pp, 0.15·max(launchRate, 3·dev))
        : crashBar                   // first-difference test vs the
                                     // previous sample (§6.4)
      crash (below launch by crashBar; an audit retry, auditCrashStreak ≥ 1,
        tolerates 2 below-bar samples first, holding direction)
        → undo (capped); a 2nd consecutive crash escalates the walk's own
        ladder (audit rung vs starvation rung, never each other's)
      audit walk → goal-metric judge at depth ≥5 vs frozen reference;
        confirm: keep + plant anchor + PARK (no parting steer);
        budget out: undo, retry on the audit ladder's cadence (wait ×2 only
        on a failed walk at the deepest audit rung; a crash, even
        streak-escalated, keeps the cadence)
      starvation walk → watched ≥ 4·bar at committed depth: density
        verdict; confirm: keep + plant anchor + ladder reset (×2 instead if
        steering reverses it at once; PARK when that reversed confirm is
        audit-grade); else fail
      budget out → undo, ladder ×2
      else → rung-scaled bold-driver stride, reversing only on a
        sample-to-sample drop past reversalBar
    elif an undo remainder is pending: continue it (capped strides)
    elif a veto return is in progress: stride toward the anchor
    elif a return has landed on the anchor: settle, then re-test the
      frozen claim; short → stand down + re-seed the rate references
    elif blind corner (§6.2):
      refractory remaining → still ≥ auditWait
        ? arm an audit (§7.2)
        : tick down; HOLD
      else → arm probe (freeze the probation baseline) + entry stride
    elif sustained margin-cleared shortfall vs anchor → veto (§8.1)
    elif still ≥ auditWait → arm an audit (§7.2)
    elif parked → HOLD
    else → density step on the floored steering error (§5.3–§5.4),
           clamped and lifted at the 2% floor
  stillness clock: window within the band accumulates toward the
    next audit; movement decays it by one (§7.3)
  commit the step as the pending adjustment; reset sample counters

The ordering encodes four priorities.

Three observers run before the router on every sample: the smoothed rate and its deviation update, the anchor re-syncs its claim if the window stands on it and may seed or ratchet on a settled sample, and a crash-scale swing stands the goal-metric layer down. After the router, the audit clock ticks on the window's actual position. The table reads the same priorities the other way round, by mode: what the machine does in each of its states when one of the four events arrives.

What each mode does when an event arrives
mode crash-scale swing
|ΔHR| ≥ 5pp
blind corner sustained shortfall vs the anchor audit clock due
steering (the default) stand-down: any park or return is released; the claim is discarded, and the goal metric re-seeded, only if the window stands on the anchor. Steering continues arms a probe, or holds if the refractory is still running veto: a return toward the anchor begins, and the window is held there on arrival arms an audit
blind-corner hold (refractory running) the same stand-down; the hold continues holds, counting the refractory down; the window moves only to lift off a sub-floor position not judged: a starved sample cannot adjudicate a shortfall, and the streak neither grows nor resets arms an audit; a due clock pre-empts the hold
walk in flight (probe or audit) the walk continues; only its own crash bar can end it. A park the walk did not arm out of is released; a park whose own audit is walking is covered ignored; a probe's verdict reads the starved region's earnings itself frozen: the streak neither grows nor resets, and the anchor cannot move while a walk is in progress waits for the walk to end; stillness decays while the window moves
retreat draining (a capped undo) covered for the stride and the sample it lands on; a later swing stands the layer down as usual waits for the retreat to complete frozen, as during the walk waits
veto return, striding home ends the return and releases the hold; the claim is discarded only if the window already stands on the anchor waits already answering it waits
veto return, landed and settling covered until the retest has ruled: the landing's own swing is the return's doing waits the retest: after two settle samples, a claim the position cannot earn is stood down, and the goal metric re-seeded waits
parked releases the park and discards the claim, since the window stands on the anchor, unless the park is fresh (one initial audit wait after an audit's confirm) or its own audit is walking arms a probe; the blind corner outranks the park cannot fire: the window stands on the anchor arms an audit out of the park; its first direction follows the walk that confirmed the park while the claim stands

How a walk itself ends, and what each ending does to the ladders and the schedule, is the table in §7.2.2.

9.3 The plumbing

None of this touches the request path. A read records into a lossy striped ring buffer (full stripes drop records, an intentional trade protecting read scalability), and the buffer drains under the eviction lock during maintenance. Each drained access reorders its entry and, for an entry with nonzero policy weight outside a quiet completion (a hygiene rule below), feeds recordHit(inWindow, inProbation), with the probation flag captured before the access promotes the entry. Misses arrive via the lossless write buffer's insert task. Read-buffer loss slightly undercounts hits uniformly across regions, so the density ratio is unbiased by it.

After eviction and expiry in each maintenance cycle, climb() asks the climber for a decision and applies the pending adjustment by moving region boundaries, transferring at most 1,000 nodes per cycle with the remainder carried over. All climber state is plain fields written only under the eviction lock: a single-threaded state machine that happens to live in a concurrent cache. A user resize (setMaximum) resets the climber wholesale, since every reference it holds is denominated in a capacity that just changed.

The counters must also mean what they claim: hits earned by resident capacity, attributed to the region that earned them. The standing rule for any path that touches the access plumbing: decide, explicitly, whether an event is a usage or bookkeeping.

Signal hygiene: the four leaks that forced the rule
Access-path leaks and the rules that prevent them
leak mechanism measured damage rule now enforced
async load completions counted as accesses completing a future finalizes weight via the write path, which historically recorded a policy access: every async miss injected a synthetic, window-attributed hit plus a doubled admission frequency −12.7 deterministic on a phase splice; −38.6 on a constructed cell completions are quiet: weight and expiry finalize, no sketch increment, no climber counters
refreshAfterWrite reload completions were loud the triggering read records its access and the reload's completion recorded another, double-counting all refresh-eligible traffic 1000 reads → 2000 climber hits + 2000 sketch increments automatic-refresh completions remap quietly; explicit refresh() stays loud (deliberate action, no read-stream amplification)
zero-weight entries earned hits an entry occupying no capacity (an in-flight async load, a zero-weight pin) contributes hits with nothing in the denominator 200 pinned zero-weight entries captured the window: 57.9% time-averaged vs a 36.3% control hits record only for entries with nonzero policy weight; misses still count (the demand is real, and weight arrives on completion)
resize-down left the sketch aging at the old scale the aging period was only reassigned when the sketch's table grew, so shrinking 1M → 1K left it ~1000× too slow, freezing both admission aging and the climber's sample ceiling adaptation effectively frozen after a large shrink shrinks retrack the period while the table stays grow-only (reallocation would wipe the counts: an admission blackout until history rebuilds)

One asymmetry follows and should not be "fixed": the climber's sampled hit rate is the rate over the entries it controls, which can sit below the user-visible rate (completions and zero-weight hits are real service, just not steering evidence). The two numbers answer different questions.

9.4 What it costs

The controller keeps only fixed-size, per-cache state: no per-entry metadata, ghost structures, or auxiliary history. Access accounting is constant-time and decisions run on the existing maintenance path, so its time and space overhead are negligible relative to ordinary cache policy work and entry storage.

Five settings carry most of the controller's design load:

Constants that should not be treated as casual tuning knobs
settingwhy it is load-bearing
starvation-bar shift Trap earnings sit two orders below it; the whisper construction sits knife-edge above it by design (§6.1).
2% floor and 2% stillness band They have different meanings despite sharing a value: one preserves signal, while the other decides whether a position has held.
4·C sample period It is the three-way compromise developed in §5.5.
ladder schedule and commitment depths They resolve §6.5's measured dilemma; they are not ordinary tuning parameters.
15% audit-bar fraction One fraction caps the crash abort against the frozen rate and prices the reversal against the larger of that rate and the noise band. It is derived from two shipped constants, equals 0.45 deviations, and sits just below the measured cliff at 0.5 (§6.4).

10 · The evidence

Claims about an adaptive policy are only as good as the discipline behind their measurement, so this chapter opens with the method, then gives the results: real-trace corpus, weighted caches, and the constructed trap gallery with each family's defense.

10.1 How this design is measured

Experiment vocabulary.
cell — one trace at one cache size
arm — one policy or configuration under comparison
N — independent repetitions per arm
seed — the paired random condition shared across arms
pp — absolute percentage points
static ceiling — the best static-window result for that cell
measurement floor — the required lower anchor, usually LRU, not §5's capacity floor

10.2 The corpus

Start with the failure an adaptive policy exists to avoid, which is doing worse than not adapting at all. On five real cells of the release battery the reactive climber lands below LRU, while the density climber holds at or above it on three and within a third of a point on the other two:

Real cells where the reactive climber falls below LRU
cellLRUreactivedensity
corda @8k33.3330.96 (−2.4)33.00
scarab recs @256k87.0583.61 (−3.4)86.84
systor17 LUN0 @1M5.454.53 (−0.9)5.92
tencentPhoto @4M73.7071.87 (−1.8)74.34
google thesios c2 @4G23.9622.62 (−1.3)24.07

The aggregate is quieter, and that is the actual shape of the result. From a 205-cell sweep (45 real traces across size ladders, N≥2): 41 significant wins (+117.7pp in total) against the reactive climber, 9 losses (−13.8pp), 155 ties. The wins are the recency-demand family the density signal was built for; the losses are §5.6's documented bias, each still far above LRU. Part of what a size sweep shows on a long-working-set trace is horizon rather than bias: at a 1M cache a 44M-request trace holds ten decisions, and §10.1's horizon table separates the two. Ties are the majority because the incumbent already sits at or near the static ceiling on most real traces, leaving nothing to win; the corpus checks that the record holds, and the trap gallery (§10.4) covers where it does not.

The shipped build was then re-verified on a fresh 28-cell run against current master (N=3, extended to N=8 wherever either arm's spread exceeded 0.5pp; the reactive arm is bimodal on several cells, up to ±2.6, so its single draws are not quotable); the significant movers, colored by direction:

Significant movers in the fresh 28-cell re-verification
cell density reactive Δ
cloudphysics w061 @64k38.3334.16+4.17
corda @8k33.0030.96+2.04
cloudphysics w097 @32k51.4749.66+1.81
umass F1 @32k37.3935.66+1.73
arc OLTP @8k60.7759.51+1.26
umass F1 @8k34.6433.41+1.24
arc P11 @64k44.5143.54+0.97
umass F2 @8k46.3945.68+0.71
umass F2 @32k68.2267.71+0.51
arc P5 @32k15.4514.95+0.50
msr proj0 @16k10.0010.56−0.57
arc P8 @64k48.6749.33−0.66
cloudphysics w097 @8k42.2143.13−0.92
arc P5 @64k25.1726.39−1.22
cloudphysics w097 @16k47.6150.10−2.49
…and 13 cells within ±0.5pp (the full table, ties included, is in the appendix)

The modest average differences reflect how little room most traces leave for improvement. The terrain scan behind §2.1 found no interior optimum on any of its 22 real cells: the curves were flat from the floor or gently rising. On flat terrain, different climbers should tie. Where window size matters, the evidence distinguishes three benefits: avoiding below-LRU outcomes, retaining valuable objects in weighted caches, and reducing run-to-run variation.

The weighted view: where object identity and byte cost diverge, the density signal prices slots rather than requests, and the gap stops being small. metaCDN_rprn @4G trades −0.73pp in object hit rate for +10.69pp in byte hit rate (49.59 against 38.90), because the retained large objects are what the byte metric pays for.

Repeatability is the third distinction. On several cells, the reactive climber settles in different basins across runs of the same workload. Density narrows the resulting hit-rate spread. With N=20 per arm, the spreads were 3.8pp versus 0.2 on umass F1 @32k, 4.1 versus 0.2 on arc P5 @32k, and 2.5 versus 1.1 on arc P11 @64k, with reactive first in each pair.

The constructed battery (§10.4) shows larger separations, including 15–28 point escapes on the pin families. On real traffic, the case for the extra machinery rests on the three properties above.

The one row that deserves its paragraph is the last red one. cp_w097 at 16k is a density-family structural loss rather than a regression of the safety layers. On the current tree it reads 46.9 against the reactive climber's 50.1 and LRU's 41.7, and 43.6 with the audits disabled: the audits recover 3.3 points and keep the cell far above LRU, and they do not cure the steering objective.

The mechanism is average against marginal value. The density law asks whether the window's average hits per resident entry exceed main's, and on this trace that error stays positive from a 1% window through the reachable 80% cap, while the marginal error measured at the window's tail crosses near 22% and the static curve peaks broadly at 5–15%. The window has a valuable hot head and an exhausted tail, so matching whole-region averages keeps asking for more window after its boundary value is spent. Replaying the trace to two and four times its length leaves the loss where it is while the static ceiling rises as its cold fill amortizes, so this is not §10.1's short-horizon effect; the controller never settles, cycling through seed-dependent high-window walks and parks. The trace's own 3–7pp scatter, which widens the margins and releases parks, is a secondary cost on top of that wrong sign.

Holding the parks longer, following a productive confirm sooner, and re-arming the clock on a shift were each measured and declined: every bounded form trades seeds without touching the sign (§11). A repair needs richer marginal information, and must first clear the slowswap counterexample that retired marginal steering.

Behavior, not just endpoints:

three-regime shifter @ 8192 — density climber, normal start (1% window) window as % of capacity sample hit rate % three-regime shifter @ 8192 — density climber, normal start (1% window) 0 20 40 60 80 100 regime A: hot set (window→0) regime B: reuse band (window→large) regime A again sample number →    hit rate   % window  ·  regime boundaries at samples ~55 and ~110 same trace — density climber, deliberately bad start (60% window) window as % of capacity sample hit rate % probe walk: sample 1, window 6153 (75.1%), hr 96.0%, rung 16 probe walk: sample 37, window 7372 (90.0%), hr 100.0%, rung 32 probe walk: sample 38, window 6348 (77.5%), hr 100.0%, rung 32 probe walk: sample 159, window 7536 (92.0%), hr 100.0%, rung 64 probe walk: sample 160, window 5488 (67.0%), hr 100.0%, rung 64 probe walk: sample 161, window 3481 (42.5%), hr 100.0%, rung 64 probe walk: sample 162, window 1515 (18.5%), hr 100.0%, rung 64 probe walk: sample 163, window 164 (2.0%), hr 100.0%, rung 64 same trace — density climber, deliberately bad start (60% window) 0 20 40 60 80 100 sample number →    hit rate   % window   dots = probe-walk samples  ·  starts oversized; watch the correction same trace — reactive climber window as % of capacity sample hit rate % same trace — reactive climber 0 20 40 60 80 100 sample number →    hit rate   % window
Fig. 21 — Adaptation across three workload regimes. The density climber starts at the normal 1% window (top) and a deliberately displaced 60% window (middle); the reactive climber is below. Both density runs track the transitions without sustained overshoot, and the displaced run recovers from its poor start. The reactive run continues to wander after each transition.
financial1 @ 262144 (sealed holdout) — reactive climber window as % of capacity sample hit rate % financial1 @ 262144 (sealed holdout) — reactive climber 0 20 40 60 80 100 LRU 43.3 sample number →    hit rate   % window financial1 @ 262144 — density climber closes the gap window as % of capacity sample hit rate % financial1 @ 262144 — density climber closes the gap 0 20 40 60 80 100 LRU 43.3 sample number →    hit rate   % window
Fig. 22 — First evaluation on the sealed holdout financial1 @262144. The reactive climber finishes 8.7 points below LRU; the shipped controller closes to within 1.3, a 7.5-point improvement.

10.3 Weighted caches

Size-aware caches exercise every mechanism with a different denominator, and the zero-weight hygiene rule exists because of them. The weighted spot set (a mixed-size Zipf-plus-reuse-band family and a few-huge-entries family, ~200 objects of 25–100MB in 10GB, three seeds each):

Weighted-cache spot checks
cell (weighted hit rate) density LRU Δ
wmixture d010 · s7 / s11 / s1379.45 / 79.80 / 79.4775.25 / 75.67 / 75.21+4.2 / +4.1 / +4.3
wfew (huge entries) · s7 / s11 / s1368.96 / 73.01 / 69.2562.14 / 66.51 / 62.37+6.8 / +6.5 / +6.9

10.4 The trap gallery

Each constructed family is a plausible production shape distilled to one mechanism, maintained as a deterministic generator with a standing verification battery. The tour: what the workload is in production terms, which failure mode it triggers, and where the defense stands. Values are whole-trace hit rates at 8k entries unless noted, and on the ~47-sample instances a whole-trace mean prices convergence rather than quality (§10.1), so final-third figures are quoted where the two diverge.

Constructed workload families and their defenses
family the workload, in production terms failure mode defense at the final build
mixture popular content plus session-scoped re-reads at working-set distance F-3: the re-read band is invisible to a floor window escaped: 63.0 over LRU's 59.8 on every seed (long companion 63.6); the deeper bands and at-scale variants also converge above LRU: their whole-trace 50.8 / 58.5 is warmup, with final thirds +3.8 / +5.0 over LRU and long companions clearing LRU on every seed
whisper the same shape plus a ~0.2% immediately-re-read trickle (heartbeats, token checks) that keeps the window "sighted" F-4: no starvation is ever declared audit repairs it past LRU: 66.8 vs 64.6 on every seed (was 55.5); the below-trickle control confirms via the probe path alone (66.8)
deadphase / rider a hot set punctuated by one-shot scan bursts; the rider adds a timed 0.02–0.4% trickle F-6/F-2: dead samples plus stray hits once bought maximum steps at its ceiling (49.1 ≈ 49.7); rider dose-response flat where it formerly cost 8–10pp
demoflood a protected-saturating hot core over a reachable reuse band the live-baseline absorbing veto, constructively (§6.4) 68.6 with confirmed probes (LRU 16.7); drift toward ~59-with-zero-confirms is the battery's tell for a broken freeze
trickle / bandtrap / straywall reuse bands of varying width behind stray zones of varying depth: §6.5's dilemma swept across its parameter space F-3 with adversarially placed evidence trickle 70.7 (s7) / 72.5 (s11), warmup rows (+2.4 / +1.9 over LRU converged); straywall 55.1 attractor, the rung-scaled strides' win completed by the audit; bandtrap2 72.1, a genuine pin, 4.4 under LRU and constructed-only (§11)
widepin / phases two jobs time-sharing one cache, alternating whole working sets the lag limit plus basin lottery; partially structural widepin's whole-trace 49.6 (seeded) is convergence cost: it ends at a 77.9% window against an 80% optimum, paying the deficit en route; phases d050 (57.2 at N=8, from 47.0 before this layer) is a genuine pin, −8 against LRU even converged; §11's measured residual
jam (rate / position) periodic crash-scale hit-rate swings, or window-moving delivery bursts, from bursty co-tenant traffic audit-clock suppression (§7.3) closed twice: rate 63.7 vs an undisturbed 63.8; position 66.4/66.5 vs a dose-matched 66.9 control (was 56.1 = the audit-free pin, 8.9 under LRU); each repair pair verified by ablation; the sample-aligned every-sample variant remains a §11 limit, now with a clean reachability scan
co-tenant a second hot tenant holding ~10% of main beside a false-equilibrium victim F-5: rate-neutral dismantling of audit wins anchor + park recover 57.4 → 59.6 of an undosed 64.1; the remainder is bounded audit duty
walk-interior dose (crashnoise / mixnoise) a window-irrelevant hit-rate modulation whose amplitude crosses the walk's crash bar (the whisper and mixture bases) weather aborting walks inside the machine's own noise floor both sides answered: the probe bar's pricing healed the dosed mixture pin 51.6 → 60.7 (+5.6 over LRU, with battery, real corpus, and a fresh holdout tied), and the audit side, once −2.8 under LRU, closes to within a point (63.3 against 64.1) under the crash-streak tolerance and the reversal's noise floor (§6.4); the sub-point residual is §11's audit-bar entry
nullchurn / lowmix / scrambler / cadence set degenerate and adversarial edges various (§11) nullchurn ≡ LRU (probing a dead equilibrium is free); lowmix and scrambler are accepted, documented sentinels; cadence cells within ±0.04 of record

Read as a whole: every failure mode in §2.6 has a family that demonstrates it and a measured defense, and the whole battery reads against LRU and static-ceiling anchors, so "is the machine ever worse than doing nothing" is a table rather than an impression.

Across 52 rows the mean margin over LRU is +0.88, 21 rows sit within 2pp of the ceiling, and against the reactive climber the machine is better on 35 with a mean of +2.71. Nineteen rows read below LRU on a whole-trace mean, but most of that is convergence cost rather than steady-state quality: twelve of the fifteen short instances price warmup, and rows recorded 8pp below LRU are 3–4pp above it once converged. What survives the separation is small and named.

Three genuine pins survive (phases d050, bandtrap2, and the aligned jam), each constructed-only with a clean reachability scan (§11); eighteen of the nineteen below-LRU rows are below for the reactive climber too; and exactly one row is a density-introduced regression against doing nothing, the aligned jam.

11 · Limits, and a field guide

What this design does not solve, on purpose, and how to read a misbehavior report against it.

11.1 Known limits

Each limit has a measured example and a named mechanism. The labels distinguish an open fix direction, a priced trade whose refinement was built, measured, and declined, and a constructed-only failure not found in the scanned real corpus. Expand each item for its mechanism, measurements, and reachability checks.

Six constructed failure shapes received additional reachability checks during release anchoring: the aligned jam (posjam), the density-inverted latch (bandtrap2), the grid-locked alternation (phases d050), the zero-main balloon (balloonflip), the moat terrain (whose valley §6.4's crash-streak tolerance now crosses), and the modulated-mixture dose instrument (mixmod). Each carries a named mechanism and a reachability scan against the same fourteen real cells, and all six are constructed-only.

The co-occurrences these traps need did not appear in the scanned real traffic. High scatter rides narrow terrain (every real cell whose scatter is three bars deep has under 3pp of terrain to lose, and every wide-terrain cell is quiet), cadences do not lock to the sample grid, and stillness starvation co-occurs with nothing worth finding. Where a real cell carries a signature or half of one, either the terrain is too flat for the exposure to cost anything (corda under two of the scans; the one full match, cp_w044, has half a point of terrain and banks +0.16 over LRU) or the scatter is window-informative, which is what the goal-metric layer exists to answer (arc_ConCat). The reachability checks found these six combinations only in deliberately constructed workloads.

11.2 Symptoms, and first hypotheses

Field symptoms, first hypotheses, and diagnostic checks
report first hypothesis how to check
"hit rate differs between two runs / versions on the same workload" basin lottery on an alternation-heavy workload N=8 both configurations; compare distributions, not draws: a regression shifts the mean, a lottery widens the spread
"frequency-heavy workload slightly worse than the old climber" the density bias, typically 0.5–2.5pp and larger on its high-window face; confirm it is still above LRU static-sweep the trace and read the trajectory: the classic give-back is an optimum ≤2% with the climber at 5–10%; the high-window face (cp_w097) peaks at 5–15% while the climber cycles much higher, the average sign still positive where the tail's marginal sign has turned
"window pinned small; a bigger static window scores much better; no probes" a sighted false equilibrium the audit isn't repairing: check stillness (is something jittering the window?) and the margins (noisy texture) trajectory capture: stillness counter, audit arms, verdict reasons per sample
"periodic dips at a regular cadence" audit or probe excursions doing their duty, or the duty-cycle residual duty should shrink as the ladder escalates; constant-rate dips forever means a confirm/undo cycle
"barely adapts at all" sample starvation: 4·C per decision, so huge caches on short traces get few decisions count completed samples; single digits means the trace is the limit
"weird behavior right after a maximum-size change" wholesale climber reset plus throttled re-partition, transient by design bounded by a few samples; persistence after that is real
"the rate visibly stepped, but the veto / anchor reacted late" margin inflation on a step-change (§8.1) expected lag ~5–10 samples; the anomaly is a reaction that never comes as the deviation decays

12 · Closing

The window climber combines density with hit rate. For large caches, density provides routine steering: compare the hits each region earns per slot within one sample, then move capacity toward the denser region. The proportional step becomes smaller as the densities approach balance.

That signal fails three ways, and each failure gets one machine:

Feed it only hits that resident capacity earned. Below the sizes where per-region statistics work, run the simple reactive climber instead. Every remaining constant has a measured reason behind it (§9.4).

That is the goal-audited density climber; with the reactive tier beneath it, it ships as the window climber. Going deeper: WindowClimber.java is the implementation, one plain class whose comments cross-reference these chapters; the trap gallery regenerates from deterministic generators bundled with the simulator; the appendix holds the measurement charts. The W-TinyLFU and adaptive-TinyLFU papers supply the substrate this design stands on.

The main contribution is robustness: retaining the reactive climber's strong results while recovering from failure modes that the public corpora rarely expose.

Appendix · Measurements

The archive: the full corpus table behind §10.2, the measured terrain sweeps behind §2.1, hit-rate-across-sizes charts for every workload in the corpus, and the complete corpus inventory with every family's disposition (A.4). Reference material; nothing here is needed to understand the design.

A.1 The 28-cell re-verification, in full

The re-run behind §10.2, every cell including the ties: the release re-verification of the shipped build against current master (N=3, extended to N=8 wherever either arm spread more than 0.5pp; means at the final N). The reactive arm is bimodal on umass F1 @32k, arc P11, and arc P5 (spreads up to ±2.6), so its single draws are not quotable. An earlier three-arm run tied a §5–§6 controller without the goal-metric layer to within noise on the corpus mean; cellwise the layer matters where its audits confirm (cp_w097@16k is 3.3 points better with it, §10.2). The raw per-rep data lives with the experiment ledger.

Full 28-cell release re-verification
cell density reactive Δ
cp w061 6553638.3334.16+4.17
corda lg 819233.0030.96+2.04
cp w097 3276851.4749.66+1.81
umass F1 3276837.3935.66+1.73
arc OLTP 819260.7759.51+1.26
umass F1 819234.6433.41+1.24
arc P11 6553644.5143.54+0.97
umass F2 819246.3945.68+0.71
umass F2 3276868.2267.71+0.51
arc P5 3276815.4514.95+0.50
cp w038 819260.6260.18+0.44
cp w058 819253.1653.00+0.17
msr prxy0 1638440.9440.89+0.05
msr proj0 6553620.1020.17−0.07
arc DS1 2621443.423.49−0.08
msr mds0 81926.736.82−0.09
msr mds0 163847.797.91−0.11
msr proj3 2621447.307.62−0.31
cp w015 1638458.5658.88−0.32
msr hm0 1638411.8312.21−0.38
arc S3 655367.037.49−0.46
cp w104 819222.1622.62−0.46
umass WS2 2621440.631.09−0.46
msr proj0 1638410.0010.56−0.57
arc P8 6553648.6749.33−0.66
cp w097 819242.2143.13−0.92
arc P5 6553625.1726.39−1.22
cp w097 1638447.6150.10−2.49

A.2 Measured terrain at 8k

corda @8192 — a plateau with a cliff at the tiny end LRU 33.33 Bélády 33.33 static-window sweep static 1% window: 7.08 static 2% window: 33.00 static 5% window: 33.33 static 10% window: 33.33 static 20% window: 33.33 static 30% window: 33.33 static 40% window: 33.33 static 50% window: 33.33 static 60% window: 33.33 static 70% window: 33.33 static 85% window: 33.33 static 90% window: 33.33 the shipped adaptive climber: 33.02 corda @8192 — a plateau with a cliff at the tiny end 0 20 40 60 80 LRU 33.3 Bélády 33.3 1 2 5 10 20 30 40 50 60 70 85 90 adaptive 33.0 static window, % of capacity →   fixed-window sweep  ● adaptive   dashed = LRU   dotted = Bélády mixture d025 @8192 — a deceptive valley: the shelf below 10% is where resident-only signals rest LRU 59.58 Bélády 66.37 static-window sweep static 1% window: 31.46 static 2% window: 31.46 static 5% window: 31.42 static 10% window: 31.34 static 20% window: 64.68 static 30% window: 64.54 static 40% window: 64.34 static 50% window: 63.97 static 60% window: 63.40 static 70% window: 62.67 static 85% window: 61.33 static 90% window: 60.78 the shipped adaptive climber: 60.52 mixture d025 @8192 — a deceptive valley: the shelf below 10% is where resident-only signals rest 0 20 40 60 80 LRU 59.6 Bélády 66.4 1 2 5 10 20 30 40 50 60 70 85 90 adaptive 60.5 static window, % of capacity →   fixed-window sweep  ● adaptive   dashed = LRU   dotted = Bélády whisper @8192 — a 12-point step, invisible from the starved side LRU 64.57 Bélády 67.75 static-window sweep static 1% window: 55.50 static 2% window: 55.53 static 5% window: 55.48 static 10% window: 55.46 static 20% window: 67.74 static 30% window: 67.74 static 40% window: 67.74 static 50% window: 67.74 static 60% window: 67.74 static 70% window: 67.13 static 85% window: 65.81 static 90% window: 65.38 the shipped adaptive climber: 64.08 whisper @8192 — a 12-point step, invisible from the starved side 0 20 40 60 80 LRU 64.6 Bélády 67.8 1 2 5 10 20 30 40 50 60 70 85 90 adaptive 64.1 static window, % of capacity →   fixed-window sweep  ● adaptive   dashed = LRU   dotted = Bélády widepin @8192 — two shelves; the top one is LRU’s LRU 71.8 Bélády 72.82 static-window sweep static 1% window: 44.68 static 2% window: 44.53 static 5% window: 44.92 static 10% window: 44.14 static 20% window: 44.36 static 30% window: 44.24 static 40% window: 45.49 static 50% window: 45.82 static 60% window: 71.60 static 70% window: 71.32 static 85% window: 71.80 static 90% window: 71.80 the shipped adaptive climber: 47.90 widepin @8192 — two shelves; the top one is LRU’s 0 20 40 60 80 LRU 71.8 Bélády 72.8 1 2 5 10 20 30 40 50 60 70 85 90 adaptive 47.9 (this draw) static window, % of capacity →   fixed-window sweep  ● adaptive   dashed = LRU   dotted = Bélády
Fig. A — Exhaustive fixed-window sweeps at 8k with LRU and Bélády anchors; the adaptive result is the orange marker. These are the real instances behind §2.1’s schematic shapes.

A.3 Hit rate across sizes, every workload

Up to four lines per chart: Optimal (Bélády, where tractable), LRU, the reactive climber, and the density climber, across each trace's size ladder. The charts are grouped by pattern; each title is marked by status as well as color:
✓ green = wins or ties everywhere on the ladder
≈ amber = mixed within tolerance (3pp)
! red = a beyond-tolerance loss exists (none in this corpus)

How these earlier sweeps relate to the shipped build

The sweep predates the §5 layer. The final design measures within noise of the density arm: −0.03pp mean over the §7.2 three-arm re-run. The release re-verification against current master provides a later check: 24 of the 28 A.1 cells reproduce within ±0.4pp. The changed cells are recorded in A.1; none is among the workloads charted here.

Optimal- - LRU reactive density climber◆ = unseen set (never used in any development)

Only workloads where the two climbers measurably separate are charted; for every other trace the four lines overlap within noise across the whole ladder, and they are listed instead of plotted.

Database, search & block storage (ARC suite)

P1 — hit rate across sizes lru @6934: 1.47 lru @23114: 10.71 lru @69344: 36.20 lru @231148: 72.45 lru @462297: 85.51 lru @924594: 91.38 reactive @6934: 6.45 reactive @23114: 23.44 reactive @69344: 48.20 reactive @231148: 74.29 reactive @462297: 85.40 reactive @924594: 90.55 density @6934: 9.09 density @23114: 25.56 density @69344: 49.99 density @231148: 74.07 density @462297: 85.21 density @924594: 90.39 ✓ P1 0 25 50 75 100 sizes: 6k 22k 67k 225k 451k 902k
P2 — hit rate across sizes lru @2740: 3.25 lru @9133: 5.16 lru @27400: 16.22 lru @91334: 41.18 lru @182669: 61.58 lru @365338: 78.45 reactive @2740: 4.11 reactive @9133: 9.84 reactive @27400: 27.61 reactive @91334: 52.80 reactive @182669: 69.88 reactive @365338: 82.87 density @2740: 4.11 density @9133: 11.86 density @27400: 28.09 density @91334: 53.42 density @182669: 69.21 density @365338: 83.57 ✓ P2 0 25 50 75 100 sizes: 2k 8k 26k 89k 178k 356k
P4 — hit rate across sizes lru @15440: 4.04 lru @51468: 9.16 lru @154404: 25.25 lru @514683: 48.07 lru @1029366: 54.76 lru @2058732: 67.40 reactive @15440: 6.45 reactive @51468: 15.27 reactive @154404: 30.60 reactive @514683: 46.94 reactive @1029366: 52.38 reactive @2058732: 60.57 density @15440: 5.32 density @51468: 14.24 density @154404: 31.18 density @514683: 47.15 density @1029366: 57.37 density @2058732: 61.62 ✓ P4 0 25 50 75 100 sizes: 15k 50k 150k 502k 1005k 2010k
P5 — hit rate across sizes lru @10211: 5.38 lru @34038: 6.84 lru @102115: 20.95 lru @340383: 60.96 lru @680767: 74.33 lru @1361534: 81.51 reactive @10211: 6.92 reactive @34038: 15.28 reactive @102115: 35.91 reactive @340383: 60.23 reactive @680767: 73.79 reactive @1361534: 80.05 density @10211: 6.55 density @34038: 16.07 density @102115: 32.93 density @340383: 60.98 density @680767: 74.71 density @1361534: 80.38 ≈ P5 0 25 50 75 100 sizes: 9k 33k 99k 332k 664k 1329k
P6 — hit rate across sizes lru @2321: 0.89 lru @7737: 1.24 lru @23213: 2.26 lru @77377: 27.64 lru @154754: 82.42 lru @309508: 91.04 reactive @2321: 1.70 reactive @7737: 4.46 reactive @23213: 19.12 reactive @77377: 61.18 reactive @154754: 80.50 reactive @309508: 88.46 density @2321: 1.70 density @7737: 5.15 density @23213: 20.24 density @77377: 65.05 density @154754: 80.09 density @309508: 88.55 ≈ P6 0 25 50 75 100 sizes: 2k 7k 22k 75k 151k 302k
P8 — hit rate across sizes lru @2932: 0.54 lru @9775: 3.22 lru @29326: 15.07 lru @97754: 50.63 lru @195509: 81.00 lru @391018: 95.48 reactive @2932: 3.16 reactive @9775: 11.07 reactive @29326: 26.18 reactive @97754: 61.07 reactive @195509: 81.98 reactive @391018: 95.59 density @2932: 3.05 density @9775: 12.83 density @29326: 30.10 density @97754: 61.70 density @195509: 81.04 density @391018: 95.34 ✓ P8 0 25 50 75 100 sizes: 2k 9k 28k 95k 190k 381k
P9 — hit rate across sizes lru @4108: 2.74 lru @13695: 3.58 lru @41086: 11.54 lru @136954: 46.18 lru @273908: 62.53 lru @547817: 71.42 reactive @4108: 3.98 reactive @13695: 11.16 reactive @41086: 26.05 reactive @136954: 50.06 reactive @273908: 62.62 reactive @547817: 76.19 density @4108: 3.56 density @13695: 11.34 density @41086: 26.99 density @136954: 50.69 density @273908: 64.82 density @547817: 77.95 ✓ P9 0 25 50 75 100 sizes: 4k 13k 40k 133k 267k 534k
P10 — hit rate across sizes lru @17038: 1.49 lru @56795: 5.01 lru @170386: 20.99 lru @567954: 58.85 lru @1135908: 72.32 lru @2271817: 77.43 reactive @17038: 3.23 reactive @56795: 12.69 reactive @170386: 29.86 reactive @567954: 65.26 reactive @1135908: 73.33 reactive @2271817: 80.59 density @17038: 5.64 density @56795: 14.29 density @170386: 33.40 density @567954: 64.84 density @1135908: 72.83 density @2271817: 80.87 ✓ P10 0 25 50 75 100 sizes: 16k 55k 166k 554k 1109k 2218k
P11 — hit rate across sizes lru @457948: 87.62 lru @1831794: 95.73 reactive @457948: 88.16 reactive @1831794: 94.15 density @457948: 87.02 density @1831794: 95.09 ✓ P11 0 25 50 75 100 sizes: 447k 1788k
P12 — hit rate across sizes lru @9459: 6.43 lru @31533: 8.79 lru @94599: 21.16 lru @315331: 52.50 lru @630662: 62.37 lru @1261324: 70.00 reactive @9459: 8.03 reactive @31533: 16.71 reactive @94599: 34.48 reactive @315331: 53.24 reactive @630662: 61.42 reactive @1261324: 68.44 density @9459: 6.91 density @31533: 16.85 density @94599: 35.32 density @315331: 53.44 density @630662: 62.62 density @1261324: 69.58 ✓ P12 0 25 50 75 100 sizes: 9k 30k 92k 307k 615k 1231k
P14 — hit rate across sizes lru @1381495: 61.92 lru @5525982: 79.35 reactive @1381495: 60.67 reactive @5525982: 72.43 density @1381495: 61.62 density @5525982: 75.54 ✓ P14 0 25 50 75 100 sizes: 1349k 5396k
S1 — hit rate across sizes optimal @3929: 4.10 optimal @13096: 7.50 optimal @39290: 13.39 optimal @130969: 28.06 optimal @261939: 42.48 lru @3929: 0.10 lru @13096: 0.31 lru @39290: 0.94 lru @130969: 3.08 lru @261939: 6.42 lru @523879: 23.67 reactive @3929: 0.19 reactive @13096: 0.79 reactive @39290: 2.99 reactive @130969: 12.11 reactive @261939: 23.92 reactive @523879: 42.62 density @3929: 0.19 density @13096: 0.49 density @39290: 2.71 density @130969: 11.55 density @261939: 22.71 density @523879: 41.85 ✓ S1 0 25 50 75 100 sizes: 3k 12k 38k 127k 255k 511k
S2 — hit rate across sizes lru @5080: 0.11 lru @16933: 0.39 lru @50800: 1.17 lru @169334: 3.96 lru @338668: 8.90 lru @677337: 43.94 reactive @5080: 0.43 reactive @16933: 1.63 reactive @50800: 5.92 reactive @169334: 20.09 reactive @338668: 37.30 reactive @677337: 63.83 density @5080: 0.17 density @16933: 0.54 density @50800: 5.65 density @169334: 19.72 density @338668: 36.76 density @677337: 62.88 ✓ S2 0 25 50 75 100 sizes: 4k 16k 49k 165k 330k 661k
OLTP — hit rate across sizes optimal @560: 47.64 optimal @1868: 59.76 optimal @5606: 69.15 optimal @18688: 76.21 optimal @37376: 79.14 optimal @74752: 79.56 lru @560: 24.71 lru @1868: 41.63 lru @5606: 54.98 lru @18688: 66.52 lru @37376: 71.97 lru @74752: 77.04 reactive @560: 34.81 reactive @1868: 44.62 reactive @5606: 55.07 reactive @18688: 61.52 reactive @37376: 64.80 reactive @74752: 73.05 density @560: 34.70 density @1868: 44.63 density @5606: 57.12 density @18688: 67.33 density @37376: 71.74 density @74752: 76.16 ✓ OLTP 0 25 50 75 100 sizes: 560 1k 5k 18k 36k 73k
ConCat — hit rate across sizes lru @1561611: 83.34 lru @6246446: 92.38 reactive @1561611: 81.02 reactive @6246446: 91.37 density @1561611: 82.74 density @6246446: 92.37 ✓ ConCat 0 25 50 75 100 sizes: 1525k 6100k
MergeP — hit rate across sizes lru @4700206: 78.04 lru @18800826: 88.62 reactive @4700206: 76.61 reactive @18800826: 83.37 density @4700206: 77.05 density @18800826: 86.48 ✓ MergeP 0 25 50 75 100 sizes: 4590k 18360k

Within noise everywhere on their ladders: P3, P7, P13, S3, DS1, spc1likeread, MergeS.

File & mail servers (MSR Cambridge, FIU) ◆

fiu_homes — hit rate across sizes lru @5053: 49.64 lru @16844: 54.90 lru @50532: 61.42 lru @168440: 70.20 lru @336881: 80.09 lru @673762: 87.84 reactive @5053: 50.96 reactive @16844: 53.91 reactive @50532: 59.88 reactive @168440: 71.23 reactive @336881: 77.34 reactive @673762: 84.27 density @5053: 51.08 density @16844: 54.47 density @50532: 59.83 density @168440: 71.89 density @336881: 81.17 density @673762: 87.63 ✓ fiu_homes 0 25 50 75 100 sizes: 4k 16k 49k 164k 328k 657k
fiu_ikki — hit rate across sizes lru @2844: 23.43 lru @9482: 27.69 lru @28447: 36.25 lru @94825: 54.03 lru @189651: 67.03 lru @379302: 77.93 reactive @2844: 25.84 reactive @9482: 30.16 reactive @28447: 36.72 reactive @94825: 52.45 reactive @189651: 65.30 reactive @379302: 74.24 density @2844: 25.96 density @9482: 30.30 density @28447: 36.83 density @94825: 52.01 density @189651: 67.54 density @379302: 77.43 ≈ fiu_ikki 0 25 50 75 100 sizes: 2k 9k 27k 92k 185k 370k
fiu_madmax — hit rate across sizes optimal @699: 17.25 optimal @2099: 21.00 optimal @6996: 32.04 optimal @13993: 46.78 optimal @27986: 74.07 lru @699: 14.06 lru @2099: 15.38 lru @6996: 16.42 lru @13993: 16.58 lru @27986: 19.94 reactive @699: 14.75 reactive @2099: 16.86 reactive @6996: 27.47 reactive @13993: 43.75 reactive @27986: 68.28 density @699: 14.76 density @2099: 16.87 density @6996: 27.36 density @13993: 41.79 density @27986: 67.63 ✓ fiu_madmax 0 25 50 75 100 sizes: 699 2k 6k 13k 27k
fiu_online — hit rate across sizes optimal @590: 19.54 optimal @1968: 22.59 optimal @5904: 29.40 optimal @19681: 51.08 optimal @39362: 73.63 optimal @78724: 85.74 lru @590: 13.83 lru @1968: 17.04 lru @5904: 18.77 lru @19681: 21.27 lru @39362: 49.02 lru @78724: 66.02 reactive @590: 17.53 reactive @1968: 18.71 reactive @5904: 21.30 reactive @19681: 45.01 reactive @39362: 70.35 reactive @78724: 83.84 density @590: 17.39 density @1968: 18.72 density @5904: 24.02 density @19681: 45.91 density @39362: 70.69 density @78724: 84.14 ✓ fiu_online 0 25 50 75 100 sizes: 590 1k 5k 19k 38k 76k
fiu_webmail — hit rate across sizes lru @1466: 41.05 lru @4886: 44.46 lru @14660: 46.03 lru @48866: 68.57 lru @97733: 73.83 lru @195466: 91.80 reactive @1466: 43.93 reactive @4886: 46.67 reactive @14660: 54.18 reactive @48866: 70.25 reactive @97733: 80.00 reactive @195466: 86.81 density @1466: 44.10 density @4886: 46.63 density @14660: 54.95 density @48866: 70.36 density @97733: 79.10 density @195466: 88.17 ✓ fiu_webmail 0 25 50 75 100 sizes: 1k 4k 14k 47k 95k 190k
fiu_webresearch — hit rate across sizes optimal @1361: 37.46 optimal @4538: 43.28 optimal @9076: 51.60 optimal @18153: 68.02 lru @1361: 34.01 lru @4538: 34.94 lru @9076: 35.20 lru @18153: 35.30 reactive @1361: 35.37 reactive @4538: 41.15 reactive @9076: 47.63 reactive @18153: 64.77 density @1361: 35.37 density @4538: 40.67 density @9076: 49.82 density @18153: 66.00 ✓ fiu_webresearch 0 25 50 75 100 sizes: 1k 4k 8k 17k
fiu_webusers — hit rate across sizes lru @938: 20.43 lru @2816: 24.51 lru @9387: 25.59 lru @18774: 26.27 lru @37549: 65.14 reactive @938: 24.85 reactive @2816: 26.39 reactive @9387: 39.59 reactive @18774: 58.00 reactive @37549: 87.53 density @938: 24.81 density @2816: 26.39 density @9387: 41.09 density @18774: 58.69 density @37549: 88.67 ✓ fiu_webusers 0 25 50 75 100 sizes: 938 2k 9k 18k 36k
◆ msr_prn1 — hit rate across sizes optimal @16384: 16.75 optimal @65536: 18.18 optimal @262144: 21.78 optimal @1048576: 28.44 optimal @4194304: 39.76 lru @16384: 15.49 lru @65536: 15.81 lru @262144: 16.46 lru @1048576: 18.81 lru @4194304: 25.15 reactive @16384: 15.16 reactive @65536: 15.61 reactive @262144: 16.55 reactive @1048576: 21.89 reactive @4194304: 27.70 density @16384: 15.43 density @65536: 15.90 density @262144: 16.71 density @1048576: 19.69 density @4194304: 28.53 ≈ ◆ msr_prn1 0 25 50 75 100 sizes: 16k 64k 256k 1024k 4096k
◆ msr_proj0 — hit rate across sizes optimal @16384: 17.22 optimal @65536: 29.13 optimal @262144: 41.43 optimal @1048576: 62.33 optimal @4194304: 80.56 lru @16384: 8.88 lru @65536: 17.84 lru @262144: 29.30 lru @1048576: 34.46 lru @4194304: 80.56 reactive @16384: 10.73 reactive @65536: 20.22 reactive @262144: 34.97 reactive @1048576: 56.96 reactive @4194304: 80.56 density @16384: 9.93 density @65536: 20.33 density @262144: 34.52 density @1048576: 58.55 density @4194304: 80.56 ✓ ◆ msr_proj0 0 25 50 75 100 sizes: 16k 64k 256k 1024k 4096k

Within noise everywhere on their ladders: fiu_casa, ◆ msr_hm0, ◆ msr_proj2, ◆ msr_mds1.

Financial & search storage (UMass) ◆

◆ financial2 — hit rate across sizes optimal @16384: 69.44 optimal @65536: 82.09 optimal @262144: 87.19 optimal @1048576: 87.52 optimal @4194304: 87.52 lru @16384: 52.69 lru @65536: 73.27 lru @262144: 84.14 lru @1048576: 87.35 lru @4194304: 87.52 reactive @16384: 55.51 reactive @65536: 76.18 reactive @262144: 83.13 reactive @1048576: 87.50 reactive @4194304: 87.52 density @16384: 58.23 density @65536: 76.51 density @262144: 84.30 density @1048576: 87.52 density @4194304: 87.52 ✓ ◆ financial2 0 25 50 75 100 sizes: 16k 64k 256k 1024k 4096k

Social / KV / CDN

w50 — hit rate across sizes lru @3691: 0.49 lru @12303: 1.57 lru @36911: 1.66 lru @123038: 2.04 lru @246076: 64.61 lru @492152: 76.99 reactive @3691: 1.91 reactive @12303: 4.58 reactive @36911: 14.45 reactive @123038: 57.14 reactive @246076: 76.95 reactive @492152: 87.95 density @3691: 1.91 density @12303: 4.59 density @36911: 18.82 density @123038: 59.82 density @246076: 76.48 density @492152: 87.85 ✓ w50 0 25 50 75 100 sizes: 3k 12k 36k 120k 240k 480k
w56 — hit rate across sizes lru @1317: 51.77 lru @4390: 70.02 lru @13170: 74.51 lru @43900: 81.75 lru @87801: 88.22 lru @175602: 92.91 reactive @1317: 60.71 reactive @4390: 71.81 reactive @13170: 75.96 reactive @43900: 85.16 reactive @87801: 89.42 reactive @175602: 92.07 density @1317: 60.68 density @4390: 72.11 density @13170: 76.03 density @43900: 83.05 density @87801: 89.79 density @175602: 93.48 ≈ w56 0 25 50 75 100 sizes: 1k 4k 12k 42k 85k 171k
metaCDN_reag — hit rate across sizes lru @1226253: 67.39 lru @4905014: 71.73 reactive @1226253: 65.04 reactive @4905014: 70.39 density @1226253: 68.04 density @4905014: 71.47 ✓ metaCDN_reag 0 25 50 75 100 sizes: 1197k 4790k
◆ twitter52_050 — hit rate across sizes lru @16384: 33.56 lru @65536: 48.44 lru @262144: 60.25 lru @1048576: 69.95 lru @4194304: 78.93 reactive @16384: 36.77 reactive @65536: 50.68 reactive @262144: 64.24 reactive @1048576: 73.56 reactive @4194304: 81.36 density @16384: 37.92 density @65536: 51.75 density @262144: 64.31 density @1048576: 73.63 density @4194304: 81.52 ✓ ◆ twitter52_050 0 25 50 75 100 sizes: 16k 64k 256k 1024k 4096k

Within noise everywhere on their ladders: w99.

Blockchain vault

corda_large — hit rate across sizes optimal @3744: 33.33 optimal @12482: 33.33 optimal @37446: 33.33 optimal @124821: 33.33 lru @3744: 33.33 lru @12482: 33.33 lru @37446: 33.33 lru @124821: 33.33 lru @249642: 33.33 lru @499285: 33.33 reactive @3744: 32.14 reactive @12482: 30.89 reactive @37446: 27.06 reactive @124821: 22.74 reactive @249642: 33.33 reactive @499285: 33.33 density @3744: 32.14 density @12482: 33.22 density @37446: 33.33 density @124821: 33.33 density @249642: 33.33 density @499285: 33.33 ✓ corda_large 0 25 50 75 100 sizes: 3k 12k 36k 121k 243k 487k

A.4 Full corpus inventory

This inventory records every family in the local trace collection, including those that provide little information about adaptation and why. The tables report the release battery: density is the shipped build, reactive is the master climber it replaces, and the runs were interleaved. Raw data remains with the experiment ledger.

The release battery: the merge holdout and first measurements

The frozen 12-cell merge holdout (four families never touched by any climber arm; LRU-only selection) was scored once, per its protocol: N=5, extended to N=8 where a spread exceeded 0.5pp; floor = max(reactive, LRU) − 3 per cell. Eleven of twelve pass.

Frozen merge-holdout results
celldensityreactiveΔLRUverdict
wiki1190 @16k66.4766.95−0.4863.31pass
wiki1190 @256k79.8079.84−0.0377.72pass
wiki1190 @1M85.4685.39+0.0785.43pass
wiki1192 @64k72.6272.91−0.2969.19pass
wiki1192 @1M85.0484.99+0.0585.00pass
websearch3 @4M35.0140.98−5.9711.93fail, explained
websearch3 @16M86.3486.33+0.0186.35pass
msr proj4 @4M6.335.64+0.693.83pass
msr proj4 @16M13.4813.80−0.325.52pass
tencentPhoto @256k51.0551.76−0.7147.09pass
tencentPhoto @1M64.6064.81−0.2162.61pass
tencentPhoto @4M74.3471.87+2.4873.70pass; reactive is below LRU

The websearch3 @4M miss is the §2.1 floor-optimal shape at a ~7.8-sample budget: the static ceiling is 41.05 at a 1% window, which is the starting position, and the starvation probe reads the scan window's zero hit density as starvation and walks upward, because cold-start warmup masks the walk's crash bar (the bar compares against the rate frozen at arm time while compulsory misses fade), before crashing back and anchoring at the floor, whose final-sample rate is the ceiling's. One exploration cycle is ~75% of that trace's decisions. Played twice, the whole-trace rate rises to 40.58 and the walk does not repeat; a later audit re-test is bounded by its own crash bar. The give-back is the exploration trade that wins the two green rows on the same protocol.

First measurements on families new to the corpus (entry-denominated; N=3):

First measurements on new corpus families
celldensityreactiveΔLRU
systor17 d09-LUN0 @1M5.924.53+1.405.45; reactive is below LRU
systor17 d09-LUN0 @256k3.523.63−0.113.13
systor17 d09-LUN0 @64k2.482.43+0.052.53
systor17 d09-LUN2 @1M5.104.64+0.454.31
systor17 d09-LUN2 @256k2.962.91+0.052.88
wiki1191a @16k65.9166.73−0.8263.09
wiki1191a @256k79.4979.37+0.1177.61
wiki1191a @1M84.3284.320.0084.33 (near-fit)
wiki1191b @16k66.4167.13−0.7163.47
wiki1191b @256k79.9879.88+0.1078.21
wiki1191b @1M84.6884.67+0.0184.68 (near-fit)
scarab recs @256k86.8483.61+3.2387.05; reactive gives back 1.4 to LRU
scarab prods @16k71.2170.68+0.5365.23
scarab prods @256k92.5892.13+0.4593.11
scarab recs @16k65.3965.77−0.3862.79
cache2k orm-busy @409684.6284.63−0.0084.56
cache2k orm-night @102467.0266.90+0.1267.36
cache2k web07 @16k72.4072.36+0.0472.45
cache2k web12 @16k85.6185.61+0.0085.61
gradle build-cache @102478.7579.04−0.2979.91

Byte-weighted families (the readers declare weights; the object rate is the climber's own goal metric, the byte rate is the panel's; N=3):

Byte-weighted corpus results
cellobj densityobj reactiveΔ objΔ byte
ibm objectstore 000 @1G66.6463.61+3.03
twitter52.000 @64M89.1088.07+1.03+1.02
cloudphysics w01 @1G15.1914.22+0.97+0.75
alibabaBlock @1G87.4386.55+0.88+0.69
metaCDN rprn @1G28.9428.36+0.57+0.42
cloudphysics w01 @256M12.2711.91+0.37−0.59
alibabaBlock @256M82.1781.84+0.33−0.15
metaStorage 1 @256M26.3526.08+0.27+0.91
wikitech @1G31.6431.49+0.15+0.41
wikitech @4G50.0249.89+0.13+0.11
tencentBlock @1G57.5357.74−0.21−0.12
metaStorage 1 @1G40.2240.52−0.30−0.11
ibm objectstore 000 @256M50.7251.38−0.66
tencentBlock @256M38.2438.97−0.73−3.58
metaCDN rprn @4G31.5532.28−0.73+10.69; density retains large objects
google thesios c2 @4G24.0722.62+1.46+1.59; reactive is below LRU
google thesios c2 @16G26.3025.01+1.30+1.46; reactive is below LRU
google thesios c1 @4G15.0914.90+0.19+0.64
google thesios c3 @4G16.5616.71−0.15−0.24
google thesios c2 @1G20.9821.05−0.07+0.06
outbrain sorted @409684.5684.46+0.10(unweighted; LRU 80.44)
outbrain sorted @819289.5889.67−0.09(unweighted; LRU 87.24)
Every family and its status
Corpus family inventory and disposition
familydisposition
arc (23 files)A.1 / A.3 and the study corpora; P3, P4, P6, P7, MergeP @64k are frozen in an unspent study holdout
cloud_physics (16 files)A.1 / A.3 corpus; w015 and w044 @16k frozen in an unspent study holdout
corda (2)large: A.1 / A.3; small: the canonical cross-tier stress trace
umass storage (5)Financial1/2 and WebSearch2 in A.1; WebSearch1/2/3 spent across holdouts; WebSearch3 scored the merge gate above
msr_cambridge (15)A.1 / A.3 and holdouts; proj_4 scored the merge gate; hm_1 @64k frozen unspent
wikibench (4 shards)1190/1192: the merge gate; 1191a/b: first measured above. Unspent LRU-only rungs remain for a future freeze
libcachesim oracleGeneral (new set)alibabaBlock, tencentBlock, metaStorage, MetaCDN_rprn, wikitech, cloudphysics w01: first measured above. metaKV_202401 measured saturated (LRU 88–95 across 1G–16G weight, no informative cell); twitter52 sample10 (8.1G) deferred, its family already covered
libcachesim classic (3)tencentPhoto: the merge gate; metaCDN / metaKV: spent in earlier holdout rounds
google_cluster1-3 (Thesios)Google's Thesios storage I/O traces: READ rows, the (file, offset) range as the object, requested bytes as its weight. In band at 1G–16G weight; measured above
twitter cluster52 (3 shards).050 in A.3; .100 spent in an earlier holdout; .000 first measured above (in band at 64M weight; ≥90 saturated above)
snia/ibm objectstore (3)000 measured above; 050 degenerate (~no reuse in Part0); 097 saturated (LRU 93.6 at 256M weight)
snia/systor17-01 (per day × LUN)day-09 LUN0/LUN2 first measured above; other days and LUNs pristine
snia/k5cloud (14 volumes)v0 and v25 frozen in the unspent stillness holdout; the other 12 degenerate
snia/exchange (98 shards)four shards @256k frozen in the stillness holdout; the family is otherwise window-insensitive (ceiling − LRU ≤ 0.75pp)
cache2k (4)in band at small and mid sizes, first measured above; orm-night and web12 @4096 are frozen in the unspent tier-boundary holdout
gradle build-cache (1)high locality: in band only at 1024 (measured above); ≥4096 sits at 91+
scarab (2)not too small: in band across 4k–256k, measured above; recs @256k is the battery's largest entry-cell win
all-trc (37 files)10 plain LIRS streams (loop, multi1-3, cs, gli, ps, cpp, sprite, 2_pools), saturated in the gate and corpus; the other 27 (vortex, sor, gnuplot, … and their compositions) are the ClockPro authors' segmented program-trace container, N <seg> headers with I/O <id> <time> records, whose key mapping was lost with the format, so no reader parses them
outbrainsaturated: the page-views sample's document working set is ~60k, so it reads 99.4 from 65k entries even time-sorted (arrival order was not the cause); the two in-band cells at 4096/8192 measured above, both ties
address (6)measured flat: every trace is size-insensitive at 512–16k (gzip 66.7 ±0.02pp across 32× size; twolf/gcc/swim ≥90 plateaus; mcf ~1 throughout), so nothing for any climber to tune
adaptSize (2)measured tiny: usertrace-98 is 10,492 requests with zero evictions at 4096 (its .xz is the raw 1999 form the reader does not take; use the .tr); request.trace is 66,987 requests ≈ 4 density samples