Data Dictionary

Data Dictionary

Status: Active | Version: 1.0.0 | Last Updated: 2026-05-23

This document defines every significant data entity, field, and enum used across the ML Incident Response Platform — in the PostgreSQL schema, the API payloads, and the Prometheus metrics surface. Engineers and analysts should treat this as the canonical source of truth for field names, types, allowed values, and business-level definitions.


Entity: incidents

The core table. Each row represents a discrete operational event affecting one or more ML models in production.

ColumnTypeNullableDescription
idUUIDNoPrimary key, generated by gen_random_uuid()
titleVARCHAR(500)NoHuman-readable summary. Populated by the engineer or automated alert.
severityENUMNoSee Severity Levels below.
statusENUMNoCurrent lifecycle state. See Incident Status.
model_idUUIDNoForeign key → models.id. The primary affected model.
descriptionTEXTYesFree-form markdown body. Supports embedded links and code blocks.
trigger_sourceENUMNoHow the incident was created: manual, automated_drift, automated_performance, pagerduty.
labelsTEXT[]NoArbitrary string tags. Default: {}. Used for filtering and routing rules.
assigned_toVARCHAR(255)YesPagerDuty on-call schedule name or individual user slug.
runbook_urlTEXTYesLink to the applicable runbook in runbooks/.
created_atTIMESTAMPTZNoSet on insert, never updated.
updated_atTIMESTAMPTZNoUpdated on every write via trigger.
resolved_atTIMESTAMPTZYesPopulated when status transitions to resolved.
closed_atTIMESTAMPTZYesPopulated when status transitions to closed.
created_byVARCHAR(255)NoJWT sub claim of the user or service account that created the record.

Severity Levels

ValueLabelSLO — Time to AcknowledgeSLO — Time to ResolveTypical Trigger
P1Critical5 minutes1 hourProduction model completely unavailable or returning null predictions
P2High15 minutes4 hoursPSI > 0.25 on a revenue-critical model; error rate > 5%
P3Medium1 hour24 hoursPSI 0.15–0.25; performance degradation within acceptable range
P4Low4 hours72 hoursMinor drift detected; scheduled maintenance window needed

Incident Status

Status values follow a strict state machine. See governance.md for the full transition diagram.

ValueDescription
openCreated but not yet acknowledged
investigatingAcknowledged; root cause analysis in progress
mitigatedImmediate impact contained; root cause may still be unknown
resolvedRoot cause identified and fix confirmed in production
closedPost-mortem completed and action items assigned

Entity: incident_timeline

Append-only audit log of all events that occurred during an incident’s lifecycle.

ColumnTypeNullableDescription
idUUIDNoPrimary key
incident_idUUIDNoForeign key → incidents.id
event_typeENUMNonote, status_change, escalation, runbook_step_completed, automated_alert
bodyTEXTNoMarkdown content of the event
authorVARCHAR(255)NoUser slug or service account identifier
occurred_atTIMESTAMPTZNoWhen the event occurred (may differ from created_at for retroactive entries)
created_atTIMESTAMPTZNoWhen the record was inserted

Entity: models

Registry of ML models monitored by the platform.

ColumnTypeNullableDescription
idUUIDNoPrimary key
nameVARCHAR(255)NoHuman-readable model identifier, e.g. credit-risk-v3
versionVARCHAR(50)NoSemantic version or git SHA of the model artifact
stageENUMNostaging, production, deprecated
teamVARCHAR(255)NoOwning team slug. Used for alert routing.
feature_store_refTEXTYesPath or URI to the feature store view used at training time
model_card_urlTEXTYesLink to the model card document
registered_atTIMESTAMPTZNoWhen the model was added to the registry
promoted_atTIMESTAMPTZYesWhen the model was promoted to production

Entity: drift_assessments

Stores point-in-time drift evaluation results for each model run by the drift detection pipeline.

ColumnTypeNullableDescription
idUUIDNoPrimary key
model_idUUIDNoForeign key → models.id
assessed_atTIMESTAMPTZNoWindow end time of the assessment
psi_compositeFLOATNoWeighted composite PSI across all features. Threshold: 0.15 (warn), 0.25 (critical).
ks_p_valueFLOATNoKS-test p-value across the prediction distribution. Values < 0.05 indicate significant drift.
drift_detectedBOOLEANNotrue if any individual feature PSI > threshold or KS p-value < 0.05
feature_scoresJSONBNoMap of feature_name → psi_score for per-feature drill-down
reference_window_startTIMESTAMPTZNoStart of the training/baseline data window
reference_window_endTIMESTAMPTZNoEnd of the training/baseline data window
evaluation_window_startTIMESTAMPTZNoStart of the production data window compared against reference
evaluation_window_endTIMESTAMPTZNoEnd of the production data window

Prometheus Metrics

The platform exposes a /metrics endpoint (Prometheus text format) scraped every 30 seconds.

Metric nameTypeLabelsDescription
mlplatform_incidents_totalCounterseverity, trigger_sourceTotal incidents created since service start
mlplatform_incidents_openGaugeseverityCurrently open incidents by severity
mlplatform_drift_psi_compositeGaugemodel_id, model_nameLatest composite PSI score per model
mlplatform_drift_detections_totalCountermodel_id, drift_detectedTotal drift assessments run
mlplatform_api_request_duration_secondsHistogrammethod, endpoint, status_codeAPI latency distribution
mlplatform_redis_denylist_sizeGaugeCurrent number of denylisted JWT JTIs in Redis

Enum Reference

All enum values are stored as lowercase strings in PostgreSQL to avoid case-sensitivity bugs during ORM mapping.

Enum nameValues
incident_severityp1, p2, p3, p4
incident_statusopen, investigating, mitigated, resolved, closed
trigger_sourcemanual, automated_drift, automated_performance, pagerduty
model_stagestaging, production, deprecated
timeline_event_typenote, status_change, escalation, runbook_step_completed, automated_alert