name@version for a specific version, or a bare name for the active version.
show lists tasks, timeouts, and provider compatibility. Use --search <text> with list to narrow the catalog.
Publish your tasks
tasks/.
1
Check the configuration
2
Publish a version
- Local directory
- Git repository
- Harbor Hub
3
Inspect the result
evolve dataset watch my-dataset to resume watching.What publication does
Tasks build independently. A version can beREADY while some tasks failed. Whole-dataset and glob selections run its ready tasks and report build_exclusions; explicitly selecting a failed task rejects the job.
A ready version becomes active on your dataset. Publishing a new version label leaves the previous active version in place if the new publication fails.
Use a new version label for changed tasks. Publishing an existing label re-imports it in place, so name@version selects a label rather than immutable content.
Configuration validation cannot prove that images build or tests are correct. Run task checks to inspect task quality.
Pin or switch versions
Download your source package
solution/ files. It is owner-only; platform datasets are not downloadable through this command.
dataset.toml manifest
An optionaldataset.toml selects the tasks in a package and pins their content. Put it beside the task directories. If the package contains tasks/, a manifest in tasks/dataset.toml takes precedence over one at the package root.
my-dataset); the acme/ prefix does not choose the owning Evolve team. Explicit --name and --version values win. Without a manifest version, pass --version. Git and HTTPS archive sources still require explicit publication name and version; public Harbor Hub packages supply defaults.
Manifest fields and selection rules
Manifest fields and selection rules
Unknown root and
[dataset] fields are rejected. Each listed dataset file must exist beside the manifest, even without a digest.Task matching first uses an exact string match against [task].name in a local task.toml, then falls back to the reference’s short name matching a task directory. Only listed tasks are imported. Every reference must resolve locally; missing tasks are not fetched from a registry.Duplicate identical name/digest pairs are collapsed. An ambiguous declared task name, or references mapping the same directory to different digests, rejects the manifest. Missing tasks and any task/file digest mismatch fail publication.Compute a task content digest
Compute a task content digest
Task digests use Harbor’s content-hash algorithm, not the archive hash or a hash of The hash covers the four listed root files when present and regular files recursively under
task.toml alone. The helper below requires Python and pathspec:environment/, tests/, solution/, and steps/. Other root files are outside this digest. Paths are relative, use /, and sort lexicographically. For each file, the outer SHA-256 receives its path, a NUL byte, the lowercase SHA-256 of its bytes, and a newline.A task’s .gitignore supplies the filters when present; otherwise the default patterns shown above apply. This uses PathSpec’s gitignore pattern semantics, which differ from Git’s directory re-inclusion behavior. macOS ._ sidecars are skipped. Use regular files: publication does not support task symlinks.Dataset-level [[files]] digests are simpler: prefix the SHA-256 of that file’s bytes with sha256:. Recompute affected digests whenever you edit content.Package details
Package details
Local publication preserves executable permissions and dotfiles. It excludes
.git, .DS_Store, .venv, and symlinks.Custom metric.py dataset metrics are not supported. A script beside the manifest or listed in files rejects publication; use the platform’s metrics.Large local uploads are resumable. During receipt, the import can be QUEUED with receiving: true; it starts building after the corpus arrives.Ownership and updates
Ownership and updates
A dataset name belongs to its first publisher. Another owner cannot publish under that name.The SDK supports deleting an owned dataset, but deletion is rejected once a job references it. The CLI has no dataset delete command.Git-backed datasets can report when their source tag moves. Automatic upstream import is opt-in through the SDK’s
datasets().update(); a normal publication does not enable it.Dataset commands
Sources, validation, publication, and downloads.
Dataset SDK
The Python and TypeScript clients.

