Skip to main content

Coverage Status

Coverage Status captures the current state of metamodel documentation for an organizational unit. It provides a point-in-time snapshot of how thoroughly domains have been modeled, enabling progress tracking and gap identification.

Schema Version: 2.1
Schema Location: /schemas/extensions/coverage-status.schema.json
Specification: JSON Schema Draft-07

Overview

What is Coverage Status?

Coverage Status records:

  • Current coverage percentage — Overall and per-domain
  • Completeness metrics — What's documented vs. what's expected
  • Quality indicators — How well domains are documented
  • Gap analysis — What's missing or incomplete
  • Trend data — How coverage has changed over time

Coverage Calculation

Coverage % = (Documented Items /Required Items) × 100

Where:

  • Documented Items = Attributes and elements with valid values
  • Required Items = Attributes and elements marked required in template

Status Attributes

Core Attributes

AttributeTypeRequiredDescription
statusIDstring (UUID)YesUnique identifier
organizationUnitreferenceYesUnit being assessed
templateReferencereferenceYesTemplate used for assessment
assessmentDatedateYesWhen assessment was performed
assessorstringNoWho performed assessment

Coverage Metrics

AttributeTypeRequiredDescription
overallCoveragenumberYesOverall percentage (0-100)
domainCoveragearrayYesPer-domain coverage details
qualityScorenumberNoDocumentation quality (0-100)
completenessScorenumberNoAttribute completeness (0-100)

Gap Analysis

AttributeTypeRequiredDescription
gapsarrayNoIdentified coverage gaps
risksarrayNoRisks from coverage gaps
recommendationsarrayNoSuggested improvements

Domain Coverage Detail

Each domain in the status includes detailed metrics:

{
"domainID": "capabilities",
"domainName": "Capabilities",
"coveragePercentage": 72,
"requirement": "required",
"targetCoverage": 90,
"variance": -18,
"status": "below-target",
"attributeMetrics": {
"total": 15,
"documented": 11,
"percentage": 73
},
"elementMetrics": {
"capabilityFunction": {"total": 45, "documented": 38, "percentage": 84},
"capabilityComponent": {"total": 120, "documented": 65, "percentage": 54}
},
"qualityIndicators": {
"descriptionQuality": "adequate",
"relationshipCompleteness": "partial",
"ownershipClarity": "good"
},
"lastUpdated": "2025-02-10"
}

Coverage Status Values

StatusCriteriaColor Code
exceeds-targetCoverage > targetGreen
meets-targetCoverage = target (±5%)Green
approaching-targetCoverage within 10% of targetAmber
below-targetCoverage > 10% below targetRed
not-startedCoverage = 0%Grey

Quality Indicators

IndicatorValuesDescription
descriptionQualitypoor /adequate /good /excellentHow well entities are described
relationshipCompletenessnone /partial /substantial /completeCross-domain links documented
ownershipClarityunclear /partial /clearAccountability assignment
temporalAccuracyoutdated /current /verifiedData freshness

JSON Schema Definition

{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://orthogramic.com/schemas/extensions/coverage-status.schema.json",
"title": "Coverage Status",
"description": "Current coverage state for an organizational unit",
"type": "object",
"required": ["statusID", "organizationUnit", "templateReference", "assessmentDate", "overallCoverage", "domainCoverage"],
"properties": {
"statusID": {
"type": "string",
"format": "uuid"
},
"organizationUnit": {
"type": "object",
"properties": {
"unitID": {"type": "string"},
"unitName": {"type": "string"}
},
"required": ["unitID"]
},
"templateReference": {
"type": "object",
"properties": {
"templateID": {"type": "string", "format": "uuid"},
"templateName": {"type": "string"}
},
"required": ["templateID"]
},
"assessmentDate": {
"type": "string",
"format": "date"
},
"assessor": {
"type": "string"
},
"overallCoverage": {
"type": "number",
"minimum": 0,
"maximum": 100
},
"domainCoverage": {
"type": "array",
"items": {
"$ref": "#/$defs/domainCoverageDetail"
}
},
"qualityScore": {
"type": "number",
"minimum": 0,
"maximum": 100
},
"completenessScore": {
"type": "number",
"minimum": 0,
"maximum": 100
},
"gaps": {
"type": "array",
"items": {
"type": "object",
"properties": {
"domainID": {"type": "string"},
"gapType": {"type": "string", "enum": ["missing-domain", "incomplete-attributes", "missing-elements", "stale-data", "quality-issue"]},
"description": {"type": "string"},
"severity": {"type": "string", "enum": ["critical", "high", "medium", "low"]},
"remediation": {"type": "string"}
}
}
},
"risks": {
"type": "array",
"items": {
"type": "object",
"properties": {
"riskDescription": {"type": "string"},
"likelihood": {"type": "string", "enum": ["high", "medium", "low"]},
"impact": {"type": "string", "enum": ["high", "medium", "low"]},
"mitigationAction": {"type": "string"}
}
}
},
"recommendations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"recommendation": {"type": "string"},
"priority": {"type": "string", "enum": ["high", "medium", "low"]},
"effort": {"type": "string", "enum": ["small", "medium", "large"]},
"expectedImpact": {"type": "string"}
}
}
},
"metadata": {
"type": "object",
"additionalProperties": true
}
},
"$defs": {
"domainCoverageDetail": {
"type": "object",
"required": ["domainID", "coveragePercentage"],
"properties": {
"domainID": {"type": "string"},
"domainName": {"type": "string"},
"coveragePercentage": {"type": "number", "minimum": 0, "maximum": 100},
"requirement": {"type": "string", "enum": ["required", "recommended", "optional", "excluded"]},
"targetCoverage": {"type": "number"},
"variance": {"type": "number"},
"status": {"type": "string", "enum": ["exceeds-target", "meets-target", "approaching-target", "below-target", "not-started"]},
"attributeMetrics": {
"type": "object",
"properties": {
"total": {"type": "integer"},
"documented": {"type": "integer"},
"percentage": {"type": "number"}
}
},
"elementMetrics": {
"type": "object",
"additionalProperties": {
"type": "object",
"properties": {
"total": {"type": "integer"},
"documented": {"type": "integer"},
"percentage": {"type": "number"}
}
}
},
"qualityIndicators": {
"type": "object",
"properties": {
"descriptionQuality": {"type": "string"},
"relationshipCompleteness": {"type": "string"},
"ownershipClarity": {"type": "string"}
}
},
"lastUpdated": {"type": "string", "format": "date"}
}
}
}
}

