---
title: 'İçerik Denetimi'
source: 'https://academia.sh/tr/kurslar/yz-guvenlik-ve-degerlendirme/icerik-denetimi'
course: 'Yapay Zekâ Güvenliği ve Değerlendirme'
language: tr
updated: '2026-08-17T18:06:33+00:00'
license: 'CC BY-SA 4.0'
---

# İçerik Denetimi

Zararlı içeriği durdurmakla ona bir sınıf adı koymanın ayrı iki iş olduğunun sayılması: sınıf adı üreten bir denetim ikili okumada 0,9355 duyarlılık ve 0,7311 kesinlik veriyor, ama sınıf başına bakıldığında kesinlik 0,2917 ile 0,6364 arasında, sınıf etiketinin duyarlılığı 0,3333 ile 0,8235 arasında dağılıyor; dolaylı yönerge sınıfında denetim 21 kayda etiket koyup 8'ini doğru biliyor ve 9 tümüyle temiz kaydı aynı etiketle işaretliyor, yani sınıf etiketi bir eyleme bağlandığında eylem doğrudan çok yanlış tetikleniyor ve o sınıfta savunma taban altında kalıyor; bozulmuş girdi sınıfının duyarlılığı 0,2632'den 0,8421'e çıkarken yanlış engelleme payı 0,1565'ten 0,2177'ye yükseliyor.

Bir önceki dersin bütün sayıları tek bir karardan okundu: durdur ya da geçir. Kural süzgeci
93 zararlının 74'ünü durdurdu, 23 temiz kaydı engelledi ve ortalama duyarlılığı 0,7957 çıktı.
Aynı tablonun son sütunu ise kaçan 19 kaydın 14'ünün **tek bir sınıftan** geldiğini gösterdi.
Ortalama sayı bu yığılmayı taşımıyordu.

Bir savunma yalnız durdurmakla kalmayıp kayda **hangi zararlı olduğunu** da söylerse iki şey
birden değişir. Birincisi, süzgeç kaçırdığı sınıfa bakan bir kural kazanabilir. İkincisi ve daha
önemlisi, ölçü tek bir çift sayı olmaktan çıkar: her sınıf için ayrı bir kesinlik ve ayrı bir
duyarlılık yazılabilir. Bu ders o ayrımı kurar ve ortalamanın neyi sakladığını sayar.

- **SV8.** Kayıt kümesi, sınıflar, öznitelikler ve içerik denetimi **kurgudur**; gerçek bir model
  uç noktası çağrılmaz. Tohum **20260218**, ikinci koşum **20260219**.
- **SV9.** **Bu bir saldırı dersi değildir.** Koşan kodun tamamı savunma tarafındadır: sınıflandırma,
  süzgeç ve sayım. Çalışan bir saldırı, yük ya da atlatma yordamı yazılmaz.
- **SV10.** **Saldırı bir metin değil bir öznitelik profilidir.** Kayıtların `metin` alanı altı
  sıradan destek talebinden birine eşittir ve **sınıfla hiçbir ilişkisi yoktur**; denetim de o
  metni okumaz, yalnızca yapısal öznitelikleri okur.
- **SV11.** Taban çizgisi **savunmasız kurulumdur**: hiçbir süzgeç ya da denetim yok, durdurulan
  zararlı 0, yanlış alarm 0, üretilen sınıf etiketi 0.
- **SV12.** İçerik denetimi tek bir sınıf adı döndürür; öncelik sırası kurgudur ve bir kaydın
  birden çok özniteliği varsa yalnız en öndeki sınıf yazılır.
- **SV13.** Model değerlendirmenin ve alt grup çözümlemesinin genel yordamı Denetimli Öğrenme ile
  Model Değerlendirme, Yorumlanabilirlik ve Etik kurslarında ölçüldü ve burada tekrarlanmaz; bu
  ders yalnız **savunma sınıfı başına** okumayı ekler.
- **SV14.** Sınıf başına oranın adımı o sınıfın boyutudur ve kümenin genel adımından büyüktür:
  en küçük sınıfta **0,1000**, en büyük zararlı sınıfta **0,0417**. Bütün zararlılar üzerinden
  duyarlılığın adımı **0,0108**, yanlış engelleme payının adımı **0,0068**.

## Sınıf Adı Üreten Savunma

