Fig 1
A publish
Click to publish
live: v1
v1
v2
v3
Laptop and the site folder
Server: one Go binary
Signed upload tickets
R2 cabinet, one drawer per version
Live pointer
Live version
The files skip the server. Finalize flips a pointer, so a rollback is the same flip back.