Add Seriatim configuration contract

This commit is contained in:
2026-05-03 19:13:50 -05:00
parent 657a44d8fb
commit 7aedca2ca1
8 changed files with 291 additions and 8 deletions

View File

@@ -36,8 +36,7 @@ func validatePipeline(cfg *PipelineConfig) error {
if err := validateWhisperX(cfg.WhisperX); err != nil {
return err
}
if err := validateDuration("pipeline.seriatim.timeout", cfg.Seriatim.Timeout); err != nil {
if err := validateSeriatim(cfg.Seriatim); err != nil {
return err
}
if err := validateDuration("pipeline.audita.timeout", cfg.Audita.Timeout); err != nil {
@@ -85,6 +84,44 @@ func validateWhisperX(cfg WhisperXConfig) error {
return nil
}
func validateSeriatim(cfg SeriatimConfig) error {
if strings.TrimSpace(cfg.Binary) == "" {
return fmt.Errorf("pipeline.seriatim.binary is required")
}
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 cfg.CoalesceGap == nil {
return fmt.Errorf("pipeline.seriatim.coalesce_gap must be set (defaults should populate this)")
}
if *cfg.CoalesceGap < 0 {
return fmt.Errorf("pipeline.seriatim.coalesce_gap must be >= 0")
}
for _, item := range []struct {
name string
value *float64
}{
{name: "pipeline.seriatim.env.overlap_word_run_gap", value: cfg.Env.OverlapWordRunGap},
{name: "pipeline.seriatim.env.overlap_word_run_reorder_window", value: cfg.Env.OverlapWordRunReorderWindow},
{name: "pipeline.seriatim.env.backchannel_max_duration", value: cfg.Env.BackchannelMaxDuration},
{name: "pipeline.seriatim.env.filler_max_duration", value: cfg.Env.FillerMaxDuration},
} {
if item.value != nil && *item.value <= 0 {
return fmt.Errorf("%s must be > 0 when provided", item.name)
}
}
return nil
}
func validateSession(cfg *SessionConfig) error {
if strings.TrimSpace(cfg.SessionID) == "" {
return fmt.Errorf("session.session_id is required")