chore(release): 0.10.0 - #422
Merged
Merged
Conversation
Minor, not patch. Three things since v0.9.3 change what an implementor or a deployment can rely on: * A NEW DISTRIBUTION. `keel-broker-alpaca` (#382, #384) plus the paper-equities profile that selects it (#386), so a deployment can now be US equities via the broker port rather than crypto only. * THE PORT CONTRACT MOVED TWICE. `market_clock`/`market_schedule` made venues session-aware (#385), and `place_order` gained `idempotency_key` (#419). Both carry defaults so no CALLER breaks, but a third-party adapter that does not accept them is no longer a `Broker` -- the conformance suite now says so. That is exactly the kind of change a patch bump must not hide. * THE OPERATOR CONSOLE. The TUI became keel's console across #399-#408, and `keel update` (#415/#417) makes a deployment self-updating. Every pinned sibling moves with it. The four production distributions are required `==` at this exact version (`RELEASING.md`, "Release assets"), so a bump that missed one would install a mixed set -- the `keel-trader 0.5.7` against `keel-core 0.5.5` failure `keel versions` exists to catch, and which `~/keel` actually ran across two releases. Also in this window, on the Robinhood adapter: the best_bid_ask fixture corrected against the live venue (#414), a credential guard that catches the error it only claimed to (#416), pre-flight sizing reported on the preview (#418), transport backoff (#420), and the fenced one-order probe (#421). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
eaitbrahim
added a commit
that referenced
this pull request
Aug 20, 2026
#422 bumped the version in all seven `pyproject.toml` files and missed `uv.lock`, which is tracked and still pinned every workspace member at 0.9.3. The release workflow's "Sync dependencies" step then regenerated it, which left the checkout DIRTY, and the build stamped from that checkout identified itself as keel 0.10.0+29464f06ee11 (DIRTY) [release] so "Verify the artifact identifies itself" refused to go on. That guard did exactly its job: a `(DIRTY)` build corresponds to no commit, and `docs/RELEASING.md` is explicit that such a build must never run against live funds. Nothing was tagged and nothing was published. Regenerated with `uv lock`, which touches only the seven workspace members' versions -- no dependency resolution moved. Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Step 1 of
docs/RELEASING.md: the version bump, in a reviewed PR, because the release workflow refuses to change the version itself.Why minor and not patch
Three things since
v0.9.3change what an implementor or a deployment can rely on:keel-broker-alpaca(feat(broker-alpaca): keel-broker-alpaca — original Alpaca port adapter, conformance green #382, fix(broker-alpaca): NaN-safe money coercion, host-map-only construction, quoted path segments #384) and the paper-equities profile that selects it (feat(paper-equities): the equities paper profile — tracked config, venue selection, deployment artifacts, runbook (#370 B2) #386) — a deployment can now be US equities via the broker port, not crypto only.market_clock/market_schedulemade venues session-aware (feat(port): session-aware venues — market clock in the port, closed-session semantics in the engine (#370 B1) #385);place_ordergainedidempotency_key(feat(brokers): give the port an idempotency key so a placement retry is safe #419). Both carry defaults so no caller breaks, but a third-party adapter that doesn't accept them is no longer aBroker— the conformance suite now says so. A patch bump must not hide that.keel update(Self-update: pull the latest release, deploy into the launch folder, relaunch the TUI #415/feat(update): self-update — pull, deploy into the launch folder, relaunch (#415) #417) makes a deployment self-updating.Every pin moves with it
All seven distributions, and the
==cross-pins:The four production distributions are required
==at the same version (RELEASING.md, "Release assets"), so a bump that missed one installs a mixed set — thekeel-trader 0.5.7againstkeel-core 0.5.5failurekeel versionsexists to catch, and which~/keelactually ran across two releases. No0.9.3remains anywhere in the workspace.Verified
Full suite 3797 passed, 3 skipped.
ruff checkclean.After merge
Actions → Release → Run workflow, entering
0.10.0. The workflow validates the input againstpyproject.toml, runs tests + ruff, stamps the commit, builds all packages, installs into a clean venv by path and asserts a clean[release]identity, verifies the live config asset ismode: confirm, tagsv0.10.0, and publishes.One stale doc, not fixed here
RELEASING.md's asset table predateskeel-broker-alpaca— it lists six distributions and describes the fake and Robinhood wheels as published-but-not-deployed, with no row for Alpaca.uv build --all-packageswill build and publish it regardless, andkeel versionsdiscovers distributions from installed metadata rather than a hardcoded list, so nothing is functionally wrong. Worth a follow-up rather than scope in a release bump — particularly sincekeel updatedownloads exactly four production wheels, which means the equities profile is not self-updatable today.🤖 Generated with Claude Code