Skip to content

fix(cryptify): release the stranded security fixes as 0.1.28 - #279

Open
rubenhensen wants to merge 1 commit into
mainfrom
fix/cryptify-unreleased-changelog
Open

fix(cryptify): release the stranded security fixes as 0.1.28#279
rubenhensen wants to merge 1 commit into
mainfrom
fix/cryptify-unreleased-changelog

Conversation

@rubenhensen

Copy link
Copy Markdown
Contributor

cryptify's CHANGELOG.md carried two hand-written bullets under ## [Unreleased], one of them citing GHSA-5rhx-xgvv-h78h:

## [Unreleased]

### Security

- require a validated API key on `GET /usage` and reject unauthenticated callers with 401 (GHSA-5rhx-xgvv-h78h)
- compare `cryptify_token` values in constant time, matching the recovery-token path

release-plz inserts each new version section below that heading, so bullets written there are never folded into the release that follows. They sit above the newest version, undated, indefinitely. CLAUDE.md documents this trap; these two were already in it.

Both describe 8531b28 (2026-07-06). I checked the code rather than trusting the note: cryptify_tokens_match uses subtle::ConstantTimeEq, and there is a usage_rejects_unauthenticated_request test. The fixes are real and merged.

They were not alone

cryptify's last release is v0.1.27, 2026-05-16, and 31 commits have merged since. The [Unreleased] section documented two of them. Also sitting unreleased for two and a half months:

  • lettre 0.11.21 → 0.11.22 (RUSTSEC-2026-0141)
  • a bearer token on /metrics when configured
  • generic 5xx response bodies, with detail logged server-side instead of returned

What this does

Writes a dated 0.1.28 section covering the real backlog, derived from the commit subjects rather than hand-summarised, and bumps cryptify/Cargo.toml so release-plz's release job tags it.

Merging this cuts cryptify 0.1.28 and publishes the advisory fix in a dated release note.

On hand-bumping the version

Normally release-plz owns version numbers and a PR should not set them. It cannot do it here. release-plz decides a package changed by looking for commits touching cryptify/, and the imported history carries root-level paths (src/main.rs, not cryptify/src/main.rs), so it sees no cryptify changes and proposes no bump. #278 confirms this: it touches pg-cli and pg-pkg only, both before and after the history graft.

So without a manual bump, nothing ever releases these. After this lands, release-plz has a cryptify-v0.1.28 tag to measure from and normal service resumes.

Verification

cargo test --manifest-path cryptify/Cargo.toml --all-targets → 157 passed. Workspace resolves; the only lockfile change is cryptify's own version.

cryptify's CHANGELOG carried two hand-written bullets under `## [Unreleased]`,
one of them citing GHSA-5rhx-xgvv-h78h. release-plz inserts each new version
section *below* that heading, so bullets written there are never folded into a
release; they sit above the newest version undated, forever. Both describe
8531b28 (2026-07-06), which is real, merged and shipped in no release.

They were not alone. cryptify's last release is v0.1.27 (2026-05-16) and 31
commits have merged since, so the advisory fix plus a RUSTSEC lettre bump, the
metrics bearer token and the 5xx body leak fix have all been sitting unreleased
for two and a half months. The [Unreleased] section documented two of them.

This writes a dated 0.1.28 entry covering the actual backlog, generated from
the commit subjects rather than by hand, and bumps the manifest so release-plz's
`release` job tags it.

Hand-bumping the version is normally release-plz's job. It cannot do it here:
it keys off commits touching `cryptify/`, and the imported history carries
root-level paths, so it sees no cryptify changes and proposes no bump. Without
a manual bump nothing ever releases these.

Merging this cuts cryptify 0.1.28 and publishes the advisory fix in a dated
release note.

Refs #255
@dobby-coder
dobby-coder Bot requested a review from leonbotros July 31, 2026 07:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant