rule 1: every release is immutable
rule 2: not every release is good
so, normally, each release has a incremental numbered versions. and there are two parallel release streams: nightly and stable. sometimes the two streams are combined.
binaries in nightly can be releases automatically and can used as latest.
live is the one being used
some nightly releases can be labelled as stable.
it’s better to trace down to original input so that bug can be found.
so, rule 3: every release can be reproduced
for code, there is version control system and each version of source package can be packaged and released.
for data, we should package the raw, the binaries processing it and all the parameters.
gitlab annex is able to do binary version control.