- Update .gitignore for local Claude files and generated artifacts - Add MAINNET_ROADMAP.md with deployment phases - Add zombienet test configuration files - Add Pezkuwi-specific subxt examples for token transfers
23 KiB
Claude Kuralları - Pezkuwi SDK
Bu dosya her oturumda Claude tarafından okunmalı ve kurallara kesinlikle uyulmalıdır.
OTOMATİK YÜKLENEN DOSYALAR
@.claude/PROJECT_STATE.md @.claude/SESSION_LOG.md @.claude/MAINNET_ROADMAP.md
ANA HEDEF
Rebrand edilmiş Pezkuwi SDK projesinin cargo check komutundan Finished çıktısı alması.
Bu hedef iki parçadan oluşur:
- Rebrand tamamlanmış olmalı (tüm eski terimler yeni terimlerle değiştirilmiş)
- Proje derlenebilir durumda olmalı (cargo check Finished)
HER İKİ KOŞUL DA SAĞLANMALI. BİRİ DİĞERİ İÇİN FEDAKARİLİK EDİLEMEZ.
DEĞİŞMEZ KURALLAR - ASLA YAPMA
1. Rebrand'i Geri Alma Yasağı
- ASLA rebrand edilmiş kodu eski haline döndürme
- ASLA cargo check hataları için isim değişikliklerini geri alma
- ASLA "çalışsın diye" terminolojiyi bozma
- ASLA pezkuwi → polkadot, bizinikiwi → substrate gibi geri dönüşüm yapma
2. Terminoloji Koruma
Aşağıdaki dönüşümler kalıcıdır ve geri alınamaz:
| Eski (KULLANMA) | Yeni (KULLAN) |
|---|---|
| polkadot | pezkuwi |
| Polkadot | Pezkuwi |
| substrate | bizinikiwi |
| Substrate | Bizinikiwi |
| cumulus | pezcumulus |
| Cumulus | Pezcumulus |
| westend | zagros |
| Westend | Zagros |
| rococo | pezkuwichain |
| Rococo | Pezkuwichain |
| parachain | teyrchain |
| Parachain | Teyrchain |
| paritytech | pezkuwichain |
| frame- | pezframe- |
| pallet- | pezpallet- |
| sp- | pezsp- |
| sc- | pezsc- |
3. Hata Çözme Yaklaşımı
Cargo check hatası aldığında:
- DOĞRU: Hatayı rebrand'e uygun şekilde düzelt (yeni terminoloji kullan)
- YANLIŞ: Rebrand'i geri alarak hatayı "çöz"
Örnek:
Hata: pezsp_runtime bulunamadı
DOĞRU: pezsp_runtime modülünü/import'unu düzelt
YANLIŞ: sp_runtime'a geri dön
BRUTAL HONESTY & STRATEGIC DEPTH
Stop being conciliatory and act as my ruthlessly honest, top-tier advisor and mirror.
- Do NOT validate me, soften the truth, or engage in flattery
- Challenge my thinking, question my assumptions, and expose the blind spots I'm avoiding
- Be direct, logical, and unfiltered
- If my reasoning is weak, dissect it and show me why
- If I'm deceiving myself or lying to myself, call it out
- If I'm avoiding something uncomfortable or wasting time, point it out and explain the opportunity cost
- Look at my situation with complete objectivity and strategic depth
- Show me where I'm making excuses, playing small, or underestimating risks/effort
- Then give me a precise, scalable plan on what to change in thought, action, or mindset to reach the next level
- Hold nothing back. Treat me as someone whose growth depends on hearing the truth, not finding comfort
GOAL ACHIEVEMENT PRINCIPLE:
When pursuing a goal, do NOT bypass problems with quick workarounds - solve them genuinely and permanently.
Example: If the goal is to get Finished output from cargo check --workspace --features runtime-benchmarks and an error X occurs in the terminal, success is only achieved by applying a real, permanent fix to that error - NOT by cleverly bypassing it to get the Finished output.
ÇALIŞMA PRENSİPLERİ
1. Checkpoint Sistemi
- Her büyük işlemden önce git commit yap
- Her hata düzeltmesinde "ne yaptım" raporu ver
- Geri dönüşü olmayan değişiklikler için onay iste
2. Audit Trail
- Değişiklik yapılan dosyaları listele
- Her oturum sonunda özet rapor sun
3. Şeffaflık
- Yapılan her değişikliği kullanıcıya bildir
- Varsayımda bulunma, sor
- Kısayol arama, doğru yolu izle
YASAK DAVRANIŞLAR
- Kullanıcının talimatı olmadan rebrand'i geri alma
- "Derleme için gerekli" bahanesiyle terminolojiyi bozma
- Uzun süren hatalar için "kolay çözüm" olarak geri dönüş yapma
- Commit mesajına Claude imzası ekleme
- Test etmeden commit/push yapma
HATA DURUMUNDA
Eğer cargo check 100+ hata veriyorsa:
- Panik yapma
- Hataları kategorize et
- Sistematik olarak düzelt (rebrand'e uygun)
- Her 10-20 hata düzeltmesinde ara commit yap
- İlerlemeyi kullanıcıya bildir
ASLA "çok fazla hata var, rebrand'i geri alayım" deme.
REFERANS: REBRAND_MAP
Tam crate isim değişiklikleri için /home/mamostehp/pezkuwi-sdk/REBRAND_PROGRESS.md dosyasına bak.
Terminoloji kılavuzu için .claude/TERMINOLOGY.md dosyasına bak.
Bu kurallar Kurdistan Tech Institute tarafından belirlenmiştir ve kesinlikle uyulmalıdır.
*eskiden kalan ve baska bir dosyaya yazdigin kurallar
Claude Code Kuralları - Pezkuwi SDK
🚨 GITHUB ACTIONS KURALI - KESİNLİKLE UYULMALI
Workflow hata verdiğinde veya değişiklik yapılacağında:
- ÖNCE tüm mevcut workflow run'larını iptal et (
gh run cancel) - SONRA hepsini sil (
gh run delete) - EN SON tek bir commit/push ile temiz başlat
ASLA eski workflow'ların üzerine yeni workflow bırakma! ASLA kuyrukta onlarca workflow biriktirme!
# Temizlik komutu (her zaman önce bunu çalıştır):
gh run list --limit 100 --json databaseId,status | jq -r '.[] | select(.status == "queued" or .status == "in_progress" or .status == "pending") | .databaseId' | xargs -I{} gh run cancel {} 2>/dev/null
sleep 5
gh run list --limit 100 --json databaseId -q '.[].databaseId' | xargs -I{} gh run delete {} 2>/dev/null
⚠️ PEZKUWI SDK TERMİNOLOJİSİ - KRİTİK
ASLA POLKADOT SDK TERİMLERİ KULLANMA! Bu bağımsız bir blockchain projesi.
Doğru Terminoloji Tablosu:
| YANLIŞ (Polkadot SDK) | DOĞRU (Pezkuwi SDK) |
|---|---|
| parachain | teyrchain |
| rococo | pezkuwichain |
| westend | zagros |
| kusama | zagros |
| polkadot | pezkuwichain |
[[parachains]] |
[[teyrchains]] |
[[parachains.collators]] |
[[teyrchains.collators]] |
-lparachain=debug |
-lteyrchain=debug |
parachain=debug |
teyrchain=debug |
🔄 CRATE REBRAND KURALLARI (76 Crate)
Prefix Dönüşümleri:
| Polkadot SDK Prefix | Pezkuwi SDK Prefix | Örnek |
|---|---|---|
sp- |
pezsp- |
sp-core → pezsp-core |
sc- |
pezsc- |
sc-client → pezsc-client |
frame- |
pezframe- |
frame-support → pezframe-support |
pezpallet- |
pezpallet- |
pezpallet-balances → pezpallet-balances |
cumulus- |
pezcumulus- |
cumulus-client → pezcumulus-client |
bridge-hub- |
pezbridge-hub- |
bridge-hub-runtime → pezbridge-hub-runtime |
bridge-runtime- |
pezbridge-runtime- |
bridge-runtime-common → pezbridge-runtime-common |
mmr- |
pezmmr- |
mmr-gadget → pezmmr-gadget |
snowbridge- |
pezsnowbridge- |
snowbridge-core → pezsnowbridge-core |
snowbridge-pezpallet- Dönüşümü:*
snowbridge-pezpallet-* → pezsnowbridge-pezpallet-*
Örnek: snowbridge-pezpallet-ethereum-client → pezsnowbridge-pezpallet-ethereum-client
Özel Dönüşümler:
| Polkadot SDK | Pezkuwi SDK |
|---|---|
bp-runtime |
pezbp-runtime |
bp-header-chain |
bp-header-pez-chain |
asset-test-utils |
asset-test-pezutils |
test-runtime-constants |
peztest-runtime-constants |
xcm-docs |
xcm-pez-docs |
xcm-emulator |
xcm-pez-emulator |
xcm-procedural |
xcm-pez-procedural |
xcm-runtime-apis |
xcm-runtime-pezapis |
xcm-simulator |
xcm-pez-simulator |
Genel pez- Prefix Eklenen Crate'ler:
| Polkadot SDK | Pezkuwi SDK |
|---|---|
| fork-tree | pez-fork-tree |
| subkey | pez-subkey |
| generate-bags | pez-generate-bags |
| kitchensink-runtime | pez-kitchensink-runtime |
| minimal-template-node | pez-minimal-template-node |
| minimal-template-runtime | pez-minimal-template-runtime |
| node-bench | pez-node-bench |
| node-primitives | pez-node-primitives |
| node-rpc | pez-node-rpc |
| node-testing | pez-node-testing |
| solochain-template-node | pez-solochain-template-node |
| solochain-template-runtime | pez-solochain-template-runtime |
| tracing-gum | pez-tracing-gum |
| tracing-gum-proc-macro | pez-tracing-gum-proc-macro |
| equivocation-detector | pez-equivocation-detector |
| finality-relay | pez-finality-relay |
| messages-relay | pez-messages-relay |
| slot-range-helper | pez-slot-range-helper |
| penpal-emulated-chain | pez-penpal-emulated-chain |
| penpal-runtime | pez-penpal-runtime |
Dosya İsimlendirme Kuralı:
- Cargo.toml
namealanı rebrand edilmeli - Rust dosya isimleri mod bildirimleriyle eşleşmeli
- Örnek:
mod pezsnowbridge_pezpallet_system;→ dosyapezsnowbridge_pezpallet_system.rsolmalı
Token'lar:
- HEZ: Relay chain native token (200M genesis, inflationary)
- PEZ: Asset Hub governance token (5B sabit supply)
- TYR: Base unit (1 HEZ = 10^18 TYR)
System Teyrchains:
- Asset Hub Teyrchain: ID 1000
- People Chain Teyrchain: ID 1004
Zombienet Config Örneği (DOĞRU):
[relaychain]
default_args = ["-lteyrchain=debug"]
chain = "pezkuwichain-dev"
[[teyrchains]]
id = 1000
chain = "asset-hub-pezkuwichain-dev"
[[teyrchains.collators]]
args = ["-lteyrchain=debug"]
🎯 ANA HEDEF VE ÇALIŞMA PRENSİPLERİ
Hedef
Pezkuwi blockchain'i mainnet'e taşımak. Her test aşamasında (dev → local → alpha → beta → staging → mainnet) tüm bug/hataları kalıcı olarak çözmeden bir sonraki aşamaya GEÇİLMEZ.
Mevcut Aşama: DEV NETWORK
Başarı Kriterleri (hepsi sağlanmalı):
- 3 runtime çalışmalı (Relay Chain, Asset Hub, People Chain)
- Birbirini görmeli (peer discovery)
- Bloklar üretilmeli
- Finalized olmalı
- Alice hesabında genesis token'ları görülmeli (HEZ, PEZ)
Test Aşamaları Sırası
- DEV (1 validator - Alice) ← ŞU AN BURADAYIZ
- LOCAL (2 validator - Alice + Bob)
- ALPHA (4 validator)
- BETA (8 validator)
- STAGING (21 validator)
- MAINNET (100 validator)
Çalışma Prensibi
Her aşamada:
1. Planlanan testleri yap
2. Tüm testlerden başarılı sonuç al
3. Hata/bug varsa → düzelt → tekrar test et
4. Başarılı olunca → blockchain upgrade → sonraki aşama
ÖNEMLİ: Ekranda geçici başarı görmek yeterli DEĞİL. Kalıcı çözümler, tam testler, sonra ilerleme.
Dizin Kuralları
| Dizin | Kullanım |
|---|---|
/home/mamostehp/Pezkuwi-SDK |
Tüm işlemler burada yapılır (edit, commit, push) |
Ekran Görüntüleri
Kullanıcı "ekran" veya "ekrana bak" dediğinde:
/home/mamostehp/DKSweb_ekran/Screenshot.png
dosyasını oku.
Gemini ile Koordinasyon
Gemini mesaj gönderdiğinde veya "gemini mesaj" denildiğinde:
/home/mamostehp/Pezkuwi-SDK/.ai-coordination/messages.md
dosyasını oku. Diğer koordinasyon dosyaları:
claude-status.md- Claude'un mevcut durumugemini-status.md- Gemini'nin mevcut durumutask-board.md- Görev tablosu
Commit Kuralları
- Commit mesajlarına
🤖 Generated with [Claude Code]veCo-Authored-By: ClaudeEKLEME - Sadece düz commit mesajı yaz
Proje Bilgileri
- Proje: Pezkuwi SDK - Bağımsız blockchain projesi
- Teknoloji: Polkadot SDK fork'u (ama Polkadot DEĞİL, bağımsız)
- Ana branch:
main - GitHub:
pezkuwichain/pezkuwi-sdk - Discord:
https://discord.gg/Y3VyEC6h8W(Server: 1444335345935057049)
Önemli Notlar
paritytechreferanslarıpezkuwichainolmalıpolkadot-sdkreferanslarıpezkuwi-sdkolmalı- Kaliteyi düşüren "kolay çözümler" yerine doğru çözümü uygula
- Geride iş bırakma - kapsamlı da olsa tamamla
🔗 UPSTREAM ISSUE TRACKING SİSTEMİ
Polkadot SDK'daki issue'ları Pezkuwi SDK'ya nasıl taşıyoruz:
Mantık
Upstream Polkadot SDK'de TODO/issue referansları varsa, bunları tracking issue sistemi ile takip ediyoruz.
Adımlar
1. Upstream'de Kontrol Et:
# Örnek: pezkuwichain/pezkuwi-sdk/issues/133 için
grep -r "pezkuwichain/pezkuwi-sdk/issues/133" /home/mamostehp/polkadot-sdk-check/
2. Tracking Issue Oluştur:
gh issue create --repo pezkuwichain/pezkuwi-sdk --label "upstream-tracking" \
--title "[Upstream Tracking] paritytech/polkadot#2403" \
--body "**Upstream:** https://github.com/pezkuwichain/pezkuwi-sdk/issues/133
**Status Tracking:**
- [x] Pending - Upstream not yet resolved
- [ ] Resolved - Fix merged upstream
- [ ] Evaluated - Assessed if needed for PezkuwiChain
- [ ] Applied - Fix applied to our chain
- [ ] Closed - Upstream issue closed
- [ ] Skipped - Not relevant for us
**Last Check:** 2025-12-06
**Next Check:** 2026-01-06
**Notes:**
ValidatorIndex From<u32> trait implementation issue.
Periodically check upstream and update checkboxes above based on status changes."
3. Koddaki Linki Güncelle:
// ÖNCEKİ:
// https://github.com/pezkuwichain/pezkuwi-sdk/issues/133
// SONRA (bizim tracking issue'ya işaret et):
// https://github.com/pezkuwichain/pezkuwi-sdk/issues/163
Örnek Tamamlanmış Tracking Issue'lar
- #163 → paritytech/polkadot#2403 (ValidatorIndex)
- #164 → paritytech/polkadot#222 (CommittedCandidateReceipt Ord)
- #165 → paritytech/polkadot#7575 (ScheduledCore.collator DEPRECATED)
- #166 → paritytech/polkadot#6586 (SessionInfo frozen)
Neden Böyle Yapıyoruz?
- Broken link olmasın: Upstream issue linklerini kendi repo'muza çeviriyoruz
- Takip: Upstream'de issue çözüldü mü, bizde uygulamamız gerekiyor mu takip ediyoruz
- Workflow:
.github/workflows/upstream-issue-tracker.ymlhaftalık kontrol ediyor
✅ CI/CD QUICK-CHECKS DÜZELTMELERİ TAMAMLANDI
Son güncelleme: 2025-11-29
Tamamlanan İşler
-
check-workspace.py düzeltmesi ✅
polkadot-sdk→pezkuwi-sdkdeğiştirildi- Umbrella crate için hem
pathhemworkspace = truekabul ediliyor
-
Bridge crate workspace inheritance (16 crate) ✅
- Tüm bridge crate'leri
workspace = truekullanıyor
- Tüm bridge crate'leri
-
Markdown lint kuralları ✅
- MD004 (ul-style): Devre dışı - çok fazla legacy dosya
- MD013 (line-length): Devre dışı - URL'ler satırları uzatıyor
-
TOML format (taplo) ✅
.config/taplo.tomlpath'leripolkadot→pezkuwidüzeltildi- 435+ TOML dosyası formatlandı
-
Zepter check ✅
.config/zepter.yaml:-p=polkadot-sdk→-p=pezkuwi-sdkdüzeltildi- Feature propagation: 36+ issue fix edildi
- Duplicate deps:
pezpallet-identity-kycvepezpallet-tikidüzeltildi
-
Umbrella crate ✅
generate-umbrella.pyçalıştırıldıumbrella/Cargo.tomlveumbrella/src/lib.rsyeniden oluşturuldu
Değiştirilen Dosyalar (438 dosya)
- Config dosyaları:
.config/taplo.toml,.config/zepter.yaml,.github/.markdownlint.yaml - Script:
.github/scripts/check-workspace.py - Pezpallet Cargo.toml:
pezpallet-identity-kyc,pezpallet-tiki+ 12 özel pezpallet feature propagation - Tüm Cargo.toml dosyaları (taplo format)
- Umbrella crate dosyaları
Sonraki Adım
Commit atılıp push edilmeli - CI/CD artık geçmeli.
🧪 ZOMBIENET TEST ENVIRONMENT VARIABLES
Zombienet SDK test'leri için gerekli environment variable'lar:
Problem
zombienet_sdk::environment::get_images_from_env() fonksiyonu, test'lerde kullanılacak Docker image'larını environment variable'lardan alır. Pezkuwi SDK için bu variable'lar tanımlanmalı.
Çözüm
Lokal test için:
export ZOMBIENET_IMAGE_PEZKUWI="docker.io/pezkuwichain/pezkuwi:latest"
export ZOMBIENET_IMAGE_CUMULUS="docker.io/pezkuwichain/pezcumulus:latest"
cargo test --workspace --features runtime-benchmarks
CI/CD workflow'larına eklenecek:
Test yapan tüm workflow'lara (.github/workflows/tests*.yml) şu environment variable'lar eklenmelidir:
env:
ZOMBIENET_IMAGE_PEZKUWI: "docker.io/pezkuwichain/pezkuwi:latest"
ZOMBIENET_IMAGE_CUMULUS: "docker.io/pezkuwichain/pezcumulus:latest"
Not: Bu değişkenler compile-time'da image alanlarının doldurulması için gerekli. Gerçek image path'leri production'da güncellenebilir.
İlgili dosyalar:
bizinikiwi/client/transaction-pool/tests/zombienet/yap_test.rs:38- Tüm zombienet SDK test dosyaları
Tarih: 2025-12-09
🛑 SİSTEMATİK ÇALIŞMA KURALLARI - KRİTİK
Son güncelleme: 2025-12-13
Bu kurallar, tekrarlanan hatalardan öğrenilerek oluşturulmuştur. KESİNLİKLE uyulmalı.
1. ÇALIŞAN KODA DOKUNMA
"If it ain't broke, don't fix it"
- Çalışan workflow'lara, test geçen dosyalara gereksiz değişiklik yapma
- Bir şeyi "iyileştirmek" için çalışan kodu değiştirme
- Düzeltme yaparken sadece hatalı olan yere odaklan
2. TEK DEĞİŞİKLİK → TEK TEST
Her seferinde SADECE BİR değişiklik yap
→ Test et
→ Sonucu gör
→ Sonra diğerine geç
- Birden fazla değişikliği aynı anda yapmak = hangi değişikliğin hataya sebep olduğunu anlayamama
- Bir commit'te birden fazla bağımsız fix varsa, sorun çıktığında rollback zor
3. LOKAL TEST ÖNCE
Mümkünse önce lokal test et, sonra push et
cargo check --workspacecargo test -p <crate>cargo clippy --workspace
GitHub'a push edip sonucu beklemek = zaman kaybı + gereksiz workflow kuyruğu
4. GERİ DÖNÜŞ NOKTASI BELİRLE
Her başarılı durumda commit at ve işaretle
- "Bu çalışıyor" diye bilinen commit SHA'sını not al
- Sorun çıkarsa o commit'e dön, karmaşık düzeltmeler deneme
- Git history'si temiz tutulmalı
5. PANİK YAPMA
İlk hata geldiğinde:
1. DURMA
2. Hata mesajını OKU
3. Root cause analizi YAP
4. Sonra düzelt
- Hızlıca "düzeltme" yapmaya çalışmak = durumu daha da kötüleştirmek
- Bir düzeltme işe yaramazsa → geri al → farklı yaklaşım dene
- Aynı şeyi tekrar tekrar deneme
6. ROLLBACK > DEBUG
Düzeltme 2-3 denemede işe yaramazsa → ROLLBACK
- Çalışan versiyona geri dön
- Temiz bir başlangıç noktasından tekrar başla
- Sonsuz debug döngüsüne girme
Örnek Senaryo (YANLIŞ):
1. Clippy hatası var → düzelt
2. Düzeltme sırasında isdraft workflow'una dokundum (gereksiz)
3. isdraft patladı
4. isdraft'ı düzeltmeye çalıştım (5 farklı deneme)
5. Hepsi başarısız
6. Sonunda revert ettim
7. Zaman kaybı: 2 saat
Örnek Senaryo (DOĞRU):
1. Clippy hatası var → düzelt
2. Sadece clippy ile ilgili dosyalara dokun
3. Test et, push et
4. Başka bir şey patlarsa → o dosyalara bak
5. Çalışan koda dokunma
📋 OTURUM GEÇMİŞİ VE NOTLAR
Oturum: 2025-12-20 (Clippy Hatalarını Düzeltme)
Görev: Tüm GitHub Actions workflow'larının geçmesi için clippy hatalarını düzeltme
Tamamlanan Düzeltmeler:
-
referral/benchmarking.rs:
- Duplicated cfg attribute kaldırıldı
use crate::Pezpallet as Referral;benchmarks modülünün içine taşındı
-
referral/lib.rs:
- Deprecated RuntimeEvent → supertrait bound kullanıldı
Config: pezframe_system::Config<RuntimeEvent: From<Event<Self>>>
-
tiki/benchmarking.rs:
- Unused
use alloc::vec;kaldırıldı - Multiple bound locations düzeltildi (T bounds birleştirildi)
- Clone on Copy types düzeltildi (
.clone()→ kopyalama)
- Unused
-
tiki/lib.rs:
- Deprecated RuntimeEvent → supertrait bound kullanıldı
-
presale/lib.rs (bekleyen):
- try_into() → into() dönüşümleri (7 adet)
- too_many_arguments (macro-generated, #[allow] gerekebilir)
Kalan Hatalar (clippy output'tan):
pezpallet-presale: unnecessary_fallible_conversions (7 adet)pezpallet-tiki: bazı clone_on_copy kalmış olabilirpezcumulus-zombienet-sdk-tests: unnecessary parenthesespez-solochain-template-runtime: bir hata varpezpallet-revive-eth-rpc: field never read
Sonraki Claude İçin Talimat:
- Bu dosyayı
/home/mamostehp/pezkuwi-sdk/.claude/CLAUDE_RULES.mdadresinden oku RUSTFLAGS="-D warnings" SKIP_WASM_BUILD=1 cargo clippy --all-targets --all-features --locked --workspace --quietçalıştır- Kalan hataları düzelt
- Commit ve push yap
- GitHub Actions'ın geçtiğini doğrula
🖥️ VPS RUNNER INFRASTRUCTURE
Son güncelleme: 2025-12-27
Self-Hosted Runners
| VPS | IP Address | SSH | Runner Label |
|---|---|---|---|
| VPS1 | 37.60.230.9 | ssh root@37.60.230.9 |
ubuntu-large |
| VPS2 | 62.146.235.186 | ssh root@62.146.235.186 |
ubuntu-xlarge |
Her iki runner paralel çalışır. Workflow'lar kuyrukta uzun bekliyorsa her iki VPS'in de aktif olduğunu kontrol et.
⚠️ ÖĞRENILEN DERSLER
serde_core + wasm32v1-none Uyumsuzluğu (2025-12-27)
Problem: serde_core 1.0.228 + Rust 1.88.0 + wasm32v1-none target kombinasyonu derleme hatası veriyor.
Hata:
error: relaxing a default bound only does something for ?Sized
Çözüm: CI'da rustup target add wasm32v1-none adımını kaldır. wasm-builder otomatik olarak wasm32v1-none'dan wasm32-unknown-unknown'a fallback yapar.
Upstream Issue: https://github.com/serde-rs/serde/issues/3021
Kural: Eğer bir dependency'de bug varsa:
- Geçici workaround uygula (wasm32v1-none kaldır)
- Upstream'e issue aç
- Tracking issue oluştur (
.claude/issue_mapping.txt) - Kalıcı fix için upstream'i takip et
🔧 DEVAM EDEN GÖREV: pezpallet-revive-eth-rpc DERLEME
Son güncelleme: 2025-12-19 14:50 UTC
Mevcut Durum
pezpallet-revive-eth-rpc crate'i compile edilemiyor. İlerleme kaydedildi ama henüz tamamlanmadı.
TAMAMLANAN ADIMLAR ✅
- ✅
pez-revive-dev-nodebaşarıyla derlendi - ✅ Dev node çalıştırıldı
- ✅ Yeni metadata generate edildi (
revive_chain.scale)- Artık sadece
pezsp_runtime,pezpallet_revivepath'leri var sp_runtime,pallet_revive(upstream) yok
- Artık sadece
- ✅
no_default_substitutionseklendi (subxt_client.rs)
KALAN SORUNLAR
SORUN 1: subxt hala sp_runtime arıyor
no_default_substitutions eklense de subxt bazı type'lar için hala sp_runtime path'i kullanıyor:
error[E0433]: could not find `sp_runtime` in `runtime_types`
Olası çözüm: crate_path veya ek substitute_type direktifleri gerekebilir.
SORUN 2: H160, H256 type substitutions eksik
no_default_substitutions ile varsayılan type mapping'ler de kayboluyor:
error[E0277]: the trait bound `H160: From<[u8; 20]>` is not satisfied
Çözüm: Eksik type'lar için substitute_type ekle:
substitute_type(
path = "primitive_types::H160",
with = "::subxt::utils::Static<::pezsp_core::H160>"
),
substitute_type(
path = "primitive_types::H256",
with = "::subxt::utils::Static<::pezsp_core::H256>"
),
SORUN 3: SQLX Query Cache
error: `SQLX_OFFLINE=true` but there is no cached data for this query
Çözüm seçenekleri:
cargo sqlx prepareile cache regenerate (PostgreSQL/SQLite gerekli)query!→query_unchecked!ile compile-time check'i devre dışı bırak
SONRAKİ ADIMLAR
- H160, H256 ve diğer primitive_types için substitute_type ekle
crate_pathveya alternatif subxt yapılandırması araştır- SQLX sorununu çöz (unchecked query veya cache regenerate)
cargo check -p pezpallet-revive-eth-rpcbaşarılı olmalıcargo check --workspacebaşarılı olmalı
İlgili Dosyalar
bizinikiwi/pezframe/revive/rpc/src/subxt_client.rs- subxt macrobizinikiwi/pezframe/revive/rpc/revive_chain.scale- YENİ metadata (tamamen rebranded)bizinikiwi/pezframe/revive/rpc/.sqlx/- SQLX query cache (güncellenmeli)