---
title: 'Sorumlu Yayımlama'
source: 'https://academia.sh/tr/kurslar/yz-guvenlik-ve-degerlendirme/sorumlu-yayimlama'
course: 'Yapay Zekâ Güvenliği ve Değerlendirme'
language: tr
updated: '2026-08-17T18:06:34+00:00'
license: 'CC BY-SA 4.0'
---

# Sorumlu Yayımlama

Yayımlanan sayının kapsadığının ve kapsamadığının ölçülmesi: eşik 0,50 kurulumu tek bir duyarlılık sayısı yayımlıyor (0,7097) ama sınıf başına okunduğunda aynı savunma 0,9583 ile 0,2105 arasında dağılıyor ve yayımlanan sayı ile en zayıf sınıf arasındaki fark 0,4992 çıkıyor. Dokuz taahhüt üç sınıfta toplanıyor — kullanım sınırı, şeffaflık kalemi ve kötüye kullanım planı — ve dar bir sistem kartı bunların 2'sini sayıya bağlıyor, geniş kart 6'sını; kalan 3 taahhüt hiçbir kartla karşılanmıyor ve iddia olarak kalıyor. Ders M28/K07 kursunun ve M28 müfredatının kapanışıdır: yirmi bir dersin savunmasız tabanı, savunmalı kurulumu ve bedeli tek tabloda toplanır.

Bir önceki derste geri bildirim döngüsünün yanlış alarmı göremediği ölçüldü. Bütün bu sayılar
şimdiye kadar içeride kaldı: kümeyi kuran, göstergeyi okuyan ve eşiği oynatan aynı ekipti. Bir
sistem yayımlandığında dışarıya bir şey söyler — nerede kullanılacağı, neyin ölçüldüğü ve kötüye
kullanıldığında ne yapılacağı. Bu ders o metni ölçer: **bir sistem kartının taşıdığı sayılar,
taşımadığı sayılar ve taşımadığı her sayının ne olduğu.** Koşullar sınıflarıyla anılır: **kullanım
sınırı**, **şeffaflık kalemi**, **kötüye kullanım planı**.

- **DG63.** Kayıtlar, sınıflar, savunma ve taahhüt listesi **kurgudur**. Kayıtların metni tümüyle
  zararsız destek talepleridir ve sınıfla hiçbir ilişkisi yoktur; sınıf yalnızca yapısal öznitelik
  profilinde durur. Küme kursun **240 kaydı**, **93 zararlı**, **147 temiz**.
- **DG64.** Yayımlanan kurulum **model süzgeci, eşik 0,50**'dir.
- **DG65.** **Dar kart** yalnız iki ortalama sayı taşır. **Geniş kart** bunlara sınıf başına
  duyarlılığı, kümenin çözünürlüğünü, insana giden kaydı ve itirazın kapsadığı payı ekler.
- **DG66.** Bir taahhüt, dayandığı ölçü kartta varsa **sayıya bağlıdır**; yoksa **iddia** olarak
  kalır. Ölçüsü bu kursta hiç üretilmemiş taahhütler her iki kartta da iddia kalır.
- **DG67.** Kümenin çözünürlüğü: duyarlılık adımı **1/93 = 0,0108**, yanlış engelleme adımı
  **1/147 = 0,0068**; sınıf başına adım sınıfın kayıt sayısının tersidir ve on kayıtlık sınıfta
  **0,1000**'e çıkar. İkinci koşum kayıt kümesini değiştirmez, yalnız süzgecin **kendi çekilişini**
  tohum **20260219** ile yeniler.

## Kartın Taşıdığı Sayı

