chore(release): 0.16.0 -- brackets reach the venue, and exits name their rule - #806
Merged
Merged
Conversation
…eir rule MINOR, not a patch, because #805 ships schema v21: `positions.rule_id`. A deployment must run `keel migrate` on every database before the new build trades, and the version is the only signal an operator gets before reading the notes. What lands: #804 (#802) -- bracket prices quantized to the venue tick, stop UP and target DOWN. Until now every protective bracket was rejected with "Too many decimals in order price", so the stop-loss and take-profit machinery had never fired on the live deployment at all. Nothing distinguished that from DCA's legitimate bracket-lessness. #805 (#803) -- `positions.rule_id`, so the protective SELL that exits a tranche names the rule that owns it. Both exit paths build their intent from a position, so every bracket, roll and scale-out was written unattributed while its entry carried the name. Eight workspace versions and the fourteen inter-package `==` pins move together, 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
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.
Version bump only. No behaviour change in this PR.
Why MINOR and not a patch
#805 ships schema v21 (
positions.rule_id). A deployment must runkeel migrateon everydatabase before the new build trades, and the version number is the only signal an operator gets
before they read the notes. 0.15.1 was a pure bug fix and was numbered accordingly; this is not.
What lands
Too many decimals in order price, so the stop-loss and take-profit machinery had never fired on the live deployment. Nothing distinguished that from DCA's legitimate bracket-lessness.positions.rule_id, so the protective SELL exiting a tranche names its owning rule. Both exit paths build their intent from a position, so every bracket, roll and scale-out was written unattributed while its entry carried the name.Both PRs were reviewed and both reviews found a real defect the original missed — an unpatched
second
_bracket_speccall site in one, an untested inheritance line in the other. Those fixesare included.
What moved
pyproject.tomlversionfields,0.15.1→0.16.0==0.15.1pins →==0.16.0(these are what akeel versionsPARTIAL INSTALL comes from when left behind — this deployment has hit that before)
uv.lock, refreshed viauv lockVerified locally
After merge — the order matters
0.16.0~/keelkeel migrateon all four databases — new column; the ALTER is guarded and nullable, soit is non-destructive and idempotent, but the build should not trade before it runs
The live deployment has a PAXG position retrying its bracket every cycle and escalating
reconcile.position_unprotectedat CRITICAL. #804 is what lets that retry finally succeed.🤖 Generated with Claude Code
https://claude.ai/code/session_01AoGRoExgHVCsWDHT3ej8mD