Skip to content

chore(release): 0.15.1 -- the adapter preview guard reaches the live path - #801

Merged
eaitbrahim merged 1 commit into
mainfrom
chore/release-0.15.1
Sep 16, 2026
Merged

eaitbrahim merged 1 commit into
mainfrom
chore/release-0.15.1

Conversation

@eaitbrahim

Copy link
Copy Markdown
Contributor

Version bump only. No behaviour change in this PR — it exists so the fix already merged as #800
can actually ship.

Why now, specifically

~/keel reports keel 0.15.0+cd6f0d193bfe [release], and 0.15.0's wheels predate #800. The
deployed adapter still reads:

est_base_size=Decimal(_field(response, "base_size", "0")),   # unguarded

That is the line behind #799: on 2026-08-25 a live PAXG entry filled, the protective SELL's
preview raised decimal.InvalidOperation, and the exception propagated out of
executor._run_order (deployed executor.py:979 previews inside it) before the position row was
written — stranding funded inventory with no exit for three weeks.

The recovery for that position has now been armed on the live deployment (a positions row plus
an unbracketed:PAXG-USD intent, so reconcile_unbracketed_positions re-brackets it). That
recovery runs through the same preview path
, on the same unguarded code, until this ships.

What moved

  • eight workspace pyproject.toml version fields, 0.15.0 → 0.15.1
  • fourteen inter-package ==0.15.0 pins → ==0.15.1. These are separate from the version
    field and easy to miss; left behind they are exactly what makes keel versions report a
    PARTIAL INSTALL, which this deployment has hit before.
  • uv.lock, refreshed via uv lock (keel-trader, keel-core, keel-broker-* → 0.15.1). The
    release workflow checks the lockfile before anything else and fails if it was left stale.

Verified locally

grep -rn '0\.15\.0' pyproject.toml packages/*/pyproject.toml   -> (none)
ruff check keel tests packages                                  -> All checks passed!
ruff format --check .                                           -> 502 files already formatted
pytest tests/broker_coinbase tests/execution                    -> 559 passed
keel/templates/config.live.yaml                                 -> mode: confirm

The last line is the release asset the workflow refuses to publish in any other mode.

There is one pre-existing E501 in docs/experiments/2026-09-02-equities-cost-fidelity.py. The
workflow scopes ruff check to keel tests packages, so it does not gate this release; noted
rather than silently fixed in a release PR.

After merge

Actions → Release → Run workflow, entering 0.15.1. Then the five production wheels install into
~/keel by path, and keel versions should report 0.15.1 across all five.

🤖 Generated with Claude Code

https://claude.ai/code/session_01AoGRoExgHVCsWDHT3ej8mD

…path

Patch release carrying #800. 0.15.0's wheels predate it, so every deployment is
still running the crash #799 documents: `Decimal("")` out of the Coinbase adapter's
preview, which on 2026-08-25 aborted `executor._run_order` after a PAXG entry had
already FILLED and before `agent.open_position` could record it.

Eight workspace `pyproject.toml` versions and the fourteen inter-package `==` pins
move together -- the pins are what a `keel versions` PARTIAL INSTALL comes from when
they are left behind -- plus the refreshed `uv.lock` the workflow checks first.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AoGRoExgHVCsWDHT3ej8mD
@eaitbrahim
eaitbrahim merged commit 68656b5 into main Sep 16, 2026
4 checks passed
@eaitbrahim
eaitbrahim deleted the chore/release-0.15.1 branch September 16, 2026 02:32
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