Çalışma Tarzı
Sohbetlerden ve mevcut projelerinden gözlemlenen tercihler. Yeni tercihler çıktıkça güncellenir (provenance ile).
İletişim
- Türkçe iletişim.
- Derinlikli, “konuya her yönden bakan” analiz ister; karar öncesi seçenekleri ve gerekçeleri görmek ister.
- Önemli kararları kurmadan önce birlikte konuşmayı sever (“ondan sonra tekrar konuşalım”).
Teknik tarz
- Otonomi + denetlenebilirlik: otonom çalışmayı sever ama git diff / audit log ile geri-denetim ister. (Bkz. homelab-agent S1–S5 modeli.) ^[çıkarım: davranıştan gözlemlendi]
- Modüler, sürdürülebilir kod: paket yapısı + entry-point shim (eski config kırılmasın), her konu ayrı modül, README.tr.md, GPL v3.
- Güvenlik katmanları: yıkıcı işlemlerde
confirm=True+ açık onay; savunma derinliği. - Titiz dokümantasyon: numaralı dokümanlar (
00-10) + README router + “bkz. X.md” çapraz referans. - Sırları koddan ayırır:
.env+.env.example,.bak/.bak2/.bak3yedek zinciri.
Altyapı tercihleri
- Kendi sunucusunda (Proxmox) konteynerleştirilmiş servisler; NPM reverse proxy + Let’s Encrypt.
- Backend portlarını dışarı açmaz; tek giriş NPM.
- Lokal-öncelikli; mevcut altyapıyı (VectorChord, n8n) yeniden kullanmayı sever.
Teşhis ve doğrulama tarzı
- ‘Elemek bedava’ yaklaşımı: kanıt aleyhte olsa bile ucuz/kesin testleri (memtest86,
dpkg -V, SMART) çalıştırıp şüphelileri tek tek resmen eler; her şeyi sıfırlayan temiz kurulum gibi pahalı ‘kesin çözer’ seçeneklerden kanıt olmadan kaçınır. ^[çıkarım] - Kanıt zinciri: teşhiste DNS, dış port erişimi, sunucu parmak izi (Server header/ETag) ve uçtan uca HTTP testi (LAN + dış
check-host.netdüğümleri) ayrı ayrı doğrulanıp ‘kanıt zinciri’ olarak özetlenir. ^[çıkarım] - Üç çökme modu taksonomisi (teşhis hızlandırıcı): Mod A = yarım kalmış upgrade (held-back paketler), Mod B = upgrade sonrası bayat daemon + yeni perl modülü uyuşmazlığı (perl-ABI SIGSEGV), Mod C = systemd PID-1 SIGSEGV donması (perl ile ilgisiz, ayrı olay). ^[çıkarım]
- Riskli/kesintili donanım işlerinde güvenlik katmanları + manuel onay: uzun testleri gece penceresinde planlar, kritik yedek tetiklemelerini kendi açıp manuel tetikler, fiziksel müdahaleyi (RAM, PSU) kendisi yapar.
- Otonom çökme/kapatma işlemlerinde önce kaynağı/gerekçeyi sorar (‘kaynağını bul kapatmadan sor’); kalıcı mimari değişiklikten önce karşılaştırmalı seçenek tablosu + öneri ister; oturum sonunda tüm proje dokümanlarının topluca güncellenip pushlanmasını ister.
- Toplu/kritik işleri tek NVMe + yavaş HDD/NFS’i yormamak için paralel değil sıralı çalıştırmayı, tekrar-alımda orijinal iş ayarlarını (storage/mode/prune/notes) birebir eşlemeyi yeğler; off-host (Tier 2) korumayı yerel (Tier 1) yedekten önce önceliklendirir. ^[çıkarım]
Sürümleme ve değişiklik kaydı kuralı
Ahmet, projelerinde her commit’in sürümü ilerletmesini ve changelog’a girdi eklemesini kural olarak ister (semver: major=kırıcı/mimari, minor=feat, patch=fix/docs/chore; sürüm her zaman artar). Uygulandığı projeler:
- homelab-agent (CT 207): her commit
__init__.py::__version__bump +docs/changelog.md. Bkz. 2026-06-14-homelab-agent-versiyonleme-kurali. - homelab-agent-ha (CT 209): her commit
homelab_agent/__init__.py::__version__bump +docs/changelog.md; dashboard sürümü canlıda/health’ten dinamik gelir (statik string yalnız fallback). - homelab-library: her commit
CHANGELOG.md+ SemVer; kural üç katmanda sabit (CI’da ‘changelog’ kapısı CHANGELOG güncellemeyen main push’larını kırar, working-context belgesi, hafıza). Tek-ortama geçiş 1.0.0 kabul edildi.
Geriye dönük commit’ler de sürümlendi (homelab-agent: 181 commit → 0.16.1; homelab-library: 29 commit).
Dokümantasyon: tek-otorite / tek-kayıt
Aynı konu birden fazla dosyaya dağılıp tekrarlanmamalı; konu tek bir kanonik dokümanda toplanır, diğer dosyalar kısa özet + ‘bkz.’ işaretçisine indirilir (‘karmaşa olmasın, benzer şeyler tekrarlanmasın’). Örnek: tüm perl-ABI içeriği 07-perl-abi-incident.md’de toplandı; 06/10/01 yalnız işaretçi bıraktı.
Hedef-LXC build ve veri-bütünlüğü kuralları
- Native modül (ör.
argon2) içeren uygulamalar Windows dev makinesinde değil hedef LXC içinde build edilmeli (Windows binary’si Linux’ta çalışmaz); kaynak CT’yegit archiveile gönderilir. ^[çıkarım] - Windows kaynaklı dosyalar CT’ye giderken CRLF satır sonları script/systemd unit’lerini kırar → LF’e çevrilmeli; kalıcı çözüm repo’da
.gitattributes. ^[çıkarım] - Postgres bağlantı URL’lerindeki rastgele parolalar base64 değil hex üretilmeli (base64’ün
/+=karakterleripostgres://URL’ini bozar). ^[çıkarım] - Ücretsiz resmî API’si olmayan veriler için (ör. Türkçe kitap metadatası) kişisel/aile kullanımında HTML kazımayı kabul eder, ancak kazıyıcının sağlam olmasını ister: timeout, hata-izolasyonu (kazıyıcı çökse ana akış kırılmaz), layout değişimine dayanıklı kaynak (JSON-LD), doğrulama/önbellek. Üçüncü-parti kodu birebir kopyalamak yerine mantığını kendi yığınına port etmeyi yeğler. ^[çıkarım]
UI ve repo-hijyen tercihleri
- UI yerleşiminde nettir ve yarım işi düzeltir: ör. homelab-library konumlar sayfasında ‘liste KOMPLE sağda olsun’ (altında değil), form solda dar panelde, seçimde ‘Konumu sil (n)’ butonu; buton adlandırması kendi istediği gibi (‘bölme sil’ değil ‘konumu sil’).
- Depo/klasör adlarında kebab-case tutarlılığı ister (Homelab-Library → homelab-library) ve bu tür yeniden adlandırmaların Claude Code oturum geçmişini/hafızasını bozmamasına dikkat eder.
- homelab-agent reposunda branch açılmasını istemez: değişiklikler doğrudan
main’e commit edilir (push ayrı/açık bir adım olarak istenir). - Güvenlik-kritik değişikliklerde (örn. otonomi kapısı gevşetilmesi) deploy öncesi çok-bakış-açılı çekişmeli (adversarial) doğrulama çalıştırılmasını ve bulunan major’ların deploy öncesi düzeltilmesini bekler; geri-dönülmez gevşetmelerde kapsamı önce netleştirmek ister. ^[çıkarım]