Birinci blok kursun ortak tanımını kurar: kayıt kümesi, sınıflar, kural süzgeci, model temelli
süzgeç ve ölçü. Kayıtların taşıdığı altı destek cümlesinin hangi sınıfa düştüğü rastlantısaldır;
sınıf bilgisi yalnızca `PROFIL` sözlüğünde, yani her sınıfın hangi yapısal özniteliği hangi
olasılıkla taşıdığında durur.

```python
# KURGUDUR. Kayit kumesi, siniflar, ozellikler ve savunma katmanlari ders icinde
# tanimlanir; gercek bir model uc noktasi cagrilmaz.
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


# ---- KURGU kayitlar: saldiri METNI yazilmaz, saldiri bir OZELLIK PROFILIDIR
SINIF = ["temiz", "dolayli_yonerge", "gizli_alan_istegi", "yetki_asimi",
         "kaynak_taklidi", "bozulmus_girdi"]
KAYNAK = ["kullanici", "erisilen_belge", "arac_ciktisi"]
# Ozellikler yapisaldir; hicbiri calisan bir yuk degildir.
OZELLIK = ["yonerge_kipi", "rol_degistirme_istegi", "gizli_alan_adi", "yan_etkili_arac_adi",
           "kaynak_damgasi_uyusmuyor", "olagandisi_damga_dagilimi", "asiri_uzunluk"]
# Sinif basina ozellik olasiligi (kurgu). Temiz kayitlarda da dusuk paylar var:
# gercek dunyada iyi niyetli metin de bu ozellikleri tasiyabilir.
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],
}
# Kurgu, tumuyle zararsiz destek metinleri. Sinifla iliskisi YOKTUR;
# sinif bilgisi yalnizca ozellik profilinde durur.
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"


# ---- SAVUNMA 1: kural suzgeci (yapisal, aciklanabilir)
def kural_suzgeci(k, kurallar=("yonerge_kipi", "gizli_alan_adi", "yan_etkili_arac_adi",
                               "kaynak_damgasi_uyusmuyor")):
    return any(k["ozellik"][o] for o in kurallar)


# ---- SAVUNMA 2: model temelli suzgec (puan + esik)
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):
    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):
    return puan(k) >= esik


# ---- OLCU: durdurulan ve yanlislikla durdurulan birlikte yazilir
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}
```

## Sınıf Başına Kesinlik ve Duyarlılık

İçerik denetimi kural süzgecinden iki noktada ayrılır. Bir sınıf adı döndürür ve bir öznitelik
daha okur: damga dağılımı. Öncelik sırası, her sınıfın kendi ayırt edici özniteliğini en öne
koyacak biçimde kurulmuştur. İkinci blok önce denetimin **ikili okumasını** basar — "temiz değil"
demek durdurmak sayılırsa hangi sayı çıkıyor — sonra aynı kararı sınıf sınıf açar.

```python
def icerik_denetimi(k):
    """Savunma: kayda bir sinif adi atar. Hicbir saldiri metni okunmaz;
    yalnizca yapisal oznitelikler oncelik sirasiyla degerlendirilir."""
    o = k["ozellik"]
    if o["gizli_alan_adi"]:
        return "gizli_alan_istegi"
    if o["yan_etkili_arac_adi"]:
        return "yetki_asimi"
    if o["kaynak_damgasi_uyusmuyor"]:
        return "kaynak_taklidi"
    if o["olagandisi_damga_dagilimi"]:
        return "bozulmus_girdi"
    if o["yonerge_kipi"] or o["rol_degistirme_istegi"]:
        return "dolayli_yonerge"
    return "temiz"


ikili = olc(KAYIT, lambda k: icerik_denetimi(k) != "temiz")
print("ikili okuma, 'temiz degil' demek durdurmak sayilirsa:")
print(f"  dp {ikili['dp']}  yp {ikili['yp']}  yn {ikili['yn']}"
      f"  kesinlik {ikili['kesinlik']}  duyarlilik {ikili['duyarlilik']}"
      f"  yanlis engelleme {ikili['yanlis_engelleme_payi']}")
print()
print(f"{'sinif':<20}{'n':>4}{'atanan':>7}{'dogru':>6}{'yanlis sinif':>13}"
      f"{'temiz':>6}{'kesinlik':>10}{'duyarlilik':>12}{'adim':>8}")
for s in SINIF[1:]:
    g = [k for k in KAYIT if k["sinif"] == s]
    a = [k for k in KAYIT if icerik_denetimi(k) == s]
    d = sum(1 for k in a if k["sinif"] == s)
    ys = sum(1 for k in a if zararli(k) and k["sinif"] != s)
    tz = sum(1 for k in a if not zararli(k))
    print(f"{s:<20}{len(g):>4}{len(a):>7}{d:>6}{ys:>13}{tz:>6}"
          f"{d / len(a):>10.4f}{d / len(g):>12.4f}{1 / len(g):>8.4f}")
tm = [k for k in KAYIT if icerik_denetimi(k) == "temiz"]
dt = sum(1 for k in tm if not zararli(k))
print(f"{'temiz':<20}{147:>4}{len(tm):>7}{dt:>6}{len(tm) - dt:>13}{'-':>6}"
      f"{dt / len(tm):>10.4f}{dt / 147:>12.4f}{1 / 147:>8.4f}")
print()
print("temiz denip gecen zararlinin siniflari:",
      {s: sum(1 for k in tm if k["sinif"] == s) for s in SINIF[1:]
       if sum(1 for k in tm if k["sinif"] == s)})
```

