Apply sequence policy across loading tiers

This commit is contained in:
2026-10-16 18:59:52 +00:00
parent 25cf6d32b6
commit 190431740a
6 changed files with 230 additions and 14 deletions

View File

@@ -32,6 +32,7 @@ type Options[T any] struct {
SourceVersionMode sourceVersionMode
destination Path
placementMode placementMode
sequencePolicy sequencePolicy
}
// FilesystemContext supplies filesystem roots for imports and overlays.
@@ -162,6 +163,7 @@ func executeLoadRequest[T any](request loadRequest[T], secrets SecretBinding, lo
accumulator := diagnosticAccumulator{}
accounting := &importAccounting{}
mainOptions := Options[T]{Definition: request.definition, Imports: request.main.imports, Filesystem: request.main.filesystem, destination: request.main.destination.clone(), placementMode: request.main.placementMode}
mainOptions.sequencePolicy = request.sequencePolicy
mainOptions.SourceVersionMode = request.sourceVersionMode
mainOptions.Definition.Version = request.protectionVersion()
mainOptions.Overrides = request.overrides
@@ -205,6 +207,14 @@ func executeLoadRequest[T any](request loadRequest[T], secrets SecretBinding, lo
return nil, accumulator.loadError()
}
}
if request.ordinary {
input.composition, diagnostics = compositionForInputWithPolicy(input, request.sequencePolicy)
if len(diagnostics) != 0 {
accumulator.add(diagnostics...)
return nil, accumulator.loadError()
}
input.document = input.composition.root
}
if request.ordinary {
input, diagnostics = applyInputLayers(request.main.source, mainOptions, input)
} else {