3abot — Work Plan
Updated 2026-09-29 23:37 · refreshed daily at 21:00 from the GitHub project, prod logs and prod transactions (tonight’s 21:00 run failed: cron had no proxy, fixed)
🐞 Bugs
🛠 Tasks
Plan: C · quick fixes, then Ramzinex
Chosen 2026-09-28. Steps 1–3 are built; everything is now waiting for your review. Tabdil is stopped, so its bugs (#14, #78, #13, #15) come first after the reviews.
Step 1 · refine ✓
- #45, #24, #37 refined and built
Step 2 · quick fixes ✓
- #3, #4, #1 merged today
- #45 → PR #68
Step 3 · Ramzinex ✓
- #37 → PR #72 (all 6 parts)
Rest of the P0s
- #5 → PR #74, #2 → PR #75, #6 → PR #76
- Tabdil P0s refined: #14, #78, #67
Doing now
Built and waiting for your review. Suggested merge order: #76 (stops the dollar-move losses) → #74 → #81 → #75 → #80 → #77 → #71 → #68 → #72.
Done
Finished since the last report, newest first. Each card says what it should fix, what else changes, and how to check it after deploy.
- PR #72 Ramzinex exchange (#37, #56–#61)Waiting for your review
Fixes: Adds Ramzinex as a 5th exchange: REST, WebSocket, plugin, Redis DB 4, Go adapter, pm2/aliases, docs. The review round fixed 4 money-path bugs (DRY_RUN placed real orders; partial fills; cancel; not-found).
Side effects: Adds 20 marketdata + 30 arbitrage processes on a loaded server unless you lower the counts. Rate limits are guesses. One-line conflict with PR #76 (
minTradeProfitIrt: 2000).Check after deploy: Checklist on #37: live order status 4, amount/price steps, WS side of
buys, one DRY_RUN day, then a small balance. - PR #76 Re-check profit at the current dollar rate (#6)Waiting for your review
Fixes: Stops trades whose profit disappears with one USDT/IRT tick (this afternoon’s Wallex/Tabdil burst). Target: Wallex losing
closed_cleantrades under −5,000 → about 0 (was 21 in 10 days).Side effects: Fewer trades: marginal signals are skipped on purpose. Missing fee keys now skip the trade. Needs one line added to whichever of #72/#76 merges second.
Check after deploy:
[Buy Blocked] … revalidation:lines in trade-execution logs; losing clean trades per day. - PR #74 Wallet poll can’t overwrite a fresh trade (#5)Waiting for your review
Fixes: Buys sized from a stale IRT/USDT balance (Wallex 1006, Tabdil 1218). Target: Wallex 1006 buys under 5/week (was 43).
Side effects: New Bun-only Redis key
balance:delta_at; a poll that raced a trade is skipped (next poll 4–12 s later corrects it).Check after deploy: Count of
[Balance mismatch]log lines per day. - PR #75 Resell: price-band 422 blocks that market 60 s (#2)Waiting for your review
Fixes: Resell no longer burns all 10 attempts in 3 s on Wallex price-band rejections (ONE). Give-ups are saved as
order-error-giveup/manual_required, not as profit-window sells.Side effects: A rejected market is skipped for 60 s, so a sell may use the other market or wait. New optional field on stored resell entries.
Check after deploy:
select count(*) from resell_entries where close_reason='order-error-giveup'matches the “giving up after” log count. - PR #80 Wallex order recovery via client_id (#34)Waiting for your review
Fixes: A Wallex order that times out or gets a 5xx but was actually placed is found again and tracked, instead of leaving coins with no sell.
Side effects: Every Wallex order now carries a
client_id. No change when Wallex answers normally.Check after deploy:
exchange_requestsrows withrecovered: trueafter a timeout. - PR #81 Unfilled buys recorded as NoFill (#7)Waiting for your review
Fixes: Missed buys (like today’s 77 on Tabdil) show as
exit_reason='NoFill', separate from real failures; no misleading “executedSum missing” warnings.Side effects: Log line changes from
[Buy Blocked]to[No Fill]for these. Dashboards grouping byexit_reasonsee a new value.Check after deploy:
select exit_reason, count(*) from transactions where status='error' group by 1. - PR #77 DB times = event time, not flush time (#11)Waiting for your review
Fixes: Transactions/orders/events get their real timestamps (was one shared time per 750 ms batch).
Side effects: None expected; persistence only.
Check after deploy: Duplicate
(symbol, created_at)groups intransactions→ about 0. - PR #71 RabbitMQ consumers come back after a reconnect (#24)Waiting for your review
Fixes: Marketdata stops silently losing orderbook publishes after a RabbitMQ drop.
Side effects: Shutdown is no longer treated as a connection drop.
Check after deploy: After a RabbitMQ restart, orderbooks keep flowing (no gap in trades).
- PR #68 Bitpin listener leak (#45)Waiting for your review
Fixes: Stops memory/CPU growth from a new listener on every re-subscribe.
Side effects: None expected.
Check after deploy: No
MaxListenersExceededWarningin Bitpin marketdata logs.
Merged earlier today (deployed 12:03)
- PR #64 Wallex price-band 422: stop retrying, auto-block (#1)Merged
Fixes: The biggest Wallex error source: same rejected order retried in a loop.
Side effects: Coins with 5 price rejections in 10 min are auto-blocked for 30 min (operator is notified).
Check after deploy: Wallex
[422 Unprocessable]lines per hour. - PR #65 Auto-block for 30 minutes on every exchangeMerged
Fixes: Same block length everywhere.
Side effects: Blocked coins stay out longer on Wallex/Bitpin/Nobitex.
Check after deploy: —
- PR #53 Never send a sell that rounds to 0 (#3)Merged
Fixes: Wallex 422 “quantity required” on dust sells.
Side effects: Dust is handed to resell instead of sent.
Check after deploy: No
quantity422 on Wallex. - PR #54 Resell respects the USDT minimum (#4)Merged
Fixes: Sub-1-USDT resell sells rejected up to 10× per coin.
Side effects: Small remainders sell on the IRT market or close as dust.
Check after deploy: No min-USDT rejections from resell.
Up next
Refined and waiting for your approval (mark ready on the review page). Tabdil first, since it’s stopped.
- 1#14 Tabdil “order not found” leaves orders liveP0🐞 bug🔍 RefinedAfter 10 misses the bot walks away without cancelling; coins can end up unsold (BRETT 119,515 today).½ day
approve #14 - 2#78 Tabdil MinimumProfit still 200P0🐞 bug🔍 RefinedDebug value never restored; lets thin signals through. Not the root cause of today’s drop.≤ 2h
approve #78 - 3#67 stop+start drops resell-serviceP0🐞 bug🔍 RefinedA routine restart can leave an exchange with no resell.½ day
approve #67 - 4#13 Tabdil step sizes (10/100)P1🐞 bug🔍 Refined13 Tabdil markets need quantities in steps of 10–100,000.≤ 2h
approve #13 - 5#15 Sells rejected for balanceP1🐞 bug🔍 RefinedTabdil: caused by #14. Bitpin/Wallex: sell sized from a stale coin balance.1 day
approve #15 - 6#12 Dollar rate at sell never savedP1🐞 bug🔍 Refined0 of 14,424 closed trades have it; profit can’t be audited.≤ 2h
approve #12 - 7Next to refine: #16 · #17 · #21 · #79The loop refines these automatically, one per run.
/refine
Decisions for you
Today’s drop was a dollar-rate slide (253k → 250k after 15:00; Wallex hit too). #76 guards against that, and #14 stops orders being left live.
Sell orders for 4 BRETT buys (incl. 119,515 BRETT) were abandoned live; AURORA and ZRO are unsold in resell while Tabdil is stopped.
The counts are shared: Ramzinex would add 20 marketdata + 30 arbitrage processes on a server at load ~35.
Still 25–35% manual on every exchange today; #79 tracks Tabdil’s rate.
How to move a task
1Decide
Answer above in plain words, e.g. “restart Tabdil after #76”.
2Refine 🔍
The loop writes a plan and an estimate and marks it refined. You approve it (→ ready) on the review page.
python3 .claude/skills/refine/review.py3Build ✅
Ready issues get a PR on the next run. You review, merge and deploy.
implement #14Everything, by track
Built items show their PR. Estimates only exist once an issue is refined.
🐞 Bugs track
Keeps trading safe and correct.
- 1#14 Tabdil not-found orders left liveP0🔍 RefinedRaised from P1 today.½ day
- 2#78 Tabdil MinimumProfitP0🔍 RefinednewOne constant in Go.≤ 2h
- 3#67 stop+start drops resellP0🔍 RefinedOps CLI fix.½ day
- 4#5 · #2 · #24 · #45Built: PRs #74 · #75 · #71 · #68.
- 5#13 · #15 · #12Refined, waiting for you.
- 6#6Built: PR #76.
- 7#16 Tabdil FILLED as error · #17 Bitpin balance · #48 · #49 · #79 Tabdil manual rateNext in the refine queue.
/refine
+ P2/P3 bugs
- P2: #11 (PR #77) · #21 crash-guard cascade · #22 · #23 WS churn · #25 Tabdil timeouts · #46 · #50 · #51
- P3: #7 (PR #81) · #19 Nobitex storm · #26–#30 log noise and size
🛠 Tasks track
New features and planned improvements.
- 1#37 Ramzinex (#56–#61)P0PR #72 readyGo-live checklist on #37.
- 2#34 Wallex client_id recoveryBuilt: PR #80.
- 3#31 Wallex rate limit · #63 CI/CD · #47 notifications table · #33 Wallex WS rules · #36 · #39Tasks stay in refine until you ask for them by number.
/refine #31
+ P3 and new unprioritized tasks
- #40 Nobitex timeout · #32 · #35 · #38 Abantether · #41 · #42–#44 resell tuning · #69 balances to Telegram · #70 LBank