Skip to content

chore(release): 0.12.0 - #591

Merged
eaitbrahim merged 1 commit into
mainfrom
chore-v0.12.0-bump
Aug 28, 2026
Merged

chore(release): 0.12.0#591
eaitbrahim merged 1 commit into
mainfrom
chore-v0.12.0-bump

Conversation

@eaitbrahim

Copy link
Copy Markdown
Contributor

What this is

The version-bump PR for 0.12.0, following #482/#515/#518's precedent: one commit, every version and every == pin moves together, uv.lock moves with them. Per docs/RELEASING.md, merging this (not the workflow) is what sets the version — the release workflow then refuses to change it.

Minor, not a patch: 69 commits since v0.11.2 — 23 feat, 14 fix (non-merge subjects). New interfaces shipped (the web UI, declared parameter spaces, OrderSpec), so the minor is earned, not conservative.

What ships in 0.12.0

The headline items, enumerated from git log --oneline v0.11.2..HEAD:

Docs/decisions also land (ADR 0002 SQLite #526, the commands/ survey #525, the fill-model hazard note #529, the Jesse learnings PRD #530) — release notes will group them per the label table in docs/RELEASING.md.

Files bumped

  • pyproject.tomlversion 0.11.2 → 0.12.0, plus the three sibling pins (keel-core, keel-broker-api, keel-broker-coinbase)
  • packages/{keel-core,keel-broker-api,keel-broker-coinbase,keel-broker-alpaca,keel-broker-fake,keel-broker-robinhood,keel-broker-kraken}/pyproject.toml — each version, plus the 11 inter-package == pins
  • uv.lock — regenerated with uv lock; diff is exactly 8 lines (one version per distribution), no unrelated churn; uv lock --check passes

Nothing else: keel/_build_info.py is stamped by the release workflow (not in a checkout, untouched), and a repo-wide grep for 0.11.2 finds only historical records (v0.11.0 incident history in test comments, the 0.11.2+88fb17bcab15 build-identity worked example) — no live pins or expectations were left behind.

Lock discipline

The trap from #422/#482, verified TDD-style: bumping only the root pyproject.toml first made tests/test_packaging.py fail exactly as designed —

FAILED tests/test_packaging.py::test_every_workspace_package_carries_the_same_version
FAILED tests/test_packaging.py::test_workspace_siblings_are_pinned_to_the_exact_version[keel-trader]
  keel-trader depends on 'keel-core==0.11.2'; it must be 'keel-core==0.12.0'

After completing the set (all 8 pyprojects, 14 pins, uv lock), the same suite is green. uv.lock rides in the same commit because the release workflow checks it is current before anything else (#424).

Gates

  • uv run pytest tests/test_packaging.py -q — 22 passed
  • uv run pytest -q — 4420 passed, 3 skipped
  • uv run ruff check . — all checks passed
  • uv run mypy — no issues in 350 source files

Do not merge unreviewed: the release workflow runs next, after merge, with this same version.

…rt flip completes

Bumps keel-trader and the seven workspace packages from 0.11.2 to 0.12.0, plus
every '==' sibling pin and uv.lock. 69 commits since v0.11.2, 23 feat and 14
fix among them -- a minor, not a patch.

What ships: the zero-dependency web UI (#531-#555 -- static serving with
checkable headers, JSON reports, the four-module client shell, six views,
installable PWA whose worker structurally cannot cache a balance, the renderer
and the curses TUI deleted); the broker-port flip completed (#524, #561-#569 --
the default venue resolves through the registry, every order is an OrderSpec,
the second Coinbase renderer is gone, the pre-port client's grandfather clause
retires); live stop management (#502, #521, #527 -- a per-cycle stop step off
by default, a bracket as one order kind because two legs race, the sizing stop
recorded because the current one ratchets away, and #519/#522's crash-ledger
fixes); each rule declares its parameter space and tuning reads the
declaration (#528); Alpaca refuses margin accounts by posture (#372); the
installer fixes (#556, #557 -- confirm-mode production config, the floor is the
artifact's); per-release self-update and the Windows installer (#510, #511,
#512, #438-#439); the pooled-review report driver (#427); the Python floor
moves to 3.14 (#546).

All eight distributions move as one set; 'keel versions' exits non-zero when
they disagree and tests/test_packaging.py pins the sibling '==' constraints,
which is how this bump caught itself half-finished on the first red run.
uv.lock moves with them (8 lines: one version per distribution, nothing else)
-- the release workflow checks it is current before anything else.
@eaitbrahim eaitbrahim self-assigned this Aug 28, 2026
@eaitbrahim
eaitbrahim merged commit 2feca85 into main Aug 28, 2026
4 checks passed
@eaitbrahim
eaitbrahim deleted the chore-v0.12.0-bump branch August 28, 2026 06:00
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