Axis / Build System / Plan
Plan
A Plan is a configured invocation graph. Resolve constructs it; consumers treat it as immutable during execution. It owns no live execution sessions.
Source and concrete API: plan.go.
Properties
Catalog supplies registered declarations and handler invocation. Product and Target are selected graph roots. Nodes indexes selected nodes by declaration kind and identity. Order lists consumers before providers. Machine carries destination properties. Environment retains the selected execution declaration.
Resolution options contain caller policy, lock and source locations, source exclusions, observation, execution properties, optional baseline requirements and machine validation. None is inferred from a global application singleton.
Behavior
Resolve selects declarations, acquires pinned sources, detects applicable behavior, expands an acyclic dependency graph, binds configuration contributions and freezes effective options. Frozen resolution rejects absent or changed pins before network acquisition.
Reference resolves a dependency address within the permitted graph scope and fails on absent or ambiguous matches. Call creates the restricted invocation context for a selected node. Execution returns the supplied execution-machine properties.
Graph expansion and configuration precede execution. This implementation shares one selected node per declaration in an invocation; it does not synthesize arbitrary variants. The type and its receiver operations are defined together in plan.go.