compile

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 3, 2026 License: MIT Imports: 27 Imported by: 0

Documentation

Overview

Package compile owns loading, validation, import resolution, and compilation of workflow sources into executable graph plans.

It is extraction-ready engine core. Imports are limited to the standard library and explicitly adopted extraction-safe dependencies; Hadron internal packages are forbidden.

The source loader preserves YAML authoring shape and locations. Compilation lowers that shape to an immutable ExecutionPlan. Value-dependency inference parses structural expression references into data edges and a direct invocation visibility plan. Validation checks graph structure plus caller-supplied step-kind, policy, and definition seams. None of these phases executes expressions or starts runtime work. CompileWithOptions may apply pure, explicitly registered node expanders; generated child workflows are serialized in ExecutionPlan.BundledDefinitions so resolution survives JSON round trips and process restarts.

Index

Constants

View Source
const (
	// CodeVerificationExpressionExtraction identifies a structured verifier
	// expression-extractor failure that omitted its own valid diagnostic code.
	CodeVerificationExpressionExtraction diagnostic.Code = "HADR-SOURCE-028"

	// CodeUnknownValueProducer identifies a static step reference whose producer
	// does not exist in the graph.
	CodeUnknownValueProducer diagnostic.Code = "HADR-REF-006"
	// CodeUnavailableValueReference identifies a value root that is unavailable
	// at the consumer's evaluation phase.
	CodeUnavailableValueReference diagnostic.Code = "HADR-REF-007"
)
View Source
const (
	// ExecutionPlanSchemaVersion is the serialized plan envelope version.
	ExecutionPlanSchemaVersion = "1"

	// CodeInvalidWorkflowShape identifies source structure that cannot be
	// represented faithfully by the graph IR.
	CodeInvalidWorkflowShape diagnostic.Code = "HADR-SOURCE-010"
	// CodeInvalidWorkflowID identifies an identity that cannot normalize to a
	// canonical graph identifier.
	CodeInvalidWorkflowID diagnostic.Code = "HADR-SOURCE-011"
	// CodeUnsupportedSourceField identifies a source field that this compiler
	// does not lower and therefore must not silently discard.
	CodeUnsupportedSourceField diagnostic.Code = "HADR-SOURCE-012"
	// CodeInvalidBindingSource identifies an ambiguous or malformed typed value
	// binding.
	CodeInvalidBindingSource diagnostic.Code = "HADR-SOURCE-013"
	// CodeInvalidActivation identifies a source activation declaration whose
	// shape or portable semantics cannot be represented faithfully.
	CodeInvalidActivation diagnostic.Code = "HADR-SOURCE-014"
	// CodeDuplicateActivationID identifies declarations whose authoring names
	// normalize to the same immutable activation identity.
	CodeDuplicateActivationID diagnostic.Code = "HADR-SOURCE-015"
	// CodeUnsupportedActivationAuthority identifies an attempt by workflow
	// source to claim host or operator ownership for an activation.
	CodeUnsupportedActivationAuthority diagnostic.Code = "HADR-SOURCE-016"
	// CodeNodeExpansion identifies a deterministic source-sugar expansion that
	// could not preserve the authored node's graph semantics.
	CodeNodeExpansion diagnostic.Code = "HADR-SOURCE-033"
)
View Source
const (
	// CodeUnsupportedSourceName identifies a source locator that is not a
	// preferred graph-native workflow filename.
	CodeUnsupportedSourceName diagnostic.Code = "HADR-SOURCE-001"
	// CodeMalformedSource identifies YAML that cannot form one source document.
	CodeMalformedSource diagnostic.Code = "HADR-SOURCE-002"
	// CodeMultipleSourceDocuments identifies a YAML stream with more than one
	// document.
	CodeMultipleSourceDocuments diagnostic.Code = "HADR-SOURCE-003"
	// CodeAmbiguousSourceShape identifies YAML mapping structure for which a
	// unique semantic source path cannot be constructed.
	CodeAmbiguousSourceShape diagnostic.Code = "HADR-SOURCE-004"
	// CodeLegacySource identifies an archived blueprint or pipeline root used as
	// graph-native workflow input.
	CodeLegacySource diagnostic.Code = "HADR-LEGACY-001"
)
View Source
const (
	// DefaultMaxCallDepth bounds definition traversal when a validation caller
	// supplies a DefinitionResolver without an explicit limit.
	DefaultMaxCallDepth = 32

	// CodeDuplicateNodeID identifies node identities that collide after graph
	// normalization.
	CodeDuplicateNodeID diagnostic.Code = "HADR-SOURCE-020"
	// CodeGraphCycle identifies a cycle in explicit needs or normalized edges.
	CodeGraphCycle diagnostic.Code = "HADR-SOURCE-021"
	// CodeUnknownStepKind identifies a kind/version unavailable from the
	// supplied registry, including an unpinned kind with multiple versions.
	CodeUnknownStepKind diagnostic.Code = "HADR-SOURCE-022"
	// CodeInvalidCallMode identifies a call mode outside inline and run.
	CodeInvalidCallMode diagnostic.Code = "HADR-SOURCE-023"
	// CodeUnsupportedReadinessRule identifies an unsupported node readiness
	// rule.
	CodeUnsupportedReadinessRule diagnostic.Code = "HADR-SOURCE-024"
	// CodeInvalidForEach identifies a structurally invalid fan-out declaration.
	CodeInvalidForEach diagnostic.Code = "HADR-SOURCE-025"
	// CodeInvalidStepConfig identifies config rejected by a registered kind's
	// JSON Schema or by an adapter diagnostic without its own valid code.
	CodeInvalidStepConfig diagnostic.Code = "HADR-SOURCE-026"
	// CodeInvalidValidationInput identifies a nil plan passed to validation.
	CodeInvalidValidationInput diagnostic.Code = "HADR-SOURCE-027"
	// CodeInvalidCallShape identifies a call kind without a call declaration or
	// a non-call kind carrying call-only semantics.
	CodeInvalidCallShape diagnostic.Code = "HADR-SOURCE-029"
	// CodeInvalidCatch identifies a catch declaration that cannot produce one
	// deterministic error route.
	CodeInvalidCatch diagnostic.Code = "HADR-SOURCE-030"
	// CodeInvalidSwitch identifies a switch without deterministic ordered arms.
	CodeInvalidSwitch diagnostic.Code = "HADR-SOURCE-031"
	// CodeInvalidFinally identifies an invalid cleanup scope or node shape.
	CodeInvalidFinally diagnostic.Code = "HADR-SOURCE-032"
	// CodeInvalidMemoization identifies effect-unsafe or executor-denied memo policy.
	CodeInvalidMemoization diagnostic.Code = "HADR-SOURCE-036"
	// CodeInvalidDurability identifies a durability mode or reactor policy that
	// cannot be implemented truthfully by the selected graph and executor set.
	CodeInvalidDurability diagnostic.Code = "HADR-SOURCE-037"
	// CodeInvalidCompensation identifies a structurally or operationally
	// unsupported compensation declaration.
	CodeInvalidCompensation diagnostic.Code = "HADR-SOURCE-038"

	// CodeUnknownDependency identifies an explicit dependency endpoint absent
	// from the graph.
	CodeUnknownDependency diagnostic.Code = "HADR-REF-002"
	// CodeCallCycle identifies a recursive definition already active in the
	// current call path.
	CodeCallCycle diagnostic.Code = "HADR-REF-003"
	// CodeCallDepthExceeded identifies a definition call beyond the configured
	// traversal depth.
	CodeCallDepthExceeded diagnostic.Code = "HADR-REF-004"
	// CodeDefinitionResolution identifies a resolver failure during opt-in call
	// graph validation.
	CodeDefinitionResolution diagnostic.Code = "HADR-REF-005"

	// CodePolicyViolation is the fallback assignment for a policy hook finding
	// that omits or supplies an invalid code.
	CodePolicyViolation diagnostic.Code = "HADR-POLICY-001"
	// CodeInvalidKindSchema identifies registered metadata that is JSON-shaped
	// but cannot compile as JSON Schema.
	CodeInvalidKindSchema diagnostic.Code = "HADR-HOST-010"
)

