From 2f3c0611f87c3e6fa729c5ff284e1e5127bcbd51 Mon Sep 17 00:00:00 2001 From: Elmehdi Aitbrahim Date: Mon, 3 Aug 2026 19:03:28 -0400 Subject: [PATCH] chore(deploy): record the BTC DCA rule as live Rule 6 (`dca`, BTC-USD, `budget_usd: 25`, weekly) was promoted candidate -> paper -> live on 2026-08-03, with `--force` at both steps: a DCA rule has no stop and no target, so `backtest()` opens a position that never closes and the promotion gate only ever sees `n_trades=0` against `min_trades: 100`. It can never clear the floor on its own. This is keel's first live rule that fires on a schedule rather than on a market setup -- the five turtles have been live since go-live and have never once signalled, because price has sat 3-27% under the 40-day Donchian entry on every product. Manifest regenerated from keel-live.db, not hand-edited. The `budget_usd: "25"` this records is the whole point of the file: `keel init` on a fresh box would seed the constructor default of 50 instead. Rail 17 (withdrawal capability) was attested `--enabled` the same day, which is what actually unblocked BUYs -- it had been failing closed since go-live and would have vetoed a turtle breakout too, not just this. That attestation expires after 7 days and is deliberately not automatable, so it does not live in this file. Co-Authored-By: Claude Opus 5 (1M context) --- deploy/live-rules.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/live-rules.json b/deploy/live-rules.json index 5d3e3dd0..945db4ec 100644 --- a/deploy/live-rules.json +++ b/deploy/live-rules.json @@ -98,7 +98,7 @@ }, { "kind": "dca", - "status": "candidate", + "status": "live", "params": { "product_id": "BTC-USD", "cadence_days": 7,