N1: COM hatch non-associative (AddHatch associativity=False) N2: ezdxf refuses DWG saves with clear error; server.py derives fmt from extension R19: dimension_aligned dist→distance; dimension_angular correct add_angular_dim_2l args (base/line1/line2/location) R9: polar array 360° no-duplicate (divisor=n when fill_angle%360<ε) R13: entity_offset side_x/side_y honored in ezdxf via cross-product (LINE) and distance-to-center (CIRCLE) R18: drawing_new bootstrap failure surfaces status="degraded" instead of swallowing silently Dead code: engineering/section.py, gear.generate_tooth_profile, CommandResult, _ACI_NAMES, set_layer_active, ensure_linetypes, ComBackend._batch_mode instance attr, engineering/__init__ build-seam comment Ruff: 38 auto-fixed + 5 manual → codebase is now ruff-clean; CI lint is now blocking 184 tests pass.
12 KiB
AutoCAD MCP Pro — Oturum Notları
Tarih: 2026-06-18
Kullanıcı: Umutcan Edizsalan (umutcon12@gmail.com)
Hedef: Projeye tam hakim ol → bug/sorun tespit et → geliştirme yol haritası üret → onay sonrası uygula.
YAPILDI ✅ — RECON Workflow (Task #1)
Ne yapıldı
- 16 subagent çalıştırıldı: 8 kod-haritalama + 7 web araştırması + 1 sentez.
- Tüm kod tabanı
file:linehassasiyetinde haritalandı. - Web araştırması (arXiv, rakip MCP'ler, ezdxf/COM API, ISO standartları) tamamlandı.
- Sentez dosyası:
docs/analysis/00-RECON-dossier.md(31KB, tam rapor) - Ham veri:
docs/analysis/_recon_raw.json
Temel Bulgular
Gerçek sayılar (dökümanda ne yazıyor vs gerçek):
| Konu | Dökümanda | Gerçek |
|---|---|---|
| Tool sayısı | "87 tools" | 109 @mcp.tool |
| Test sayısı | "104 tests" | 184 test fonksiyonu |
| Section 1 | "(11 tools)" | 12 araç (drawing_redo fazla) |
| Section 9 | "(5 tools)" | 4 araç |
| LICENSE dosyası | "MIT — see LICENSE" | YOK (legal açık) |
| CI (.github/workflows/ci.yml) | "GitHub Actions CI" | SİLİNMİŞ |
| benchmarks/ klasörü | referans var | YOK |
| .claude/skills/ ve .cursor/ | referans var | GIT'TEN SİLİNMİŞ |
YAPILDI ✅ — FAZ 1: P0 FIX (commit cd6329a, branch fix/p0-com-premium-lineweight)
- R1 FİXLENDİ: 8 premium meta-tool base sınıfına (AutoCADBackend) concrete + backend-agnostik olarak taşındı → COM artık miras alıyor, çökme bitti. Tek backend-özel parça yeni
_create_xlineprimitifi. ezdxf'ten ~285 satır tekrar silindi. - R2 FİXLENDİ:
normalize_lineweight()eklendi (mm-float ↔ hundredths-int konvansiyon çakışması çözüldü); 6 çağrı sitesine bağlandı. ISO-128 lineweight'ler artık 0'a yuvarlanmıyor. - R3 FİXLENDİ: iso128 kritiği artık ateşleniyor (R2 sayesinde); CONSTRUCTION katmanları muaf tutuldu (yanlış-pozitif engeli); yanıltıcı yorum düzeltildi.
- LICENSE eklendi (MIT). ci.yml geri yüklendi (lint geçici non-blocking; test job gerçek gate).
- Doğrulama: 182 passed / 2 xfailed + fonksiyonel test (GEOMETRY lw=50, kritik 0.40mm'yi yakalıyor).
YAPILDI ✅ — FAZ 2: DIAGNOSTICS + IDEAS (workflow'lar)
- DIAGNOSTICS (
docs/analysis/01-DIAGNOSTICS.md): 31 doğrulandı, 28 onaylandı, 3 reddedildi (R25/R29/R17 adversarial olarak çürütüldü), taramadan 17 yeni bulgu. → 0 CRITICAL (R1-R3 fixli), 2 HIGH (N1 COM hatch, N2 save-format), 14 MED, 10 LOW, 14 SMELL. - IDEAS/ROADMAP (
docs/analysis/02-ROADMAP.md): 19 fikir Impact×Effort×Diff×Evidence ile skorlandı, 9'u challenge edildi. Sprint 1 (correctness+quick wins) → Phase A (closed-loop moat) → Phase B (ISO production) → Phase C (breadth). - İki kritik yeni bulgu: (1) HTTP auth hiç zorlanmıyor (latent güvenlik), (2)
drawing_finalizerun_critique'i HİÇ çağırmıyor — moat finalize'da devrede değil. - R7/R8 güvenlik: otomatik doğrulanamadı (cyber-filter) → savunmacı hardening kalemi olarak Sprint 1'e eklendi.
Önerilen sonraki 5: ① I16 correctness bundle + I19 COM test harness · ② I9 deterministik geometri · ③ I12 HTTP auth + I2 render-as-image · ④ I4 scalar score + I15 birleşik validator · ⑤ I6 GD&T.
Durum: Task #4 (konsolide rapor) HAZIR → kullanıcı onayı bekleniyor (FAZ 3 = uygulama).
KRİTİK BUGLAR (R1-R3 ARTIK FİXLİ — kalanlar FAZ 2 DIAGNOSTICS'te doğrulandı)
R1 — KRİTİK: Premium araçlar COM'da çöküyor
- Konum:
backends/com_backend.py:1637-1660 - Sorun: 8 premium meta-tool (
drawing_plan,drawing_critique,point_from_snap,construction_xline,construction_clear,drawing_apply_iso_layers,dimension_auto,entity_select_smart) COM backend'indeNotImplementedErrorfırlatıyor. - Sonuç: CLAUDE.md'nin "üretim için olmazsa olmaz" dediği akış, Windows'taki varsayılan backend'de (COM) çöküyor. Yani kullanıcı AutoCAD açıp kullandığında bu araçlar çalışmıyor.
R2 — KRİTİK: Lineweight sıfırlanıyor
- Konum:
backends/ezdxf_backend.py:1034 - Sorun:
int(lineweight)→ 0.50, 0.25, 0.18, 0.13 mm gibi tüm ISO-128 değerleri 0'a yuvarlanıyor. - Sonuç: Tüm ISO-128 çizgi kalınlığı disiplini sessizce sıfırlanıyor.
drawing_apply_iso_layersvedrawing_newbootstrap'ı da etkileniyor.
R3 — YÜKSEK: ISO-128 kritiği kalıcı no-op
- Konum:
engineering/critique.py:50 - Sorun:
_check_iso128içindelw <= 0: continue→ R2 yüzünden zaten hepsi 0 → kritik hiçbir zaman ateşlenmiyor.
RİSK KAYITÇISI (Tüm Bulgular, Öncelik Sırasına Göre)
KRİTİK (2 adet)
| # | Konu | Konum |
|---|---|---|
| R1 | 8 premium araç COM'da NotImplementedError | com_backend.py:1637-1660 |
| R2 | int(lineweight) → 0, tüm ISO-128 sıfırlandı | ezdxf_backend.py:1034 |
YÜKSEK (8 adet)
| # | Konu | Konum |
|---|---|---|
| R3 | iso128 kritiği kalıcı no-op | critique.py:50 |
| R4 | dim_overlap kritiği da no-op (properties yok) | critique.py:194-197 |
| R5 | COM timeout → thread leak + CoUninitialize yok | com_backend.py:415-433 |
| R6 | COM backend'de SIFIR test | tests/ (ComBackend import yok) |
| R7 | Server→sanitizer wiring testsiz | server.py:2035,2052 |
| R8 | LISP aliasing bypass testi yok | security.py:138-179 |
ORTA (21 adet)
| # | Konu | Konum |
|---|---|---|
| R9 | entity_array_polar 360° → son kopya 0°=orijinal çakışır | ezdxf_backend.py:946-947 |
| R10 | drawing_finalize fmt belirtmiyor → 3 farklı davranış | server.py:2299 |
| R11 | drawing_save_as(fmt='dwg') ezdxf'de DXF bayt yazar, .dwg ismiyle | ezdxf_backend.py:345-352 |
| R12 | dimension_angular tx/ty yok sayıyor, fixed distance=10 | ezdxf_backend.py:705-722 |
| R13 | entity_offset side_x/side_y her iki backend'de de yok sayılıyor | ezdxf:868-908 / com:860-874 |
| R14 | engineering import guard → None → opaque "NoneType not callable" | server.py:2266,2294 |
| R15 | system_about tool_groups → 15 tool eksik, drifted | server.py:2070-2106 |
| R16 | COM transaction_active sızıntısı hata durumunda | com_backend.py:1402 |
| R17 | _safe_send_command busy-poll STA thread'i bloke ediyor | com_backend.py:1521-1536 |
| R18 | drawing_new bootstrap hatalarını yutuyor, başarı döndürüyor | server.py:280-294 |
| R19 | dimension_aligned/angular kalıcı xfail, kırık araçlar gönderildi | tests/test_dimensions.py:16-27 |
| ... | (+ 10 daha orta öncelikli risk) |
DÜŞÜK (22 adet)
| # | Konu | Konum |
|---|---|---|
| R20 | _registered_tool_count FastMCP iç yapısına bağımlı | server.py:231-234 |
| R21 | Involute dişi geometrisi matematiksel hatalı (trochoid fillet yok) | engineering/gear.py:40-50 |
| R22 | undo/transaction stack paylaşıyor, doc_path sıfırlanmıyor | ezdxf_backend.py:470-484 |
| R23 | COM run_lisp her zaman 'nil' döndürüyor | com_backend.py:1487-1492 |
| R24 | _apply_attrs linetype'ı yüklemeden set ediyor | ezdxf_backend.py:491-501 |
| R25 | block_find_references max_list_limit bypass | server.py:1362-1370 |
| R26 | view zoom ezdxf'de no-op ama success döndürüyor | server.py:1814-1831 |
| R27 | validator title check false-positive ('SPUR' içeren notta) | engineering/validator.py:166-181 |
| R28 | COM HWND palette/splash dialog'u yakalayabilir | com_backend.py:283-300 |
| R29 | ~20 sitede except Exception: pass COM hatalarını yutuyor | com_backend.py:199,244,… |
KOD KOKUSU / ANLAMSIZ KOD (53 adet)
engineering/section.py— tamamen dead code, sıfır caller, sıfır testgear.generate_tooth_profile— dead code (export edilmiş ama hiç çağrılmıyor)BlockInfo.descriptionfield — hiç doldurulmuyor (her iki backend'de)critique.py:53"normalises to mm" yorumu — FALSE COMMENTengineering/__init__.py:37-39"Agent B … in flight" / "Task #7/#8" — çok-agent build seam üretime gönderilmiş_LAYER_TEMPLATES(server.py) ve prompt layer set'leri çakışıyor/kopyalanmıştemplate_list/validation_checksaf in-memory, yeterli test yoksystem_aboutstatic catalog 15 araç eksik- ... (+ 40 daha smell)
TEST KAPSAMASI (Eksikler)
- COM backend: %0 coverage — en riskli yer, sıfır test
- Server→sanitizer entegrasyon — araçlar sanitizer'ı gerçekten çağırıyor mu? Test yok
- LISP adversarial bypass — aliasing, UNC path vs test yok
- Critique detection paths — sadece temiz çizimde test edilmiş (hata bulmuyor mu diye değil)
dimension_auto ordinate— testsizdimension_aligned/angular— kalıcı xfail (kırık gönderilmiş)- Pek çok backend metodu hiç test edilmemiyor (system_get/set_variable, drawing_close, view_screenshot, ...)
ARAŞTIRMA ÖZETİ (Ne bulduk)
Akademik (arXiv 2025-2026)
- GeoGramBench (ICLR 2026): LLM'ler koordinat hesaplamada <%50 başarı →
point_from_snapyaklaşımımızı doğruluyor, genişletmek lazım - CADSmith: 5-agent döngüsü (Planner/Coder/Executor/Validator/Refiner) + VLM render → Chamfer 38× iyileştirme. Render → VLM judge döngüsü en yüksek kaldıraç
- Self-Improving CAD + FEA: İterasyon per token'dan çok daha değerli; drawing_critique tek seferlik değil döngü olmalı
- ProCAD: Çizmeden önce belirsizlik tespiti → hata oranı %14.6 → %0.9
Rakip MCP'ler
| Rakip | 3D | Render-Critique | Validation Gate |
|---|---|---|---|
| Bizim (AutoCAD MCP Pro) | ❌ | ⚠️ finalize-only | ✅ UNIQUE |
| build123d-mcp | ✅ | ✅ | ❌ |
| FreeCAD MCP (150+ tool) | ✅ + FEM | ⚠️ | ❌ |
| Blender MCP (22k★) | ✅ | ✅ | ❌ |
| RhinoMCP | ✅ | ✅ | ❌ |
Moatımız: Standards-validation gate — kimse yapmıyor.
Gerideyiz: 3D, in-loop render-critique, HTTP auth.
KALAN GÖREVLER ⏳
Task #2 — DIAGNOSTICS Workflow
- Bug'ları
file:linedoğruluğuyla teyit et - Ölü kodu + anlamsız kodlamaları listele
- Çekişmeli doğrulama (refute) sonrası "onaylanmış bulgu listesi" üret
- Durum: Bekliyor (RECON tamamlandı, hazır)
Task #3 — IDEAS Workflow
- RECON araştırmasından türetilen fikir adayları oluştur
- Impact × Effort × Differentiation skoru
- Önceliklendirilmiş, kanıta dayalı yol haritası
- Durum: DIAGNOSTICS bitmesini bekliyor
Task #4 — Konsolide Rapor + Onay
- RECON + DIAGNOSTICS + IDEAS birleştir
- Kullanıcıya sun
- Onay sonrası kodlamaya geç (kullanıcı bu tercihi seçti)
DOSYALAR
| Dosya | İçerik |
|---|---|
docs/analysis/00-RECON-dossier.md |
Tam sentez raporu (31KB) |
docs/analysis/_recon_raw.json |
Ham yapılandırılmış veri |
not.md |
Bu dosya — oturum notları |
ÖNERİLEN FIX ÖNCELİKLERİ (Onay Bekleniyor)
P0 — Hemen Çalışmaz Olanlar (Onay Sonrası Fix)
- R1:
com_backend.py:1637-1660→ 8 premium aracı COM'a port et - R2:
ezdxf_backend.py:1034→int(lineweight * 100)veya enum map ile düzelt - LICENSE dosyası ekle (legal açık)
- CI (ci.yml) geri yükle veya yeniden kur
P1 — Kritik Kalite (Onay Sonrası)
5. drawing_critique → iteratif refiner döngüsü
6. Finalize screenshot'ı VLM judge'a besle
7. drawing_plan'a pre-flight ambiguity detector ekle
8. COM testleri: mock veya live fixture
P2 — Üretim Çizim Kalitesi 9. ISO-129 toleranslar + GD&T çerçevesi 10. PaperSpace/Layout/Plot desteği (COM) 11. odafc ile gerçek DWG export (ezdxf)
P3 — Kapsam Genişletme 12. 3D solid tier (COM extrude/revolve/boolean) 13. Parametrik yeniden sürüş (driving dims → re-drive tool) 14. HTTP API-key auth middleware