fix(rails): rail 14 is a monthly buy cap, not a fee-free allowance (#836) - #837
Merged
Merged
Conversation
) keel trades through Coinbase Advanced Trade, which has no fee-waiver tier: on 2026-09-27 the account reported the Intro tier (0.9% taker, has_promo_fee false) and every live fill had paid a fee. Coinbase One's zero trading fees apply on the main Coinbase platform only. Wording only -- guards.py is untouched and every rail 14 number is the same: - subscription set help, the throughput report, the significance verdict's zero-fee phrase and the sim's tier section say buy cap / hypothetical zero-fee regime, not fee-free allowance; - the rail 14 doc drops the fee-waiver and profitability-boundary claim and records the correction; - the runbook and research toolkit are corrected in place; - five records that described a fee-free regime gain a dated fee note (appended, never rewritten), pinned by a test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
eaitbrahim
commented
Sep 27, 2026
…laim is gone from templates and configs - The rail 14 doc test could not fail: its regex never matched the real pre-#836 paragraph (a line break split the phrase and ** wrapped it). It now normalises markdown and whitespace first, and a new test pins the detector against the retracted paragraph verbatim. - The fee-free claim is corrected in keel/templates/config.live.yaml and config.yaml (what keel setup writes into a deployment), the tracked config.yaml / config.paperforward.yaml / config.paper-hourly.yaml, the TierConfig docstring, and throughput.py / significance.py (#838). Comments only: every config's parsed values are identical. - The record-note rule now covers docs/superpowers/specs; four specs gain a dated fee note. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… fees to beyond a free allowance (#838) The fees: block in both setup templates, config.yaml and config.paperforward.yaml, and the FeesConfig docstring, said Advanced Trade fees applied only to volume beyond a tier's free allowance. They apply to every keel order. The comment now says so, and that the account measured 0.9% / 0.5% on 2026-09-27 while the sim keeps 1.2% / 0.6% as its conservative figure (values unchanged). The tiers comment, which the first fix split mid-sentence, is rewritten as one paragraph. A test pins the templates keel setup writes; it fails on the pre-#836 template. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
eaitbrahim
added a commit
that referenced
this pull request
Sep 28, 2026
…an's cap (#845) MINOR: live and paper DCA now spend each rule's own size_usd, and DCA buys are exempt from the total-exposure rail. No schema change since 0.18.0. What lands: #843 (#840) -- executor sizes each DCA buy from the rule's size_usd; absent falls back to dca.budget_usd, present-but-invalid skips the buy. #842 (#841) -- rail 4 (total exposure) no longer vetoes DCA buys; rail 14 (monthly buy cap) and rail 6 (per-asset) still bind them. #837 (#836) -- rail 14 relabelled a monthly buy cap, not fee-free. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
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.
Closes #836.
What was wrong
keel described rail 14's cap as the venue's fee-free allowance, and its research treated "inside the allowance" as a fee-free regime. keel's orders go through Coinbase Advanced Trade, which has no fee-waiver tier:
has_promo_fee: false.What changed (wording only; enforcement untouched)
keel/execution/guards.pyhas zero changed lines. The 29 rail 14 guard tests pass unchanged, which proves the cap, its fail-closed behaviour and every number it enforces are the same.free_volume_usdfield keeps its historical name. A rename would need a migration and would change no behaviour.keel subscription set --helpnow says "Monthly BUY cap … not a fee waiver".docs/rails/rail-14-subscription-allowance.mdis retitled "the monthly buy cap". Its "What it bounds" section no longer claims a fee waiver or a "profitability boundary", and it carries a dated correction. The enforcement, veto and inspection sections are unchanged.Tests
tests/test_rail14_is_a_buy_cap.pyhas 6 tests, all seen failing first:One existing test that pinned the old "fee-free" wording is rewritten to pin the corrected label.
Not in scope, deliberately
keel doctorfee-rate readout (Rail 14: the "fee-free allowance" is not fee-free on Advanced Trade -- relabel it a monthly buy cap, and re-scope what rests on the premise #836 item 4, marked optional there) is left for a follow-up.Verification
mypy,ruff checkandruff format --checkare clean.🤖 Generated with Claude Code