Skip to content

Zeroshot distribution contract

.github/workflows/release.yml is the only Zeroshot release workflow. An operator supplies an X.Y.Z version with an exact commit on main; the workflow rejects versions before major 8.

Canonical identity

Release item Identity
Git tag and release vX.Y.Z
Executable zeroshot (zeroshot.exe on Windows)
Native archives zeroshot-vX.Y.Z-<target>.tar.gz
Target manifest distribution/zeroshot-targets.json
npm package @the-open-engine-company/zeroshot
Target image ghcr.io/the-open-engine/zeroshot-target
Python wheel release zeroshot-python-vX.Y.Z_1
Python package the-open-engine-zeroshot==X.Y.Z.post1 when PyPI publication is enabled
Docs snapshot vX.Y.Z/ relative to the docs base, including Python SDK revision 1

The workflow publishes no alternate tag prefix, package, image, executable alias, source-build fallback, or compatibility artifact.

Targets

The target manifest declares Linux x64/arm64 musl, macOS x64/arm64, and Windows x64, and the npm target table must match it exactly. The installer stops on any other host.

Every archive contains one executable, with one corresponding entry in SHA256SUMS. The workflow also rejects a Linux release binary that has a dynamic interpreter.

Version staging

Checked-in manifests carry development versions that are not release identifiers. In the release workspace, scripts/distribution.js stage-version updates zeroshot/Cargo.toml and Cargo.lock, then check-version verifies their coupling before compilation. Release automation does not commit those staged versions.

Publication order

Step Release action
1 Build and smoke all native archives.
2 Generate and verify SHA256SUMS.
3 Build and smoke docker/zeroshot-target/Dockerfile from the same commit.
4 Create or verify the canonical GitHub Release and its exact assets.
5 Publish the image version, source-commit, and eligible latest tags.
6 Pack, install, smoke, and publish @the-open-engine-company/zeroshot.
7 Build and publish Python SDK revision 1 as an immutable GitHub wheel release.
8 Publish that wheel set to PyPI; use publish_pypi: false only when trusted publishing is unavailable.
9 Publish the immutable docs snapshot and advance stable for the newest release.

PUBLISHING.md contains the operator setup and recovery rules.