Package and revision
A package containsmanifest.json and its Python files. The manifest pins version 1, the deployment-advertised immutable sha256:… runtime, ordered steps, parameter schema and execution limits. Read the exact manifest and script I/O contract from overmind://dataset-upload; runtime hashes are deployment-specific.
Upload with overmind dataset pipeline-upload, then pass its package UUID to save_dataset_pipeline.
Returned
pipeline_id identifies the family; returned id identifies the exact revision. A stale family update reports revision_conflict. An old save retry does not reset a newer preparation association.
Steps and flow
Packages contain 1–20 meaningful script stages. Each entrypoint exposes its substantive transformation; shared helpers hold reusable utilities. Retained-file inspection verifies checksums and pages full source withfile, offset, limit and next_offset.
A step can declare:
idandinputnamingsourceor an earlier step.inputsfor ordered concatenation of disjoint earlier branches.conditionwith an expression and entrypoint line describing agent-authored routing.- Column and row requirements, including the final consumer contract.
batch_rowsfor independent row-wise work.
flow records nodes, edges, conditions and output. flow.unconsumed_steps identifies branches outside the final result. A declared graph does not prove that branches are complete or mutually exclusive.
Execution request
run_dataset_pipeline takes dataset, exact pipeline revision, source_cell, source_fingerprint, request_key, optional parameters and mode.
preview_rows defaults to 100 and is bounded from 1 to 1,000. A preview samples a prefix, not guaranteed coverage of all source families. Absolute min_rows/max_rows requirements remain deferred until publication; schema, lineage and row-preservation checks apply to both modes.
validate_dataset_pipeline performs retained-code and declared-source checks without execution. Runtime execution occurs in the isolated approved container, without platform credentials, host mounts or outbound network.
Batching and limits
For row-independent work,batch_rows accepts 1–100,000. Batches run separately and concatenate in source order. Each expanded JSONL input/output must fit half the declared scratch_mb, and each batch has the declared time limit.
Global sorting, grouping, splitting and deduplication must not use this batching contract. Combined-output row checks and atomic publication still apply; a failed batch publishes no partial cells.
Receipts and recovery
get_job(kind="dataset_pipeline", id=RUN_ID) reads one run. Receipts retain exact input/output cells and fingerprints, revision/package, execution state, stages, queue age, measured counts, checks, attribution and publication outcome. evidence_resource links full preview/row evidence.
A failed or cancelled run preserves prior successful sources and consumers. Cancellation prevents publication without claiming remote termination. Interrupted/expired execution is not automatically replayed. Controller recovery fences lost work and cleans owned containers before accepting another execution.
Bindings
Bindings pin a revision, parameters, source, destination and explicit limits. They start paused.set_dataset_pipeline_binding_state enables or pauses them with expected_version; run_dataset_pipeline_binding processes one saved snapshot without enabling ongoing processing.
Processing uses bounded full snapshots, including late updates and removed matches. A successful unchanged snapshot is a no-op. Checkpoints commit with publication. Trace snapshots above 10,000 traces fail rather than truncate. Revision adoption requires an explicit rebuild.
External imports
import_dataset_version accepts at most 2,000 inline rows/4 MiB, or a project-owned artifact_cell and fingerprint for larger results. Bind the original source and preserve source_row or declare every contributing _overmind_parent_rows identity.
The receipt records external producer attribution and validates lineage. It does not independently verify external execution or inherit human-review claims from the source. See Prepare data.