Course videos sync again

A Space's content/** files — course videos, posters, PDFs — are mirrored into the mesh by the GitSync import. Until now the bytes travelled on the message, and every transport under the mesh puts a ceiling on how large one message may be. A file bigger than that ceiling was refused, every time, on every attempt.

That was not an edge case. On MeshWeaver.Education it is 25 files across all seven Spaces — and the axis is "has a video", not "is large": the smallest Space in the repo carries the second-largest single file. A learner opening one of those pages saw a video that never loaded.

A file that cannot fit a message now goes around it. Its bytes are written into the destination collection once, and the message carries a short, content-addressed reference to them; the receiving Space streams the bytes into place. Nothing else about a content sync changed — the mirror still prunes exactly what the source dropped, a file a user uploaded is still preserved, and a sync that already fitted is byte-for-byte the request it always was.

Two things follow from the reference being content-addressed:

A transfer that fails still says so. If the bytes cannot be parked — a Space whose store the import cannot reach — the file falls back to the old road and the failure names both halves: which file is over the limit and by how much, and why the new road was unavailable. And a reference the receiving Space cannot resolve is reported as the failure it is, never as a file quietly written empty. Each Space's content-sync log keeps telling you the truth about its own assets.

Reconnecting…
The server was updated. Reloading the page to pick up the latest version.