Align validator identity and span domain checks
This commit is contained in:
@@ -873,6 +873,36 @@ func TestRunnerApplicationSkipAfterValidatorApprovalReported(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestRunnerApplyConflictAfterTwoInitiallyValidDeletions(t *testing.T) {
|
||||
transcript := &schema.Transcript{Segments: []schema.Segment{{ID: 1, Text: "a b"}}}
|
||||
r := New(fakeFactory{modules: map[string]contracts.TranscriptModule{
|
||||
"m": fakeModule{key: "m", policy: proposals.ReplacementPolicyRequireUnique, validators: []contracts.Validator{validators.ProposalShapeValidator{}, validators.NonEmptyResultingSegmentValidator{}}, proposeF: func(req contracts.ProposalRequest) ([]proposals.CorrectionProposal, error) {
|
||||
return []proposals.CorrectionProposal{
|
||||
{TargetSegmentID: 1, OriginalText: "a", CorrectedText: "", Confidence: 1},
|
||||
{TargetSegmentID: 1, OriginalText: "b", CorrectedText: "", Confidence: 1},
|
||||
}, nil
|
||||
}},
|
||||
}})
|
||||
out, err := r.Run(context.Background(), RunInput{Transcript: transcript, ModuleSpecs: []contracts.ModuleRunSpec{{ModuleKey: "m", InstanceName: "m"}}, CaptureCandidates: true})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if got := out.FinalTranscript.Segments[0].Text; got != " b" {
|
||||
t.Fatalf("expected first deletion only, got %q", got)
|
||||
}
|
||||
if len(out.ModuleResults) != 1 || len(out.ModuleResults[0].SkippedChanges) != 1 || out.ModuleResults[0].SkippedChanges[0].SkipReason != proposals.SkipReasonEmptyResultingText {
|
||||
t.Fatalf("expected skipped debug evidence: %+v", out.ModuleResults)
|
||||
}
|
||||
if len(out.ModuleResults[0].ValidatorRejected) != 0 || len(out.WorkUnits) != 1 || out.WorkUnits[0].CorrectionsApplied != 1 {
|
||||
t.Fatalf("unexpected validation or application outcome: %+v", out)
|
||||
}
|
||||
for _, operation := range out.WorkUnits[0].Operations {
|
||||
if operation.FailureReason != "" || len(operation.RecoveryReasons) != 0 {
|
||||
t.Fatalf("apply-time conflict must not count as model error or filtering recovery: %+v", operation)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func ptrConfig(c config.Config) *config.Config { return &c }
|
||||
|
||||
type fakeStructuredClient struct {
|
||||
|
||||
Reference in New Issue
Block a user