package pipeline import ( "fmt" "gitea.maximumdirect.net/eric/notarius/internal/core/source" ) func validateAndMaterializeChunkPlan(doc *source.SourceDocument, plan source.ChunkPlan) (source.ChunkPlan, []source.Chunk, error) { canonical, err := source.CanonicalizeChunkPlan(plan) if err != nil { return source.ChunkPlan{}, nil, fmt.Errorf("canonicalize chunk plan: %w", err) } if err := source.ValidateChunkPlan(doc, canonical); err != nil { return source.ChunkPlan{}, nil, err } chunks, err := source.MaterializeChunkPlan(doc, canonical) if err != nil { return source.ChunkPlan{}, nil, err } return canonical, chunks, nil } func cloneSourceUnit(unit source.SourceUnit) source.SourceUnit { return source.SourceUnit{ ID: unit.ID, Kind: unit.Kind, Text: unit.Text, Ref: unit.Ref, Metadata: cloneMetadata(unit.Metadata), } }