'no orders found to match with FAK order' is the #1 miss class (13 of the
last 48h's misses) — the copy lands in the crater the sharp just swept,
before makers requote. Instead of recording the miss at the first
rejection, hand the OPEN to Copybot.fak_requote_retry: sleep fak_retry_s
(default 10, 0 disables) OUTSIDE the bot lock, then re-run the whole gated
buy path (fresh quote, price guard, depth gate) exactly once, mirroring
the webhook call site's fill drain so a retry fill books lag + bet rows.
A second rejection records the miss tagged 'twice (re-quote retry)'.
Paper-parity: the hook is installed in both modes, and PaperExecutor's
FAK model re-decides on the fresh book. tests/test_fak_retry.py covers
hook scheduling, no-double-count sizing (their_size=0 re-entry), ADD and
non-FAK bypasses, and the end-to-end retry thread.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
30-day backtest replay of all 11 proving wallets: Bikes leads at +$7,804
(slow geopolitics/novelty markets — the most copyable flow profile in the
set: 12 conviction bets >$100 in his last 60 trades, no in-play delay, no
5-min races). AIcAIc out: weakest incumbent forward (+$32 paper, −$9.5
live, only negative wallet) and his sell-timing class is the one most
flattered by zero-lag backtest fills — benched in backtest.json to re-prove.
badaf keeps his seat: +105% ROI on invested and 6-0 forward. LSB1 (+$55)
and imwalkinghere (uncopyable) stay out — both validated by this replay.
42021 cut from the bench (+$15 dud). Bench now: Vahan88, EdwardIN, LSB1,
imwalkinghere, AIcAIc.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
5-day forward sample (101 paper + 31 live copies): imwalkinghere produced
ZERO copies — his flow is 5-min BTC Up/Down markets that resolve faster
than any copy can act, and his missed bets would have LOST $390. LSB1 is
the worst forward performer (−$397, 2-4; misses also negative) → demoted
to backtest.json for re-proving. Kruto: +$736 from TWO copies at the
highest z on the table (19.3) — floor lowered to catch more flow. Bench
adds to backtest for forward proving: Vahan88, 42021, BikesAreTheBikes,
EdwardIN. badaf vindicated (+$310, 6-0 + the 0.001 counterfactual) and
stays; AIcAIc gets a week under RTDS before judgment.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
User call 2026-07-13 after a big 0.001 longshot was floor-blocked (the
same band class that blocked the 16x Hive copy at 0.05). Executor's
protected prices now round to 4dp and scale with the price — the old 2dp
rounding zeroed the bound on sub-penny books (BUY never bounds below the
quoted cross; SELL never above the quoted bid; verified at 0.001/0.002).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- failed mirror-exits queue for up to 10 heartbeat retries (recovered
exits ping Discord; exhaustion pages ⚠ EXIT STUCK and the position
rides knowingly; in-play holds hand to the pending registry). 3 stub
paths pass incl. the 1.6 spec's fail-fail-fill.
- every RTDS Set E detection appends a durable shadow-ledger row
(lat_s + which trigger won) that rides the publish commit — the 24h
go/no-go data for flipping RTDS on the live app.
- start.sh verifies the boot clone's HEAD against the GitHub API and
re-clones stale replicas (bit twice today).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1. Caps retired: risk block mirrors the paper sentinels; sizing is the
paper bot's 4%-of-equity (class_pct 0.04/0.12), floored at the venue's
$1 min order (4% of a $22 book is $0.89 — sub-min stakes died at the
gate). bankroll rebased to the real $22.28 equity; spend tracker reset
(the confusing $35 is gone with the daily cap).
2. Price guard is now ABSOLUTE +0.05 (both books): 0.14→0.15 follows,
0.14→0.20 skips. The relative 5% blocked one-tick moves on cheap
in-play books.
3. Pending-order registry: in-play 'delayed' holds are no longer cancelled
at 20s — the executor hands them to state.pending_orders with full copy
context; the heartbeat resolver adopts the fill whenever it lands
(bets/my_pos/cash/ledger, TTL 600s → cancel + honest miss). Recovers
Rune-Eaters-class holds (+$7.50 forfeited by the old cancel).
5 stub-client paths pass incl. adopt + expire.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The band — not detection — blocked Kruto's 3c Hive dip-buy that the
paper book mirrored for +$722 (16x). Dollar risk unchanged: the $5
trade cap binds, not the band. LIVE_ROLLOUT rule 0.6 amendment recorded
here; every other cap untouched.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- start.sh: COPYBOT_ROLE=live — unarmed (missing LIVE_PRIVATE_KEY /
LIVE_FUNDER_ADDRESS / LIVE_CONFIRM) idles in geocheck, no clone, no
book, no orders; armed runs config.live.example.json + own state file
copybot_state.live.json, --live, poll mode (webhook stays on paper).
- confirm_live: accepts the phrase from LIVE_CONFIRM env — the USER
types it into flyctl secrets set (rule 0.7 human checkpoint, headless);
wrong value aborts, unset disarms at next boot.
- config.live.example.json: Set E + pinned floors (mirrors paper),
bankroll $50 @ 10% = $5 stakes, caps untouched (rule 0.6), leaked
Discord webhook URL removed (ROTATE it — was committed publicly).
- fly.live.toml: separate app wwf-copybot-live, arn, no inbound, no
checks, role env baked.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The key does not belong in any committed file — the worker reads the RPC
from ALCHEMY_RPC_URL env (or the gitignored config.json locally). Rotating
the key is the real fix (it hit the public repo history); this removes it
from HEAD.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
config.live.json is gitignored (holds the key) so the Fly worker can't see
it. This committed twin carries the synced 8-wallet follow set + $5 test
caps + separate feed/fills; the worker reads it and injects the key via
LIVE_PRIVATE_KEY env (copybot 1.2). Mac path: cp to config.live.json, fill
the key. Fixes 'stale shisan888 follow set' + the cloud-config gap.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>