Skip to content

Validation Models

This page documents the data models related to data validation rules and results.


ValidationReport

Result of a validation run against workbook data.

Properties

Property Type Description
report_id string Report identifier
passed boolean Whether all checks passed
summary ValidationSummary Count of findings by severity
findings ValidationFinding[] Individual validation findings
validators_run string[] Categories of validators executed
domain string Validation domain (clo or servicer)
workbook_id string (UUID)? Source workbook (if applicable)
sheet_name string? Validated sheet (if applicable)
ingest_gate IngestGate? Ingestion gate result
ingest_diagnostics object? Schema drift and mapping diagnostics

Example

{
  "report_id": "val_abc123",
  "passed": false,
  "summary": {
    "critical": 0,
    "errors": 2,
    "warnings": 5,
    "total": 7
  },
  "findings": [
    {
      "rule_id": "clo_par_value_positive",
      "name": "Par Value Positive Check",
      "severity": "error",
      "category": "sanity",
      "message": "2 loans have negative par values",
      "affected_rows": [45, 89],
      "field": "par_value"
    }
  ],
  "validators_run": ["sanity", "regulatory"],
  "domain": "clo",
  "workbook_id": "550e8400-e29b-41d4-a716-446655440000",
  "sheet_name": "Holdings"
}

ValidationFinding

A single validation finding.

Properties

Property Type Description
rule_id string Rule that generated this finding
name string Human-readable rule name
severity string Finding severity
category string Rule category (sanity or regulatory)
message string Description of the finding
affected_rows integer[]? Row indices with issues
field string? Field name with the issue

ValidationRule

Definition of a validation rule.

Properties

Property Type Description
rule_id string Unique rule identifier
name string Rule display name
description string What the rule validates
domain string Applicable domain: clo, servicer, or both
severity string Default severity level
category string Rule category: sanity or regulatory
thresholds object? Configurable thresholds

Example

{
  "rule_id": "clo_par_value_positive",
  "name": "Par Value Positive Check",
  "description": "Validates that all par values are positive numbers",
  "domain": "clo",
  "severity": "error",
  "category": "sanity",
  "thresholds": null
}

IngestGate

Controls whether data ingestion should proceed based on validation results.

Properties

Property Type Description
allowed boolean Whether ingestion is allowed
blocking_findings ValidationFinding[] Critical findings that block ingestion

Enumerations

Validation Domain

Value Description
clo CLO holdings and portfolio data
servicer Servicer snapshot and loan data
both Rules applicable to either domain

Rule Category

Value Description
sanity Basic data integrity (types, ranges, required fields)
regulatory Compliance and regulatory requirements