1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# 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.
[]
# 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.
= "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.
= ["release"]
= true
= true
= "release-plz-changelog.toml"
= true
= false
# No `[[package]]` sections: one crate, nothing to group or exclude.