Direct Release
Publish one exact final GitHub release without creating a release candidate.
IMPORTANT: Developer documentation for the current development branch. This content is unreleased, may change without notice, and must not be treated as Buildish release documentation.
Buildish Release Tooling separates project policy, release state, platform adapters, and workflow
orchestration. A component owns its release-config.yaml and thin workflow. The CLI resolves exact
identities, performs one bounded operation at a time, and writes machine-readable results that the
workflow passes to later jobs.
GitHub is the first implemented hosting platform. Platform-neutral state and manifests do not treat GitHub, the ASF, voting, a built source archive, or any secondary registry as mandatory.
Both approaches may use an unsuffixed final version such as 1.2.3 and final tag such as v1.2.3.
The candidate suffix identifies the candidate only; it does not change the final version.
Maintainer references:
The supported contract consists of:
release-config.yaml schema;The Python package layout is not a public API. Component workflows should invoke the CLI from an exact immutable tooling revision.
The standard invocation shape is:
1uv run --project /path/to/buildish-release-tooling --frozen \
2 buildish-release-tooling <command> \
3 --component-config /path/to/release-config.yaml \
4 [command arguments...]
Commands operate on the current component Git worktree. Workflow jobs that inspect remote refs must fetch the required heads and tags first.
release-config.yaml is a typed composition of independent choices:
The complete generated field reference is under Reference. The walkthroughs use minimal valid examples for their lifecycle.
Three top-level manifest contracts connect otherwise independent phases:
CandidateManifestV1 binds one exact candidate tag, source revision, artifact inventory,
verification evidence, publications, and tooling provenance.VotePackageV1 optionally binds human voting material to the cryptographic digest of one exact
candidate manifest. It does not record or decide the vote outcome.ReleaseManifestV1 records a direct or promoted final release. Direct releases omit candidate
fields; promoted releases name the exact candidate manifest and use typed promotion evidence.Current promotion evidence distinguishes byte-identical artifacts, immutable registry identity, and platform-generated snapshots from tags that resolve to the same source revision.
MANIFEST_PATH selects the JSON result path for commands that emit a manifest.
GITHUB_STEP_SUMMARY receives human-readable summaries. Selected workflow-boundary commands append
small scalar values to GITHUB_OUTPUT; complete state remains in JSON files.
Credentials are operational inputs, not authored config values. GitHub tokens, signing keys, passphrases, registry credentials, and foundation credentials belong in the workflow or deployment secret store chosen by the component.
Release branch creation is available through create-release-branch, but neither lifecycle requires
a maintained release line. Secondary publication adapters, moving aliases, generic voting, ASF
composition, and reproducibility verification are selected only by components that need them.
Publish one exact final GitHub release without creating a release candidate.
Publish retained candidates and promote one exact candidate manifest to a final release.
Generated JSON Schema and model-reference documentation for Buildish Release Tooling contracts.
How component-owned workflows compose release CLI operations and approval boundaries.
Choose platform-generated source snapshots or build and sign an explicit source archive.
GitHub-specific publication behavior for direct, candidate, and promoted releases.
Explicit ASF policy, dist, trust-root, vote-material, and ATR integration.
Stable candidate, vote-package, release, and optional reproducibility contracts.
Maintainer guide to core release logic, adapters, commands, verification, and the workflow harness.
Maintainer guide to core, adapter, command, workflow, and harness verification.
Security boundaries, controls, residual risks, and deployment responsibilities for release tooling.
This document explains how the repository maintains reviewed legal files for published Python wheels and how the preliminary review-oriented legal artifacts are generated and checked.