Skip to content

0.31.0

Choose a tag to compare

@github-actions github-actions released this 04 Sep 04:34
· 118 commits to main since this release
0.31.0
534dca8

Read this before upgrading one machine and not another. Nothing about using prikk changes —
no command, flag, exit code, or message differs from 0.30.0. But repositories written by this
release cannot be read by older ones.

Breaking change — repositories written by 0.31.0 are not readable by 0.30.0 or earlier

Every patch this release authors is recorded at Patch schema 3, which earlier releases do not
admit. This applies to every commit, not only ones that edit text.

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 3 (accepted: [1, 2])

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.30.0 build, not assumed.

Upgrade every machine that shares a repository before committing with 0.31.0.

This direction is the one the compatibility contract does not promise. prikk guarantees that
any release can read every object any prior release wrote, and that identity and signatures never
require migration — backward, not forward. Repositories written before this release keep working
exactly as they did, and the operations inside them still resolve through their original scheme,
permanently.

Why the schema changed

A text edit records which span it replaces. Until now that identity included the span's position
among identical occurrences
, recomputed against whatever the file looked like at the time — so an
edit to one of two identical passages could renumber the other. Schema 3 replaces that with an
identity derived only from content and surrounding context, and guarantees uniqueness when the edit
is authored rather than guessing at replay.

The old behaviour was not reachable through ordinary use — every edit is authored against the
result of the ones before it, which kept the numbering consistent — and it was recorded as a known
limitation in 0.30.0. This release removes the fragility rather than continuing to rely on that
invariant holding.

Found by this project's own patch-algebra property tests
(RFC 134).

Changed

  • A sequence of operations that cannot compose is now refused as "sequence operations do not compose
    against a shared baseline"
    rather than reported as malformed evidence — the same refusal, named for
    what it is.

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.