```
ikili okuma, 'temiz degil' demek durdurmak sayilirsa:
  dp 87  yp 32  yn 6  kesinlik 0.7311  duyarlilik 0.9355  yanlis engelleme 0.2177

sinif                  n atanan dogru yanlis sinif temiz  kesinlik  duyarlilik    adim
dolayli_yonerge       24     21     8            4     9    0.3810      0.3333  0.0417
gizli_alan_istegi     17     32    14            9     9    0.4375      0.8235  0.0588
yetki_asimi           10     24     7           14     3    0.2917      0.7000  0.1000
kaynak_taklidi        23     22    14            4     4    0.6364      0.6087  0.0435
bozulmus_girdi        19     20    12            1     7    0.6000      0.6316  0.0526
temiz                147    121   115            6     -    0.9504      0.7823  0.0068

temiz denip gecen zararlinin siniflari: {'gizli_alan_istegi': 1, 'yetki_asimi': 1, 'kaynak_taklidi': 1, 'bozulmus_girdi': 3}
```

## Ortalamanın Gizlediği

İlk iki satır kursun bu ana kadarki en iyi duyarlılığını gösterir: **0,9355**. Savunmasız tabanda
durdurulan zararlı 0 iken denetim 93 zararlının 87'sini işaretliyor ve yalnızca 6'sını kaçırıyor.
Bir savunmanın tek satırla bildirileceği yer burasıdır ve bu satır **yanlıştır** — daha doğrusu,
söylediği şey doğru ama sorulan sorunun yanıtı değildir. Bir içerik denetiminden beklenen şey
kaydın durdurulması değil, **ne olduğunun söylenmesidir**; durdurma zaten kural süzgecinin işiydi.

Sınıf tablosu aynı kararı adıyla açar ve tek bir oran kalmaz. Sınıf etiketinin duyarlılığı
0,3333 ile 0,8235 arasında, kesinliği 0,2917 ile 0,6364 arasında dağılıyor. İki sınıf öne çıkıyor.

`gizli_alan_istegi` sınıfının duyarlılığı **0,8235** ile en yükseği, ama kesinliği **0,4375**:
denetim bu etiketi 32 kayda koyuyor, yalnızca 14'ü gerçekten o sınıftan. Etiket, sırf öncelik
sırasında en önde durduğu için, gizli alan adı taşıyan her kaydı kendine çekiyor — 9 tanesi başka
bir zararlı sınıftan, 9 tanesi tümüyle temiz.

`yetki_asimi` daha keskin: 24 kayda etiket konuyor, 7'si doğru, **14'ü başka bir zararlı sınıftan**.
Bu satır bir uyarı taşır — durdurma kararı bu 14 kayıtta **doğrudur**, çünkü hepsi gerçekten
zararlıdır; yanlış olan yalnızca ada verilen karardır. Bir savunmanın sınıf kesinliği 0,2917
olabilir ve aynı savunma ikili okumada iyi görünebilir. **Durdurmak ile adını koymak iki ayrı
iştir ve iki ayrı sayıyla ölçülür.**

