From 7f8b6446de69475aacafef6e016a9b5654ceb5d8 Mon Sep 17 00:00:00 2001 From: Muhammad Gibran Alfarizi Date: Thu, 25 Jun 2026 15:33:54 +0200 Subject: [PATCH 1/2] ENH: add project validation metadata --- src/fmu/settings/models/project_config.py | 22 ++++++++++++++++++++++ tests/conftest.py | 14 ++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/src/fmu/settings/models/project_config.py b/src/fmu/settings/models/project_config.py index c6dc5c5..b147f57 100644 --- a/src/fmu/settings/models/project_config.py +++ b/src/fmu/settings/models/project_config.py @@ -74,6 +74,26 @@ class RmsProject(BaseModel): wells: list[RmsWell] | None = None +class ValidationRecord(BaseModel): + """Metadata for a successful validation of project configuration data.""" + + last_validated_at: AwareDatetime + """Timestamp when the data was last validated.""" + + validated_by: str + """User who performed the validation.""" + + +class ProjectValidation(BaseModel): + """Validation metadata for project configuration data.""" + + masterdata_smda: ValidationRecord | None = None + """Validation metadata for masterdata checked against SMDA.""" + + rms_project: ValidationRecord | None = None + """Validation metadata for RMS configuration checked against the RMS project.""" + + class ProjectConfig(ResettableBaseModel): """The configuration file in a .fmu directory. @@ -93,6 +113,7 @@ class ProjectConfig(ResettableBaseModel): access: Access | None = None cache_max_revisions: int = Field(default=5, ge=5) rms: RmsProject | None = None + validation: ProjectValidation = Field(default_factory=ProjectValidation) @classmethod def reset(cls: type[Self]) -> Self: @@ -112,4 +133,5 @@ def reset(cls: type[Self]) -> Self: access=None, cache_max_revisions=5, rms=None, + validation=ProjectValidation(), ) diff --git a/tests/conftest.py b/tests/conftest.py index ba8ddb6..cdb7d04 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -99,6 +99,10 @@ def config_dict(unix_epoch_utc: datetime) -> dict[str, Any]: "model": None, "access": None, "rms": None, + "validation": { + "masterdata_smda": None, + "rms_project": None, + }, } @@ -347,6 +351,16 @@ def mocked_project_config_with_all_fields( "model": model_dict, "access": access_dict, "rms": rms_project, + "validation": { + "masterdata_smda": { + "last_validated_at": unix_epoch_utc, + "validated_by": "user", + }, + "rms_project": { + "last_validated_at": unix_epoch_utc, + "validated_by": "user", + }, + }, } From 23a4319e4da5e4e430f026e831256f15765e158f Mon Sep 17 00:00:00 2001 From: Muhammad Gibran Alfarizi Date: Mon, 29 Jun 2026 09:41:00 +0200 Subject: [PATCH 2/2] ENH: rename project validation user field --- src/fmu/settings/models/project_config.py | 4 ++-- tests/conftest.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/fmu/settings/models/project_config.py b/src/fmu/settings/models/project_config.py index b147f57..8c12380 100644 --- a/src/fmu/settings/models/project_config.py +++ b/src/fmu/settings/models/project_config.py @@ -80,8 +80,8 @@ class ValidationRecord(BaseModel): last_validated_at: AwareDatetime """Timestamp when the data was last validated.""" - validated_by: str - """User who performed the validation.""" + last_validated_by: str + """User who performed the last validation.""" class ProjectValidation(BaseModel): diff --git a/tests/conftest.py b/tests/conftest.py index cdb7d04..161f29a 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -354,11 +354,11 @@ def mocked_project_config_with_all_fields( "validation": { "masterdata_smda": { "last_validated_at": unix_epoch_utc, - "validated_by": "user", + "last_validated_by": "user", }, "rms_project": { "last_validated_at": unix_epoch_utc, - "validated_by": "user", + "last_validated_by": "user", }, }, }