Trim and validate scene caveats

This commit is contained in:
2026-07-05 13:30:32 +00:00
parent 95218218e2
commit d3f790095e
6 changed files with 49 additions and 9 deletions

View File

@@ -99,13 +99,17 @@ func (c *Chunker) Chunk(ctx context.Context, req contracts.ChunkRequest) (contra
return contracts.ChunkResult{}, chunkerErrorf("complete structured output: %w", err)
}
warnings, err := warningsFromCaveats(response.BoundaryCaveats)
if err != nil {
return contracts.ChunkResult{}, chunkerErrorf("malformed structured output: %w", err)
}
chunks, err := chunksFromResponse(req.Source, response)
if err != nil {
return contracts.ChunkResult{}, chunkerErrorf("malformed structured output: %w", err)
}
return contracts.ChunkResult{
Chunks: chunks,
Warnings: warningsFromCaveats(response.BoundaryCaveats),
Warnings: warnings,
}, nil
}
@@ -259,19 +263,23 @@ func validBoundaryConfidence(value string) bool {
}
}
func warningsFromCaveats(caveats []string) []contracts.Warning {
func warningsFromCaveats(caveats []string) ([]contracts.Warning, error) {
if len(caveats) == 0 {
return nil
return nil, nil
}
warnings := make([]contracts.Warning, 0, len(caveats))
for _, caveat := range caveats {
for i, caveat := range caveats {
trimmed := strings.TrimSpace(caveat)
if trimmed == "" {
return nil, fmt.Errorf("boundary_caveats[%d] must not be empty after trimming", i)
}
warnings = append(warnings, contracts.Warning{
Scope: Key,
ReasonCode: "scene_boundary_caveat",
Message: caveat,
Message: trimmed,
})
}
return warnings
return warnings, nil
}
func cloneUnits(units []source.SourceUnit) []source.SourceUnit {