```python
# KURGUDUR. Kayitlarin metni tumuyle zararsiz destek talepleridir ve sinifla
# hicbir iliskisi yoktur; sinif yalnizca yapisal ozellik profilinde durur.
TOHUM, M32 = 20260218, 0xFFFFFFFF


def uretec(t):
    x = ((t ^ (t >> 16)) * 2246822507) & M32
    x = ((x ^ (x >> 13)) * 3266489909) & M32
    s = [(x ^ (x >> 16)) & M32]

    def sonraki():
        s[0] = (s[0] * 1664525 + 1013904223) & M32
        return s[0] / 4294967296
    return sonraki


def ayrik(u, w):
    t = 0.0
    for i, x in enumerate(w):
        t += x
        if u < t:
            return i
    return len(w) - 1


def izno(m):
    h = 2166136261
    for c in str(m):
        h = ((h ^ ord(c)) * 16777619) & M32
    return h


SINIF = ["temiz", "dolayli_yonerge", "gizli_alan_istegi", "yetki_asimi",
         "kaynak_taklidi", "bozulmus_girdi"]
KAYNAK = ["kullanici", "erisilen_belge", "arac_ciktisi"]
OZELLIK = ["yonerge_kipi", "rol_degistirme_istegi", "gizli_alan_adi", "yan_etkili_arac_adi",
           "kaynak_damgasi_uyusmuyor", "olagandisi_damga_dagilimi", "asiri_uzunluk"]
PROFIL = {
    "temiz":              [0.06, 0.02, 0.05, 0.03, 0.02, 0.04, 0.05],
    "dolayli_yonerge":    [0.88, 0.42, 0.10, 0.30, 0.35, 0.08, 0.12],
    "gizli_alan_istegi":  [0.35, 0.15, 0.86, 0.12, 0.10, 0.06, 0.08],
    "yetki_asimi":        [0.30, 0.25, 0.12, 0.84, 0.14, 0.05, 0.07],
    "kaynak_taklidi":     [0.22, 0.55, 0.08, 0.10, 0.82, 0.07, 0.06],
    "bozulmus_girdi":     [0.05, 0.03, 0.04, 0.03, 0.06, 0.80, 0.62],
}
KAYNAK_PAYI = {
    "temiz":             [0.72, 0.20, 0.08],
    "dolayli_yonerge":   [0.05, 0.70, 0.25],
    "gizli_alan_istegi": [0.55, 0.30, 0.15],
    "yetki_asimi":       [0.40, 0.35, 0.25],
    "kaynak_taklidi":    [0.10, 0.60, 0.30],
    "bozulmus_girdi":    [0.65, 0.20, 0.15],
}
METIN = ["bu ayki fatura tutari gecen aya gore yuksek geldi",
         "sayac endeksi yanlis girilmis olabilir",
         "mahallede kesinti ne zaman bitecek",
         "tarife basamagimi ogrenmek istiyorum",
         "ariza kaydim icin ekip ne zaman gelir",
         "adres degisikligi nasil yapilir"]
KAYIT = []
for i in range(240):
    r = uretec(TOHUM + 6151 * i)
    s = SINIF[ayrik(r(), [0.62, 0.10, 0.07, 0.07, 0.07, 0.07])]
    kaynak = KAYNAK[ayrik(r(), KAYNAK_PAYI[s])]
    oz = {o: (r() < p) for o, p in zip(OZELLIK, PROFIL[s])}
    KAYIT.append({"no": i + 1, "sinif": s, "kaynak": kaynak, "ozellik": oz,
                  "metin": METIN[int(r() * len(METIN))],
                  "uzunluk": 40 + int(r() * 260)})


def zararli(k):
    return k["sinif"] != "temiz"


AGIRLIK = {"yonerge_kipi": 0.42, "rol_degistirme_istegi": 0.26, "gizli_alan_adi": 0.44,
           "yan_etkili_arac_adi": 0.40, "kaynak_damgasi_uyusmuyor": 0.38,
           "olagandisi_damga_dagilimi": 0.30, "asiri_uzunluk": 0.12}
KAYNAK_EK = {"kullanici": 0.00, "erisilen_belge": 0.18, "arac_ciktisi": 0.12}


def puan(k, tohum=TOHUM):
    p = sum(AGIRLIK[o] for o in OZELLIK if k["ozellik"][o]) + KAYNAK_EK[k["kaynak"]]
    r = uretec(tohum ^ izno(k["no"]))
    return min(max(p + (r() - 0.5) * 0.20, 0.0), 1.6)


def model_suzgeci(k, esik=0.40, tohum=TOHUM):
    return puan(k, tohum) >= esik


def onay_kapisi(k, gerekli=True):
    """Yan etkili arac istegi tasiyan kayit insana sorulur."""
    return gerekli and k["ozellik"]["yan_etkili_arac_adi"]


def olc(kayitlar, karar):
    dp = yp = dn = yn = 0
    for k in kayitlar:
        isaret, gercek = karar(k), zararli(k)
        if isaret and gercek:
            dp += 1
        elif isaret and not gercek:
            yp += 1
        elif not isaret and gercek:
            yn += 1
        else:
            dn += 1
    kesinlik = dp / (dp + yp) if dp + yp else 0.0
    duyarlilik = dp / (dp + yn) if dp + yn else 0.0
    return {"dp": dp, "yp": yp, "yn": yn, "dn": dn,
            "kesinlik": round(kesinlik, 4), "duyarlilik": round(duyarlilik, 4),
            "yanlis_engelleme_payi": round(yp / (yp + dn), 4) if yp + dn else 0.0}


ESIK, IKINCI = 0.50, 20260219                  # kurulu esik , ikinci kosum tohumu
kart = olc(KAYIT, lambda k: model_suzgeci(k, ESIK))
iki = olc(KAYIT, lambda k: model_suzgeci(k, ESIK, IKINCI))
print(f"yayimlanan tek sayi: duyarlilik {kart['duyarlilik']:.4f} , ikinci kosumda"
      f" {iki['duyarlilik']:.4f} (band {iki['duyarlilik'] - kart['duyarlilik']:.4f})")
print(f"yanlis engelleme payi {kart['yanlis_engelleme_payi']:.4f} ve"
      f" {iki['yanlis_engelleme_payi']:.4f}")
print("\nsinif                 kayit  20260218  20260219  cozunurluk")
sinif_duyarlilik = {}
for s in SINIF[1:]:
    ks = [k for k in KAYIT if k["sinif"] == s]
    d = sum(model_suzgeci(k, ESIK) for k in ks) / len(ks)
    d2 = sum(model_suzgeci(k, ESIK, IKINCI) for k in ks) / len(ks)
    sinif_duyarlilik[s] = d
    print(f"{s:<20} {len(ks):>6} {d:>9.4f} {d2:>9.4f} {1 / len(ks):>11.4f}")
en_dusuk = min(sinif_duyarlilik, key=sinif_duyarlilik.get)
print(f"yayimlanan sayi ile en dusuk sinif arasindaki fark:"
      f" {kart['duyarlilik'] - sinif_duyarlilik[en_dusuk]:.4f} ({en_dusuk})")

# ---- Sistem karti: tasidigi olculer. Tasinmayan her olcu bir IDDIA olarak kalir.
DAR = {"durdurulan zararli payi", "yanlis engelleme payi"}
GENIS = DAR | {"sinif basina duyarlilik", "kume cozunurlugu", "insana giden kayit",
               "yanlis alarmin kapsanan payi"}
TAAHHUT = [
    ("kullanim siniri", "belirtilen sinifta kullanilmaz", "sinif basina duyarlilik"),
    ("kullanim siniri", "geri donulemez eylem onay ister", "insana giden kayit"),
    ("kullanim siniri", "sonucun tek dayanagi olmaz", "durdurulan zararli payi"),
    ("seffaflik kalemi", "yanlis engellenen kayit payi", "yanlis engelleme payi"),
    ("seffaflik kalemi", "olcumun cozunurlugu", "kume cozunurlugu"),
    ("seffaflik kalemi", "olcumun yapildigi kume", "kume kapsami"),
    ("kotuye kullanim plani", "itirazin kapsadigi pay", "yanlis alarmin kapsanan payi"),
    ("kotuye kullanim plani", "bozulmanin gorulme gecikmesi", "gosterge gecikmesi"),
    ("kotuye kullanim plani", "denenmemis sinif sayisi", "kapsanmayan sinif"),
]
ok = [k for k in KAYIT if onay_kapisi(k)]
print(f"\ngenis kartin ekledigi sayilar: insana giden kayit {len(ok)} , bunlarin"
      f" {sum(zararli(k) for k in ok)} tanesi zararli ; kume {len(KAYIT)} kayit ,"
      f" duyarlilik adimi {1 / 93:.4f} , yanlis engelleme adimi {1 / 147:.4f}")
print("\ntaahhut sinifi          taahhut                          dar kart  genis kart")
for tur, ne, olcu in TAAHHUT:
    print(f"{tur:<23} {ne:<32} {'sayi' if olcu in DAR else 'iddia':<9}"
          f" {'sayi' if olcu in GENIS else 'iddia'}")
for ad, kart_kume in (("dar", DAR), ("genis", GENIS)):
    var = sum(o in kart_kume for _, _, o in TAAHHUT)
    print(f"{ad} kart: {var}/{len(TAAHHUT)} taahhut sayiya bagli ,"
          f" {len(TAAHHUT) - var} iddia olarak kaliyor")
```

