Skip to content

Stale 'Unreleased' headings in 6 SDK CHANGELOGs (track for batch fix) #6

Open

Description

@pimfeltkamp

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-24

Six 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

  1. pimfeltkamp commented on Aug 10, 2026

    @pimfeltkamp
    ContributorAuthor

    Automated triage — verdict: needs-info

    Rationale: every artifact this report points at (a CHANGELOG.md in six other repositories) is outside this repository. cryptohopper-resources contains no CHANGELOG.md, no SDK/CLI source, and no release workflow, so the stale — Unreleased headings, 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

    Claim Status
    cryptohopper-cli/CHANGELOG.md → ## 0.5.0-alpha.1 — Unreleased ABSENT (external repo)
    cryptohopper-node-sdk/CHANGELOG.md → ## 0.4.0-alpha.1 — Unreleased ABSENT (external repo)
    cryptohopper-python-sdk/CHANGELOG.md → ## 0.4.0a1 — Unreleased ABSENT (external repo)
    cryptohopper-go-sdk/CHANGELOG.md → ## v0.4.0-alpha.1 — Unreleased ABSENT (external repo)
    cryptohopper-ruby-sdk/CHANGELOG.md → ## 0.1.0.pre.alpha.1 — Unreleased ABSENT (external repo)
    cryptohopper-rust-sdk/CHANGELOG.md → ## 0.1.0-alpha.1 — Unreleased ABSENT (external repo)
    Git tags (cli-v…, sdk-v…, py-v…, v0.4.0-alpha.1, rb-v…, rs-v…) exist NOT-SEARCHED — those tags live in the SDK repos; this repo has zero tags (git tag → empty)
    Packages published on npm / PyPI / pkg.go.dev / RubyGems / crates.io NOT-SEARCHED — external registries, outside this clone
    Release workflows don't rewrite the CHANGELOG date NOT-SEARCHED — no .github/ directory exists here (git ls-files | grep .github → no matches)
    Version strings for Node 0.4.0-alpha.1, Python 0.4.0a1, Go v0.4.0-alpha.1, Ruby 0.1.0.pre.alpha.1, Rust 0.1.0-alpha.1 FOUND — docs/sdks.md:9-13 on branch origin/add-sdk-suite-to-readme (not on main). 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, all docs/, integrations/, README.md, CONTRIBUTING.md, llms.txt); case-insensitive repo-wide grep for Unreleased|CHANGELOG|0.4.0|0.5.0|alpha.1 — the only main-branch hit is .gitignore:1 (docs/changelog/, a directory that does not exist in the working tree); git ls-tree across 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 (branch origin/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, with cryptohopper-kotlin-sdk unaccounted for.

    To move this to a real verdict, please add

    1. The exact heading line as it appears today on each repo's default branch — a permalink pinned to a commit SHA (not /blob/main/, which drifts) for each of the six CHANGELOG.md files.
    2. git tag --points-at or git 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.
    3. Confirmation of the Kotlin SDK's status, and whether the CLI is intentionally in scope.
    4. Whether these repos are meant to be tracked from cryptohopper-resources at 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's CONTRIBUTING.md or README.md mentions 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.

  2. added
    ai-triagedAI issue handler: this issue has been triaged
    ai-verdict:needs-infoAI triage: cannot assess without more information
    on Aug 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    ai-triagedAI issue handler: this issue has been triagedai-verdict:needs-infoAI triage: cannot assess without more information

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions