classDiagram direction TB class ModelRelease { <> } class FullRiskPredictor { <> } class DatasetSnapshot { <> } class EvaluationRun { <> } class ForecastRun { -String forecastRunId -String modelReleaseId -Instant startedAt -String status } class ForecastTarget { -String targetId -String routeAxisRef -String targetRouteStop -Instant at } class FullRiskForecast { -String forecastId -String targetId -String sourcePredictionId -Instant createdAt } class Estimate { -String state -Double pFull } class UnavailableReason { -String code } class ModelEvaluationView { -String evaluationRunId -String metricManifestDigest } class PublicLineage { -String datasetSnapshotIdAndDigest -String evaluationRunId -String modelReleaseId } class PublicationBundle { -String publicationBundleId -String channel -String purpose -Instant sealedAt -int forecastCount -String forecastManifestDigest } class ActivePublication { -String channel -String publicationBundleId -long pointerVersion } class PublicationQuery { <> +getActive(String channel) PublicationBundle } ForecastRun --> ModelRelease ForecastRun ..> FullRiskPredictor ForecastRun --> ForecastTarget ForecastRun --> FullRiskForecast FullRiskForecast *-- Estimate Estimate "1" --> "0..1" UnavailableReason ModelEvaluationView ..> EvaluationRun PublicLineage ..> DatasetSnapshot PublicLineage ..> EvaluationRun PublicLineage ..> ModelRelease PublicationBundle --> "0..*" FullRiskForecast PublicationBundle *-- ModelEvaluationView PublicationBundle *-- PublicLineage ActivePublication --> PublicationBundle PublicationQuery ..> ActivePublication