```
yayimlanan tek sayi: duyarlilik 0.7097 , ikinci kosumda 0.7419 (band 0.0322)
yanlis engelleme payi 0.0544 ve 0.0544

sinif                 kayit  20260218  20260219  cozunurluk
dolayli_yonerge          24    0.9583    0.9583      0.0417
gizli_alan_istegi        17    0.7059    0.7059      0.0588
yetki_asimi              10    0.8000    0.8000      0.1000
kaynak_taklidi           23    0.8261    0.8261      0.0435
bozulmus_girdi           19    0.2105    0.3684      0.0526
yayimlanan sayi ile en dusuk sinif arasindaki fark: 0.4992 (bozulmus_girdi)

genis kartin ekledigi sayilar: insana giden kayit 27 , bunlarin 24 tanesi zararli ; kume 240 kayit , duyarlilik adimi 0.0108 , yanlis engelleme adimi 0.0068

taahhut sinifi          taahhut                          dar kart  genis kart
kullanim siniri         belirtilen sinifta kullanilmaz   iddia     sayi
kullanim siniri         geri donulemez eylem onay ister  iddia     sayi
kullanim siniri         sonucun tek dayanagi olmaz       sayi      sayi
seffaflik kalemi        yanlis engellenen kayit payi     sayi      sayi
seffaflik kalemi        olcumun cozunurlugu              iddia     sayi
seffaflik kalemi        olcumun yapildigi kume           iddia     iddia
kotuye kullanim plani   itirazin kapsadigi pay           iddia     sayi
kotuye kullanim plani   bozulmanin gorulme gecikmesi     iddia     iddia
kotuye kullanim plani   denenmemis sinif sayisi          iddia     iddia
dar kart: 2/9 taahhut sayiya bagli , 7 iddia olarak kaliyor
genis kart: 6/9 taahhut sayiya bagli , 3 iddia olarak kaliyor
```

