Hardened the proposal modules to skip malformed proposals rather than hard failing the entire run
All checks were successful
ci/woodpecker/tag/release Pipeline was successful

This commit is contained in:
2026-05-17 07:19:24 -05:00
parent a84941d681
commit 9c2d8338d7
17 changed files with 436 additions and 137 deletions

View File

@@ -229,7 +229,7 @@ func TestGenerateCandidatesMalformedStructuredResponse(t *testing.T) {
responses: []StructuredCorrectionSet{
{
Corrections: []StructuredCorrectionProposal{
{TargetSegmentID: 1, OriginalText: "x", CorrectedText: "", Confidence: 0.9},
{TargetSegmentID: 0, OriginalText: "x", CorrectedText: "", Confidence: 0.9},
},
},
},
@@ -237,9 +237,18 @@ func TestGenerateCandidatesMalformedStructuredResponse(t *testing.T) {
req := defaultRequest(t)
req.LLMClient = client
_, err := GenerateCandidates(context.Background(), req)
if err == nil || !strings.Contains(err.Error(), "invalid structured correction") {
t.Fatalf("expected structured response validation failure, got %v", err)
got, err := GenerateCandidates(context.Background(), req)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if len(got.Corrections) != 0 || len(got.Enriched) != 0 {
t.Fatalf("expected invalid proposal to be dropped, got %+v", got)
}
if len(got.Dropped) != 1 {
t.Fatalf("expected one dropped candidate, got %+v", got.Dropped)
}
if got.Dropped[0].ReasonCode != "invalid_structured_correction" {
t.Fatalf("unexpected dropped reason: %+v", got.Dropped[0])
}
}