Skip to content

0.29.0

Choose a tag to compare

@github-actions github-actions released this 02 Sep 22:04
· 167 commits to main since this release
0.29.0
5ee307a

Generated files can be kept out of a commit. Until now commit scanned and signed everything in
the worktree — a limitation this project's own README named as a reason not to use it. .prikkignore
closes that gap. The rest of this release finishes the corrective program for the 2026-08-31 external
audit, including a correction to something 0.28.0's own notes claimed and only half delivered.

Added

  • .prikkignore — a worktree ignore mechanism. A file at the repository root, one rule per line,
    each a literal repo-relative path prefix. target matches target and everything under it, never
    target2 or targetfoo — whole path components, so a rule cannot over-match a differently-named
    sibling. There is no globbing, no negation, no comments, and no per-directory files, and that
    is a stated limit rather than a first step: an ignore syntax that nearly matched gitignore's
    semantics would be worse than one that plainly does not attempt to.

    It binds at discovery onlycommit's worktree walk and worktree-status's, and nothing
    else. Applying, replaying, verifying, and materializing history ignore it entirely, so two
    repositories with different ignore files can never disagree about the same signed history.

    A rule can never hide a path that is already tracked, or one under an already-tracked path, so
    adding a line cannot make commit see an existing file as deleted. A malformed .prikkignore is
    refused rather than treated as empty.
    No file at all means no rules: every existing repository
    behaves exactly as it did before.

    .prikkignore is an ordinary tracked file, not configuration — it is committed, signed, and
    travels through bundle and sync like anything else.

Fixed

  • A full-disk stdout and stderr together no longer exits 101. 0.28.0's notes announced this
    fix and delivered half of it: the single-stream case was corrected, while
    prikk verify >/dev/full 2>/dev/full still panicked, because the error report itself panicked on
    its own failed write. The exit code now stays inside the ruled 0/1/2 vocabulary even when the
    message cannot be delivered anywhere.
  • seal and merge now report a bad flag as the usage error it is. Both acquired the maintainer
    signing key before parsing their arguments, so prikk seal --nonsense with no key configured
    reported "maintainer signing is required" and exited 1. It now exits 2 with the argument error,
    matching commit and rollback-draft.

Changed

  • A worktree path that is not valid UTF-8 is now reported as an invalid name rather than as a
    repository integrity failure. An empty path remains an integrity failure.
  • Three internal update_seq increments now refuse rather than wrap on overflow — unreachable in
    ordinary use, changed for consistency with the ref-log's existing checked arithmetic.
  • The workspace now denies unwrap, expect, and direct indexing in product code at build time
    rather than warning, the patch algebra gained oracle-backed property tests, and the three
    check-only CI workflows declare contents: read explicitly.

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.