shep-deploy 0.2.2

A deploy dog for shep: watches a git branch, builds a release, swaps to it, and rolls back if it does not come up
# release-plz owns the changelog, the version bump, the tag, the GitHub
# release and the upload. Merging the release pull request is the whole
# release, and since 2026-08-27 even that merge is automatic.
#
# ## Rewritten on 2026-08-27 to match zendriver-rs
#
# Rin's call: zendriver-rs's setup is the one to copy, across shep and both
# dogs. This repository was already the closest of the three, since it was
# written after the others and skipped their mistakes. What changed:
#
#   changelog_update    unset -> true, with an explicit template. It was
#                       already defaulting to true; what is new is
#                       release-plz-changelog.toml, which skips docs, test,
#                       ci, chore and style commits so a generated section
#                       stays short and reads like a hand-written one. Two
#                       survive those skips on purpose: release-plz's own
#                       `chore: update Cargo.toml dependencies`, parsed before
#                       the generic chore skip and grouped under Internal, and
#                       anything marked breaking, which
#                       `protect_breaking_commits` keeps regardless.
#   semver_check        unset -> true. cargo-semver-checks against the
#                       published version, so an accidental breaking change
#                       fails the release PR rather than shipping in a patch.
#                       This crate is at 0.1.0 with consumers to come, which
#                       is exactly when that starts to matter.
#   git_release_enable  unset -> true. Was already the default; stated so it
#                       survives a future default change.
#   publish_no_verify   new, false. Also the default. Stated because the
#                       opposite skips the pre-upload build, and an upload
#                       cannot be undone.
#
# `release_always` is left unset, which is release-plz's default of true, so
# any push to main naming an unpublished version publishes it. shep and
# shep-log-rotate both set it to false and both regretted it: release-plz
# decides a commit "came from a release PR" by the branch name prefix
# `release-plz-`, so a version bump merged from any other branch is stranded,
# bumped in Cargo.toml and absent from crates.io. shep hit that twice, on
# 2026-08-26 and again on 2026-08-27.
#
# What keeps the default safe is not in this file. The `main` ruleset requires
# lint, docs, msrv, integration and the test matrix, so an untested commit
# cannot reach main to be published. Delete the ruleset and nothing checks
# anything before an upload.
#
# ## Before the first release
#
# Both secrets are set: CARGO_REGISTRY_TOKEN and RELEASE_PLZ_TOKEN. The second
# is not optional now that the workflow auto-merges, and it must be a PAT: a
# GITHUB_TOKEN-authored pull request does not start its own checks, so
# `gh pr merge --auto` would queue behind checks that never run.

[workspace]
# Marks a GitHub release as a pre-release when the version carries a SemVer
# pre-release tag. Inert for an ordinary version, and kept for the next one
# that is not.
git_release_type = "auto"
# Attached so .coderabbit.yaml can skip reviewing a release pull request:
# merging one IS the release, and its diff is a version bump plus a changelog
# generated from commits already reviewed on their own pull requests.
#
# The label has to EXIST in the repository first. release-plz opens the pull
# request and then calls GitHub's label endpoint, so a name nothing has defined
# can leave the pull request opened and unlabelled. `release` was created here
# on 2026-08-28. Renaming or deleting it silently un-skips every release pull
# request, because .coderabbit.yaml matches the name and nothing checks the two
# still agree.
#
# A title keyword was the other candidate and does not hold: release-plz
# force-pushes its branch on every push to main, each force-push starts an
# incremental review, and the title gate is not re-evaluated on those. Learned
# in shep, on its own release pull request.
pr_labels = ["release"]

git_release_enable = true

changelog_update = true
changelog_config = "release-plz-changelog.toml"

semver_check = true
publish_no_verify = false

# No `[[package]]` sections: one crate, nothing to group or exclude.