Immutability and versioning¶
Nothing on trac is overwritten. Every change to a model or dataset creates a new version rather than replacing what came before, and every calculation is captured as a permanent, reproducible record. This is the foundation that everything else in the platform — audit, lineage, and repeatability — is built on.
Model versioning |
Model code is never copied into the platform. Each version corresponds to a specific commit in the source repository, and all previous versions remain accessible — see Virtualised deployment for how this works. |
Data versioning |
Internal storage is write-once: trac has sole write access, and every write adds a new version rather than modifying data in place. Previous versions of a dataset remain queryable at any time. |
Calculation contracts |
Every RunModel or RunFlow job creates a metadata record — a calculation contract — specifying the exact model version, input data versions, and parameter values used. Because everything it references is immutable, resubmitting the same contract always reproduces the same result. |
Because objects and jobs are permanently versioned and cross-referenced, the full history of any object — what created it, when, and from what inputs — remains queryable indefinitely. This is what the platform calls intrinsic governance: auditability, repeatability, and self-documentation as a consequence of how execution works, rather than something enforced through separate controls.
Documentation v0.10