chore(release): 0.12.0 - #591
Merged
Merged
Conversation
…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.
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.
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.lockmoves with them. Perdocs/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— 23feat, 14fix(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:Decimal(feat(web): the JSON API over the existing reports, with server-side sort #547), the four-module client shell (feat(web): the client shell — zero dependencies, no build step, served as authored #549), six views + SVG curve + stream that says when it stops (feat(web): the remaining six views, an SVG curve nobody has to see, and a stream that says when it stops (#537) #550), an installable PWA whose worker structurally cannot cache a balance (feat(web): installable, with a worker that structurally cannot cache a balance (#538) #551), the old renderer deleted (feat(web): delete the renderer — the server serves files and JSON, and nothing else (#540) #553), the curses TUI deleted with it (feat: delete the curses TUI and the console layer that only it could open (#541) #554), worker update consent and the write boundary as a module (fix(web): worker update consent, keel.web strict, and the write boundary as a module #555).OrderSpec, the second Coinbase renderer is gone, the product-catalogue read lands (feat(broker-api): a product-catalogue read, the first of #524's two blockers #561), the increment read goes through the port (feat(executor): the increment read goes through the port, and stops fetching 900 products for one #563), and the pre-port client's grandfather clause retires.--forceclobber warning, the DMG README floor tells the truth. Plus the installer/update line: curl|bash no-warning path (feat(installer): the curl|bash no-warning path, auditable line by line (#479) #511), Inno Setup installer with gated signing (D5 delta (#438): Inno Setup installer, gated signing + notarisation, protected signing environment #512, D5 — Package and sign macOS/Windows artifacts in the release workflow #438), per-release self-update (feat(update): D6 — packaged installs update per-release; refusals name the desktop path (#439) #510, D6 — Decide the update path for a packaged install #439).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.toml—version0.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— eachversion, plus the 11 inter-package==pinsuv.lock— regenerated withuv lock; diff is exactly 8 lines (one version per distribution), no unrelated churn;uv lock --checkpassesNothing else:
keel/_build_info.pyis stamped by the release workflow (not in a checkout, untouched), and a repo-wide grep for0.11.2finds only historical records (v0.11.0 incident history in test comments, the0.11.2+88fb17bcab15build-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.tomlfirst madetests/test_packaging.pyfail exactly as designed —After completing the set (all 8 pyprojects, 14 pins,
uv lock), the same suite is green.uv.lockrides 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 passeduv run pytest -q— 4420 passed, 3 skippeduv run ruff check .— all checks passeduv run mypy— no issues in 350 source filesDo not merge unreviewed: the release workflow runs next, after merge, with this same version.