## Kalan İddia

Yayımlanan tek sayı 0,7097'dir ve yanlıştır demek zordur — küme üzerinde doğrudur. Aynı savunma
sınıf başına okunduğunda 0,9583 ile 0,2105 arasında dağılır; yayımlanan sayı ile en zayıf sınıf
arasındaki fark **0,4992**'dir. "Bu sistem şu sınıfta kullanılmaz" cümlesi bir kullanım sınırıdır ve
onu doğrulayacak sayı ortalamanın içinde değil, ancak sınıf satırında bulunur. Dar kart o satırı
taşımadığı için cümle bir **iddia** olarak kalır.

Sınıf satırı ikinci bir şeyi de açıyor. Yayımlanan sayının iki koşum bandı 0,7097 ile 0,7419, yani
üç çözünürlük adımı — ve bandın **tamamı** en zayıf sınıftan gelir: bozulmuş girdi 0,2105 ile 0,3684
arasında oynarken öbür dört sınıfta fark sıfırdır.

Kartı genişletmek dokuz taahhütten dördünü daha sayıya bağlıyor: sınıf satırı, çözünürlük, insana
giden 27 kayıt ve itirazın kapsadığı pay. Kalan üçü hiçbir kartla karşılanmıyor ve bu, kartın kusuru
değil ölçümün durumudur. **Ölçümün yapıldığı kümenin** neyi temsil ettiği, o kümede yapılan hiçbir
ölçümle gösterilemez. **Bozulmanın görülme gecikmesi** iki koşumda 45 ve 220 kayıt çıktı, yani bandı
gecikmenin kendisinden geniş. **Denenmemiş sınıf sayısı** ise ancak denenmiş sınıflar sayılarak
sınırlandırılır; raporda satırı olmayan sınıfın geçen payı sıfır değil bilinmezdir.

Kursun kuralının yayımlama tarafındaki karşılığı budur: **yayımlanan sayının kapsadığı kümeyle
birlikte yazılmadığı yerde, kapsamadığı her şey bir iddiadır.**

## Özet

- Yayımlanan tek ortalama sayı 0,7097'dir; aynı savunma sınıf başına 0,9583 ile 0,2105 arasında
  dağılır ve fark 0,4992'dir.
- Ortalamanın iki koşum bandı 0,0322'dir ve bandın tamamı en zayıf sınıftan gelir; öbür dört
  sınıfta fark sıfırdır.
- Sınıfın çözünürlüğü kayıt sayısının tersidir: on kayıtlık sınıfta 0,1000, yani satır dört
  basamakla yazılsa da o kadar ince okunamaz.
- Dokuz taahhütten dar kart 2'sini, geniş kart 6'sını bir sayıya bağlar; kalan 3'ünün ölçüsü yoktur,
  çünkü kümenin temsili kendi içinden ölçülemez, gösterge gecikmesinin bandı gecikmeden geniştir ve
  denenmemiş sınıfın payı bilinmezdir.

