M8. Each package must provide a runtime API, for example a function call, to return the current version number of the software and indicate what configure/CMAKE and compiler options were used to build the package. For development versions of the software, each package must provide the current commit ID in the repository. With this information users should be able to rebuild the package in the same state. We do not currently require that version information for all dependent packages be provided, so it may not be possible to rebuild the entire software stack in the same state.