MWSE/CLAUDE.md

3.9 KiB
Raw Permalink Blame History

CLAUDE.md — Otonom Ajan Operating Contract (MWSE)

Bu dosya, MWSE issue'larını otonom (durmadan) bitirmek için çalışan AI ajanına aittir. Önce todo.md'yi oku (tam bağlam + yol haritası + studio UI vizyonu). Sonra bu kurallarla çalış.

Yetki (önceden verildi — SORMA)

Aşağıdakiler için izin isteme, onay bekleme:

  • Bu repo içinde dosya okuma/yazma/oluşturma/silme.
  • Shell, build, test, go, npm komutları çalıştırma.
  • git.saqut.com/saqut/MWSE API'sini kullanma (issue okuma/kapatma/yorum, commit).
  • Yeni branch açma, commit atma.

Gitea ile etkileşim — tools/gitea CLI KULLAN

git.saqut.com için curl yazma ya da kendi script'ini kurma; ./tools/gitea CLI'ını kullan. Cloudflare-safe (tarayıcı UA) ve kimlik .gitea-auth.json'dan otomatik gelir (gitignore'lu) — bu yüzden şifre/erişim sorma, doğrudan çalıştır.

  • Oku: ./tools/gitea issue list --state open · issue view <num> · milestone list · label list
  • Bittiğinde kapat: ./tools/gitea issue close <num> --comment "tamamlandı, go test -race yeşil"
  • Yorum / etiket: ./tools/gitea issue comment <num> --body "..." · issue label <num> --add go --remove docs
  • Wiki: ./tools/gitea wiki view <sayfa> · wiki edit <sayfa> --content-file f.md
  • PR (insan-onayı gereken işler için): ./tools/gitea pr create --title "..." --head go-rewrite --base stable --body-file PR.md · pr list
  • Tüm komutlar: ./tools/gitea --help

Kod göndermek API değil, normal git: git checkout -b go-rewrite → commit → git push origin go-rewrite. (origin ayarlı, default branch stable.) Auth sorarsa token'lı remote / credential helper kur, ama .gitea-auth.json'ı ASLA commit etme.

Durma & soru protokolü (EN ÖNEMLİ)

  • Asla kullanıcıya soru sorup beklemeye geçme. "Buraya yazayım mı / şuraya erişeyim mi / git'e atayım mı" diye sorma — cevap evet, yap.
  • Bir karar noktasıyla karşılaşınca: aşağıdaki kısıtlara göre en makul seçeneği kendin seç, gerekçesini decisions.md'ye yaz, DEVAM ET.
  • Çözemediğin sert bir engel olursa: BLOCKERS.md'ye yaz, o issue'yu atla, bir sonrakine geç. Durma.
  • Turn'ü bitirmenin TEK kabul edilebilir nedeni: tüm açık issue'lar kapandı.

İş döngüsü

  1. git.saqut.com/saqut/MWSEık issue'larından en düşük milestone'daki (önce 0.1.0) başlanmamış olanı seç.
  2. Tamamen uygula.
  3. Testlerini yaz ve çalıştır. Engine için go test -race ZORUNLU.
  4. Yalnızca testler yeşilse: commit at + issue'yu API ile kapat.
  5. Bir sonraki issue'ya geç. Tekrar.

Bitti tanımı (global)

  • Kod derleniyor, testler geçiyor, issue'nun kabul kriteri karşılanıyor.
  • Testi kırık ya da skip'li hiçbir şey "bitti" sayılmaz. Issue'yu öyle kapatma.

Teknik kısıtlar (KATI — ihlal etme)

  • Engine = Go. Concurrency: goroutine + channel + sync.RWMutex, ya da room/peer başına owner-goroutine (actor). Node'daki "ayrılırken-yazma" race'i bir daha oluşmamalı.
  • Frontend = saf vanilla ES module JavaScript. Yüzlerce dosya birbirini native import ile çağırsın. React YOK. Parcel/Webpack/Vite YOK (bundler yok). jQuery/moment gibi bağımlılıklar serbest. TypeScript opsiyonel ve kaldırılabilir — şüphedeysen düz JS tercih et.
  • SDK giriş/çıkış sözleşmesi DONDURULDU. Public API'yi değiştirme; sadece sunucu içi yapı değişir.

İnsan-onayına bırakılacaklar (uygula ama KAPATMA, deploy ETME)

Şunları branch'te uygula, REVIEW.md'ye "incelenmeli" diye yaz, kapatma ve canlıya alma:

  • #22 concurrency modeli (asıl kritik tasarım).
  • Akış proxy/relay mimarisi, sanal-IP çakışma algoritması.
  • stable branch'e merge ve ws.saqut.com deploy'una dokunan hiçbir şey.

Güvenlik

  • go-rewrite gibi özel bir branch'te çalış. stable'a doğrudan dokunma.
  • Force-push yok, veri silme yok, prod deploy yok.