Releases and revisions
Releasing a version gives it the document's next revision letter: A, B, C and so on. Released means done. The version and everything in it is frozen, derived files included.
A release needs:
- a source, and a job that succeeded for exactly that source,
- for an assembly, every referenced version released and no cycles,
- for a code document, a synced commit with its snapshot and manifest,
- for a generated part, the version of the generator that made it released.
A revision can later be made obsolete. It keeps its letter, it stays readable, and the letter isn't used again.
Only an administrator (ADMIN_USERS) can take a release back. The version stays, only the revision goes, and not while a released assembly uses it.