Example

Retail Banking Coverage Status

{
"statusID": "status-001",
"organizationUnit": {
"unitID": "div-retail-banking",
"unitName": "Retail Banking Division"
},
"templateReference": {
"templateID": "tpl-002",
"templateName": "Financial Services Enterprise Coverage"
},
"assessmentDate": "2025-02-15",
"assessor": "Enterprise Architecture Team",
"overallCoverage": 58,
"qualityScore": 72,
"completenessScore": 65,
"domainCoverage": [
{
"domainID": "organization",
"domainName": "Organization",
"coveragePercentage": 85,
"requirement": "required",
"targetCoverage": 95,
"variance": -10,
"status": "approaching-target",
"attributeMetrics": {"total": 12, "documented": 10, "percentage": 83},
"qualityIndicators": {
"descriptionQuality": "good",
"relationshipCompleteness": "substantial",
"ownershipClarity": "clear"
},
"lastUpdated": "2025-02-01"
},
{
"domainID": "capabilities",
"domainName": "Capabilities",
"coveragePercentage": 72,
"requirement": "required",
"targetCoverage": 90,
"variance": -18,
"status": "below-target",
"attributeMetrics": {"total": 15, "documented": 11, "percentage": 73},
"elementMetrics": {
"capabilityFunction": {"total": 45, "documented": 38, "percentage": 84},
"capabilityComponent": {"total": 120, "documented": 65, "percentage": 54}
},
"qualityIndicators": {
"descriptionQuality": "adequate",
"relationshipCompleteness": "partial",
"ownershipClarity": "partial"
},
"lastUpdated": "2025-02-10"
},
{
"domainID": "risk-management",
"domainName": "Risk Management",
"coveragePercentage": 45,
"requirement": "required",
"targetCoverage": 95,
"variance": -50,
"status": "below-target",
"qualityIndicators": {
"descriptionQuality": "poor",
"relationshipCompleteness": "partial",
"ownershipClarity": "unclear"
},
"lastUpdated": "2025-01-20"
}
],
"gaps": [
{
"domainID": "risk-management",
"gapType": "incomplete-attributes",
"description": "Risk appetite and tolerance not documented for 60% of capabilities",
"severity": "critical",
"remediation": "Conduct risk assessment workshops with business owners"
},
{
"domainID": "capabilities",
"gapType": "missing-elements",
"description": "Capability components at L3 only 54% complete",
"severity": "high",
"remediation": "Engage domain SMEs to document detailed components"
}
],
"risks": [
{
"riskDescription": "Incomplete risk coverage may result in regulatory finding",
"likelihood": "medium",
"impact": "high",
"mitigationAction": "Prioritize risk domain completion before next audit"
}
],
"recommendations": [
{
"recommendation": "Focus next sprint on Risk Management domain",
"priority": "high",
"effort": "medium",
"expectedImpact": "Address critical coverage gap"
},
{
"recommendation": "Schedule capability component workshops",
"priority": "medium",
"effort": "medium",
"expectedImpact": "Improve L3 capability detail"
}
]
}

Coverage Dashboard Visualization

Usage Guidelines

Performing Assessments

  1. Use consistent methodology — Apply same criteria across assessments
  2. Document evidence — Record how coverage was calculated
  3. Assess quality, not just quantity — Completeness alone isn't enough
  4. Identify root causes — Why are gaps occurring?
  5. Prioritize remediation — Focus on highest-impact gaps

Assessment Frequency

ScenarioRecommended Frequency
Active BA programMonthly
Mature organizationQuarterly
Project milestoneAt each gate
Annual reviewYearly comprehensive
For Data Engineers

Coverage Status metrics map directly to OpenMetadata completeness scores. Consider creating automated assessments that calculate coverage based on data catalog population, enabling real-time tracking of business architecture documentation alongside data asset documentation.