Son satır bedeli yazar: denetim 147 temiz kaydın 121'ini temiz sayıyor, geri kalan **32'sine bir
zararlı sınıf adı koyuyor**. Yanlış engelleme payı 0,2177, yani kural süzgecinin 0,1565'inden dokuz
çözünürlük adımı yüksek. Kaçan 6 zararlının yarısı yine bozulmuş girdi sınıfındandır.

## Sınıf Başına Duyarlılık, Üç Savunma

Aynı sınıf ayrımı önceki dersin iki süzgecine de uygulanabilir. Üçüncü blok dört sütun basar:
kural süzgeci, model temelli süzgeç, aynı model süzgecinin ikinci koşumu ve içerik denetiminin
ikili kararı. Burada ölçülen şey sınıf etiketi değil, **kaydın işaretlenip işaretlenmediğidir**.

```python
def puan_ikinci(k):
    """Ayni model, ikinci kosum: yalnizca gurultunun tohumu degisir."""
    p = sum(AGIRLIK[o] for o in OZELLIK if k["ozellik"][o]) + KAYNAK_EK[k["kaynak"]]
    r = uretec(20260219 ^ izno(k["no"]))
    return min(max(p + (r() - 0.5) * 0.20, 0.0), 1.6)


print(f"{'sinif':<20}{'n':>4}{'kural':>10}{'model 0,50':>12}"
      f"{'2. kosum':>10}{'denetim':>9}{'adim':>8}")
zararlilar = [k for k in KAYIT if zararli(k)]
for s in SINIF[1:]:
    g = [k for k in KAYIT if k["sinif"] == s]
    say = [sum(1 for k in g if f(k)) / len(g)
           for f in (kural_suzgeci, lambda k: model_suzgeci(k, 0.50),
                     lambda k: puan_ikinci(k) >= 0.50,
                     lambda k: icerik_denetimi(k) != "temiz")]
    print(f"{s:<20}{len(g):>4}{say[0]:>10.4f}{say[1]:>12.4f}"
          f"{say[2]:>10.4f}{say[3]:>9.4f}{1 / len(g):>8.4f}")
say = [sum(1 for k in zararlilar if f(k)) / len(zararlilar)
       for f in (kural_suzgeci, lambda k: model_suzgeci(k, 0.50),
                 lambda k: puan_ikinci(k) >= 0.50,
                 lambda k: icerik_denetimi(k) != "temiz")]
print(f"{'ortalama':<20}{len(zararlilar):>4}{say[0]:>10.4f}{say[1]:>12.4f}"
      f"{say[2]:>10.4f}{say[3]:>9.4f}{1 / len(zararlilar):>8.4f}")
print()
print("yanlis engelleme payi:",
      {"kural": olc(KAYIT, kural_suzgeci)["yanlis_engelleme_payi"],
       "model 0,50": olc(KAYIT, lambda k: model_suzgeci(k, 0.50))["yanlis_engelleme_payi"],
       "denetim": ikili["yanlis_engelleme_payi"]})
```

```
sinif                  n     kural  model 0,50  2. kosum  denetim    adim
dolayli_yonerge       24    1.0000      0.9583    0.9583   1.0000  0.0417
gizli_alan_istegi     17    0.9412      0.7059    0.7059   0.9412  0.0588
yetki_asimi           10    0.9000      0.8000    0.8000   0.9000  0.1000
kaynak_taklidi        23    0.8696      0.8261    0.8261   0.9565  0.0435
bozulmus_girdi        19    0.2632      0.2105    0.3684   0.8421  0.0526
ortalama              93    0.7957      0.7097    0.7419   0.9355  0.0108

yanlis engelleme payi: {'kural': 0.1565, 'model 0,50': 0.0544, 'denetim': 0.2177}
```

## Taban Altında Kalan Sınıf

Kural süzgecinin 0,7957'lik ortalaması dört sınıfta 0,8696 ile 1,0000 arasındadır ve beşincisinde
**0,2632**. Ortalama, dört iyi sayının bir kötü sayıyı taşımasıdır; okuyan taraf hangi sınıfın
korunmadığını bu satırdan bilemez. Denetim o sınıfı 0,8421'e çıkarıyor, çünkü kural kümesinin
bakmadığı damga dağılımını okuyor — ama bedeli aynı satırda: yanlış engelleme payı 0,1565'ten
0,2177'ye, engellenen temiz kayıt 23'ten 32'ye çıkıyor.

