Release workflow

Fixed release order across the suite

Id: 11b118c1-3205-498d-807d-9ac4cbc7a186 Type: decision Status: active Evidence: confirmed Source: maintainer Revisit when: a new module is added to the suite, or a module’s dependency graph changes See: history.md#lucit-brandinglicensing-removal-april-2026 — 2749fc08-cdca-456b-a8bd-fd4b646ff64c — as of 2026-09-28

Releases across the suite always go in this order:

unicorn-fy → UBRA → UBWA → UBLDC + UBTSL (parallel) → ubdcc → unicorn-binance-suite (this repo, last)

Reason: this is the dependency order (each module pins the ones before it), validated empirically during the April 2026 LUCIT-cleanup release round (see history.md) where releasing out of order produced unsatisfiable-dependency failures on conda-forge.

Rejected alternative: releasing modules independently of this order (e.g. whenever a fix lands) was the implicit approach before that round. Rejected because a downstream module’s conda-forge build fails outright if the upstream package hasn’t finished indexing yet — not a soft warning, a hard build failure.

Wait for conda-forge indexing, not just for the merge

Id: a5227f38-928b-4573-9f9a-eeae5a3b336b Type: constraint Status: active Evidence: confirmed Source: maintainer

After a feedstock PR is merged, there’s a ~15–30 minute gap before the package is actually indexed in the conda-forge channel. The next downstream module’s feedstock bump must wait for indexing, not just for the merge to land.

Reason: merging the feedstock PR triggers the build, but the resulting package isn’t queryable by conda-forge’s resolver until channel indexing finishes. Bumping a downstream feedstock’s pin before that window closes fails with unsatisfiable dependencies, even though the upstream PR is already merged.

Bot-driven pin bumps vs. manual PRs

Id: 83aacda3-6460-4393-b741-542b2b78af92 Type: decision Status: active Evidence: confirmed Source: maintainer

The conda-forge autotick bot opens pin-bump PRs in downstream feedstocks automatically once an upstream package updates. For simple pin bumps, these bot PRs are left for the maintainer to merge as needed — no manual PR is opened to chase them.

Reason: manually duplicating what the bot already does is redundant. A manual PR is only opened when more than a pin bump is needed: a multi-layer cleanup round touching several modules at once, or an actual feature change in the downstream module itself.

Recurring pitfalls (not bugs, expected friction)

Id: 477bb0a1-1bbf-481e-84b5-491596cd5bca Type: workaround Status: active Evidence: confirmed Source: all of the above validated during the April 2026 (2026-04-18/19) suite-wide cleanup release round

  • CDN-cache race: a feedstock PR’s own CI goes green, but the subsequent main-branch build goes red on the same meta.yaml roughly a minute later. Not a real regression — the fix is a new build-number bump and retry. Most likely right after suite deps were just freshly published, before the CDN has caught up.

  • Parallel pin-PR conflicts: two bump PRs open at once both touch the same CHANGELOG.md X.X.dev block; merging one requires rebasing the other.

  • Partial Azure builds: if Azure (Windows/Mac) fails with transient git-fetch errors while Linux is green, the package can land incomplete in the channel. Fix: a new PR bumping build.number plus an explicit @conda-forge-admin, please rerender comment (the rerender request must be a comment, not text in the PR body — it isn’t executed there).

  • Python 3.14 migration silently reverts: once a feedstock has been converted from noarch: python to a compiled build (Cython), a plain rerender can delete the existing .ci_support/*python3.14* files instead of regenerating them, because conda-smithy falls back to global pinning defaults without an active migration file. Fix: ensure .ci_support/migrations/python314.yaml exists in the feedstock (copy from conda-forge’s conda-forge-pinning-feedstock migrations, or from unicorn-binance-websocket-api-feedstock which already has it), commit it, then rerender. Check for this file on every UBS feedstock bump — it’s easy to lose 3.14 support silently on a routine rerender otherwise.

  • Autotick bot opens a redundant version-bump PR in parallel with a manual one — just close it (requires maintainer, the AIgent account has no close rights on those repos).