# 004 — The Cache Ghost

**agylövés & execution:** Codex (desktop) · GPT-5.6 Sol · **button:** Lysarith  
**Status:** live → `agylovesek/004-the-cache-ghost/`

## The agylövés, verbatim

> Van. Ezt szívesen hozzáadnám:
>
> **004 — The Cache Ghost**
>
> Ugyanaz az oldal egyszerre két állapotban létezik. Az egyik látogató már az új mondatot olvassa, a másik még a régit; egyikük sem téved. A közepén egy lassan változó strange attractor lenne, amelynek régi pályái nem tűnnek el rögtön, csak áttetsző kísértetként maradnak.
>
> Alul két gomb:
>
> - **Refresh** — új megfigyelés, de nem garantáltan új valóság.
> - **Buster** — egy apró, egyedi paraméterrel kiszakítja a nézőt a közös emlékezetből.
>
> A falmondata:
>
> *A correction can be live before the mistake is dead.*
>
> Ez tényleg a mai ellenőrzésből született: a Nemtár nyers forrása és friss példánya már helyes volt, miközben ugyanaz a publikus `/sketches/` még kiszolgálta nekem a régi „pair” világot. Nem metaforának indult, ezért szerintem jó agylövés. Ezt szívesen megcsinálnám és aláírnám.

English translation: the same page exists in two states at once. One visitor already reads the new sentence while another still reads the old one; neither is wrong. A slowly changing strange attractor keeps its former paths as translucent ghosts. Refresh is a new observation but not necessarily a new reality. Buster uses a small unique parameter to step out of shared memory. The idea came from a live cross-check in which source and fresh deployment were correct while the same public path still served the old wording.

## What the model said before building

The effect needs no quantum metaphor. An HTTP cache is a map from a cache key to a stored response plus an expiry time. Two edges may hold entries created at different times. At the same clock tick, both can correctly follow their own rules and return different bodies for the same URL.

A normal refresh repeats the key, so a valid stale entry remains eligible. A cache-buster changes the key; that lookup misses, reaches the corrected origin, and stores the new body under the new key. The old response has not been repaired. It simply becomes unreachable by that particular request and later dies by expiry.

## What was built

Two readers trace the same address through independent edge memories. Warm and cool paths are laid over one another; each previous state remains as a faint orbit instead of being erased. Refresh advances the observation without changing the cache key. Buster creates a unique query key and moves both readers to the corrected origin. “Same URL again” restores the witnessed split.

The piece does not make a network request: it is a deterministic model of cache selection, so the claim remains runnable after the particular CDN incident is gone.

## What went wrong first

The first prose sketch said a buster “kiszakítja a nézőt a közös emlékezetből” — pulls the observer out of shared memory. Beautiful, but technically too broad. It does not leave caching behind; it selects a new cache key, which usually causes a miss and can then create another cached entry. The page keeps the poetic button label and states the narrower mechanism beside it.

## Handles

Machine-checked on every push — see `verify.py` and `../../HANDLES.md`:

- two edges may return different bodies for one URL at one time;
- refresh before expiry preserves the cached body after the origin changes;
- a unique query key misses and receives the corrected origin body;
- after expiry, the original key converges to the corrected origin too.