Variables

View Source
var (
	// ErrBundledDefinitionNotFound reports that a plan does not contain the
	// exact immutable definition requested by a call node.
	ErrBundledDefinitionNotFound = errors.New("bundled workflow definition not found")
	// ErrBundledDefinitionConflict reports duplicate or changed immutable
	// definition identity in one plan bundle.
	ErrBundledDefinitionConflict = errors.New("bundled workflow definition conflict")
	// ErrInvalidBundledDefinition reports malformed serialized definition
	// material.
	ErrInvalidBundledDefinition = errors.New("invalid bundled workflow definition")
)

Functions

func EdgeSourceKey

func EdgeSourceKey(from, to string, kind graph.EdgeKind) string

EdgeSourceKey returns the stable compact key used by SourceMap.Edges.

func GraphDigest

func GraphDigest(value graph.Graph) (string, error)

GraphDigest returns the compiler's canonical, relocation-stable SHA-256 digest for graph semantics. Node expanders use this when constructing an immutable bundled child definition before the parent plan is finalized.

func PlanDigest

func PlanDigest(value ExecutionPlan) (string, error)

PlanDigest recomputes the compiler's canonical relocation-stable execution plan digest. It ignores exactly the provenance and source-location carriers ignored when Compile originally assigns ExecutionPlan.Digest.

