Skip to content
This repository was archived by the owner on Feb 21, 2026. It is now read-only.

Some clean-up - #45

Open
MeKo-Christian wants to merge 36 commits into
go-audio:masterfrom
CWBudde:master
Open

Some clean-up#45
MeKo-Christian wants to merge 36 commits into
go-audio:masterfrom
CWBudde:master

Conversation

@MeKo-Christian

@MeKo-Christian MeKo-Christian commented Feb 6, 2026

Copy link
Copy Markdown

This is not meant to get merged actually, but a request for collaboration

  • added float32 support
  • added github action workflows
  • added linter setup and fixed linting
  • added formatter and formatting

I would like to collaborate on the go-audio project. I could bring in 25 years of experience in the audio dsp field

MeKo-Christian and others added 6 commits February 7, 2026 10:25
In August 2026 this family had drifted onto three different algo-fft
versions at once -- algo-pde on v0.6.15, algo-dsp on v0.7.3,
algo-acoustics on v0.6.11 -- while algo-fft main sat 97 commits past its
latest tag and its CHANGELOG documented a v0.7.5 that was never tagged.
Because PlanReal2D/PlanReal3D had gone generic between the v0.6 and v0.7
lines, no single upgrade anywhere would compile. It took a day and four
coordinated releases to unpick.

Three separate mistakes combined to cause that, so there are three checks:

  just check-unreleased   work stuck on main that consumers cannot take
  just check-deps         siblings left behind their latest tags
  just tag-release vX.Y.Z every release precondition, then tag and push

The third is the forcing one. It refuses to tag on a dirty tree, an
unpushed main, an existing or out-of-order tag, stale siblings, a missing
CHANGELOG section, or an incompatible API change the version does not
signal.

That last rule is deliberately stricter than semver. Semver exempts v0.x
-- "anything MAY change at any time" -- so gorelease approves a *patch*
bump across a removed symbol. Every module here is v0.x, so that
exemption is exactly the hole we fell through: KernelEightStep was
removed and PlanReal2D became generic with nothing in the version saying
so. The guard requires a minor bump for any incompatible change on v0.x.

Verified against the real failure: replaying algo-fft v0.7.4 -> v0.7.6
detects "KernelEightStep: removed" and refuses, demanding v0.8.0, which
is what we picked by hand.

check-deps is wired into the aggregate local check recipe but NOT into
pull-request CI, so a sibling tagging overnight cannot turn an unrelated
PR red. A weekly scheduled workflow files an issue instead. Renovate
groups the whole cwbudde family into one PR on purpose, since an
incompatible algo-fft can arrive by two dependency paths at once and
per-module PRs produce combinations that never build.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Same script ships in every sibling repo, so the fixes apply here too.
The first one matters most: cmd_gate reported SUCCESS for a malformed
version, because fail() ends in an assignment and the bare `return`
therefore yielded 0 — so `tag` went straight on to git tag and git push
without a passing gate.

* cmd_gate returns 1 explicitly, and cmd_tag checks the gate rather than
  relying on errexit, which the dispatcher's `||` list disables.
* Fetch tags before reading the base version, and fail if the fetch
  fails, so a release tagged elsewhere cannot be compared against a
  stale predecessor.
* Accept v0.x -> v1.0.0; only minor components were compared before.
* Require a heading boundary when matching the CHANGELOG section, in
  both the gate and the tag-annotation extractor, so `## 0.8.0-rc1`
  no longer passes as 0.8.0 or supplies its release notes. Dots are
  escaped as [.] so they match literally in grep and awk alike.
* unreleased returns non-zero past UNRELEASED_THRESHOLD (default 20) and
  dep-drift.yml keys on it, so untagged work can actually raise the
  issue the workflow promises.
* Correct the stale `just release` reference and a typo in AGENTS.md.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants