# fikatia-local — CLAUDE.md (HER OTURUM İÇİN ZORUNLU KURALLAR)

Native C++23 / Vulkan / OCCT (BREP) CAD platformu. Bu dosya kısa anayasadır; ayrıntı:
`C:\Users\FikoYT\.claude\projects\D----sistem---Masaustu-FikoYT-Yeni-Cag\memory\fikatia-gelistirme-anayasasi.md`
Aktif otonom yol haritası: aynı dizinde `fikatia-dm-seferberligi-2026-07-12.md`.

## Mutlak kurallar
0. **DM = TEK WORKBENCH (Fikri kararı 2026-07-22).** Yeni workbench AÇMA; yeni özellik DM
   bağlamına (sağ-tık/jest/niyet çipi) entegre edilir. Diğer workbench'ler iptal YOLUNDA:
   hemen silinmez, motorları kalır, kabukları adım adım DM'ye taşınır; komut/lisans
   kimlikleri korunur. Detay: hafızada `fikatia-dm-tek-workbench-karari.md`.
1. **Commit atma** (kullanıcı istemedikçe). **Uygulamayı GUI ile çalıştırıp test etme** — derleme + birim test + kod inceleme; kullanıcıya "RUNTIME TEST" notu düş.
2. **Davranışı birebir koru.** Riskli değişiklik → eski yol aynen kalır, yenisi AyarSistemi bayrağı arkasında (varsayılan güvenli).
3. **Küçük adım:** tek turda tek konu. Körlemesine büyük refaktör yasak. Test kırmızıyken işi bitirme.
4. Her yeni özellik/eşik/sihirli sayı → **AyarSistemi kaydı** (`uygulama/fikocad/ayar_kayitlari.cpp` kalıbı). Her sistem makro(Lua)+plugin+olay erişilebilir; olay enum'una ekleme SONA.
5. İsimlendirme ve kullanıcı mesajları Türkçe (teknik terimler hariç). Gereksiz yorum ekleme.

## Derleme / Test (tek doğru yol)
```
cmd /c '"D:\__sistem__\ProgramFiles\VsStudio\VC\Auxiliary\Build\vcvars64.bat" >nul && cd /d D:\__sistem__\Masaustu\FikoYT.Yeni.Cag\fikatia-local && cmake --build insa\Release --target fikocad fiko_sahne_test fiko_geometri_test'
```
- `insa\Release` (Ninja); `build\` KULLANMA. Link kilidi → `Stop-Process -Name fikocad -Force` sonra tekrar.
- Test tabanı (asla küçülmemeli): geometri ≥304, sahne ≥1081, io ≥241. Test exe elden çalıştırmadan önce PATH'e vcpkg bin ekle: `D:\__sistem__\ProgramFiles\vcpkg\installed\x64-windows\bin` (yoksa 0xC0000135).
- Kritik geometri/hesap değişiminde yeni test yaz (önce kırmızı, sonra yeşil).

## Dokunmadan önce bil (kazanılmış, görünmez değişmezler)
- **BREP ilkesi:** geometrik karar asla mesh/tessellation'dan alınmaz. Yüz/kenar kimliği = TopExp SIRASI (ordinal); sırayı değiştiren her şey remap/history ister.
- **`tekSolidCoz`** (brep_feature.cpp): local-op'lar compound tabanda çalışmaz; tek-çocuklu compound çözülür, çok-çocukluya dokunulmaz. Yeni local-op'un girişine de koy.
- **`ucgenle(…, kaliteOrani>0)` bağımsız KOPYADA mesh'ler + açısal sapmayı oranla ölçekler.** "Gereksiz kopya" sanıp kaldırma — kaldırılırsa kaba LOD sessizce ince mesh olur (yaşandı; dev modelde kasmanın köküydü).
- **BVH async (IsinBvhKurucu) ham data() pointer'ı yakalar:** `cpuKonum/cpuIndeks`'i değiştiren/serbest bırakan her yeni yol ÖNCE `bvhIsIptal(kimlik)` çağırmalı. `bvhKurucu_` Sahne'nin SON üyesi kalmalı. Dev mesh'te brute-force raycast yasak.
- **Dugum ECS'te taşınabilir:** Dugum içindeki vektör NESNESİNE referans/pointer saklama.
- **Pick mimarisi:** yüz/gövde = CPU BVH, kenar/nokta = GPU ID-pick (2-kare ping-pong); `bvhEksik` penceresinde GPU yüz fallback; arkadaki kenar `kenarNoktaOrtulu` ile bastırılır (datum muaf). Hover 30Hz throttle + pick gating davranıştır, silme.
- **OCCT:** `OSD::SetSignal` kalsın (yoksa sessiz çökme); BRepMesh `isInParallel=false` kalsın (deadlock); fillet/pah köşe-clamp (0.72 kademe) özelliktir.
- **Render:** push-constant 256B DOLU — ModelItme'ye alan ekleme (yeni veri → vertex attr/SSBO planı). Mega-parti eşiği 48; altı bireysel yol (dev tek-gövde burada). Kaba mesh de per-yüz renk/alt/alfa taşımalı (`kabaVertexKur`). Sis (fog) yasak. NULL tampon bind etme.
- **Sıcak yol (her-kare kod) kutsal:** dosya I/O, yeni tahsis, O(N) tarama ekleme yasak. Önce ölç, sonra optimize et.
- **DM tarzı:** minimal UI — buton değil jest/bağlam/tutamaç; niyet seçili topolojiden çıkar.

## Bilinen açık bug'lar (dokunurken dikkat, "düzeltirken" bozma)
- Resize device-lost: KÖK ÇÖZÜLDÜ + ÖLÇÜLDÜ (07-21, hedef kararlılık 250ms → 6/6 + 3/3
  sağlam). Açık bug DEĞİL; kalan yalnız ideal iyileştirme (grow-only hedef + UV kırpma —
  fikatia-resize-device-lost "Kalan" bölümü). Yeni resize çökmesi görülürse ÖNCE
  `render.hedef_kararlilik_ms` değerini kontrol et (0 = eski davranış).
- ~~MDI çok-pencere GPU retire race~~ MOOT (07-22 doğrulandı): aynı-süreç MDI kaldırıldı,
  "Yeni Belge" = ayrı fikocad süreci — AMA aynı-süreç çok-pencere GERİ GELİRSE
  `kareSayac_` retire analizi (hafıza: fikatia-mdi-gpu-retire-race) yeniden geçerli.
- ~~`diril()` Tel/Yüzey görünmez dönüyordu~~ düzeltildi 07-22 (gsdDugumGuncelle yolu) — RUNTIME TEST bekliyor.
