from __future__ import annotations import hashlib from datetime import datetime, timezone from typing import Any from data_studio.identity import canonical_json def backup_manifest(environment: str, collections: dict[str, str], hf_artifacts: dict[str, str]) -> dict[str, Any]: payload = { "schema_version": "1.0", "environment": environment, "collections": collections, "hf_artifacts": hf_artifacts, } return { **payload, "manifest_checksum": hashlib.sha256(canonical_json(payload).encode("utf-8")).hexdigest(), "created_at": datetime.now(timezone.utc).isoformat(), } def impact_report( revoked_entity_id: str, dependency_edges: list[dict[str, str]], ) -> dict[str, Any]: affected: set[str] = set() frontier = [revoked_entity_id] while frontier: current = frontier.pop() for edge in dependency_edges: if edge["from"] == current and edge["to"] not in affected: affected.add(edge["to"]) frontier.append(edge["to"]) return {"revoked_entity_id": revoked_entity_id, "affected_entities": sorted(affected)} def quality_drift( baseline_failure_rate: float, current_failure_rate: float, investigation_delta: float, ) -> dict[str, Any]: delta = current_failure_rate - baseline_failure_rate return { "baseline_failure_rate": baseline_failure_rate, "current_failure_rate": current_failure_rate, "delta": delta, "investigation_required": delta >= investigation_delta, }