Axis / Build System / Toolchain
Toolchain
A Toolchain is a validated descriptor of a tool contract for an execution machine and a destination machine. It owns provider selection and descriptor validation. Executable paths have meaning only within the explicitly selected immutable filesystem.
Source and concrete API: toolchain.go.
Properties
-
Kind: the required contract name. -
Descriptor: copied schema, compiler family, destination and command data. Consumers treat it as immutable. - Selection inputs: required contract names, default bindings, local overrides and a registry of prepared descriptors.
Behavior
New validates the contract before returning it. The implemented schema is revision 1; destination must be execution. Kind c requires family gcc; kind zig requires family zig. Kind go requires family go and a Go executable path. Unsupported kind, family, schema or destination fails before consumer execution.
Resolve overlays local bindings on defaults, selects each required registry descriptor and validates it through New. The implemented bindings are explicit bootstrap(name) references: the registry name is independent of the required contract kind. For example, the c contract may bind to a descriptor named kernel-c; that descriptor still passes C contract validation. A missing descriptor or unsupported binding fails; selection does not search the host executable path.
Contract boundary
A descriptor describes declared tools; it does not download them or prove arbitrary ABI compatibility. The caller supplies the prepared filesystem and machine policy. Required commands and their dependencies must be usable in that context.
Cross and source-built providers, SDK construction, wrapper materialization and additional compiler families are not implemented. Extending a kind requires an explicit schema and validation contract; unknown schemas must never be guessed.