Composition contract
A composition is a directory named after a component type. The directory defines both the validation contract and the execution contract for that type.
Required files
Each composition directory is expected to contain:
schema.yamljob.yaml
Schema contract
The schema is a JSON Schema document that validates the component's type-specific inputs.
$schema: http://json-schema.org/draft-07/schema#
title: Helm Component Type
type: object
properties:
type:
const: helm
inputs:
type: object
properties:
chart:
type: string
timeout:
type: string
Use the schema to define required fields, enums, defaults, and bounds.
Job registry contract
The job registry defines one or more executable jobs for the type.
apiVersion: sourceplane.io/v1
kind: JobRegistry
metadata:
name: helm-jobs
jobs:
- name: deploy
runsOn: ubuntu-22.04
timeout: 15m
retries: 2
steps:
- name: deploy
run: helm upgrade --install {{.Component}} {{.chart}}
Template inputs
Job steps resolve against merged component data. In the built-in compositions, common template values include:
.Component- merged input fields such as
.chartor.namespacePrefix
Keep templates simple and deterministic. If the same input is required across many components, express it as schema or job defaults instead of repeating it in every component manifest.
Execution semantics
Jobs can declare:
runsOntimeoutretrieslabelssteps
Steps can declare:
runorusephaseandorderretrytimeoutonFailure
The compiler resolves those fields into the plan artifact, and the runtime consumes them later.