Add normalize configuration contract

This commit is contained in:
2026-05-10 21:30:35 +00:00
parent 86d2dfa6c5
commit d1eb6d77ea
9 changed files with 288 additions and 5 deletions

View File

@@ -42,6 +42,9 @@ func validatePipeline(cfg *PipelineConfig) error {
if err := validateAudita(cfg.Audita); err != nil {
return err
}
if err := validateNormalize(cfg.Normalize); err != nil {
return err
}
if err := validateTrim(cfg.Trim); err != nil {
return err
}
@@ -58,6 +61,19 @@ func validatePipeline(cfg *PipelineConfig) error {
return nil
}
func validateNormalize(cfg *NormalizeConfig) error {
if cfg == nil {
return nil
}
if strings.TrimSpace(cfg.OutputPath) == "" {
return fmt.Errorf("pipeline.normalize.output_path must be non-empty")
}
if err := validateSeriatimOutputSchema("pipeline.normalize.output_schema", cfg.OutputSchema); err != nil {
return err
}
return nil
}
func validateTrim(cfg *TrimConfig) error {
if cfg == nil {
return nil
@@ -127,11 +143,8 @@ func validateSeriatim(cfg SeriatimConfig) error {
if err := validateDuration("pipeline.seriatim.timeout", cfg.Timeout); err != nil {
return err
}
switch cfg.OutputSchema {
case "seriatim-minimal", "seriatim-intermediate", "seriatim-full":
default:
return fmt.Errorf("pipeline.seriatim.output_schema must be one of: seriatim-minimal, seriatim-intermediate, seriatim-full")
if err := validateSeriatimOutputSchema("pipeline.seriatim.output_schema", cfg.OutputSchema); err != nil {
return err
}
if cfg.CoalesceGap == nil {
@@ -158,6 +171,15 @@ func validateSeriatim(cfg SeriatimConfig) error {
return nil
}
func validateSeriatimOutputSchema(field, value string) error {
switch strings.TrimSpace(value) {
case "seriatim-minimal", "seriatim-intermediate", "seriatim-full":
return nil
default:
return fmt.Errorf("%s must be one of: seriatim-minimal, seriatim-intermediate, seriatim-full", field)
}
}
func validateAudita(cfg AuditaConfig) error {
if strings.TrimSpace(cfg.Binary) == "" {
return fmt.Errorf("pipeline.audita.binary is required")