The storage of information about simulation runs has two aspects
Before we discuss and finally implement all the details, we should start in a first step with the storage of the following information:
How do we want to handle this?
How to define the Run Start?
Our version management is designed for runs coming in sequential order. Parameters stay the same until experiment conditions change and a new version is needed.
Simulations on the other hand are completely unordered. Many people make simulations at the same time, but for different purposes, with different projectile/target combinations, energies, geometries, ...
They may need different parameter sets for the analysis.
To attach parameters to the simulation runs, we needed a Run Start. This date is somehow artificial, but needed to read the parameters. Runs with same parameter sets have to be grouped together, otherwise one has to validate parameter version for each run individually and cannot validate them for a range of runs.
I propose to introduce projects (analog to beamtimes for real runs).
For simulation projects corresponding to real beamtimes the names should be "experiment + SIM", e.g. NOV01SIM.
Projects have a time range (e.g. the same as a real beamtime) and all simulation runs get start times inside this date range.
We can think about sub-projects (e.g. with/without magnetic field), which again define a time window for a couple of runs.
The most containers will only need one version and one can take the date range of the project for validation. All runs made later in this project will use these parameters without further need to validate.
Others may have different versions for the sub-projects.
How many parameter containers really change and when? How many versions should we expect?