Skip to content

Release v0.1.4 — two safety rails learned the hard way - #15

Merged
piekstra merged 1 commit into
mainfrom
chore/release-0.1.4
Jul 29, 2026
Merged

Release v0.1.4 — two safety rails learned the hard way#15
piekstra merged 1 commit into
mainfrom
chore/release-0.1.4

Conversation

@piekstra

@piekstra piekstra commented Jul 29, 2026

Copy link
Copy Markdown
Owner

Version bump to cut v0.1.4. Both rails here exist because the missing guard actually cost money on a live account — not because they looked prudent.

PR Rail What it cost to learn
#13 --min-ask defaults to the position's break-even It was optional, so it only applied when remembered. It got forgotten: a below-cost ask rested, filled, and locked in a realized loss.
#14 Swap slippage bounds checked against a fresh quote, refused above 5% --max-usdc was passed through unexamined, so a hand-rounded $56 on a ~$51 quote authorised ~9% slippage in silence.

Both fire under --force, which is where they matter most: no prompt is shown, so a loose value would otherwise pass unseen — precisely how each original mistake got submitted.

--max-slippage-pct now derives the bound from the quote rather than asking anyone to pick a number, and the 5% threshold is pinned to the platform's own fee load (3% platform + 2% pool LP) rather than to taste.

Both rails in this release exist because the missing guard actually cost money on
a live account, not because they seemed prudent:

- `quote recenter|provision`: `--min-ask` now DEFAULTS to the position's
  break-even (#13). It was optional, so it only applied when remembered — and it
  got forgotten: a below-cost ask sat resting, filled, and locked in a loss.
- `amm swap`: slippage bounds are checked against a fresh quote and refused above
  5% (#14). `--max-usdc` was passed through unexamined, so a hand-rounded $56 on
  a ~$51 quote authorised ~9% slippage in silence. `--max-slippage-pct` derives
  the bound instead of asking anyone to guess.

Both fire under --force, which is where they matter: no prompt is shown, so a
loose value would otherwise pass unseen.

Claude-Session: https://claude.ai/code/session_01J7bz8aijn2Uwv1yF5rUenW
@piekstra
piekstra requested a review from piekstra-dev July 29, 2026 22:49

@piekstra-dev piekstra-dev left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated PR Review

Reviewed commit: 8c6a804dfc18
Profile: reviewer - Posting as: piekstra-dev

Summary

Severity Findings
blocking 0
major 0
minor 0
nits 0

0 PR discussion threads considered. 0 summarized; 0 resolved.


Completed in 28s | $0.24 | claude-sonnet-5 | cr 0.10.268
Field Value
Model claude-sonnet-5
Reviewers unavailable
Engine claude_cli · claude-sonnet-5
Reviewed by cr · piekstra-dev
Duration 28s wall · 25s compute
Cost $0.24
Tokens 12 in / 1.0k out

Per-workstream usage

Workstream Model In Out Cache read Cache create Cost Duration
orchestrator-selection claude-sonnet-5 6 693 36.3k 18.8k $0.13 12s
orchestrator-rollup claude-sonnet-5 6 351 55.7k 13.7k $0.10 12s

@piekstra
piekstra merged commit 0ed5ed1 into main Jul 29, 2026
2 checks passed
@piekstra
piekstra deleted the chore/release-0.1.4 branch July 29, 2026 22:51
piekstra added a commit that referenced this pull request Jul 30, 2026
Both rails in this release exist because the missing guard actually cost money on
a live account, not because they seemed prudent:

- `quote recenter|provision`: `--min-ask` now DEFAULTS to the position's
  break-even (#13). It was optional, so it only applied when remembered — and it
  got forgotten: a below-cost ask sat resting, filled, and locked in a loss.
- `amm swap`: slippage bounds are checked against a fresh quote and refused above
  5% (#14). `--max-usdc` was passed through unexamined, so a hand-rounded $56 on
  a ~$51 quote authorised ~9% slippage in silence. `--max-slippage-pct` derives
  the bound instead of asking anyone to guess.

Both fire under --force, which is where they matter: no prompt is shown, so a
loose value would otherwise pass unseen.
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.

2 participants