release-kit 0.8.7

A canonical release workflow: a technology-agnostic method, per-technology bindings, and the rk CLI that lands and serves them.
Documentation
1
2
3
4
5
6
7
8
9
# blocks

The whole texts the binary writes outside `snippets/`: the routing, glossary, and hook blocks it splices into a target, the post-merge hook it installs on a host, and the self-depend texts `rk self-depend add` serves and seeds for each manager and venue pair — the three flake fragments and the seed flake, the mise entry for the crate and for the release archive with the mise seed, the devbox entry and seed, the asdf line, the `.envrc` line, and the seed `.envrc` — carrying `RK_DEVSHELL_*` tokens that `src/self_depend/fragments.rs` renders from the pin grammar, so no embedded file names the flake's owner. The `depend-*` files are what `rk depend add` serves and seeds for the four tool managers, carrying `RK_DEP_*` tokens that `src/depend/fragments.rs` renders from the source's own manifest and remote, so no embedded file names a dependency.

`.in` files are templates carrying `RK_*` and `OWNER` tokens, substituted in `src/landing.rs`; the hooks fragment is not standalone YAML, and the token lines must survive formatting, which is what the suffix buys.

The hook block composes from one template and five optional parts, selected by the two Git workflow axes. `pre-commit-worktree-guard.yaml.in` is the checkout mode's answer, and the rest are the integration mode's: `pre-commit-trunk-commit-guard.yaml.in` and `pre-commit-trunk-push-guard.yaml.in` render under forge integration alone, because local integration writes the trunk commit and pushes the trunk. `pre-commit-sweep-skip.yaml.in` and `pre-commit-sweep-none.yaml.in` are the header's two shapes, and `pre-commit-integrate-note.yaml.in` names the pre-integrate contract under local integration. A part's token is a prefix of the next content line, never a line of its own, so an absent part leaves no blank line behind; `RK_WORKTREE_GUARD` and `RK_TRUNK_PUSH_GUARD` are adjacent for that reason. The routing block does the same with `agents-line-integration-forge.md.in` and `agents-line-integration-local.md.in` beside its two checkout-mode lines.

Every file ends with one enforced newline; the `.in` readers strip exactly one because the spliced form carries none, `post-merge-hook.sh` is written verbatim because a hook file ends in its newline, and byte-equality tests pin both round trips.