func ValidateGraph

func ValidateGraph(ctx context.Context, value graph.Graph, options ValidationOptions) []diagnostic.Diagnostic

ValidateGraph validates an application-neutral graph directly. Its root definition identity is derived from immutable graph fields for call-cycle detection.

func ValidatePlan

func ValidatePlan(ctx context.Context, plan *ExecutionPlan, options ValidationOptions) []diagnostic.Diagnostic

ValidatePlan validates a compiled plan without binding or starting runtime work. A nil plan produces one structured diagnostic.

Types

type CompileOptions

type CompileOptions struct {
	NodeExpanders []NodeExpander
}

CompileOptions supplies extraction-safe, deterministic source-sugar expanders. Expanders are selected by Name rather than caller order.

type CompileResult

type CompileResult struct {
	Plan        *ExecutionPlan
	Diagnostics []diagnostic.Diagnostic
}

CompileResult is the outcome of lowering a loaded source. Plan is present only when Diagnostics is empty.

func Compile

func Compile(source *Source) CompileResult

Compile lowers one loaded graph-native workflow source into an immutable execution plan. It does not evaluate expressions, resolve definitions, infer dependencies, validate registered kinds, or perform graph validation.

func CompileGraph

func CompileGraph(input graph.Graph, options GraphCompileOptions) CompileResult

CompileGraph finalizes canonical graph IR into an immutable execution plan. It never executes a plan or grants definition authority.

func CompileWithOptions

func CompileWithOptions(source *Source, options CompileOptions) CompileResult

CompileWithOptions lowers source and then applies registered pure node expanders before graph and plan digests are computed. The same source and expander set must always produce byte-identical plan semantics.

type DeferredDependency

type DeferredDependency struct {
	Consumer   ValueConsumer            `json:"consumer"`
	Expression *graph.Expression        `json:"expression,omitempty"`
	Reference  *values.Reference        `json:"reference,omitempty"`
	ProducerID string                   `json:"producer_id,omitempty"`
	Reason     DeferredDependencyReason `json:"reason"`
}

