01 · DeclareEvery input arrives with its unit and its bounds
Every physical parameter is declared with a unit, bounds and a default, and a platform default reads “missing, declare”, never a silent number. Computation is SI inside. A quantity with no declared unit is never written unitless, and a decimal comma is refused with a one-click fix.
02 · VersionA study with runs never changes under them
A design study is versioned data. Once it has runs, an edit writes version n+1, so every run stays bound to the exact limits that judged it. The model fingerprint changes whenever the model, the mesh or a case file changes. Clone and branch, including a branch from a single candidate, keep their lineage.
03 · SealEach run carries its own reproducibility record
A surrogate-based study run records its seeds, the study snapshot (SHA-256), the driver host code, the model fingerprint, versions, threads and an environment lock: the hash and the full package list. Run state lives in an append-only log, flushed to disk at every transition. Kept field files get checksums, verified again at close.
04 · LinkOne provenance graph, walked in either direction
Geometry versions, meshes, cases, runs, campaigns, dataset versions, models and reports are nodes; “derived from”, “member of” and “follows” are edges. Upstream answers how did we get here. Downstream answers what does this change touch. Finished solver cases are recorded as they finish, without anybody remembering to import them.
05 · ReportA report that cannot be traced does not export
A traced report checks every number, figure and verdict against the provenance store. A claim with no evidence, a cited node the store has never seen, or an export with no store at all: each stops the export and names what failed. The report’s identity is a digest of its claims, so the same analysis exported twice is one report.
06 · ReplayRe-run a past study, and know what “the same” means
Resume starts a new run linked to its parent and replays the parent’s recorded fits as it goes. A changed study, seed, engine or driver code, or a replay that drifts from the record, refuses with the reason. The run states its reproducibility class (bitwise, within tolerance or order-dependent) as measured, never inferred.