Add datasource quality and schema gates

This commit is contained in:
2026-08-04 11:23:14 +02:00
parent a6d5c9839d
commit 075d2fc087
16 changed files with 1305 additions and 10 deletions
@@ -1,5 +1,7 @@
from __future__ import annotations
from collections.abc import Mapping
from fastapi import APIRouter, Depends, HTTPException, Query, status
from sqlalchemy.orm import Session
@@ -224,6 +226,11 @@ def api_create_stage(
"mode": stage.mode,
"row_count": stage.row_count,
"fingerprint": stage.fingerprint,
"validation_valid": stage.validation.get("valid"),
"quality_policy_hash": stage.validation.get("policy_hash"),
"schema_classification": _safe_mapping(
stage.validation.get("schema_change")
).get("classification"),
},
)
session.commit()
@@ -262,6 +269,9 @@ def api_promote_stage(
"materialization_ref": materialization.ref,
"revision": materialization.revision,
"frozen": materialization.frozen_at is not None,
"quality_policy_hash": _safe_mapping(
materialization.provenance.get("stage_validation")
).get("policy_hash"),
},
)
session.commit()
@@ -663,6 +673,10 @@ def _governance(
return DatasourceGovernance.from_mapping(payload.model_dump())
def _safe_mapping(value: object) -> Mapping[str, object]:
return value if isinstance(value, Mapping) else {}
def _audit(
session: Session,
principal: ApiPrincipal,