package metadata import "gitea.maximumdirect.net/eric/audita/internal/framework/contracts" type ExecutionClass string const ( ExecutionClassDeterministic ExecutionClass = "deterministic" ExecutionClassLLMBacked ExecutionClass = "llm_backed" ) type ClassifiedValidator interface { contracts.Validator ExecutionClass() ExecutionClass } func ClassOf(v contracts.Validator) ExecutionClass { if v == nil { return ExecutionClassDeterministic } classified, ok := v.(ClassifiedValidator) if !ok { return ExecutionClassDeterministic } switch classified.ExecutionClass() { case ExecutionClassLLMBacked: return ExecutionClassLLMBacked case ExecutionClassDeterministic: return ExecutionClassDeterministic default: return ExecutionClassDeterministic } } func Wrap(v contracts.Validator, class ExecutionClass) contracts.Validator { if v == nil { return nil } if class != ExecutionClassLLMBacked { class = ExecutionClassDeterministic } return wrappedValidator{ Validator: v, class: class, } } type wrappedValidator struct { contracts.Validator class ExecutionClass } func (w wrappedValidator) ExecutionClass() ExecutionClass { return w.class }