Compare commits

...

7 Commits

7 changed files with 7 additions and 1302 deletions
+7
View File
@@ -124,3 +124,10 @@ tools/runtime-upgrade/
tools/wasm-crypto/
tools/usdt-bridge/bridge_db.json
.claude/domains-repositories
# Internal operational/rebranding scripts (not for public)
docs/rebrand_project.py
docs/scan_old_words.py
docs/workflow_rebranding.md
docs/reserve_crate_names_v2.py
docs/publish_crates_slow.py
-107
View File
@@ -1,107 +0,0 @@
#!/usr/bin/env python3
"""
Slow Crate Publisher - 6 dakikada bir 1 crate publish eder
Rate limit'e takilmamak icin yavas yavas publish yapar.
Kullanim:
nohup python3 publish_crates_slow.py > publish_log.txt 2>&1 &
"""
import subprocess
import os
import time
from datetime import datetime
PLACEHOLDER_DIR = '/home/mamostehp/kurdistan-sdk/crate_placeholders'
LOG_FILE = '/home/mamostehp/kurdistan-sdk/publish_log.txt'
INTERVAL_SECONDS = 360 # 6 dakika
def log(msg):
timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
line = f"[{timestamp}] {msg}"
print(line, flush=True)
with open(LOG_FILE, 'a') as f:
f.write(line + '\n')
def is_published(name):
"""crates.io'da mevcut mu kontrol et"""
result = subprocess.run(
['cargo', 'search', name, '--limit', '1'],
capture_output=True, text=True, timeout=30
)
return f'{name} = ' in result.stdout
def publish_crate(name):
"""Tek bir crate publish et"""
crate_dir = os.path.join(PLACEHOLDER_DIR, name)
manifest = os.path.join(crate_dir, 'Cargo.toml')
if not os.path.exists(manifest):
return False, "Cargo.toml not found"
result = subprocess.run(
['cargo', 'publish', '--manifest-path', manifest],
capture_output=True, text=True, cwd=crate_dir, timeout=180
)
if result.returncode == 0:
return True, "Success"
elif 'already uploaded' in result.stderr or 'already exists' in result.stderr:
return True, "Already exists"
elif '429' in result.stderr or 'Too Many Requests' in result.stderr:
return False, "Rate limited"
else:
return False, result.stderr[:200]
def get_unpublished_crates():
"""Henuz publish edilmemis crate'leri bul"""
crates = sorted([d for d in os.listdir(PLACEHOLDER_DIR)
if os.path.isdir(os.path.join(PLACEHOLDER_DIR, d))])
unpublished = []
for crate in crates:
if not is_published(crate):
unpublished.append(crate)
return unpublished
def main():
log("=" * 60)
log("Slow Crate Publisher baslatildi")
log(f"Interval: {INTERVAL_SECONDS} saniye (6 dakika)")
log("=" * 60)
unpublished = get_unpublished_crates()
total = len(unpublished)
log(f"Toplam {total} crate publish edilecek")
success_count = 0
fail_count = 0
for i, crate in enumerate(unpublished, 1):
log(f"[{i}/{total}] Publishing: {crate}")
success, msg = publish_crate(crate)
if success:
log(f"{msg}")
success_count += 1
else:
log(f"{msg}")
fail_count += 1
# Rate limit durumunda ekstra bekle
if "Rate limited" in msg:
log(" Rate limited! 10 dakika bekleniyor...")
time.sleep(600)
# Sonraki crate icin bekle
if i < total:
log(f" Sonraki crate icin {INTERVAL_SECONDS}s bekleniyor...")
time.sleep(INTERVAL_SECONDS)
log("=" * 60)
log(f"Tamamlandi! Basarili: {success_count}, Basarisiz: {fail_count}")
log("=" * 60)
if __name__ == "__main__":
main()
-214
View File
@@ -1,214 +0,0 @@
import os
import sys
# Rebranding haritası
REBRAND_MAP = [
("asset-test-utils", "asset-test-pezutils"),
("chain-spec-guide-runtime", "pez-chain-spec-guide-runtime"),
("equivocation-detector", "pez-equivocation-detector"),
("erasure-coding-fuzzer", "pez-erasure-coding-fuzzer"),
("ethereum-standards", "pez-ethereum-standards"),
("finality-relay", "pez-finality-relay"),
("fork-tree", "pez-fork-tree"),
("generate-bags", "pez-generate-bags"),
("kitchensink-runtime", "pez-kitchensink-runtime"),
("messages-relay", "pez-messages-relay"),
("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-runtime-generate-bags", "pez-node-runtime-generate-bags"),
("node-template-release", "pez-node-template-release"),
("node-testing", "pez-node-testing"),
("penpal-emulated-chain", "pez-penpal-emulated-chain"),
("penpal-runtime", "pez-penpal-runtime"),
("remote-ext-tests-bags-list", "pez-remote-ext-tests-bags-list"),
("revive-dev-node", "pez-revive-dev-node"),
("revive-dev-runtime", "pez-revive-dev-runtime"),
("slot-range-helper", "pez-slot-range-helper"),
("solochain-template-node", "pez-solochain-template-node"),
("solochain-template-runtime", "pez-solochain-template-runtime"),
("subkey", "pez-subkey"),
("template-zombienet-tests", "pez-template-zombienet-tests"),
("test-runtime-constants", "peztest-runtime-constants"),
("tracing-gum", "pez-tracing-gum"),
("tracing-gum-proc-macro", "pez-tracing-gum-proc-macro"),
("bp-header-chain", "bp-header-pez-chain"),
("bp-runtime", "pezbp-runtime"),
("bridge-hub-pezkuwichain-emulated-chain", "pezbridge-hub-pezkuwichain-emulated-chain"),
("bridge-hub-pezkuwichain-integration-tests", "pezbridge-hub-pezkuwichain-integration-tests"),
("bridge-hub-pezkuwichain-runtime", "pezbridge-hub-pezkuwichain-runtime"),
("bridge-hub-test-utils", "pezbridge-hub-test-utils"),
("bridge-hub-zagros-emulated-chain", "pezbridge-hub-zagros-emulated-chain"),
("bridge-hub-zagros-integration-tests", "pezbridge-hub-zagros-integration-tests"),
("bridge-hub-zagros-runtime", "pezbridge-hub-zagros-runtime"),
("bridge-runtime-common", "pezbridge-runtime-common"),
("mmr-gadget", "pezmmr-gadget"),
("mmr-rpc", "pezmmr-rpc"),
("snowbridge-beacon-primitives", "pezsnowbridge-beacon-primitives"),
("snowbridge-core", "pezsnowbridge-core"),
("snowbridge-ethereum", "pezsnowbridge-ethereum"),
("snowbridge-inbound-queue-primitives", "pezsnowbridge-inbound-queue-primitives"),
("snowbridge-merkle-tree", "pezsnowbridge-merkle-tree"),
("snowbridge-outbound-queue-primitives", "pezsnowbridge-outbound-queue-primitives"),
("snowbridge-outbound-queue-runtime-api", "pezsnowbridge-outbound-queue-runtime-api"),
("snowbridge-outbound-queue-v2-runtime-api", "pezsnowbridge-outbound-queue-v2-runtime-api"),
("snowbridge-pezpallet-ethereum-client", "snowbridge-pezpallet-ethereum-client"),
("snowbridge-pezpallet-ethereum-client-fixtures", "snowbridge-pezpallet-ethereum-client-fixtures"),
("snowbridge-pezpallet-inbound-queue", "snowbridge-pezpallet-inbound-queue"),
("snowbridge-pezpallet-inbound-queue-fixtures", "snowbridge-pezpallet-inbound-queue-fixtures"),
("snowbridge-pezpallet-inbound-queue-v2", "snowbridge-pezpallet-inbound-queue-v2"),
("snowbridge-pezpallet-inbound-queue-v2-fixtures", "snowbridge-pezpallet-inbound-queue-v2-fixtures"),
("snowbridge-pezpallet-outbound-queue", "snowbridge-pezpallet-outbound-queue"),
("snowbridge-pezpallet-outbound-queue-v2", "snowbridge-pezpallet-outbound-queue-v2"),
("snowbridge-pezpallet-system", "snowbridge-pezpallet-system"),
("snowbridge-pezpallet-system-frontend", "snowbridge-pezpallet-system-frontend"),
("snowbridge-pezpallet-system-v2", "snowbridge-pezpallet-system-v2"),
("snowbridge-runtime-common", "pezsnowbridge-runtime-common"),
("snowbridge-runtime-test-common", "pezsnowbridge-runtime-test-common"),
("snowbridge-system-runtime-api", "pezsnowbridge-system-runtime-api"),
("snowbridge-system-v2-runtime-api", "pezsnowbridge-system-v2-runtime-api"),
("snowbridge-test-utils", "pezsnowbridge-test-utils"),
("snowbridge-verification-primitives", "pezsnowbridge-verification-primitives"),
("xcm-docs", "xcm-pez-docs"),
("xcm-emulator", "xcm-pez-emulator"),
("xcm-executor-integration-tests", "xcm-pez-executor-integration-tests"),
("xcm-procedural", "xcm-pez-procedural"),
("xcm-runtime-apis", "xcm-runtime-pezapis"),
("xcm-simulator", "xcm-pez-simulator"),
("xcm-simulator-example", "xcm-pez-simulator-example"),
("xcm-simulator-fuzzer", "xcm-pez-simulator-fuzzer"),
]
# Hedef dosya uzantıları
TARGET_EXTENSIONS = ('.rs', '.toml', '.md', '.txt', '.yml', '.yaml', '.json', '.py')
# HARİÇ TUTULACAK KLASÖRLER (KESİN LİSTE)
EXCLUDE_DIRS = {'crate_placeholders', '.git', 'target', 'node_modules', '__pycache__'}
def is_path_excluded(path):
"""Verilen yolun yasaklı bir klasörün içinde olup olmadığını kontrol eder."""
parts = path.split(os.sep)
# Eğer path'in herhangi bir parçası EXCLUDE_DIRS içindeyse True döner
return any(excluded in parts for excluded in EXCLUDE_DIRS)
def replace_in_file(filepath):
# Kendi kendimizi değiştirmeyelim
if os.path.basename(filepath) == os.path.basename(__file__):
return
try:
with open(filepath, 'r', encoding='utf-8', errors='ignore') as f:
content = f.read()
original_content = content
for old_name, new_name in REBRAND_MAP:
# 1. Normal (tireli)
content = content.replace(old_name, new_name)
# 2. Snake case (alt çizgili)
old_snake = old_name.replace('-', '_')
new_snake = new_name.replace('-', '_')
content = content.replace(old_snake, new_snake)
if content != original_content:
with open(filepath, 'w', encoding='utf-8') as f:
f.write(content)
print(f" [GÜNCELLENDİ] Dosya içeriği: {filepath}")
except Exception as e:
print(f" [HATA] Dosya okunamadı: {filepath} -> {e}")
def rename_directories_and_files(root_dir):
# topdown=True kullanarak yukarıdan aşağıya iniyoruz, böylece dirs listesini modifiye edebiliriz
for dirpath, dirnames, filenames in os.walk(root_dir, topdown=True):
# GÜVENLİK: Yasaklı klasörleri yerinde (in-place) listeden silerek os.walk'un oraya girmesini engelle
# Bu en güvenli yöntemdir.
dirnames[:] = [d for d in dirnames if d not in EXCLUDE_DIRS]
# Eğer şu anki dizin zaten yasaklı bir yolun altındaysa (üstteki koruma kaçırdıysa) atla
if is_path_excluded(dirpath):
continue
# 1. Dosya isimlerini değiştir
for filename in filenames:
if filename == os.path.basename(__file__):
continue
for old_name, new_name in REBRAND_MAP:
if old_name in filename:
old_file_path = os.path.join(dirpath, filename)
new_filename = filename.replace(old_name, new_name)
new_file_path = os.path.join(dirpath, new_filename)
if os.path.exists(old_file_path):
try:
os.rename(old_file_path, new_file_path)
print(f" [RENAME] Dosya: {filename} -> {new_filename}")
except OSError as e:
print(f" [HATA] Dosya adlandırılamadı {filename}: {e}")
# 2. Klasör isimlerini değiştir
# Not: dirnames listesi üzerinde iterasyon yapıyoruz ama rename işlemi riskli olabilir
# O yüzden sadece şu anki seviyedeki klasörleri kontrol ediyoruz
# Ancak os.walk çalışırken klasör adı değişirse alt dizin taraması sapıtabilir.
# Bu yüzden klasör yeniden adlandırmayı en sona, ayrı bir "bottom-up" geçişe bırakmak daha iyidir
# ama basitlik adına burada dikkatli yapıyoruz.
# İkinci Geçiş: Sadece Klasör İsimleri (Bottom-Up)
# Klasör isimlerini değiştirirken path bozulmasın diye en alttan başlıyoruz
for dirpath, dirnames, filenames in os.walk(root_dir, topdown=False):
if is_path_excluded(dirpath):
continue
for dirname in dirnames:
if dirname in EXCLUDE_DIRS:
continue
for old_name, new_name in REBRAND_MAP:
if old_name == dirname:
old_dir_path = os.path.join(dirpath, dirname)
new_dir_path = os.path.join(dirpath, new_name)
if os.path.exists(old_dir_path):
try:
os.rename(old_dir_path, new_dir_path)
print(f" [RENAME] Klasör: {dirname} -> {new_name}")
except OSError as e:
print(f" [HATA] Klasör adlandırılamadı {dirname}: {e}")
def process_content_updates(root_dir):
for dirpath, dirnames, filenames in os.walk(root_dir, topdown=True):
# Yasaklı klasörlere girme
dirnames[:] = [d for d in dirnames if d not in EXCLUDE_DIRS]
if is_path_excluded(dirpath):
continue
for filename in filenames:
if filename.endswith(TARGET_EXTENSIONS) or filename == 'Cargo.lock':
filepath = os.path.join(dirpath, filename)
replace_in_file(filepath)
def main():
root_dir = os.getcwd()
print("==================================================")
print(f"⚠️ DİKKAT: Çalışma dizini: {root_dir}")
print(f"⚠️ HARİÇ TUTULANLAR: {EXCLUDE_DIRS}")
print("==================================================")
# Otomatik onay veya soru
# confirm = input("Emin misin? (evet/hayir): ")
# if confirm.lower() != "evet": return
print("İşlem başlatılıyor...")
print("\n--- Adım 1: Dosya İçeriklerinin Güncellenmesi ---")
process_content_updates(root_dir)
print("\n--- Adım 2: Klasör ve Dosya İsimlerinin Değiştirilmesi ---")
rename_directories_and_files(root_dir)
print("\n✅ Rebranding işlemi tamamlandı.")
if __name__ == "__main__":
main()
-320
View File
@@ -1,320 +0,0 @@
#!/usr/bin/env python3
"""
crates.io İsim Rezervasyon Script'i (Gelişmiş Versiyon)
Özellikler:
- Kaldığı yerden devam etme (--start-from)
- Ayarlanabilir bekleme süresi (--interval)
- Workspace izolasyonu (üst dizindeki Cargo.toml ile çakışmaz)
- "Already exists" durumunu akıllıca yönetir (bekleme yapmaz)
"""
import subprocess
import os
import sys
import json
import time
from pathlib import Path
import argparse
WORKSPACE_ROOT = Path(__file__).parent.resolve()
PLACEHOLDER_DIR = WORKSPACE_ROOT / "crate_placeholders"
# Yeni isim listesi
NEW_CRATE_NAMES = [
"asset-hub-pezkuwichain-emulated-chain",
"asset-hub-pezkuwichain-integration-tests",
"asset-hub-pezkuwichain-runtime",
"asset-hub-zagros-emulated-chain",
"asset-hub-zagros-integration-tests",
"asset-hub-zagros-runtime",
"asset-test-pezutils",
"pez-binary-merkle-tree",
"pez-chain-spec-guide-runtime",
"collectives-zagros-emulated-chain",
"collectives-zagros-integration-tests",
"collectives-zagros-runtime",
"coretime-pezkuwichain-emulated-chain",
"coretime-pezkuwichain-integration-tests",
"coretime-pezkuwichain-runtime",
"coretime-zagros-emulated-chain",
"coretime-zagros-integration-tests",
"coretime-zagros-runtime",
"emulated-integration-tests-common",
"pez-equivocation-detector",
"pez-erasure-coding-fuzzer",
"pez-ethereum-standards",
"pez-finality-relay",
"pez-fork-tree",
"pezframe-election-solution-type-fuzzer",
"pezframe-omni-bencher",
"pezframe-remote-externalities",
"pezframe-storage-access-test-runtime",
"pez-generate-bags",
"glutton-zagros-runtime",
"governance-zagros-integration-tests",
"pez-kitchensink-runtime",
"pez-messages-relay",
"pez-minimal-template-node",
"pez-minimal-template-runtime",
"pez-node-bench",
"pez-node-primitives",
"pez-node-rpc",
"pez-node-runtime-pez-generate-bags",
"pez-node-template-release",
"pez-node-testing",
"pez-penpal-emulated-chain",
"pez-penpal-runtime",
"people-pezkuwichain-emulated-chain",
"people-pezkuwichain-integration-tests",
"people-pezkuwichain-runtime",
"people-zagros-emulated-chain",
"people-zagros-integration-tests",
"people-zagros-runtime",
"pezkuwi",
"pezkuwichain-emulated-chain",
"pezkuwichain-runtime",
"pezkuwichain-runtime-constants",
"pezkuwichain-system-emulated-network",
"pezkuwichain-teyrchain-runtime",
"pezkuwichain-zagros-system-emulated-network",
"relay-bizinikiwi-client",
"relay-pezutils",
"pez-remote-ext-tests-bags-list",
"pez-revive-dev-node",
"pez-revive-dev-runtime",
"pez-slot-range-helper",
"pez-solochain-template-node",
"pez-solochain-template-runtime",
"pez-pez_subkey",
"pez-template-zombienet-tests",
"peztest-runtime-constants",
"test-teyrchain-adder",
"test-teyrchain-adder-collator",
"test-teyrchain-halt",
"test-teyrchain-undying",
"test-teyrchain-undying-collator",
"testnet-teyrchains-constants",
"teyrchain-template",
"teyrchain-template-node",
"teyrchain-template-runtime",
"teyrchains-common",
"teyrchains-relay",
"teyrchains-runtimes-test-utils",
"pez-tracing-gum",
"pez-pez-tracing-gum-proc-macro",
"yet-another-teyrchain-runtime",
"zagros-emulated-chain",
"zagros-runtime",
"zagros-runtime-constants",
"zagros-system-emulated-network",
"pez-zombienet-backchannel",
"pezassets-common",
"bp-asset-hub-pezkuwichain",
"bp-asset-hub-zagros",
"bp-pezbeefy",
"bp-bridge-hub-pezcumulus",
"bp-bridge-hub-pezkuwichain",
"bp-bridge-hub-zagros",
"bp-header-pez-chain",
"bp-pez-messages",
"bp-pezkuwi-bulletin",
"bp-pezkuwi-core",
"bp-pezkuwichain",
"bp-pez-relayers",
"pezbp-runtime",
"bp-test-pezutils",
"bp-teyrchains",
"bp-xcm-pezbridge-hub",
"bp-xcm-pezbridge-hub-router",
"bp-zagros",
"pezbridge-hub-common",
"pezbridge-hub-pezkuwichain-emulated-chain",
"pezbridge-hub-pezkuwichain-integration-tests",
"pezbridge-hub-pezkuwichain-runtime",
"pezbridge-hub-test-utils",
"pezbridge-hub-zagros-emulated-chain",
"pezbridge-hub-zagros-integration-tests",
"pezbridge-hub-zagros-runtime",
"pezbridge-runtime-common",
"pezmmr-gadget",
"pezmmr-rpc",
"pezsnowbridge-beacon-primitives",
"pezsnowbridge-core",
"pezsnowbridge-ethereum",
"pezsnowbridge-inbound-queue-primitives",
"pezsnowbridge-merkle-tree",
"pezsnowbridge-outbound-queue-primitives",
"pezsnowbridge-outbound-queue-runtime-api",
"pezsnowbridge-outbound-queue-v2-runtime-api",
"pezsnowbridge-pezpallet-ethereum-client",
"pezsnowbridge-pezpallet-ethereum-client-fixtures",
"pezsnowbridge-pezpallet-inbound-queue",
"pezsnowbridge-pezpallet-inbound-queue-fixtures",
"pezsnowbridge-pezpallet-inbound-queue-v2",
"pezsnowbridge-pezpallet-inbound-queue-v2-fixtures",
"pezsnowbridge-pezpallet-outbound-queue",
"pezsnowbridge-pezpallet-outbound-queue-v2",
"pezsnowbridge-pezpallet-system",
"pezsnowbridge-pezpallet-system-frontend",
"pezsnowbridge-pezpallet-system-v2",
"pezsnowpezbridge-runtime-common",
"pezsnowbridge-runtime-test-common",
"pezsnowbridge-system-runtime-api",
"pezsnowbridge-system-v2-runtime-api",
"pezsnowbridge-test-utils",
"pezsnowbridge-verification-primitives",
"xcm-pez-docs",
"xcm-pez-emulator",
"xcm-pez-executor-integration-tests",
"xcm-pez-procedural",
"xcm-runtime-pezapis",
"xcm-pez-simulator",
"xcm-pez-simulator-example",
"xcm-pez-simulator-fuzzer",
]
def check_crate_available(name: str) -> bool:
"""crates.io'da isim müsait mi kontrol et"""
result = subprocess.run(
["cargo", "search", name, "--limit", "1"],
capture_output=True, text=True
)
return f'{name} = "' not in result.stdout
def create_placeholder(name: str) -> Path:
"""Placeholder crate oluştur"""
crate_dir = PLACEHOLDER_DIR / name
crate_dir.mkdir(parents=True, exist_ok=True)
# [workspace] ekleyerek parent workspace ile ilişkisini kesiyoruz
cargo_toml = f'''[package]
name = "{name}"
version = "0.1.0"
edition = "2021"
description = "PezkuwiChain SDK component - placeholder for name reservation"
license = "Apache-2.0"
repository = "https://github.com/pezkuwichain/pezkuwi-sdk"
homepage = "https://pezkuwichain.io"
documentation = "https://docs.pezkuwichain.io/sdk/"
authors = ["Kurdistan Tech Institute <info@pezkuwichain.io>"]
keywords = ["pezkuwichain", "blockchain", "sdk"]
categories = ["cryptography::cryptocurrencies"]
[workspace]
[dependencies]
'''
(crate_dir / "Cargo.toml").write_text(cargo_toml)
src_dir = crate_dir / "src"
src_dir.mkdir(exist_ok=True)
lib_rs = f'''//! {name}
//! This crate is part of the PezkuwiChain SDK.
//! Full implementation coming soon.
#![doc = include_str!("../README.md")]
'''
(src_dir / "lib.rs").write_text(lib_rs)
readme = f'''# {name}
Part of [PezkuwiChain SDK](https://github.com/pezkuwichain/pezkuwi-sdk).
## About
This crate is a component of the PezkuwiChain blockchain SDK.
'''
(crate_dir / "README.md").write_text(readme)
return crate_dir
def publish_placeholder(crate_dir: Path, dry_run: bool = True):
"""Placeholder'ı crates.io'ya publish et.
Dönüş: (başarılı_mı, bekleme_gerekli_mi)
"""
args = ["cargo", "publish"]
if dry_run:
args.append("--dry-run")
args.extend(["--manifest-path", str(crate_dir / "Cargo.toml")])
result = subprocess.run(args, capture_output=True, text=True, cwd=crate_dir)
if result.returncode == 0:
return True, True # Başarılı, bekleme yap
# "already exists" hatasını kontrol et
if "already exists" in result.stderr:
return True, False # Zaten var, bekleme yapma
print(f"\n[HATA] {crate_dir.name} publish edilemedi:\n{result.stderr}")
return False, False
def main():
parser = argparse.ArgumentParser(description="crates.io isim rezervasyonu")
parser.add_argument("--list", action="store_true", help="İsimleri listele")
parser.add_argument("--check", action="store_true", help="crates.io'da müsaitlik kontrol et")
parser.add_argument("--create", action="store_true", help="Placeholder crate'leri oluştur")
parser.add_argument("--publish", action="store_true", help="crates.io'ya publish et")
parser.add_argument("--dry-run", action="store_true", help="Publish dry-run")
parser.add_argument("--start-from", type=str, help="İşleme bu crate isminden başla (öncekileri atlar)")
parser.add_argument("--interval", type=int, default=360, help="Publish arası bekleme süresi (saniye). Varsayılan: 360")
args = parser.parse_args()
if args.list:
for name in sorted(NEW_CRATE_NAMES):
print(f" {name}")
return
# Create/Publish işlemleri
if args.create or args.publish:
# Placeholder klasörünü oluştur
PLACEHOLDER_DIR.mkdir(exist_ok=True)
start_processing = False
if not args.start_from:
start_processing = True
print(f"Toplam Crate Sayısı: {len(NEW_CRATE_NAMES)}")
print(f"Bekleme Süresi: {args.interval} saniye")
if args.start_from:
print(f"Başlangıç: {args.start_from} (Öncekiler atlanacak)")
success = 0
failed = 0
skipped = 0
for i, name in enumerate(NEW_CRATE_NAMES, 1):
# Resume mantığı
if not start_processing:
if name == args.start_from:
start_processing = True
else:
skipped += 1
continue
print(f"[{i}/{len(NEW_CRATE_NAMES)}] {name}...", end=" ", flush=True)
# 1. Create
crate_dir = create_placeholder(name)
# 2. Publish (Eğer istenmişse)
if args.publish:
success_status, needs_wait = publish_placeholder(crate_dir, args.dry_run)
if success_status:
if needs_wait:
print("✓ PUBLISHED")
success += 1
if not args.dry_run:
print(f" -> Bekleniyor {args.interval}sn...")
time.sleep(args.interval)
else:
print("✓ ZATEN VAR (Atlandı)")
success += 1
else:
print("✗ FAILED")
failed += 1
else:
print("✓ CREATED")
print(f"\nSonuç: {success} başarılı, {failed} başarısız, {skipped} atlandı.")
if __name__ == "__main__":
main()
-22
View File
@@ -17,7 +17,6 @@
## 1. PezkuwiChain Relay Chain Runtime
**Location:** `/home/mamostehp/Pezkuwi-SDK/pezkuwi/runtime/pezkuwichain/src/lib.rs`
**Spec Name:** `pezkuwichain`
**Spec Version:** 1_020_001
**Benchmarks:** ✅ Yes
@@ -112,7 +111,6 @@
## 2. Zagros Relay Chain Runtime
**Location:** `/home/mamostehp/Pezkuwi-SDK/pezkuwi/runtime/zagros/src/lib.rs`
**Spec Name:** `zagros`
**Spec Version:** 1_020_001
**Status:** ⚠️ Zagros runtime does NOT exist in this codebase. Only PezkuwiChain relay chain is implemented.
@@ -121,7 +119,6 @@
## 3. Asset Hub PezkuwiChain Teyrchain Runtime
**Location:** `/home/mamostehp/Pezkuwi-SDK/pezcumulus/teyrchains/runtimes/assets/asset-hub-pezkuwichain/src/lib.rs`
**Spec Name:** `asset-hub-pezkuwichain`
**Spec Version:** 1_020_001
**Benchmarks:** ✅ Yes
@@ -204,7 +201,6 @@
## 4. Asset Hub Zagros Teyrchain Runtime
**Location:** `/home/mamostehp/Pezkuwi-SDK/pezcumulus/teyrchains/runtimes/assets/asset-hub-zagros/src/lib.rs`
**Spec Name:** `asset-hub-zagros`
**Spec Version:** 1_020_001
**Benchmarks:** ✅ Yes
@@ -295,7 +291,6 @@
## 5. People PezkuwiChain Teyrchain Runtime
**Location:** `/home/mamostehp/Pezkuwi-SDK/pezcumulus/teyrchains/runtimes/people/people-pezkuwichain/src/lib.rs`
**Spec Name:** `people-pezkuwichain`
**Spec Version:** 1_020_001
**Benchmarks:** ✅ Yes
@@ -368,7 +363,6 @@
## 6. People Zagros Teyrchain Runtime
**Location:** `/home/mamostehp/Pezkuwi-SDK/pezcumulus/teyrchains/runtimes/people/people-zagros/src/lib.rs`
**Spec Name:** `people-zagros`
**Spec Version:** 1_020_001
**Benchmarks:** ✅ Yes
@@ -417,7 +411,6 @@
## 7. Penpal Test Teyrchain Runtime
**Location:** `/home/mamostehp/Pezkuwi-SDK/pezcumulus/teyrchains/runtimes/testing/penpal/src/lib.rs`
**Spec Name:** `penpal-teyrchain`
**Spec Version:** 1
**Benchmarks:** ⚠️ Limited
@@ -454,7 +447,6 @@
## 8. PezkuwiChain Test Teyrchain Runtime
**Location:** `/home/mamostehp/Pezkuwi-SDK/pezcumulus/teyrchains/runtimes/testing/pezkuwichain-teyrchain/src/lib.rs`
**Spec Name:** `test-teyrchain`
**Spec Version:** 1_020_001
**Benchmarks:** ❌ No
@@ -525,85 +517,71 @@
## Custom Pallets Details
### 1. **pezpallet-pez-treasury** 💰
- **Location:** `/home/mamostehp/Pezkuwi-SDK/pezcumulus/teyrchains/pezpallets/pez-treasury`
- **Runtime:** Asset Hub PezkuwiChain
- **Purpose:** PEZ token treasury management and distribution
- **Benchmarks:** ✅ Yes
### 2. **pezpallet-presale** 🎫
- **Location:** `/home/mamostehp/Pezkuwi-SDK/pezcumulus/teyrchains/pezpallets/presale`
- **Runtime:** Asset Hub PezkuwiChain
- **Purpose:** Token presale management
- **Benchmarks:** ✅ Yes
### 3. **pezpallet-token-wrapper** 🔄
- **Location:** `/home/mamostehp/Pezkuwi-SDK/pezcumulus/teyrchains/pezpallets/token-wrapper`
- **Runtime:** Asset Hub PezkuwiChain
- **Purpose:** Token wrapping/unwrapping functionality
- **Benchmarks:** ✅ Yes
### 4. **pezpallet-identity-kyc** 🆔
- **Location:** `/home/mamostehp/Pezkuwi-SDK/pezcumulus/teyrchains/pezpallets/identity-kyc`
- **Runtime:** People PezkuwiChain
- **Purpose:** Enhanced identity with KYC capabilities
- **Benchmarks:** ✅ Yes
### 5. **pezpallet-referral** 🤝
- **Location:** `/home/mamostehp/Pezkuwi-SDK/pezcumulus/teyrchains/pezpallets/referral`
- **Runtime:** People PezkuwiChain
- **Purpose:** Referral program management
- **Benchmarks:** ✅ Yes
### 6. **pezpallet-perwerde** 📚
- **Location:** `/home/mamostehp/Pezkuwi-SDK/pezcumulus/teyrchains/pezpallets/perwerde`
- **Runtime:** People PezkuwiChain
- **Purpose:** Educational credentials and achievements
- **Benchmarks:** ✅ Yes
### 7. **pezpallet-tiki** 🎖️
- **Location:** `/home/mamostehp/Pezkuwi-SDK/pezcumulus/teyrchains/pezpallets/tiki`
- **Runtime:** People PezkuwiChain
- **Purpose:** Role-based NFT badges system
- **Benchmarks:** ✅ Yes
### 8. **pezpallet-welati** 🏛️
- **Location:** `/home/mamostehp/Pezkuwi-SDK/pezcumulus/teyrchains/pezpallets/welati`
- **Runtime:** People PezkuwiChain
- **Purpose:** PezkuwiChain governance (Serok, Parlement, Diwan)
- **Benchmarks:** ✅ Yes
### 9. **pezpallet-staking-score** 📊
- **Location:** `/home/mamostehp/Pezkuwi-SDK/pezcumulus/teyrchains/pezpallets/staking-score`
- **Runtime:** People PezkuwiChain
- **Purpose:** Trust and participation scoring
- **Benchmarks:** ✅ Yes
### 10. **pezpallet-trust** 🛡️
- **Location:** `/home/mamostehp/Pezkuwi-SDK/pezcumulus/teyrchains/pezpallets/trust`
- **Runtime:** People PezkuwiChain
- **Purpose:** Trust-based interactions and reputation
- **Benchmarks:** ✅ Yes
### 11. **pezpallet-pez-rewards** 🎁
- **Location:** `/home/mamostehp/Pezkuwi-SDK/pezcumulus/teyrchains/pezpallets/pez-rewards`
- **Runtime:** People PezkuwiChain
- **Purpose:** PEZ token rewards distribution
- **Benchmarks:** ✅ Yes
### 12. **pezpallet-validator-pool** ⛏️
- **Location:** `/home/mamostehp/Pezkuwi-SDK/pezkuwi/pallets/validator-pool`
- **Runtime:** PezkuwiChain Relay Chain
- **Purpose:** TNPoS validator pool (shadow mode, runs parallel to NPoS)
- **Benchmarks:** ❌ No
### 13. **pezpallet-collective-content** 📝
- **Location:** `/home/mamostehp/Pezkuwi-SDK/pezcumulus/teyrchains/pezpallets/collective-content`
- **Runtime:** None (not integrated yet)
- **Purpose:** Content management for collectives
- **Benchmarks:** ❌ No
### 14. **teyrchain-info**
- **Location:** `/home/mamostehp/Pezkuwi-SDK/pezcumulus/teyrchains/pezpallets/teyrchain-info`
- **Runtime:** All teyrchain runtimes
- **Purpose:** Provides teyrchain ID information
- **Benchmarks:** ❌ No (infrastructure pezpallet)
-192
View File
@@ -1,192 +0,0 @@
#!/usr/bin/env python3
"""
Eski (rebrand edilmemiş) kelimeleri tarayan script.
Her crate için çalıştırılır ve kalan eski kelimeleri tespit eder.
Kullanım:
python3 scan_old_words.py <crate_path>
python3 scan_old_words.py /home/mamostehp/kurdistan-sdk/bizinikiwi/primitives/core
"""
import os
import sys
import re
from pathlib import Path
# Rebrand kuralları: (eski_pattern, yeni_kelime, açıklama)
# Sıralama önemli - daha spesifik olanlar önce
REBRAND_RULES = [
# Terminoloji
(r'\bparachain\b', 'teyrchain', 'parachain → teyrchain'),
(r'\bParachain\b', 'Teyrchain', 'Parachain → Teyrchain'),
(r'\bPARACHAIN\b', 'TEYRCHAIN', 'PARACHAIN → TEYRCHAIN'),
(r'\brococo\b', 'pezkuwichain', 'rococo → pezkuwichain'),
(r'\bRococo\b', 'Pezkuwichain', 'Rococo → Pezkuwichain'),
(r'\bROCOCO\b', 'PEZKUWICHAIN', 'ROCOCO → PEZKUWICHAIN'),
(r'\bwestend\b', 'zagros', 'westend → zagros'),
(r'\bWestend\b', 'Zagros', 'Westend → Zagros'),
(r'\bWESTEND\b', 'ZAGROS', 'WESTEND → ZAGROS'),
(r'\bkusama\b', 'zagros', 'kusama → zagros'),
(r'\bKusama\b', 'Zagros', 'Kusama → Zagros'),
(r'\bKUSAMA\b', 'ZAGROS', 'KUSAMA → ZAGROS'),
# Crate prefix'leri (Cargo.toml name ve use statement'larda)
# Dikkat: Bunlar sadece crate isimlerinde geçerli, rastgele "sp_" değil
(r'\bsp-core\b', 'pezsp-core', 'sp-core → pezsp-core'),
(r'\bsp-runtime\b', 'pezsp-runtime', 'sp-runtime → pezsp-runtime'),
(r'\bsp-io\b', 'pezsp-io', 'sp-io → pezsp-io'),
(r'\bsp-std\b', 'pezsp-std', 'sp-std → pezsp-std'),
(r'\bsp-api\b', 'pezsp-api', 'sp-api → pezsp-api'),
(r'\bsc-client\b', 'pezsc-client', 'sc-client → pezsc-client'),
(r'\bsc-service\b', 'pezsc-service', 'sc-service → pezsc-service'),
(r'\bframe-support\b', 'pezframe-support', 'frame-support → pezframe-support'),
(r'\bframe-system\b', 'pezframe-system', 'frame-system → pezframe-system'),
(r'\bpallet-balances\b', 'pezpallet-balances', 'pallet-balances → pezpallet-balances'),
(r'\bcumulus-client\b', 'pezcumulus-client', 'cumulus-client → pezcumulus-client'),
(r'\bcumulus-primitives\b', 'pezcumulus-primitives', 'cumulus-primitives → pezcumulus-primitives'),
# Snowbridge (pezsnowbridge-pezpallet önce, sonra genel snowbridge)
(r'\bsnowbridge-pezpallet-', 'pezsnowbridge-pezpallet-', 'snowbridge-pezpallet- → pezsnowbridge-pezpallet-'),
(r'\bsnowbridge-pallet-', 'pezsnowbridge-pezpallet-', 'snowbridge-pallet- → pezsnowbridge-pezpallet-'),
(r'\bsnowbridge-', 'pezsnowbridge-', 'snowbridge- → pezsnowbridge-'),
(r'\bsnowbridge_pallet_', 'pezsnowbridge_pezpallet_', 'snowbridge_pallet_ → pezsnowbridge_pezpallet_'),
(r'\bsnowbridge_pezpallet_', 'pezsnowbridge_pezpallet_', 'snowbridge_pezpallet_ → pezsnowbridge_pezpallet_'),
# Bridge
(r'\bbridge-hub-rococo\b', 'pezbridge-hub-pezkuwichain', 'bridge-hub-rococo → pezbridge-hub-pezkuwichain'),
(r'\bbridge-hub-westend\b', 'pezbridge-hub-zagros', 'bridge-hub-westend → pezbridge-hub-zagros'),
(r'\bbridge-runtime-common\b', 'pezbridge-runtime-common', 'bridge-runtime-common → pezbridge-runtime-common'),
# MMR
(r'\bmmr-gadget\b', 'pezmmr-gadget', 'mmr-gadget → pezmmr-gadget'),
(r'\bmmr-rpc\b', 'pezmmr-rpc', 'mmr-rpc → pezmmr-rpc'),
# Substrate (dikkatli - sadece proje referanslarında)
(r'\bsubstrate-wasm-builder\b', 'bizinikiwi-wasm-builder', 'substrate-wasm-builder → bizinikiwi-wasm-builder'),
(r'\bsubstrate-build-script-utils\b', 'bizinikiwi-build-script-utils', 'substrate-build-script-utils → bizinikiwi-build-script-utils'),
# Polkadot referansları
(r'\bpolkadot-sdk\b', 'pezkuwi-sdk', 'polkadot-sdk → pezkuwi-sdk'),
(r'\bpolkadot-runtime\b', 'pezkuwichain-runtime', 'polkadot-runtime → pezkuwichain-runtime'),
(r'\bpolkadot-primitives\b', 'pezkuwi-primitives', 'polkadot-primitives → pezkuwi-primitives'),
# Rust module isimleri (underscore versiyonları)
(r'\bsp_core\b', 'pezsp_core', 'sp_core → pezsp_core'),
(r'\bsp_runtime\b', 'pezsp_runtime', 'sp_runtime → pezsp_runtime'),
(r'\bsp_io\b', 'pezsp_io', 'sp_io → pezsp_io'),
(r'\bsc_client\b', 'pezsc_client', 'sc_client → pezsc_client'),
(r'\bframe_support\b', 'pezframe_support', 'frame_support → pezframe_support'),
(r'\bframe_system\b', 'pezframe_system', 'frame_system → pezframe_system'),
(r'\bpallet_balances\b', 'pezpallet_balances', 'pallet_balances → pezpallet_balances'),
(r'\bcumulus_client\b', 'pezcumulus_client', 'cumulus_client → pezcumulus_client'),
(r'\bcumulus_primitives\b', 'pezcumulus_primitives', 'cumulus_primitives → pezcumulus_primitives'),
]
# Taranacak dosya uzantıları
SCAN_EXTENSIONS = {'.rs', '.toml', '.md', '.json', '.yaml', '.yml'}
# Atlanacak dizinler
SKIP_DIRS = {'target', '.git', 'node_modules', 'crate_placeholders'}
def scan_file(file_path: Path) -> list:
"""Tek bir dosyayı tarar ve bulunan eski kelimeleri döndürür."""
findings = []
try:
content = file_path.read_text(encoding='utf-8', errors='ignore')
except Exception as e:
return [(str(file_path), 0, f"OKUMA HATASI: {e}", "", "")]
lines = content.split('\n')
for line_num, line in enumerate(lines, 1):
for pattern, replacement, description in REBRAND_RULES:
matches = re.finditer(pattern, line)
for match in matches:
findings.append({
'file': str(file_path),
'line': line_num,
'column': match.start() + 1,
'found': match.group(),
'replacement': replacement,
'description': description,
'context': line.strip()[:100]
})
return findings
def scan_crate(crate_path: str) -> list:
"""Bir crate dizinini tarar."""
crate_dir = Path(crate_path)
if not crate_dir.exists():
print(f"HATA: Dizin bulunamadı: {crate_path}")
return []
all_findings = []
for root, dirs, files in os.walk(crate_dir):
# Skip directories
dirs[:] = [d for d in dirs if d not in SKIP_DIRS]
for file in files:
file_path = Path(root) / file
if file_path.suffix not in SCAN_EXTENSIONS:
continue
findings = scan_file(file_path)
all_findings.extend(findings)
return all_findings
def print_report(findings: list, crate_path: str):
"""Bulunan eski kelimelerin raporunu yazdırır."""
print(f"\n{'='*60}")
print(f"TARAMA RAPORU: {crate_path}")
print(f"{'='*60}\n")
if not findings:
print("✅ ESKİ KELİME BULUNAMADI - Crate temiz!")
return
print(f"{len(findings)} adet eski kelime bulundu:\n")
# Dosyaya göre grupla
by_file = {}
for f in findings:
if f['file'] not in by_file:
by_file[f['file']] = []
by_file[f['file']].append(f)
for file_path, file_findings in sorted(by_file.items()):
rel_path = file_path.replace(crate_path, '.')
print(f"\n📄 {rel_path}")
print(f" {'-'*50}")
for finding in file_findings:
print(f" Satır {finding['line']}: {finding['found']}{finding['replacement']}")
print(f" Bağlam: {finding['context']}")
print()
def main():
if len(sys.argv) < 2:
print("Kullanım: python3 scan_old_words.py <crate_path>")
print("Örnek: python3 scan_old_words.py ./bizinikiwi/primitives/core")
sys.exit(1)
crate_path = sys.argv[1]
findings = scan_crate(crate_path)
print_report(findings, crate_path)
# Çıkış kodu: bulgu varsa 1, yoksa 0
sys.exit(1 if findings else 0)
if __name__ == "__main__":
main()
-447
View File
@@ -1,447 +0,0 @@
# Pezkuwi SDK - Workflow Rebranding Raporu
## Genel Bakış
Bu belge, Pezkuwi SDK'daki 74 workflow dosyasının kapsamlı analizini ve rebranding planını içerir.
**Analiz Tarihi:** 2025-12-03
**Toplam Workflow Sayısı:** 74
**Rebranding Gerektiren Dosya Sayısı:** 33 (64 referans)
---
## Terminoloji Dönüşüm Tablosu
| Eski Terim | Yeni Terim | Açıklama |
| --- | --- | --- |
| `polkadot` | `pezkuwi` | Ana zincir referansları |
| `polkadot-sdk` | `pezkuwi-sdk` | SDK referansları |
| `paritytech` | `pezkuwichain` | Organizasyon adı |
| `parachain` | `teyrchain` | Alt zincir terminolojisi |
| `rococo` | `pezkuwichain` | Test ağı |
| `westend` | `zagros` | Test ağı |
| `dicle` | `zagros` | Canary ağı |
---
## Workflow Kategorileri
### 1. CI/CD Kontrolleri (12 dosya)
| Dosya | Amaç | Rebranding Durumu | Öncelik |
| --- | --- | --- | --- |
| `checks.yml` | Clippy, try-runtime kontrolleri | 1 referans | YÜKSEK |
| `checks-quick.yml` | Format, zepter, toml kontrolleri | 3 referans | YÜKSEK |
| `check-prdoc.yml` | PR dokümantasyon kontrolü | 1 referans | ORTA |
| `check-semver.yml` | SemVer kontrolü | 2 referans | ORTA |
| `check-licenses.yml` | Lisans taraması | 8 referans | YÜKSEK |
| `check-labels.yml` | Etiket kontrolü | 1 referans | ORTA |
| `check-links.yml` | Link kontrolü | 0 referans | TAMAM |
| `check-runtime-compatibility.yml` | Runtime uyumluluk | 1 referans | YÜKSEK |
| `check-runtime-migration.yml` | Runtime migration testi | 1 referans | YÜKSEK |
| `check-cargo-check-runtimes.yml` | Cargo check | 0 referans | TAMAM |
| `check-frame-omni-bencher.yml` | Benchmark kontrolü | 0 referans | TAMAM |
| `check-getting-started.yml` | Başlangıç kontrolü | 0 referans | TAMAM |
### 2. Test Workflow'ları (7 dosya)
| Dosya | Amaç | Rebranding Durumu | Öncelik |
| --- | --- | --- | --- |
| `tests.yml` | Ana test suite | 0 referans | TAMAM |
| `tests-linux-stable.yml` | Linux stable testleri | 1 referans | ORTA |
| `tests-linux-stable-coverage.yml` | Coverage testleri | 0 referans | TAMAM |
| `tests-linux-stable-xp.yml` | XP testleri | 0 referans | TAMAM |
| `tests-misc.yml` | Misc testler | 4 referans | YÜKSEK |
| `tests-evm.yml` | EVM testleri | 4 referans | YÜKSEK |
| `cmd-tests.yml` | CMD testleri | 0 referans | TAMAM |
### 3. Build & Publish (5 dosya)
| Dosya | Amaç | Rebranding Durumu | Öncelik |
| --- | --- | --- | --- |
| `build-publish-images.yml` | Docker image build | 5 referans | KRİTİK |
| `build-publish-eth-rpc.yml` | ETH RPC build | 0 referans | TAMAM |
| `build-misc.yml` | Misc build işlemleri | 0 referans | TAMAM |
| `publish-check-compile.yml` | Compile kontrolü | 0 referans | TAMAM |
| `publish-check-crates.yml` | Crate kontrolü | 0 referans | TAMAM |
### 4. Release Workflow'ları (17 dosya)
| Dosya | Amaç | Rebranding Durumu | Öncelik |
| --- | --- | --- | --- |
| `release-10_branchoff-stable.yml` | Stable branch oluşturma | 1 referans | YÜKSEK |
| `release-11_rc-automation.yml` | RC otomasyonu | 1 referans | YÜKSEK |
| `release-20_build-rc.yml` | RC build | 1 referans | YÜKSEK |
| `release-21_build-runtimes.yml` | Runtime build | 1 referans | YÜKSEK |
| `release-22_combined-rc-runtime-builds-release-draft.yml` | Combined RC build | 1 referans | YÜKSEK |
| `release-30_publish_release_draft.yml` | Release draft yayınlama | 2 referans | YÜKSEK |
| `release-31_promote-rc-to-final.yml` | RC'yi finale promote | 1 referans | YÜKSEK |
| `release-40_publish-deb-package.yml` | DEB paket yayınlama | 0 referans | TAMAM |
| `release-41_publish-rpm-package.yml` | RPM paket yayınlama | 0 referans | TAMAM |
| `release-50_publish-docker.yml` | Docker yayınlama | 2 referans | YÜKSEK |
| `release-60_create-old-release-tag.yml` | Eski release tag | 1 referans | ORTA |
| `release-60_post-crates-release-activities.yml` | Post-release aktiviteler | 1 referans | ORTA |
| `release-70_combined-publish-release.yml` | Combined release | 1 referans | YÜKSEK |
| `release-99_notif-published.yml` | Release bildirimi | 3 referans | KRİTİK |
| `release-build-binary.yml` | Binary build | 0 referans | TAMAM |
| `release-check-runtimes.yml` | Runtime kontrolü | 0 referans | TAMAM |
| `release-srtool.yml` | SRTool build | 0 referans | TAMAM |
### 5. Reusable Workflow'lar (5 dosya)
| Dosya | Amaç | Rebranding Durumu | Öncelik |
| --- | --- | --- | --- |
| `reusable-preflight.yml` | Preflight kontrolleri | 2 referans | YÜKSEK |
| `reusable-isdraft.yml` | Draft kontrolü | 0 referans | TAMAM |
| `release-reusable-rc-build.yml` | RC build reusable | 3 referans | YÜKSEK |
| `release-reusable-publish-packages.yml` | Paket yayınlama | 2 referans | YÜKSEK |
| `release-reusable-s3-upload.yml` | S3 upload | 0 referans | TAMAM |
| `release-reusable-promote-to-final.yml` | Promote reusable | 0 referans | TAMAM |
### 6. Zombienet Workflow'ları (5 dosya)
| Dosya | Amaç | Rebranding Durumu | Öncelik |
| --- | --- | --- | --- |
| `zombienet_pezkuwi.yml` | Pezkuwi zombienet testleri | 0 referans | TAMAM |
| `zombienet_cumulus.yml` | Pezcumulus zombienet testleri | 0 referans | TAMAM |
| `zombienet_bizinikiwi.yml` | Bizinikiwi zombienet testleri | 0 referans | TAMAM |
| `zombienet_teyrchain-template.yml` | Teyrchain template testleri | 0 referans | TAMAM |
| `zombienet-reusable-preflight.yml` | Zombienet preflight | 0 referans | TAMAM |
| `check-zombienet-flaky-tests.yml` | Flaky test kontrolü | 0 referans | TAMAM |
### 7. Command & Bot Workflow'ları (7 dosya)
| Dosya | Amaç | Rebranding Durumu | Öncelik |
| --- | --- | --- | --- |
| `cmd.yml` | Command işleyici | 1 referans | ORTA |
| `cmd-run.yml` | Command çalıştırıcı | 0 referans | TAMAM |
| `command-backport.yml` | Backport command | 0 referans | TAMAM |
| `command-inform.yml` | Inform command | 0 referans | TAMAM |
| `command-prdoc.yml` | PRDoc command | 0 referans | TAMAM |
| `review-bot.yml` | Review bot | 3 referans | YÜKSEK |
| `review-trigger.yml` | Review trigger | 0 referans | TAMAM |
### 8. Misc Workflow'lar (9 dosya)
| Dosya | Amaç | Rebranding Durumu | Öncelik |
| --- | --- | --- | --- |
| `docs.yml` | Dokümantasyon | 1 referans | ORTA |
| `fork-sync-action.yml` | Fork senkronizasyonu | 1 referans | ORTA |
| `gitspiegel-trigger.yml` | Git mirror trigger | 0 referans | TAMAM |
| `issues-auto-add-teyrchain.yml` | Issue otomatik ekleme | 1 referans | ORTA |
| `issues-auto-label.yml` | Issue otomatik etiketleme | 0 referans | TAMAM |
| `misc-notify-burnin-label.yml` | Burnin label bildirimi | 0 referans | TAMAM |
| `misc-review-bot-merge-queue.yml` | Merge queue review | 0 referans | TAMAM |
| `misc-sync-templates.yml` | Template senkronizasyonu | 2 referans | YÜKSEK |
| `misc-update-wishlist-leaderboard.yml` | Wishlist güncelleme | 0 referans | TAMAM |
| `publish-claim-crates.yml` | Crate claim | 0 referans | TAMAM |
### 9. Benchmark Workflow'ları (3 dosya)
| Dosya | Amaç | Rebranding Durumu | Öncelik |
| --- | --- | --- | --- |
| `bench-all-runtimes.yml` | Tüm runtime benchmarks | 0 referans | TAMAM |
| `benchmarks-networking.yml` | Network benchmarks | 0 referans | TAMAM |
| `benchmarks-subsystem.yml` | Subsystem benchmarks | 0 referans | TAMAM |
---
## Detaylı Değişiklik Listesi
### KRİTİK - Hemen Değiştirilmeli
#### 1. `build-publish-images.yml` (5 değişiklik)
```yaml
# Satır 359: polkadot klasör yolu
cargo nextest --manifest-path polkadot/zombienet-sdk-tests/Cargo.toml ...
# DEĞİŞTİR: polkadot → pezkuwi (klasör yeniden adlandırılmadıysa bırakılabilir)
# Satır 363: Artifact adı
cp polkadot-zombienet-tests.tar.zst ./artifacts
# DEĞİŞTİR: pezkuwi-zombienet-tests.tar.zst
# Satır 463: Job adı
build-push-image-polkadot-debug:
# DEĞİŞTİR: build-push-image-pezkuwi-debug
# Satır 481: Image adı
image-name: "polkadot-debug"
# DEĞİŞTİR: image-name: "pezkuwi-debug"
# Satır 482: Dockerfile yolu
dockerfile: "docker/dockerfiles/polkadot/polkadot_injected_debug.Dockerfile"
# DEĞİŞTİR: dockerfile: "docker/dockerfiles/pezkuwi/pezkuwi_injected_debug.Dockerfile"
```
#### 2. `release-99_notif-published.yml` (3 değişiklik - Matrix odaları)
```yaml
# Satır 26-32: Matrix odaları - PEZKUWI ODALARINA DEĞİŞTİRİLMELİ
- name: '#polkadotvalidatorlounge:web3.foundation' # KALDIR
- name: '#polkadot-announcements:parity.io' # KALDIR
- name: '#dicle-announce:parity.io' # KALDIR
# YENİ: Pezkuwi Discord/Matrix odaları eklenecek
- name: '#pezkuwi-announcements:pezkuwichain.io'
```
#### 3. `check-licenses.yml` (8 değişiklik - NPM paketi)
```yaml
# Satır 32, 70: scope
scope: "@paritytech"
# DEĞİŞTİR: scope: "@pezkuwichain"
# Satır 37, 45, 53, 75, 83, 91: License scanner
npx @paritytech/license-scanner scan ...
# NOT: Bu paket paritytech'e ait. Alternatif bulunmalı veya fork edilmeli.
```
### YÜKSEK ÖNCELİK
#### 4. `reusable-preflight.yml` (2 değişiklik - Yorum)
```yaml
# Satır 31, 99: Yorum satırları - runner dokümantasyonu
# DEĞİŞTİR: Yorum güncellenebilir veya kaldırılabilir (işlevsel değil)
```
#### 5. `checks-quick.yml` (3 değişiklik)
```yaml
# Satır 116: npm scope
scope: "@paritytech"
# DEĞİŞTİR: scope: "@pezkuwichain"
# Satır 183-184: Docker image
image: "paritytech/tools:latest"
# paritytech/tools uses "nonroot" user
# NOT: Bu image paritytech'e ait. Alternatif gerekli.
```
#### 6. `review-bot.yml` (3 değişiklik - DEVRE DIŞI)
```yaml
# Satır 31, 33, 41: Review bot devre dışı
# Bu workflow zaten devre dışı bırakılmış - paritytech bağımlılığı nedeniyle
# ÖNERİ: Pezkuwi için kendi review bot'u kurulabilir
```
#### 7. `tests-misc.yml` (4 değişiklik)
```yaml
# Satır 24: Yorum - bizinikiwi PR referansı
# https://github.com/pezkuwichain/pezkuwi-sdk/issues/54
# DEĞİŞTİR: https://github.com/paritytech/polkadot-sdk/pull/XXX (veya kaldır)
# Satır 204: Docker image
paritytech/pez-node-bench-regression-guard:latest
# NOT: Bu image paritytech'e ait. Fork veya alternatif gerekli.
# Satır 248: Yorum
# https://github.com/pezkuwichain/pezkuwi-sdk/issues/58
# DEĞİŞTİR: Güncellenebilir
# Satır 385: Revive URL (BIRAKILMALI - harici dependency)
https://github.com/paritytech/revive/releases/...
```
#### 8. `tests-evm.yml` (4 değişiklik - Harici Dependency)
```yaml
# Satır 43, 53, 63, 128: Revive ve EVM test suite
# BIRAKILMALI - Bunlar harici Parity projeleri, fork edilmemiş
# Revive compiler ve EVM test suite Parity'ye ait
```
### ORTA ÖNCELİK
#### 9. `misc-sync-templates.yml` (2 değişiklik)
```yaml
# Satır 7: Yorum - parachain template
# - https://github.com/pezkuwichain/pezkuwi-sdk-teyrchain-template
# DEĞİŞTİR: - https://github.com/pezkuwichain/pezkuwi-sdk/issues/25
# Satır 132: PSVM aracı
cargo install --git https://github.com/pezkuwichain/psvm psvm
# NOT: PSVM Parity aracı - kullanılıyorsa fork edilmeli
```
#### 10. `check-semver.yml` (2 değişiklik - Yorum/Link)
```yaml
# Satır 151, 174: Forum linkleri
- https://forum.polkadot.network/t/psa-polkadot-sdk-to-use-semver
# DEĞİŞTİR: Pezkuwi forum linki veya kaldırılabilir
```
#### 11. `check-runtime-compatibility.yml` (1 değişiklik)
```yaml
# Satır 89: Polkadot API npm paketi
npx @polkadot-api/check-runtime@latest ...
# NOT: Bu paket Polkadot için. Pezkuwi uyumluluğu kontrol edilmeli.
```
#### 12. `check-runtime-migration.yml` (1 değişiklik)
```yaml
# Satır 89: Try-runtime CLI
curl -sL https://github.com/pezkuwichain/try-runtime-cli/releases/...
# NOT: Try-runtime CLI Parity'ye ait. Fork veya uyumluluk kontrolü gerekli.
```
---
## Geliştirme ve Testnet Aşamaları İçin Davranış Planı
### DEV Aşaması (Mevcut)
**Trigger Kuralları:**
- `push` to `main` branch
- `pull_request` events
- `merge_group` events
**Önerilen Değişiklikler:**
1. Tüm workflow'lar `main` branch'te tetiklenmeli
2. Ağır testler (zombienet, benchmarks) sadece manuel tetiklenebilir
3. Quick-checks her PR'da zorunlu
```yaml
# DEV aşaması için önerilen trigger
on:
push:
branches: [main, develop]
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
merge_group:
```
### LOCAL Aşaması (2 Validator)
**Ek Workflow'lar:**
- Dual validator testleri
- Peer discovery testleri
- Consensus testleri
### ALPHA/BETA Aşamaları
**Değişiklikler:**
1. Release workflow'ları aktif
2. Docker image'ları DockerHub'a push
3. Binary artifact'lar release'lere eklenir
```yaml
# ALPHA/BETA için release trigger
on:
push:
tags:
- 'v*-alpha*'
- 'v*-beta*'
```
### STAGING/TESTNET Aşaması
**Değişiklikler:**
1. Tam zombienet test suite çalışır
2. Runtime upgrade testleri
3. Migration testleri zorunlu
```yaml
# TESTNET için trigger
on:
push:
tags:
- 'v*-staging*'
- 'v*-testnet*'
```
### MAINNET Aşaması
**Değişiklikler:**
1. Tüm güvenlik kontrolleri zorunlu
2. Dual sign-off gerekli
3. Canary deployment workflow'u aktif
---
## Harici Bağımlılıklar ve Alternatifler
### Değiştirilemeyecek Bağımlılıklar
Bu bağımlılıklar Parity ekosisteminin parçası ve fork edilmesi pratik değil:
| Dependency | Kullanım Yeri | Öneri |
| --- | --- | --- |
| `@polkadot-api/check-runtime` | Runtime uyumluluk | Uyumluluk testi yap, muhtemelen çalışır |
| `paritytech/revive` | EVM testleri | Harici olarak bırak |
| `pezkuwichain/try-runtime-cli` | Migration testleri | Bizinikiwi fork'u olduğu için muhtemelen uyumlu |
| `paritytech/evm-test-suite` | EVM testleri | Harici olarak bırak |
### Fork Edilmesi Gerekenler
| Tool | Öncelik | Sebep |
| --- | --- | --- |
| `paritytech/tools` Docker image | YÜKSEK | CI container'ı |
| `paritytech/pez-node-bench-regression-guard` | ORTA | Benchmark regresyon kontrolü |
| `@paritytech/license-scanner` | DÜŞÜK | Lisans taraması |
| `pezkuwichain/psvm` | DÜŞÜK | Version yönetimi |
### Oluşturulması Gerekenler
| Kaynak | Öncelik | Açıklama |
| --- | --- | --- |
| Pezkuwi Matrix/Discord odaları | YÜKSEK | Release bildirimleri için |
| `pezkuwichain/tools` Docker image | YÜKSEK | CI için |
| Pezkuwi DockerHub registry | YÜKSEK | Image depolama |
---
## Uygulama Planı
### Faz 1 - Kritik Değişiklikler (Hemen)
1. [ ] `build-publish-images.yml` - polkadot→pezkuwi değişiklikleri
2. [ ] `release-99_notif-published.yml` - Matrix odaları güncelle/devre dışı bırak
3. [ ] Runner konfigürasyonu (ubuntu-latest kullanımı) - ZATEN YAPILDI
### Faz 2 - Yüksek Öncelik (1 Hafta İçinde)
1. [ ] `check-licenses.yml` - License scanner alternatifi
2. [ ] `checks-quick.yml` - NPM scope ve Docker image
3. [ ] `reusable-preflight.yml` - Yorum güncellemeleri
4. [ ] `review-bot.yml` - Pezkuwi review bot kurulumu (opsiyonel)
### Faz 3 - Orta Öncelik (2 Hafta İçinde)
1. [ ] Tüm yorum satırlarında paritytech→pezkuwichain
2. [ ] GitHub PR/issue link güncellemeleri
3. [ ] `misc-sync-templates.yml` - Template senkronizasyonu
### Faz 4 - Düşük Öncelik (İleride)
1. [ ] Forum linkleri (kendi forum kurulduktan sonra)
2. [ ] Harici tool fork'ları
3. [ ] NPM paket fork'ları
---
## Özet
| Kategori | Dosya Sayısı | Değişiklik Gereken | Tamam |
| --- | --- | --- | --- |
| CI/CD Kontrolleri | 12 | 7 | 5 |
| Test Workflow'ları | 7 | 3 | 4 |
| Build & Publish | 5 | 1 | 4 |
| Release Workflow'ları | 17 | 11 | 6 |
| Reusable Workflow'lar | 6 | 3 | 3 |
| Zombienet | 6 | 0 | 6 |
| Command & Bot | 7 | 2 | 5 |
| Misc | 10 | 4 | 6 |
| Benchmark | 3 | 0 | 3 |
| **TOPLAM** | **74** | **33** | **41** |
**Sonuç:** 74 workflow dosyasından 33'ü rebranding gerektiriyor. Bunların çoğu yorum satırları ve harici bağımlılıklar. Kritik işlevsel değişiklik gerektiren sadece 5-6 dosya var.