@@ -73,38 +73,58 @@ allowlist:
7373 - DOGE
7474
7575# ---------------------------------------------------------------------------------------------
76- # STANDING EXCEPTION: the five live rules bypassed the promotion gate, deliberately, and stay .
76+ # STANDING EXCEPTION -- RETIRED 2026-09-15. The five live-seeded rules are now `paper` .
7777#
78- # keel-live.db rules 1-5 were seeded straight to `status=live` on 2026-07-24 with promoted_at
79- # NULL. `keel rules seed` printed "Do not leave live-seeded rules in place afterwards." They have
80- # been left in place. That is a decision, reviewed 2026-08-08 and recorded here rather than left
81- # silent -- the same standard docs/experiments/2026-07-20-allowlist-screen-first-run.md set for
82- # PAXG: "The one thing not to do is leave it silently exempt because it was already there."
78+ # HISTORY. keel-live.db rules 1-5 were seeded straight to `status=live` on 2026-07-24 with
79+ # promoted_at NULL. `keel rules seed` printed "Do not leave live-seeded rules in place
80+ # afterwards." They were left in place deliberately, reviewed 2026-08-08, on this reasoning:
81+ # the promotion floor is min_trades=100 PER RULE and the strategy cannot reach it (BTC/ETH
82+ # ~2.59 trades/yr -> ~39 years; XLM ~63; ADA ~84; PAXG ~31), so waiting for the gate was "not a
83+ # slower path to the same place; it is no path," and the sandbox existed to accumulate the live
84+ # evidence the gate demands and cannot itself produce. That argument was sound and is NOT
85+ # what retired it.
8386#
84- # WHY KEEP THEM. The promotion floor is min_trades=100 PER RULE. This strategy cannot reach it.
85- # Measured 2026-08-08 by backtesting each rule over ~5.02 years of daily bars:
86- # BTC 13 trades = 2.59/yr -> 100 trades in ~39 years
87- # ETH 13 trades = 2.59/yr -> ~39 years
88- # XLM 8 trades = 1.59/yr -> ~63 years
89- # ADA 6 trades = 1.19/yr -> ~84 years
90- # PAXG 4 trades = 3.20/yr -> ~31 years
91- # Waiting for the gate is not a slower path to the same place; it is no path. The sandbox exists
92- # to accumulate the live evidence the gate demands and cannot itself produce. Demoting these
93- # rules would end the experiment without substituting anything for it.
87+ # WHAT RETIRED IT. Two of this block's own REVISIT triggers fired at once on 2026-09-15:
9488#
95- # WHAT BOUNDS THE RISK. Not the promotion gate -- it never ran. Instead: the caps below
96- # (max_exposure_usd 200 total at once, max_per_order_usd 100), the 18 un-overridable guards.py
97- # rails, rail 1's allowlist above, and rail 14's monthly subscription allowance. The bypass is of
98- # the EVIDENCE gate, not of the SAFETY rails, and those are separate mechanisms.
89+ # 1. CAPS WERE RAISED past this sandbox's scale -- 200/100 -> 400/200 (see the caps note
90+ # below). The trigger read "caps are raised above this sandbox's few-dollars-of-damage
91+ # scale," and $400 is that. The raise was needed for a different reason entirely: guard 6
92+ # was vetoing the weekly $50 DCA because BTC exposure ($101.81) already exceeded the old
93+ # $100 per-asset ceiling. DCA, not the Turtle, is what needed the headroom.
9994#
100- # WHAT THIS IS NOT. Not a precedent for adding assets (see the allowlist note above), not a
101- # reason to raise caps, and not a claim these rules are validated -- they are not, and neither
102- # `promoted_at` nor any backtest here says otherwise.
95+ # 2. AN EXIT-LIFECYCLE DEFECT CAME TO LIGHT (issue #799). On 2026-08-25 rule 3's PAXG entry
96+ # FILLED ($61.71, order id=4) and the protective SELL preview then threw
97+ # `decimal.InvalidOperation`, aborting before `open_position` ran. There is no `positions`
98+ # row, so no channel exit and no 2xATR stop can ever fire for that holding, its computed
99+ # stop (4521.76) exists only in the log, and guard 6 still counts the $61.71 forever
100+ # because it reads `orders`, not `positions`. A trend rule whose exits cannot fire is not
101+ # running the experiment this block was protecting -- it is accumulating unmanaged spot.
102+ # The fix landed on the retired `cb_client.py` and NOT on the adapter #524 migrated to, so
103+ # the same failure would recur today.
103104#
104- # REVISIT IF: caps are raised above this sandbox's few-dollars-of-damage scale; the rule set
105- # changes; a rule starts trading materially more often than the table above; or this sandbox is
106- # treated as evidence for anything beyond itself. Full working:
107- # docs/experiments/2026-08-07-unvalidated-skip-set-reassessment.md and docs/go-live-runbook.md §3.
105+ # The evidence question is unchanged and still points the same way: on 2026-09-15
106+ # `research significance` returned "not distinguishable from zero" for every rule tested
107+ # (BTC n=13 -> 5.05 effective, p=0.3963; ADA p=0.3218; XLM p=0.1593), at both fee regimes.
108+ # That was ALREADY conceded here ("not a claim these rules are validated") and is not new
109+ # grounds for demotion -- it is the reason the cap raise must not be read as sizing them up.
110+ #
111+ # WHAT BOUNDS THE RISK NOW. Only rule 6 (dca, BTC) is live, and DCA is fixed-budget
112+ # accumulation rather than an edge claim. The caps below, the 18 un-overridable guards.py
113+ # rails, rail 1's allowlist above, and rail 14's monthly allowance all still apply.
114+ #
115+ # WHAT THIS IS NOT. Not a judgement that the 2026-08-08 decision was wrong -- it was right on
116+ # its facts, and rules 3 and 5 did place live orders (2026-08-25 and 2026-08-22), so the
117+ # experiment was functioning, not inert. Not a precedent for adding assets. Not a claim these
118+ # rules are validated.
119+ #
120+ # THE PATH BACK. Re-promote to `live` when #799 is fixed AND verified on the adapter path (a
121+ # filled entry must produce a position row or an explicitly UNBRACKETED one), AND order id=4 is
122+ # reconciled, AND caps are either returned to the few-dollars scale or a fresh significance
123+ # verdict justifies the size. Re-promoting on the $400 caps without that is the mistake this
124+ # block now exists to prevent. DOGE (rule 7) is excluded from any such promotion for the reason
125+ # in its own allowlist note: no configuration is net-positive at the 1.2% taker rate.
126+ # Full working: docs/experiments/2026-08-07-unvalidated-skip-set-reassessment.md,
127+ # docs/go-live-runbook.md §3, and issues #797/#798/#799.
108128# ---------------------------------------------------------------------------------------------
109129
110130target_weights :
0 commit comments