Bozulmuş girdi satırı ikinci koşumla birlikte okunmalıdır. Model süzgecinin bu sınıftaki
duyarlılığı iki koşumda 0,2105 ile 0,3684 arasında oynuyor; fark 0,1579, yani o sınıfın
çözünürlüğünün **üç adımı**. Öbür dört sınıfta fark tam olarak sıfırdır. En zayıf sınıf aynı
zamanda en oynak sınıftır ve o sınıfın tek koşumla bildirilen sayısı bir sayı değil bir banttır.

Şimdi kursun kuralının en sert uygulaması. `dolayli_yonerge` sınıfında denetim **21 kayda** bu
etiketi koyuyor; **8'i doğru**, 4'ü başka bir zararlı sınıftan, **9'u tümüyle temiz**. Sınıf
etiketi bir eyleme bağlıysa — o sınıfa özgü bir uyarı, bir yeniden yazma, bir insan incelemesi —
eylem bu kümede 8 kez doğru, **13 kez yanlış** tetiklenir ve yanlışların 9'unda karşı tarafta
gerçek bir abone vardır. Savunmasız tabanda bu eylem hiç tetiklenmez: ne doğru ne yanlış. Yanlış
tetiklemenin bedeli doğru tetiklemenin kazancından küçük değilse, **bu sınıfta savunma tabanın
altındadır.** Doğru etiket 8 ile temiz kayda konan etiket 9 arasındaki fark tek bir kayıttır ve
başka bir çekimde işaret değiştirebilir; okunabilir olan şey oranın **bire yakın** olmasıdır.

Aynı sınıfın ikili sütunda 1,0000 yazması bu tabloyu tamamlar. Denetim dolaylı yönerge sınıfının
**tamamını** durduruyor ve **üçte birine** doğru adı koyuyor. Tek bir oran bildirilseydi hangisi
yazılırdı sorusunun yanıtı, savunmanın ne için kurulduğuna bağlıdır — ve bu yüzden ikisi de yazılır.

## Özet

- Sınıf adı üreten içerik denetimi ikili okumada 87 zararlı durdurur, 32 temiz kaydı engeller:
  kesinlik 0,7311, duyarlılık 0,9355, yanlış engelleme payı 0,2177.
- Aynı denetimin sınıf etiketi çok daha zayıftır: sınıf kesinliği 0,2917 ile 0,6364, sınıf
  duyarlılığı 0,3333 ile 0,8235 arasında dağılır. Durdurmak ile adını koymak iki ayrı iştir.
- Kural süzgecinin 0,7957'lik ortalaması dört sınıfta 0,8696'nın üstündedir ve bozulmuş girdi
  sınıfında 0,2632'dir; denetim o sınıfı 0,8421'e çıkarır, yanlış engelleme payı 0,1565'ten
  0,2177'ye yükselir.
- Bozulmuş girdi sınıfı iki koşumda 0,2105 ile 0,3684 arasında oynar, yani sınıf çözünürlüğünün üç
  adımı; öbür dört sınıfta fark sıfırdır.
- Dolaylı yönerge sınıfında etiket 21 kayda konur, 8'i doğrudur ve 9'u tümüyle temiz kayda düşer;
  sınıf etiketi bir eyleme bağlıysa eylem doğrudan çok yanlış tetiklenir ve savunma o sınıfta
  tabanın altında kalır.

## Sonraki Adım

İki derste savunma kaydın **tamamı** üzerinde karar verdi: geçir, durdur ya da bir sınıf adı koy.
Üçünde de kayıt bölünmez bir bütün sayıldı. Oysa bir kaydın modele gitmesi gereken kısmı ile
gitmemesi gereken kısmı ayrılabilir: abone kimliği, iletişim bilgisi, adres ve erişim dizgesi
çıkarılıp geri kalanı gönderilebilir. Bu, hiçbir kaydı engellemeyen bir savunmadır ve bu yüzden
yanlış alarmı yoktur — ölçüsü de başka bir yerden okunmalıdır. Sonraki ders maskelemenin kaç
kaydı temizlediğini ve **kaç görevin gerektirdiği alanı sildiğini** sayar.
