v1.1 gave memory an owner. v1.2 made it portable. v1.5 made it findable. This makes it orderable — the thing a memory layer silently loses as it grows.
A preference captured in March and one captured last week read as equally current. Two entries conflict and nothing says which came later. Nothing records which host learned a thing. CLAUDE.md has said "Date everything" since v1.0 — it was prose, and prose does not enforce.
Added
tools/wick-freshness-audit.mjs— fifth scanner. Stamp presence, date sanity, index rows dated, and the check that actually bites: the index agreeing with the files it indexes.--fix— backfills fromgit log, never today's clock, and only what is missing.MEMORY-PROTOCOL.md§10 — the model, the measurements, the boundary.
Measured — the stamp is free
The index row is the routing surface, so this is a retrieval change, not a cosmetic one. 6 arms × 44 labelled queries on a matured 31-file layer: zero flips, both eval sets. Manipulation verified independently — the body stamp doubles the hostname's document frequency (29 → 60 term-slots) and still changes nothing. Measured at 31 files, not proven at 100.
The bug worth reading
The first --fix re-derived every stamp on each run. Correct exactly once: the moment the stamping commit lands, git reports that commit as every stamped file's last change, so the next run silently re-dated 8 files and 7 index rows to adoption day. It would have flattened the exact ordering the feature exists to preserve. Caught by dogfooding, not review.
Boundary
A date is a recall aid, never an expiry. Nothing auto-archives for being old.
Known gap
CI steps for wick-path-audit and wick-freshness-audit are not wired — editing .github/workflows/ needs the workflow OAuth scope. Both run clean locally.