## Kurs Kapanışı

Kurs boyunca ölçülen sayılar tek tabloda. İşaret düzeni tektir: **+** savunmalı kurulumun sayısının
tabandan yüksek, **−** düşük olduğunu gösterir ve iyi ya da kötü demez. Ortak birim taşımayan
satırlarda hangi ölçütle okunduğu ders adının yanında yazılıdır.

| Ders | Savunmasız taban | Savunmalı kurulum | Bedel |
|---|---|---|---|
| `yz-saldiri-yuzeyi/01` — duyarlılık | süzgeçsiz 0,0000 | kural süzgeci 0,7957 (**+0,7957**) | yanlış alarm 0'dan 23'e |
| `yz-saldiri-yuzeyi/02` — duyarlılık | eşik 0,80: 0,4946 | eşik 0,30: 0,9032 (**+0,4086**) | yanlış engelleme 0,0068'den 0,1837'ye |
| `yz-saldiri-yuzeyi/03` — durdurulan sızdırma isteği (35) | süzgeçsiz 0 | tam kural süzgeci 25 (**+25**) | maskelemenin kattığı 0, kalıntı 1 |
| `yz-saldiri-yuzeyi/04` — insana giden zararlı | kapısız 0 | onay kapısı 24 (**+24**) | 3 gereksiz inceleme, duyarlılık 0,2581 |
| `yz-saldiri-yuzeyi/05` — derlemdeki zararlı payı | süzgeçsiz 0,3875 | kural kapısı 0,1329 (**−0,2546**) | 23 temiz kayıt kaybı |
| `yz-saldiri-yuzeyi/06` — çıktıdaki gizli alan | süzgeçsiz 106 | dört adlık çıktı süzgeci 0 (**−106**) | alan kaybeden temiz yanıt 41 |
| `yz-saldiri-yuzeyi/07` — bozulmuş girdide duyarlılık | kural süzgeci 0,2632 | bayrak eklenmiş kural 0,8421 (**+0,5789**) | yanlış alarm 23'ten 30'a |
| `yz-saldiri-yuzeyi/08` — savunmayı geçen pay | dar kampanya 0,1000 | 93 denemelik kapsam 0,2043 (**+0,1043**) | seçim bandı 0,0600, denenmeyen sınıf bilinmez |
| `yz-savunma/01` — kesinlik | kural süzgeci 0,7629 | kural ile model üst üste 0,7551 (**−0,0078**) | yanlış engelleme 0,1565'ten 0,1633'e, duyarlılık aynı |
| `yz-savunma/02` — bozulmuş girdide duyarlılık | kural süzgeci 0,2632 | içerik denetimi 0,8421 (**+0,5789**) | yanlış engelleme 0,1565'ten 0,2177'ye |
| `yz-savunma/03` — temizlenen kayıt | maskelemesiz 0 | bayrak politikası 32 (**+32**) | kırılan görev 23, 7'si temiz abonenin |
| `yz-savunma/04` — durdurulan zararlı | savunmasız 0 | salt okuma 62 (**+62**) | tamamlanan görev 1,0000'dan 0,6667'ye |
| `yz-savunma/05` — etkisizleşen zararlı | işaretlemesiz 0 | işaretleme 42 (**+42**) | yanlış alarm 0, yolunu yitiren temiz kayıt 1 |
| `yz-savunma/06` — yakalanan zararlı | kapısız 0 | dar kapı 24 (**+24**) | 3 gereksiz kesinti; inceleme 0,20'de 4'e iner |
| `yz-degerlendirme/01` — kesinlik (savunma sabit) | temsili küme 0,7629 | sınırda örnek kümesi 0,4444 (**−0,3185**) | yanlış engelleme payı 0,7143 |
| `yz-degerlendirme/02` — insan etiketiyle uyum | ölçüt temelli 0,8250 | model hakem 0,8833 (**+0,0583**) | 0 çağrıdan 246 çağrıya, 10779 belirteç |
| `yz-degerlendirme/03` — değerlendiriciler arası uyum | üç değerli ölçek 0,7583 | örnekli yönerge 0,9306 (**+0,1723**) | oybirliğinin doğruluğu 0,9126'dan 0,8744'e |
| `yz-degerlendirme/04` — hakemin duyarlılığı | biçim kısıtı yerinde 0,9570 | kısıt kaldırılmış 0,7742 (**−0,1828**) | çağrı 246'dan 330'a, okunamayan yanıt 0'dan 31'e; yanlış engelleme farkı tam 0,0000 |
| `yz-degerlendirme/05` — bozulmanın görülme gecikmesi | göstergesiz bildirilmez | vekil 20 kayıt sonra bildirir | 300 kayıtta 32 inceleme; etiketli gösterge 45 ve 220 |
| `yz-degerlendirme/06` — yanlış alarmın kapsanan payı | kanal kapalı 0,0000 | dar itiraz kanalı 0,3750 (**+0,3750**) | beş turda yanlış alarm 8'den 27'ye |
| `yz-degerlendirme/07` — sayıya bağlı taahhüt (9) | dar kart 2 | geniş kart 6 (**+4**) | 3 taahhüt iddia olarak kalıyor |

