"""Canonical provider assembly for one deterministic platform snapshot.""" from __future__ import annotations from collections.abc import Callable from datetime import datetime from app.intelligence.providers import ( AssetFactProvider, CloudNetworkFactProvider, CostEfficiencyFactProvider, LifecycleFactProvider, PeopleOrgFactProvider, PlatformOperationsFactProvider, SecurityComplianceFactProvider, SoftwareApiFactProvider, ) from app.intelligence.snapshot_service import FactProvider BUSINESS_AUDIENCE_KEY = "business_shared" # This order is product policy and mirrors the locked eight-dimension cockpit. # It is explicit rather than module-discovered so adding a provider cannot # silently change production scoring or outbound fact packages. PLATFORM_DIMENSIONS = ( "people_org", "lifecycle", "assets", "software_api", "cloud_network", "cost_efficiency", "security_compliance", "platform_ops", ) def platform_providers( *, now: Callable[[], datetime] | None = None, ) -> tuple[FactProvider, ...]: """Return exactly one global, business-basis provider per dimension.""" providers: tuple[FactProvider, ...] = ( PeopleOrgFactProvider(now=now), LifecycleFactProvider(now=now), AssetFactProvider(now=now), SoftwareApiFactProvider(now=now), CloudNetworkFactProvider(now=now), CostEfficiencyFactProvider(now=now), SecurityComplianceFactProvider(now=now), PlatformOperationsFactProvider(now=now), ) actual = tuple(row.dimension for row in providers) if actual != PLATFORM_DIMENSIONS: raise RuntimeError( f"Platform provider registry drift: expected {PLATFORM_DIMENSIONS}, got {actual}" ) return providers __all__ = ["BUSINESS_AUDIENCE_KEY", "PLATFORM_DIMENSIONS", "platform_providers"]