Skip to content

0.32.0

Choose a tag to compare

@github-actions github-actions released this 05 Sep 11:28
· 80 commits to main since this release
0.32.0
87b65c1

Read this before upgrading one machine and not another. Nothing about using prikk changes —
no command, flag, or exit code differs from 0.31.1. But repositories written after this change
cannot be read by earlier releases.

Breaking change — repositories written here are not readable by 0.31.1 or earlier

prikk commit -m <message>'s message is no longer discarded: it is now signed, identity-bearing
evidence, recorded on every Patch at schema 4, which earlier releases do not admit. This
applies to every commit, not only ones that carry an unusual message — -m was already
mandatory, so every patch this release authors carries one.

An older prikk reads such a repository, or imports a bundle exported from one, and refuses:

error: integrity error: format-2 patch does not accept envelope schema 4 (accepted: [1, 2, 3])

A bundle offered directly (bypassing repository-level schema admission) refuses earlier still, at
decode:

error: malformed persisted data: invalid PatchPurpose canonical form: canonical encoding error: unknown PatchPayload field tag: 6

It fails closed with an accurate message — nothing is corrupted and no history is lost — but the
older build cannot proceed. Both the local case and the bundle exportbundle import case were
demonstrated against a 0.31.1 build, not assumed.

Upgrade every machine that shares a repository before committing with this release.

This direction is the one the compatibility contract does not promise. Repositories written
before this release keep working exactly as they did — a 0.31.1 build still reads and verifies
them cleanly, confirmed rather than assumed.

Why the schema changed

prikk commit -m <message> validated the message, then dropped it — a repository whose whole claim
is that it is evidence could not answer "what was this change?" The message is now an optional,
identity-bearing field on Patch (tag 6), mirroring TagPayload.message, and is shown per patch
under each block in prikk log. A patch written before this change carries no message and shows no
message line — absence, not a placeholder.

Raised by the external architecture audit of 2026-08-31; designed and ruled on in
RFC 123.

Changed

  • prikk commit's interim note that the message is "validated but not stored" is removed — it is
    stored now.
  • prikk log prints one line per patch that carries a message, under its block.

Prebuilt binaries

Linux (aarch64/x86_64), Windows (x86_64), macOS (aarch64). Each archive contains the prikk binary, LICENSE, and a sibling .sha256
checksum plus .build-info.txt recording the exact toolchain and command used to build
it — reproduce with:

git checkout <tag> && cargo build -p prikk --release --target <triple> --locked

cargo install prikk remains the toolchain-based install path; these binaries are an
additional option, not a replacement.

macOS binaries are unsigned. Gatekeeper will warn on first run — right-click (or Control-click) the binary and choose Open, or clear the quarantine attribute directly with xattr -d com.apple.quarantine <path>. Notarization needs an Apple Developer identity and is a stated gap for a future increment, not an oversight.

Release authority — read before relying on this release

This release does not pass the DC-35 signer-authority audit, and does not claim to. The
committed release-signer set (release-signers.toml) is empty and fail-closed, so no release
currently satisfies that gate. A checksum published beside a binary on this page proves integrity of
transport, not authority of origin. Verify what you obtain by content, not by release authority —
see prikk verify and this project's
release-compatibility reference.