Repository navigation
Stale 'Unreleased' headings in 6 SDK CHANGELOGs (track for batch fix) #6
Description
Iter-46 audit found that 6 of 9 SDK CHANGELOG.md files still mark their latest entry as — Unreleased even though the matching git tag exists and the package is on the registry. Tracking here for visibility — happy to PR-fix all 6 in one batch on your signal.
What's stale
| Repo | CHANGELOG heading | Reality | Should be |
|---|---|---|---|
cryptohopper-cli |
## 0.5.0-alpha.1 — Unreleased |
Tag cli-v0.5.0-alpha.1 exists; published as @cryptohopper/cli@0.5.0-alpha.1 |
## 0.5.0-alpha.1 — 2026-04-25 |
cryptohopper-node-sdk |
## 0.4.0-alpha.1 — Unreleased |
Tag sdk-v0.4.0-alpha.1; npm shows 0.4.0-alpha.1 |
## 0.4.0-alpha.1 — 2026-04-24 |
cryptohopper-python-sdk |
## 0.4.0a1 — Unreleased |
Tag py-v0.4.0a1; PyPI shows 0.4.0a1 |
## 0.4.0a1 — 2026-04-24 |
cryptohopper-go-sdk |
## v0.4.0-alpha.1 — Unreleased |
Tag v0.4.0-alpha.1; pkg.go.dev resolves it |
## v0.4.0-alpha.1 — 2026-04-24 |
cryptohopper-ruby-sdk |
## 0.1.0.pre.alpha.1 — Unreleased |
Tag rb-v0.1.0.pre.alpha.1; RubyGems shows 0.1.0.pre.alpha.1 |
## 0.1.0.pre.alpha.1 — 2026-04-24 |
cryptohopper-rust-sdk |
## 0.1.0-alpha.1 — Unreleased |
Tag rs-v0.1.0-alpha.1; crates.io shows 0.1.0-alpha.1 |
## 0.1.0-alpha.1 — 2026-04-24 |
The other three SDKs (PHP, Dart, Swift) already have correct release dates.
Why it matters
Anyone reading a CHANGELOG to figure out "what's in this release" sees "Unreleased" and reasonably concludes the version isn't shipped — even though it is. It also undermines the next release: the next release-bump PR has to either fix the stale heading in passing (silent doc change buried in a feature PR) or carry forward the inaccuracy.
Likely root cause
Tag-driven release workflows that don't auto-update the CHANGELOG date. The "Unreleased" placeholder is the standard "Keep a Changelog" convention for the WIP entry — the bug is that it wasn't replaced with the real release date when the tag was pushed.
Fix shape
Each fix is a one-line replacement, e.g.:
-## 0.4.0-alpha.1 — Unreleased
+## 0.4.0-alpha.1 — 2026-04-24Six trivial PRs (one per repo). Or one comb if you'd rather see them grouped.
Why I'm filing here, not as 6 PRs
PR review queue is already at 13 across the org. Adding 6 more 1-line PRs at the same time felt like noise. Open to either approach — say the word and I'll push the PRs.
Bonus: prevention
Worth considering as a follow-up: have each repo's release workflow sed-replace ## <version> — Unreleased with ## <version> — $(date +%F) before the tag-parity check, then commit that change back to the release tag. Floats the burden off humans and onto CI. (Requires a small change to the release workflow on each repo; can also be one tracking PR.)
Activity
pimfeltkamp commentedon Aug 10, 2026
Automated triage — verdict:
needs-infoRationale: every artifact this report points at (a
CHANGELOG.mdin six other repositories) is outside this repository.cryptohopper-resourcescontains noCHANGELOG.md, no SDK/CLI source, and no release workflow, so the stale— Unreleasedheadings, the git tags, and the registry publications can be neither confirmed nor refuted from this clone. Triage is scoped to this repository only, so this is not a judgement that the report is wrong — only that it isn't checkable here.Evidence
cryptohopper-cli/CHANGELOG.md→## 0.5.0-alpha.1 — Unreleasedcryptohopper-node-sdk/CHANGELOG.md→## 0.4.0-alpha.1 — Unreleasedcryptohopper-python-sdk/CHANGELOG.md→## 0.4.0a1 — Unreleasedcryptohopper-go-sdk/CHANGELOG.md→## v0.4.0-alpha.1 — Unreleasedcryptohopper-ruby-sdk/CHANGELOG.md→## 0.1.0.pre.alpha.1 — Unreleasedcryptohopper-rust-sdk/CHANGELOG.md→## 0.1.0-alpha.1 — Unreleasedcli-v…,sdk-v…,py-v…,v0.4.0-alpha.1,rb-v…,rs-v…) existgit tag→ empty).github/directory exists here (git ls-files | grep .github→ no matches)0.4.0-alpha.1, Python0.4.0a1, Gov0.4.0-alpha.1, Ruby0.1.0.pre.alpha.1, Rust0.1.0-alpha.1docs/sdks.md:9-13on branchorigin/add-sdk-suite-to-readme(not onmain). This corroborates the version numbers only; it says nothing about the CHANGELOG headings, so it does not upgrade the verdict.Searches run in this clone:
git ls-files(28 tracked files, alldocs/,integrations/,README.md,CONTRIBUTING.md,llms.txt); case-insensitive repo-wide grep forUnreleased|CHANGELOG|0.4.0|0.5.0|alpha.1— the onlymain-branch hit is.gitignore:1(docs/changelog/, a directory that does not exist in the working tree);git ls-treeacross all six remote branches for changelog/version/workflow files.One inconsistency worth resolving
The report frames this as "6 of 9 SDK CHANGELOGs", but its own table counts
cryptohopper-cli— which is the CLI, not an SDK — and its "other three (PHP, Dart, Swift)" line leaves no room for Kotlin.docs/sdks.md:9-17(branchorigin/add-sdk-suite-to-readme) lists nine SDKs: Node, Python, Go, Ruby, Rust, PHP, Dart, Swift, Kotlin. So the audit set appears to be 5 SDKs + 1 CLI, withcryptohopper-kotlin-sdkunaccounted for.To move this to a
realverdict, please add/blob/main/, which drifts) for each of the sixCHANGELOG.mdfiles.git tag --points-atorgit show <tag>output showing each release tag exists and the date it was pushed, so the proposed replacement dates (2026-04-24 / 2026-04-25) can be tied to something verifiable rather than asserted.cryptohopper-resourcesat all — if there's an established convention for cross-repo tracking issues here, a maintainer should confirm this is the right venue, since nothing in this repo'sCONTRIBUTING.mdorREADME.mdmentions one.No severity or difficulty is assigned, since the defect is not confirmable from this repository. Note also that the "prevention" suggestion at the end of the report would change release workflows in six external repos — that is a separate, larger change than the six one-line edits, and should be split off rather than folded into this issue.