DeferredDependency retains a dependency whose producer or invocation-local value cannot be fully selected at compile time. Reference is nil only for opaque verification config that had no registered extractor.

type DeferredDependencyReason

type DeferredDependencyReason string

DeferredDependencyReason explains why a dependency must be resolved or checked at runtime instead of becoming a statically complete data edge.

const (
	// DeferredDynamicStep is a computed steps[...] lookup or root-only steps map
	// access. It may observe only producers already visible through explicit or
	// separately inferred edges.
	DeferredDynamicStep DeferredDependencyReason = "dynamic_step"
	// DeferredFanOutItem is the invocation-local item root.
	DeferredFanOutItem DeferredDependencyReason = "fan_out_item"
	// DeferredFanOutIndex is the invocation-local index root.
	DeferredFanOutIndex DeferredDependencyReason = "fan_out_index"
	// DeferredOptionalProducer is a producer that may not materialize because it
	// is conditional, branch-selected, or fan-out shaped.
	DeferredOptionalProducer DeferredDependencyReason = "optional_producer"
	// DeferredOpaqueVerification records verifier config that core cannot inspect
	// without an extractor registered for that verifier kind.
	DeferredOpaqueVerification DeferredDependencyReason = "opaque_verification"
)

type DefinitionResolver

type DefinitionResolver interface {
	ResolveDefinition(ctx context.Context, ref graph.DefinitionRef) (ResolvedDefinition, error)
}

DefinitionResolver resolves a child definition for call-cycle and depth validation. Ordinary structural validation never invokes it.

func NewBundledDefinitionResolver

func NewBundledDefinitionResolver(plan *ExecutionPlan) (DefinitionResolver, error)

NewBundledDefinitionResolver constructs an immutable resolver solely from a serialized execution plan. It does not retain plan-owned maps or slices and therefore remains safe after the caller mutates or discards the plan.

type DefinitionResolverFunc

type DefinitionResolverFunc func(context.Context, graph.DefinitionRef) (ResolvedDefinition, error)

DefinitionResolverFunc adapts a function to DefinitionResolver.

func (DefinitionResolverFunc) ResolveDefinition

ResolveDefinition implements DefinitionResolver.

type DependencyOptions

type DependencyOptions struct {
	VerificationExtractors map[string]VerificationExpressionExtractor
}

DependencyOptions supplies expression ownership for opaque verifier config. Map keys are exact VerificationCheck.Kind values. Unknown kinds remain deferred and are never inspected lexically by core.

type DependencyResult

type DependencyResult struct {
	Plan        *ExecutionPlan          `json:"plan,omitempty"`
	Visibility  ValueVisibilityPlan     `json:"visibility"`
	Deferred    []DeferredDependency    `json:"deferred,omitempty"`
	Diagnostics []diagnostic.Diagnostic `json:"diagnostics,omitempty"`
}

DependencyResult is the outcome of dependency inference. Plan is nil when any error diagnostic exists. Visibility and Deferred remain available for deterministic diagnostics, tooling, and conformance inspection.

func InferValueDependencies

func InferValueDependencies(plan *ExecutionPlan, options DependencyOptions) DependencyResult

InferValueDependencies parses expression references without evaluating them, adds deterministic data edges to a cloned plan, and derives direct invocation visibility. It then re-runs only topology and node-shape validation; registered-kind, policy, and definition validation remain the caller's separate W01 validation phase.

type ExecutionPlan

type ExecutionPlan struct {
	SchemaVersion string              `json:"schema_version"`
	ID            string              `json:"id"`
	Digest        string              `json:"digest"`
	Definition    graph.DefinitionRef `json:"definition"`
	Provenance    graph.Provenance    `json:"provenance"`
	SourceDigests []SourceDigest      `json:"source_digests"`
	Graph         graph.Graph         `json:"graph"`
	SourceMap     graph.SourceMap     `json:"source_map"`
	// BundledDefinitions are immutable generated or vendored child workflows
	// required by this plan. They make call resolution restart-safe without a
	// process-local compiler registry.
	BundledDefinitions []ResolvedDefinition `json:"bundled_definitions,omitempty"`
}

