A version is a complete immutable state
Each deliberate save creates a new encrypted file version instead of overwriting the previous bytes. The timeline records creator, time, version number and comment. Older states remain available according to the organisation's retention policy.
- Never reuse a version number
- Keep comments short and decision-oriented
- Review a specific version, not a mutable filename
- Record the source and intended next step
- Use hashes when an external handover must reference exact bytes
Comments explain intent; checks establish evidence
“Fixed labels” is weaker than “Added questionnaire-confirmed labels for q12–q18; case values unchanged.” A good comment explains scope and evidence. The SAV Check and round-trip report complement the comment with machine-verifiable findings.
Handle concurrent work explicitly
If two people open the same base version, they can create competing outputs. The safe near-term workflow is to notice that a newer version exists, review both intents and create a reconciled successor. Hidden last-write-wins behaviour is inappropriate for controlled research files.
- Open a known base
Start from a visible version number rather than an ambiguously named attachment.
- Make and check changes
Keep changes explainable and run quality and round-trip checks.
- Save with a decision comment
Describe what changed, why and whether case values were affected.
- Request review
Have another authorised member approve or reject that exact version.
Frequently asked questions
Why not store SAV files directly in Git?
You can store them, but normal text diffs cannot explain binary dictionary and case changes. A file-oriented timeline and domain checks are more useful for most research users.
Can an approved version be changed?
No. A change produces a new version that requires its own review.
What belongs in a version comment?
Scope, reason, evidence and whether values or only metadata changed. Never paste sensitive case data into the comment.
Does versioning replace backups?
No. Version history protects logical states; backups protect the service against storage or database loss.