Lineage + fork tree — kim kimden türedi
Her fork, yönlü grafikte bir ebeveyn-çocuk kenarıdır; lineage sorguları soy zinciri (ancestry), torunlar (descendants) ve atfetme (attribution) zincirini döndürür.
Bir persona'yı fork'ladığında kopyalarsın — ama grafikte bir kenar da yazarsın. Tüm fork'lar birleşince lineage tree (soy ağacı) çıkar: her persona bir düğüm (node), her fork bir kenar (edge), kök orijinal üretimdir.
Bu ağaç atfetme (attribution), marka varyantı yönetimi ve denetim izi (audit trail) için gereklidir. "Bu ses nereden geldi?" sorusu lineage'ı sorgulayarak belirleyici (deterministik) cevaplanır.
Bu sayfayı bitirdiğinde
- Lineage tree'nin düğüm + kenar anatomisini bileceksin.
- Bir persona'nın
parentPersonaId,rootPersonaId,ancestry,childrenalanlarını ayırt edebileceksin. - Ağacın üç kullanım örneğini (atfetme, varyant yönetimi, denetim izi) tanıyacaksın.
- Lineage'ın ne izlediğini ve ne izlemediğini (sohbet oturumu değil) netleştireceksin.
Ön koşul: Persona düzenleme — refine ve fork mekanikleri.
Neden bir ağaç
Üç ürün ihtiyacı bunu yönlendirir:
1. Atfetme (attribution)
Pazaryerinde bir persona fork'landığında, orijinal yaratıcı aşağı akışta da kredi olarak kalır. Telif payı, lisans uygulama, görünür "fork'lanan kaynak" çipi — hepsi ağaçtan okur.
per_marketplace_listing (yaratıcı: alice)
└── per_workspace_fork_1 (fork eden: bob'un ekibi)
└── per_workspace_fork_2 (bob tarafından cascade refine)per_workspace_fork_2'nin atfetme zinciri [bob'un ekibi, alice] döner.
2. Varyant yönetimi
Resmi / günlük / EN / DE fork'lu bir marka persona'sı, ilişkiler açık olduğunda yönetilebilir olur:
per_brand_canonical
├── per_formal (lock: [soul, self], refine: mask warmer)
├── per_casual (lock: [soul, self], refine: mask colder)
├── per_de (lock: [soul, self, mask], edit: surface.lang=de)
└── per_tr (lock: [soul, self, mask], edit: surface.lang=tr)Marka kalite ekibi her ay varyantların kanoniğe yakınlığını sorgular; lineage tree olmadan bu mümkün değildir.
3. Denetim izi (audit trail)
"Bu ses nereden geldi?" diye soran uyumluluk ekipleri belirleyici cevap alır:
GET /v1/personas/per_workspace_fork_2/lineage
→ ancestry: [per_workspace_fork_1, per_marketplace_listing]
→ root: per_marketplace_listing
→ refines: [
{ from: per_workspace_fork_1, mode: cascade, layer: soul },
{ from: per_marketplace_listing, mode: lock, lockLayers: [soul, self] }
]Lineage nesnesinin şekli
{
"id": "per_b",
"parentPersonaId": "per_a",
"rootPersonaId": "per_a",
"ancestry": ["per_a"],
"children": ["per_c", "per_d"],
"forkAttribution": {
"sourceCreator": "user_alice",
"sourcePersonaId": "per_a",
"license": "CC-BY-4.0"
},
"refineEdge": {
"mode": "lock",
"lockLayers": ["soul", "self", "mask"],
"edits": { "surface.language": "de" }
}
}| Alan | Anlamı |
|---|---|
parentPersonaId | Doğrudan ebeveyn (bir önceki düğüm) |
rootPersonaId | Lineage'ın kökü (kök orijinal üretim) |
ancestry | Köke kadar tüm ata zinciri |
children | Bu persona'dan fork'lanan doğrudan çocuklar |
forkAttribution | Orijinal yaratıcı + lisans |
refineEdge | Bu persona'yı ebeveyninden ayıran refine — mod, katman, düzenlemeler |
Lineage işlemleri
Fork
const child = await client.personas.fork({
id: 'per_a',
refine: { mode: 'lock', lockLayers: ['soul', 'self'] },
});Yeni persona (per_b) oluşur; parentPersonaId: 'per_a', rootPersonaId: 'per_a'.
Lineage listele
const lineage = await client.personas.lineage({
id: 'per_workspace_fork_2',
depth: 'full', // veya 'direct' (sadece ebeveyn + çocuklar)
});Tam grafik (köke kadar yukarı + tüm torunlar aşağı) döner.
Soy zinciri (ancestry) sorgusu
const ancestry = await client.personas.ancestry({ id: 'per_b' });
// → [{ id: 'per_a', refineEdge: null, depth: 0 }, ...]distance: 0 kök, distance: N N adım torun.
Drift atfetme
consistency.distinctiveness lineage ile birlikte çalışır: bir fork'u ebeveynine karşı karşılaştırır.
const driftFromParent = await client.personas.compareWithParent({
id: 'per_b',
});Fork ebeveyninden çok uzaksa yapılandırmaya göre warn / block / flag. Marka DNA'sının aile içi yakınlığını korumak için kritik. Detay: Voice variant lineage governance.
Sonlandırma — arşivle ya da sil
90 günden fazla kullanılmamış varyantlar silinmeli değil, arşivlenmelidir:
await client.personas.archive({ id: 'per_old_variant' });API yüzeyi
POST /v1/personas/{id}/fork— yeni düğüm + kenarGET /v1/personas/{id}/lineage— tam grafik, derinlik seçeneğiGET /v1/personas/{id}/ancestry— köke yukarı zincirGET /v1/personas/{id}/descendants— aşağı alt ağaçPOST /v1/personas/{id}/archive— lineage-güvenli sonlandırma
Plan gereksinimi
| Plan | Yetenek |
|---|---|
| Free | Salt-okunur lineage |
| Pro | Fork mekaniği aktif |
| Team | Çalışma alanı içi tüm fork ağacı görüntüleme |
| Enterprise | Organizasyonlar arası atfetme (pazaryeri) |
Pazaryeri fork'ları (üçüncü-taraf listesi → çalışma alanı) kaynak listenin lisansının türetilen ürünlere izin vermesini gerektirir.