ExecutionPlan is the immutable, extraction-ready build artifact consumed by later binding and runtime packages. Definition and Graph contain executable identity and semantics. The original locator appears only in provenance and source-location fields: the plan-level SourceMap and Graph's root, nested, and full-map SourceRef carriers.

SourceMap.Nodes is keyed by normalized node ID, which is the compact source reference a later node invocation persists. Inputs and Outputs use their normalized names. Edges use EdgeSourceKey.

type GraphCompileOptions

type GraphCompileOptions struct {
	SourceFormat graph.SourceFormat
	SourceDigest string
	Definition   graph.DefinitionRef
	Compile      CompileOptions
}

GraphCompileOptions supplies exact source identity for graph IR emitted by an SDK, UI, or agent. CompileGraph performs the same expansion and immutable plan finalization as source lowering; dependency inference and host-selected validation remain the caller's explicit subsequent phases.

type NodeExpander

type NodeExpander interface {
	Name() string
	ExpandNode(NodeExpansionRequest) (expansion NodeExpansion, handled bool, diagnostics []diagnostic.Diagnostic)
}

NodeExpander is a pure compiler extension. ExpandNode returns handled=false when the node is outside its vocabulary. A handled expansion with any diagnostic is rejected; implementations must not perform I/O or consult mutable registries.

type NodeExpansion

type NodeExpansion struct {
	EntryNodeID string               `json:"entry_node_id"`
	ExitNodeID  string               `json:"exit_node_id"`
	Nodes       []graph.Node         `json:"nodes"`
	Edges       []graph.Edge         `json:"edges,omitempty"`
	Definitions []ResolvedDefinition `json:"definitions,omitempty"`
}

NodeExpansion replaces one authored node with ordinary graph nodes and optional immutable child definitions. EntryNodeID receives inbound edges; ExitNodeID retains downstream dependency and expression identity.

type NodeExpansionRequest

type NodeExpansionRequest struct {
	Graph graph.Graph `json:"graph"`
	Node  graph.Node  `json:"node"`
}

NodeExpansionRequest gives an expander a defensive copy of the complete lowered graph and the candidate node. The graph is read-only input; returned replacements must carry every semantic field the expander accepts.

type NodeValidation

type NodeValidation struct {
	GraphID string
	Node    graph.Node
	Kind    *stepkind.StepKindSpec
}

NodeValidation is the application-neutral input supplied to a PolicyHook. Kind is nil when the node's step kind is unavailable; hooks may still report policy findings based on graph declarations alone.

type PolicyHook

type PolicyHook interface {
	ValidateNode(ctx context.Context, input NodeValidation) []diagnostic.Diagnostic
}

PolicyHook validates effect, retry, idempotency, or other host-selected policy combinations without importing a concrete policy implementation.

type PolicyHookFunc

type PolicyHookFunc func(context.Context, NodeValidation) []diagnostic.Diagnostic

PolicyHookFunc adapts a function to PolicyHook.

func (PolicyHookFunc) ValidateNode

func (f PolicyHookFunc) ValidateNode(ctx context.Context, input NodeValidation) []diagnostic.Diagnostic

ValidateNode implements PolicyHook.

type ResolvedDefinition

type ResolvedDefinition struct {
	Definition    graph.DefinitionRef      `json:"definition"`
	Graph         graph.Graph              `json:"graph"`
	InputBindings map[string]graph.Binding `json:"input_bindings,omitempty"`
}

