Skip to content

chore(release): 0.10.0 - #422

Merged
eaitbrahim merged 1 commit into
mainfrom
chore/release-0.10.0
Aug 20, 2026
Merged

chore(release): 0.10.0#422
eaitbrahim merged 1 commit into
mainfrom
chore/release-0.10.0

Conversation

@eaitbrahim

Copy link
Copy Markdown
Contributor

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.3 change what an implementor or a deployment can rely on:

Every pin moves with it

All seven distributions, and the == cross-pins:

keel-trader        0.9.3 -> 0.10.0   (+ 3 pinned deps)
keel-core          0.9.3 -> 0.10.0
keel-broker-api    0.9.3 -> 0.10.0   (+ 1)
keel-broker-coinbase                 (+ 2)
keel-broker-alpaca                   (+ 2)
keel-broker-robinhood                (+ 2)
keel-broker-fake                     (+ 2)

The four production distributions are required == at the same version (RELEASING.md, "Release assets"), so a bump that missed one installs 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. No 0.9.3 remains anywhere in the workspace.

Verified

Full suite 3797 passed, 3 skipped. ruff check clean.

After merge

Actions → Release → Run workflow, entering 0.10.0. The workflow validates the input against pyproject.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 is mode: confirm, tags v0.10.0, and publishes.

One stale doc, not fixed here

RELEASING.md's asset table predates keel-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-packages will build and publish it regardless, and keel versions discovers 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 since keel update downloads exactly four production wheels, which means the equities profile is not self-updatable today.

🤖 Generated with Claude Code

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
eaitbrahim merged commit 29464f0 into main Aug 20, 2026
5 checks passed
@eaitbrahim
eaitbrahim deleted the chore/release-0.10.0 branch August 20, 2026 00:08
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant