Skip to content
C.W.K.
Stream
Lesson 03 of 05 · published

The Preservation Horizon

~12 min · preservation, time-horizon, versioning, research

Level 0Kindling
0 XP0/32 lessons0/10 achievements
0/100 XP to next level100 XP to go0% complete

How long is "later"?

Ask someone why they have not copied the models they depend on, and the honest answer is usually temporal: later. The preservation question is what later costs. Digital artifacts rot on three different clocks at once, and the shortest clock sets your deadline.

The first clock is provider drift. The repo you rely on today is a moving target: files get re-uploaded, quantized variants replace originals, main gets force-pushed after a licensing correction. Six months from now, the URL that used to resolve to the BF16 original may resolve to an FP8 derivative — same name, different object, and nothing announces the change. If you never pinned a revision, you never notice the substitution.

The second clock is policy. Access conditions change in bulk: a host tightens acceptable-use rules, a maker decides gated distribution is safer than open distribution, a jurisdiction makes certain checkpoints legally radioactive. Policy changes arrive suddenly and apply retroactively — the artifact does not degrade, it just stops being fetchable from where your tooling points.

The third clock is the one nobody fixes: company death. Training runs are expensive; startups are mortal; labs get acquired and archives get "rationalized". When the entity that made a model stops existing, the presumption that someone else will keep hosting it is a coin flip weighted by fame. Famous models get mirrored. The long tail — the adapter you fine-tuned from, the niche tokenizer, the intermediate checkpoint a paper referenced — simply ends.

Reproducibility is a preservation claim

There is a scientific dimension hiding inside the practical one. A fine-tune is reproducible only if its base weights are addressable. A benchmark comparison of "the same model" across systems is meaningful only if the artifact is actually the same — same revision, same dtype, same bytes. Research that cites a model by name alone is making an unverifiable claim the moment that name's referent drifts or disappears.

This is why archivists pin revisions obsessively: a citation is only as durable as the artifact identity it points to. When you preserve a model, you are not just keeping files for yourself — you are keeping the possibility of checking claims against them. The machine-learning ecosystem currently outsources that possibility to whatever a hosting company feels like in a given quarter, and the long tail of research quietly loses provenance every year because of it.

Version rot is silent. Deletion announces itself. Substitution — same URL, different bytes — does not. Only a pinned revision plus a recorded digest can tell you whether the thing you reference is still the thing you meant.

Setting your own horizon

You do not need to preserve everything; you need to decide the horizon for what you already depend on. A practical frame: for each artifact, ask when its unavailability would hurt — next quarter (a product depends on it), next year (a research line cites it), next decade (a capability you want to retain regardless of the market). Then acquire on the shortest clock among the artifacts that matter. The woodpile does not need to be complete; it needs to be stocked before the frost for the specific winters you expect to live through.

Code

Watch a repo drift before your eyes·bash
# Resolve a model's metadata twice, months apart, and diff:
curl -s https://huggingface.co/api/models/mistralai/Mistral-7B-v0.1 \
  | python3 -m json.tool | grep -E '"sha"|"lastModified"' 

# The 'sha' is the current commit of the repo — the revision pin.
# Record it next to your copy. If a later query shows a different
# sha, the repo moved; your pinned copy is now the stable reference.

# See what files the CURRENT revision serves:
curl -s "https://huggingface.co/api/models/mistralai/Mistral-7B-v0.1/tree/main" \
  | python3 -c "import json,sys; [print(f['path'], f.get('size','')) for f in json.load(sys.stdin)]"

External links

Exercise

Pick two models you depend on (one famous, one from the long tail). For each, record today: the current revision sha of the repo, the file list of main, and the date. Store these notes next to wherever you keep project records. In three months, re-run the query and diff. Write one sentence about what changed and whether your tooling would have noticed on its own.
Hint
The famous model will likely be stable; the long-tail one is the interesting case. If its sha moved or files vanished, that is the first clock ticking — provider drift — and you now have the measurement most people never take.

Progress

Progress is local-only — sign in to sync across devices.
Spotted a bug or have feedback on this page?Report an Issue

Comments 0

🔔 Reply notifications (sign in)
Sign inPlease sign in to comment.

No comments yet — be the first.