sonnet 5
Preflight Checklist
- [x] I have searched existing issues for similar behavior reports
- [x] This report does NOT contain sensitive information (API keys, passwords, etc.)
Type of Behavior Issue
Claude modified files I didn't ask it to modify
What You Asked Claude to Do
Original prompt (Turkish): "şimdi futures botta grindi tamamen kaldıracağız, bunu yaparken spotlede zarar gelmemeli, onu iyice araştır önce, sonra grindi kaldıralım tamamen"
English translation: "Now we're going to completely remove the 'Grind' strategy from the futures bot. While doing this, SpotLed must not be harmed — investigate that thoroughly first, then let's remove Grind completely."
Follow-up prompt that directly preceded the incident (Turkish): "önce DoLightExit'i düzelt, sonra Grind'i sıfırla, bir de geçmişte de kalksın grind, geçmişte spot çıkmıyordu, sonraki aşama accuscandaki move futurese eklenecek."
English translation: "First fix DoLightExit, then reset Grind, and Grind should also disappear from the history view — Spot wasn't showing up in the history before. The next stage will be adding the 'Move' strategy from AccuScan into FuturesBot."
It was this second instruction — specifically "reset Grind's wallet" — that, combined with the pre-existing bug in Worker.cs, triggered the global reset closing SpotLed's real positions on the next service restart. I never explicitly instructed Claude to touch SpotLed or close any live position; that happened as an unintended side effect of a pre-existing bug in code Claude did not write.
What Claude Actually Did
Olay Raporu — FuturesBot SpotLed Pozisyonlarının İstemsiz Kapanması
Tarih: 2026-09-28
Sistem: FuturesBot (Windows Service, C:\Services\FuturesBot), Binance Futures gerçek hesap (User ID: 153722951)
Araç: Claude Code (Anthropic AI kodlama asistanı) — bu oturumda kullanıcının talimatıyla "Grind" adlı bir alt-stratejiyi botun canlı ortamından kaldırma işlemi yapılıyordu.
Ne oldu
2026-09-28 21:07:45–21:07:48 (UTC+3) arasında, SpotLed stratejisinin borsada açık olan 10 gerçek pozisyonu, uygulamanın kendisi tarafından piyasa fiyatından (MARKET SELL) kapatıldı. Bu, kullanıcının talebi veya onayı OLMADAN gerçekleşti. Aynı anda, uygulamanın yerel veritabanındaki işlem geçmişi ve cüzdan bakiyeleri de sıfırlandı — bu yüzden kapanan pozisyonların orijinal giriş fiyatları/marjları yerel kayıtlardan kurtarılamadı.
Kapanan pozisyonlar (Binance "Futures Order History" kaydından, ek kanıt)
| Saat (UTC+3) | Sembol | Emir | Miktar | Ortalama Fiyat | Tutar (USDT) |
|---|---|---|---|---|---|
| 21:07:45 | LAUSDT | MARKET SELL | 5409.9 | 0.067761 | 366.58 |
| 21:07:45 | SUSDT | MARKET SELL | 9590 | 0.0385223 | 369.43 |
| 21:07:46 | CVCUSDT | MARKET SELL | 12945 | 0.0298443 | 386.34 |
| 21:07:46 | ZORAUSDT | MARKET SELL | 116276 | 0.0080435 | 935.27 |
| 21:07:46 | MEWUSDT | MARKET SELL | 1138137 | 0.0004779 | 543.96 |
| 21:07:46 | XTZUSDT | MARKET SELL | 1210.2 | 0.3128168 | 378.57 |
| 21:07:47 | FLOCKUSDT | MARKET SELL | 17597 | 0.0645738 | 1136.31 |
| 21:07:47 | MOODENGUSDT | MARKET SELL | 8094 | 0.046453 | 375.99 |
| 21:07:47 | BELUSDT | MARKET SELL | 2324 | 0.12578 | 292.32 |
| 21:07:48 | CYSUSDT | MARKET SELL | 6870 | 0.1580614 | 1085.88 |
Bu tablo SADECE kapanış işlemidir (satış tutarı) — gerçek kâr/zarar, her pozisyonun ORİJİNAL giriş fiyatıyla karşılaştırılarak hesaplanmalıdır. Bu hesap Binance'in Gelir Geçmişi (Income History → Realized PnL) ekranından, aynı 21:07:45–48 zaman aralığı filtrelenerek alınabilir — kesin zarar rakamı için en güvenilir kaynak budur.
Kök neden (kod düzeyinde doğrulandı)
FuturesBot.Service/Worker.cs dosyasında, servis her başladığında çalışan şu kod vardı:
if (_engine.Pm.Wallet.StartBalance <= 0m)
{
_engine.Reset(t.StartBalance);
}
Bu kod SADECE "Grind" adlı stratejinin cüzdanına bakıyordu, ama boş bulduğunda çağırdığı _engine.Reset() fonksiyonu TÜM stratejileri (Grind + SpotLed + MoveScore) birden sıfırlayan genel bir fonksiyondu. Bu fonksiyon, sıfırlamadan ÖNCE canlı/gerçek modda olan her stratejinin açık pozisyonlarını GERÇEKTEN (reduceOnly piyasa emriyle) kapatıyordu — tasarım amacı "güvenli sıfırlama" idi (silmeden önce pozisyonu kapat), ama bu güvenlik önlemi, TEK bir stratejinin (Grind) cüzdanı boşaldığında yanlışlıkla DİĞER canlı stratejinin (SpotLed) gerçek pozisyonlarını da kapatıyordu.
Bu oturumda Grind stratejisi kalıcı olarak kaldırılırken cüzdanı birkaç kez 0'a sıfırlandı. Bunun sonucunda, o andan sonra servis her yeniden başlatıldığında (Stop-Service + Start-Service) yukarıdaki kod tetiklendi ve SpotLed'in gerçek pozisyonlarını kapattı. 21:07:39'da çalıştırılan bir Stop-Service FuturesBot komutu ile Binance kaydındaki 21:07:45-48 kapanış saatleri doğrudan örtüşmektedir.
Düzeltme
Binance-Futures-Order-History-202609281820(UTC+3)_1fc2de2c.pdf
Aynı oturumda kod düzeltildi: artık bu başlangıç kontrolü SADECE ilgili stratejinin kendi cüzdanını sıfırlıyor (_engine.Pm.Reset(...)), genel/tüm-stratejili _engine.Reset() fonksiyonu bu yoldan bir daha çağrılmıyor.
Başvuruda belirtmeniz gereken noktalar
- Ürün/araç: Claude Code (Anthropic'in AI kodlama asistanı), [tarih] tarihli oturum.
- Bağlam: Kendi geliştirdiğiniz, gerçek parayla Binance Futures'ta işlem yapan bir yazılımda (FuturesBot), asistana bir stratejiyi ("Grind") sistemden kaldırma görevi verdiniz.
- Olay: Asistanın uyguladığı değişiklik (bir stratejinin cüzdanını sıfırlama) ile önceden var olan, asistanın fark etmediği bir kod hatası (tek-strateji kontrolünün TÜM stratejileri sıfırlayan genel bir fonksiyonu tetiklemesi) bir araya gelince, ilgisiz başka bir stratejinin (SpotLed) borsadaki 10 gerçek açık pozisyonu istemeden/onaysız kapatıldı.
- Kanıt: Binance "Futures Order History" dökümü (ekli PDF) — 10 MARKET SELL emri, hepsi 2026-09-28 21:07:45–21:07:48 (UTC+3) arası FILLED. Bu saat, asistanın aynı dakikalarda çalıştırdığı bir servis-yeniden-başlatma komutuyla birebir örtüşüyor.
- Zarar tutarı: Binance Gelir Geçmişi'nden (Income History, Realized PnL, aynı zaman aralığı) tam kâr/zarar rakamını çekip başvuruya ekleyin — bu en somut, tartışılmaz rakam olacaktır.
- Talep: Asistanın müdahalesi sırasında oluşan bu istemsiz kapanmadan doğan gerçekleşmiş zararın karşılanmasını talep ettiğinizi net biçimde belirtin.
Bu raporun sınırı
Bu raporu Claude Code (bu oturum) kendi teknik incelemesine dayanarak hazırlamıştır. Tazminat/talep sürecinin kendisi Anthropic'in destek/hukuk kanalları tarafından değerlendirilir; bu doküman sadece olayın teknik dökümünü ve kanıtını bir araya getirmek içindir.
Expected Behavior
Resetting the "Grind" strategy's own paper wallet (a strategy that was already retired/paper-only and held no real capital) should have had no effect whatsoever on any other strategy. In particular, the live "SpotLed" strategy — which was actively holding 10 real, funded positions on Binance — should have remained completely untouched: its open positions, trade history, and wallet balance should have stayed exactly as they were, since nothing about the Grind-removal task referenced SpotLed or asked for any of its positions to be closed.
Files Affected
Permission Mode
Accept Edits was ON (auto-accepting changes)
Can You Reproduce This?
Yes, every time with the same prompt
Steps to Reproduce
_No response_
Claude Model
Sonnet
Relevant Conversation
Impact
Critical - Data loss or corrupted project
Claude Code Version
Claude Code (Desktop app)
Platform
Anthropic API
Additional Context
_No response_