Make Scriptorium validation deterministic

This commit is contained in:
2026-09-05 00:29:05 +00:00
parent fddf78dc80
commit abd405015b
3 changed files with 130 additions and 33 deletions

View File

@@ -574,6 +574,28 @@ func TestScriptoriumLoadAndValidate(t *testing.T) {
}
}
func TestScriptoriumDiagnosticsAreIndependentOfMapInsertionOrder(t *testing.T) {
invalidArtifact := ScriptoriumArtifactConfig{Enabled: true}
firstArtifacts := make(map[string]ScriptoriumArtifactConfig)
firstArtifacts["beta"] = invalidArtifact
firstArtifacts["alpha"] = invalidArtifact
secondArtifacts := make(map[string]ScriptoriumArtifactConfig)
secondArtifacts["alpha"] = invalidArtifact
secondArtifacts["beta"] = invalidArtifact
firstErr := validateScriptorium(&ScriptoriumConfig{Binary: "scriptorium", Artifacts: firstArtifacts}, nil)
secondErr := validateScriptorium(&ScriptoriumConfig{Binary: "scriptorium", Artifacts: secondArtifacts}, nil)
if firstErr == nil || secondErr == nil {
t.Fatalf("validateScriptorium() errors = %v / %v, want validation failures", firstErr, secondErr)
}
if firstErr.Error() != secondErr.Error() {
t.Fatalf("equivalent maps produced different diagnostics:\nfirst: %v\nsecond: %v", firstErr, secondErr)
}
if !strings.Contains(firstErr.Error(), "pipeline.scriptorium.artifacts.") || !strings.Contains(firstErr.Error(), "prompt_id") {
t.Fatalf("validation error = %v, want artifact field and semantic category", firstErr)
}
}
func TestScriptoriumLegacyTranscriptSourcesRejected(t *testing.T) {
legacyTranscriptSources := []string{
"narratio.transcript." + "merged",