Kursun kuralı tabloda satır satır yazılıdır: **durdurduğu pay ile yanlışlıkla durdurduğu pay
birlikte yazılmayan savunma ölçülmemiş sayılır.** Bedel sütunu boş bırakılsa her satır bir başarı
gibi okunurdu; okunmaması onu yazdığımız içindir.

**İkinci iddia da aynı tablodan okunur: eklenen savunma işi kötüleştirebilir.** Adıyla yazan satırlar
şunlardır: `yz-savunma/01` (katman yeni zararlı yakalamadan bir temiz kaydı fazladan engeller),
`yz-saldiri-yuzeyi/03` (maskelemenin tam kural süzgecine kattığı 0, bedeli dokuz silinen alan),
`/04` (kaynakla genişleyen kapı dokuz zararlı için kırk dört temiz inceleme alır, kesinlik 0,5586),
`/05` (kaynak kapısı ölçülemez bir 0,0054 için temiz kayıt kaybını 23'ten 66'ya çıkarır),
`yz-savunma/02` (dolaylı yönergede etiket dokuz temiz kayda düşer, savunma taban altında kalır),
`/03` (her kaydı maskeleyen politika 169 görev kırar), `/04` (eklenen on sekiz kaydın yalnız dördü
zararlı, yanlış engelleme 0,2517), `/06` (kapıyı genişletmek yakalananı 24'ten 17'ye, kesintiyi
23'e taşır) ve `yz-degerlendirme/06` (döngü yeni zararlı yakalamadan yanlış alarmı 3,4 katına
çıkarır). Dokuz yerde eklenen katman, eklendiği için ödetti.

**Çözünürlüğün altında kalan farklar da adıyla yazılır ve bulgu sayılmazlar:**
`yz-saldiri-yuzeyi/02`'de eşik 0,30'daki bir kayıtlık fark, `/03`'te ikinci koşumda sıfıra inen
kalıntı, `/05`'te 0,0106'lık adımın altındaki 0,0054, `/07`'de sınıf içi 0,4737 ile 0,4211 farkı,
`yz-savunma/05`'te tam bir adımlık 0,0068, `/06`'da genişletilmiş kapıların 22, 22, 23 sayıları,
`yz-degerlendirme/02`'de 0,0068'lik yanlış engelleme farkı ile 0,0588'lik sınıf farkı, ve `/05`'te
bandı gecikmesinden geniş çıkan gösterge. Hiçbiri sıfır, hiçbiri ölçülmüş değildir.

Bu kapanış aynı zamanda **M28 Yapay Zekâ Mühendisliği müfredatının kapanışıdır.** Yedi kursun ölçü
ekseni tek bir cümlede toplanır: **yüzey → istem → çağrı → erişim → döngü → sözleşme → savunma.**
Her kurs bir öncekinin bıraktığı yerden başladı ve eklediği katmanın bedelini yazdı. Müfredatın
kuralı son kez: bir yapay zekâ sisteminin sayısı **modelin sayısı değil düzeneğin sayısıdır; bedeli
yazılmayan düzenek ölçülmemiş sayılır.**

Yüz otuz iki derste düzenek modelin çevresine kuruldu ve her birinin bedeli yazıldı. Bir şey hiç
sorulmadı: **bu düzeneği besleyen veri hattının kendisi.** Kayıt kümesi ders içinde üretildi, belge
dağarcığı elle yazıldı, iz kaydı bellekte tutuldu. Bu verinin nereden geldiği, hangi hattan aktığı,
üretimde nasıl çalışır tutulduğu ve hattın bir yerinde bozulduğunda kimin haberi olacağı sorulmadı.
Sonraki müfredat, **Veri Mühendisliği ve MLOps**, düzeneğin altındaki bu hattı kurar ve onun da
bedelini sayar.
