Classify registry normalization diagnostics

This commit is contained in:
2026-08-27 15:57:29 +00:00
parent ccba2ce3f9
commit 6a1fd7bdb6
12 changed files with 247 additions and 206 deletions

View File

@@ -22,19 +22,29 @@ const (
// locally grouped advisories. These findings do not indicate process
// degradation.
func DataQualityResult(findings []contracts.Warning) (contracts.ValidationResult, error) {
diagnostics, err := Collect(findings, contracts.DiagnosticDispositionAdvisory, contracts.DiagnosticCategoryDataQuality)
if err != nil {
return contracts.ValidationResult{}, err
}
return contracts.ValidationResult{Approved: true, Diagnostics: diagnostics}, nil
}
// Collect converts individual deterministic findings into bounded,
// occurrence-grouped producer diagnostics with one consistent classification.
func Collect(findings []contracts.Warning, disposition contracts.DiagnosticDisposition, category contracts.DiagnosticCategory) ([]contracts.ProducerDiagnostic, error) {
collector := frameworkdiagnostics.NewCollector()
for _, finding := range findings {
if err := collector.Add(contracts.ProducerDiagnostic{
Disposition: contracts.DiagnosticDispositionAdvisory,
Category: contracts.DiagnosticCategoryDataQuality,
Disposition: disposition,
Category: category,
ReasonCode: finding.ReasonCode,
OccurrenceCount: 1,
Samples: []contracts.DiagnosticSample{{Scope: finding.Scope, Message: finding.Message}},
}); err != nil {
return contracts.ValidationResult{}, fmt.Errorf("collect data-quality diagnostic: %w", err)
return nil, fmt.Errorf("collect diagnostic: %w", err)
}
}
return contracts.ValidationResult{Approved: true, Diagnostics: collector.Diagnostics()}, nil
return collector.Diagnostics(), nil
}
func Truncate(value string) string {