ResolvedDefinition is the immutable definition identity and graph returned by a DefinitionResolver for opt-in call traversal and execution. InputBindings are resolver-owned partial-application defaults (for example, an imported definition's with: bindings). Call sites overlay their node-local bindings after these defaults are evaluated.

type Result

type Result struct {
	Source      *Source
	Diagnostics []diagnostic.Diagnostic
}

Result is the outcome of loading workflow source. Source is present only when Diagnostics is empty.

func LoadBytes

func LoadBytes(locator string, data []byte) Result

LoadBytes loads in-memory source identified by locator. The locator must use a preferred workflow filename so file and in-memory loading have identical source identity and diagnostic behavior.

func LoadFile

func LoadFile(locator string) (Result, error)

LoadFile loads a preferred workflow source file. Unsupported names and authoring failures are returned as diagnostics. Filesystem read failures are returned as ordinary errors.

type SemanticPlanDigest

type SemanticPlanDigest string

SemanticPlanDigest is not assignment-compatible with source-bound digest strings accepted by DefinitionRef, PlanRef, or ExecutionPlan.

type SemanticPlanDocument

type SemanticPlanDocument struct {
	SchemaVersion string          `json:"schema_version"`
	CanonicalJSON json.RawMessage `json:"canonical_json"`
}

SemanticPlanDocument is canonical comparison material for authoring-tool conformance tests. It is deliberately not an ExecutionPlan and cannot be passed to a runtime, registry, or definition API.

func CanonicalPlanSemantics

func CanonicalPlanSemantics(value ExecutionPlan) (SemanticPlanDocument, error)

CanonicalPlanSemantics returns source-identity-free comparison material for cross-front-end conformance. Runtime plan and definition digests must always use PlanDigest and their exact source-bound identities instead.

type SemanticPlanFingerprint

type SemanticPlanFingerprint struct {
	SchemaVersion  string             `json:"schema_version"`
	SemanticDigest SemanticPlanDigest `json:"semantic_digest"`
}

SemanticPlanFingerprint is a tooling-only equivalence identity. Its struct shape deliberately prevents accidental use as a runtime PlanRef or definition digest, both of which must retain exact source identity.

func FingerprintPlanSemantics

func FingerprintPlanSemantics(value ExecutionPlan) (SemanticPlanFingerprint, error)

FingerprintPlanSemantics compares plans produced by different authoring front ends. It removes exact source identity in addition to ordinary source locations, but preserves executable graph and bundled-definition semantics. The result is never accepted by runtime or registry APIs.

type Source

type Source struct {
	Locator  string
	Document *yaml.Node
	// contains filtered or unexported fields
}

Source preserves a single YAML document and its graph-native source locations. Document is the unlowered yaml.v3 AST, including node tags, styles, anchors, aliases, and comments retained by the YAML parser.

Semantic paths append a mapping key or a zero-based sequence index at each level. The empty path identifies the document root. YAML mappings must use unique string keys so every semantic path has exactly one meaning.

func (*Source) Bytes

func (s *Source) Bytes() []byte

Bytes returns a copy of the original source bytes.

func (*Source) Location

func (s *Source) Location(path ...string) (graph.SourceRef, bool)

Location returns the canonical source reference for a semantic YAML path.

func (*Source) Locations

func (s *Source) Locations() []graph.SourceRef

Locations returns all semantic source references in deterministic YAML preorder, beginning with the document root.

func (*Source) Node

func (s *Source) Node(path ...string) (*yaml.Node, bool)

Node returns the YAML AST node at a semantic path. Callers that mutate the returned node also mutate Document; source locations remain those recorded when the source was loaded.

type SourceDigest

type SourceDigest struct {
	Format graph.SourceFormat `json:"format"`
	Digest string             `json:"digest"`
}

SourceDigest identifies immutable source content without embedding its relocation-sensitive locator. Digest uses SHA-256 over the exact loaded bytes, including comments and authoring layout.

type StepKindLookup

type StepKindLookup interface {
	Lookup(name, version string) (stepkind.StepKind, bool)
	List() []stepkind.StepKindSpec
}

StepKindLookup is the read-only registry surface required by validation. A stepkind.Registry satisfies this interface.

type ValidationOptions

type ValidationOptions struct {
	StepKinds StepKindLookup
	// Verifiers defaults to the deterministic core verification registry when
	// nil. Host-owned reviewer adapters supply an exact immutable registry.
	Verifiers    verification.Registry
	PolicyHooks  []PolicyHook
	Definitions  DefinitionResolver
	MaxCallDepth int
}

ValidationOptions supplies extraction-safe collaborators for validation. Definitions is optional; when nil, validation does not resolve calls. MaxCallDepth defaults to DefaultMaxCallDepth when it is not positive.

type ValueConsumer

type ValueConsumer struct {
	Kind    ValueConsumerKind `json:"kind"`
	ID      string            `json:"id"`
	Surface string            `json:"surface"`
	Source  *graph.SourceRef  `json:"source,omitempty"`
}

ValueConsumer identifies one graph location that consumes expressions. Surface is a stable semantic path such as "with.payload" or "verify.checks[0].expression[0]".

type ValueConsumerKind

type ValueConsumerKind string

ValueConsumerKind identifies the evaluation scope that consumes a reference.

const (
	// ValueConsumerNode is an executable node invocation.
	ValueConsumerNode ValueConsumerKind = "node"
	// ValueConsumerWorkflowOutput is a workflow output evaluated after graph work.
	ValueConsumerWorkflowOutput ValueConsumerKind = "workflow_output"
	// ValueConsumerActivation is a pre-run activation declaration.
	ValueConsumerActivation ValueConsumerKind = "activation"
)

type ValueScope

type ValueScope struct {
	Producers []string `json:"producers"`
	FanOut    bool     `json:"fan_out,omitempty"`
}

ValueScope is the direct value visibility of one evaluation scope. Producers never includes transitive or merely completed graph nodes.

type ValueVisibilityPlan

type ValueVisibilityPlan struct {
	Nodes           map[string]ValueScope `json:"nodes"`
	WorkflowOutputs ValueScope            `json:"workflow_outputs"`
	Activations     map[string]ValueScope `json:"activations,omitempty"`
}

ValueVisibilityPlan is the binder artifact produced beside an inferred execution plan. Nodes contains every normalized node ID, including nodes with an empty producer set.

func (ValueVisibilityPlan) ScopeNodeContext

ScopeNodeContext filters an available runtime context to a node's direct explicit-plus-inferred producers. base is copied so host policy such as AllowEnv is preserved; VisibleSteps is replaced by the compiler allowlist. Fan-out item and index roots are retained only for fan-out node invocations.

type VerificationExpressionExtractor

type VerificationExpressionExtractor interface {
	ExtractVerificationExpressions(check graph.VerificationCheck) ([]graph.Expression, []diagnostic.Diagnostic)
}

VerificationExpressionExtractor gives one registered verifier kind sole authority to expose expression-bearing fields from its opaque config. Diagnostics should be structured; omitted sources are assigned to the verification check carrier by InferValueDependencies.

type VerificationExpressionExtractorFunc

type VerificationExpressionExtractorFunc func(graph.VerificationCheck) ([]graph.Expression, []diagnostic.Diagnostic)

VerificationExpressionExtractorFunc adapts a function to an extractor.

func (VerificationExpressionExtractorFunc) ExtractVerificationExpressions

func (f VerificationExpressionExtractorFunc) ExtractVerificationExpressions(check graph.VerificationCheck) ([]graph.Expression, []diagnostic.Diagnostic)

ExtractVerificationExpressions implements VerificationExpressionExtractor.

Directories

Path Synopsis
internal
planschema
Package planschema generates the committed ExecutionPlan JSON Schema from compile.ExecutionPlan while referencing graph types from the graph schema.
Package planschema generates the committed ExecutionPlan JSON Schema from compile.ExecutionPlan while referencing graph types from the graph schema.
planschema/cmd command

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL