feat(provenance): govern source snapshots and data inputs

This commit is contained in:
Jens
2026-08-01 23:46:17 +02:00
parent cebeb5f3b4
commit 5b3c17b494
96 changed files with 20156 additions and 351 deletions
@@ -9,6 +9,7 @@ from app.core.config import Settings, get_settings
from app.core.errors import AppError
from app.services.detection_service import DetectionService
from app.services.model_asset_catalog_service import ModelAssetCatalogService
from app.services.runtime_model_provenance_service import RuntimeModelProvenanceService
from app.services.yolo_adapter import YoloDetectionAdapter
@@ -41,6 +42,8 @@ class YoloPreflightService:
"accelerator_ready": None,
"model_path_set": None,
"model_file_exists": None,
"model_provenance_manifest_path": None,
"model_provenance_valid": None,
"model_load_requested": check_model_load,
"model_load_ok": None,
"manifest_path_set": None,
@@ -98,6 +101,29 @@ class YoloPreflightService:
result["message"] = "YOLO_MODEL_PATH does not point to an existing local model file."
return result
result["checks"]["model_provenance_manifest_path"] = str(
RuntimeModelProvenanceService.manifest_path_for_model(model_path)
)
try:
RuntimeModelProvenanceService.validate_for_runtime(
model_path=model_path,
model_id=resolved_settings.yolo_model_id,
task_type="object_detection",
expected_model_version=resolved_settings.yolo_model_version,
allowed_frameworks=("ultralytics/pytorch", "ultralytics", "pytorch"),
)
except AppError as exc:
result["checks"]["model_provenance_valid"] = False
result["status"] = "contract_incomplete"
result["message"] = (
"Configured YOLO weights are not runnable until their immutable runtime provenance sidecar validates: "
f"{exc.message}"
)
result["error_code"] = exc.code
result["details"] = exc.details
return result
result["checks"]["model_provenance_valid"] = True
if check_model_load:
try:
yolo_adapter_class(resolved_settings).load_model(model_path)