# 🛡️ Community Moderator Agent + Kindness Campaigns — Metrowy

**Zadanie:** SAA-W4-6 (Szkoła Agentów) · **Pilot:** Metrowy (Bartosz Medyński, raper z Rybnika) · **Realm:** 0n40i4 / K0NSULT
**Data:** 2026-06-12
**Cross-ref:** [antihate_radar.md](antihate_radar.md) (klasyfikator 5 klas + drzewo decyzyjne — źródło logiki) · [../ochrona/antihejt_shield.md](../ochrona/antihejt_shield.md) (procedura zgłoszenia + karta dowodu) · [../ochrona/tarcza.md](../ochrona/tarcza.md) (MM-PAR-3 §1 — źródło prawdy)

> ## ⚠️ GUARDRAIL NADRZĘDNY — HUMAN OVERRIDE + GODNOŚĆ
> **Sporne idą do ACK operatora (Human Override).** **Uczciwa krytyka NIE jest cenzurowana** — krytyka twórczości ≠ hejt na osobę. Agent moderuje spam i atak na osobę; **nie usuwa opinii o muzyce.** Decyzja w przypadkach spornych = świadoma decyzja człowieka, nigdy automat.

---

## 0. Spójność z istniejącym systemem (nie duplikujemy)

Ten plik to **warstwa community/moderacji forum/komentarzy fanów**. Logika rozróżnienia KRYTYKA / HEJT / GROŹBA jest już zdefiniowana w [antihate_radar.md](antihate_radar.md) (5 klas + drzewo decyzyjne §3) i [antihejt_shield.md](../ochrona/antihejt_shield.md) (procedura + karta dowodu). **Tu jej NIE duplikujemy** — rozszerzamy ją o:
- regułę **SPAM** (której radar/shield nie obejmują — to nie hejt, to zaśmiecanie),
- **kolejkę moderacji** community,
- **log ACK operatora** dla przypadku spornego,
- **kampanię życzliwości** (kindness, draft).

W razie rozbieżności: **[tarcza.md](../ochrona/tarcza.md) §1 jest źródłem prawdy.**

---

## 1. Reguły moderacji

| Reguła | Klasa | Definicja | Działanie | ACK operatora (HO) |
|---|---|---|---|---|
| R-PASS | `KRYTYKA` | negatywna **opinia o twórczości/działaniach** (album, tekst, koncert, decyzja). Brak ataku na osobę, brak groźby. | **PRZECHODZI** — nie cenzurujemy. Log opcjonalny. | NIE |
| R-SPAM | `SPAM` | treść komercyjna/zaśmiecająca bez związku z artystą: reklamy, linki scam, „kup teraz", boty, powielany identyczny tekst. **Nie jest hejtem ani opinią.** | **→ KOLEJKA** (ukryj, do przeglądu). | NIE (rutynowy) |
| R-HEJT | `HEJT` | atak na **osobę** (wyzwiska, dehumanizacja, pogarda wobec człowieka, nie dzieła). | **→ KOLEJKA** moderacji + log. | NIE (chyba że eskaluje) |
| R-GROZBA | `GROZBA` | zapowiedź przemocy / krzywdy zdrowia/życia. | **→ KOLEJKA + paczka dowodowa + eskalacja HO** (procedura w [antihejt_shield.md](../ochrona/antihejt_shield.md)). | **TAK** |
| R-DOX | `DOXXING/STALKING` | ujawnianie danych prywatnych, nękanie, namierzanie. | **→ paczka dowodowa + eskalacja HO**. | **TAK** |
| R-ACK | `DO_WERYFIKACJI (sporne)` | niejasna granica KRYTYKA/HEJT, sarkazm, dwuznaczność, homonim. | **→ KOLEJKA spornych + ACK operatora.** Domyślnie traktuj jak KRYTYKA (nie cenzuruj na zapas). | **TAK (ACK)** |

### Zasady brzegowe
- **SPAM → kolejka** (zaśmiecanie ukrywamy do przeglądu — to higiena, nie cenzura opinii).
- **HEJT → kolejka** (atak na osobę ukrywamy do przeglądu).
- **KRYTYKA → przechodzi** (opinia o muzyce zostaje widoczna — zawsze).
- **Sporne → ACK operatora**: agent NIE przesądza; przy niepewności KRYTYKA/HEJT domyśla się na korzyść wolności wypowiedzi (zostawia widoczne + flaga), a sprawę kieruje do ACK człowieka.
- **GROŹBA/DOXXING → HO** wg [antihejt_shield.md](../ochrona/antihejt_shield.md) (karta dowodu, forensic).

### Drzewo decyzyjne moderacji community
```
Komentarz/wpis →
 1) Czy to treść komercyjna/scam/powielony bot-tekst bez związku z artystą?
      TAK → SPAM → KOLEJKA (ukryj do przeglądu). STOP.
      NIE → krok 2
 2) Czy zawiera groźbę / doxxing / stalking?  (drzewo radaru §3)
      TAK → paczka dowodowa + ESKALACJA HO. STOP.
      NIE → krok 3
 3) Czy to atak na OSOBĘ (wyzwiska, dehumanizacja)?
      TAK → HEJT → KOLEJKA + log. STOP.
      NIE → krok 4
 4) Czy to ocena TWÓRCZOŚCI/DZIAŁANIA (album, tekst, decyzja)?
      TAK → KRYTYKA → PRZECHODZI (nie cenzurujemy). STOP.
      NIE → DO_WERYFIKACJI (sporne) → KOLEJKA + ACK operatora.
              (domyślnie zostaw widoczne — na korzyść wolności wypowiedzi)
```

---

## 2. Test moderacji (3 przykłady wymagane + 2 brzegowe)

| # | Wejście | Klasyfikacja | Działanie | ACK HO | Wynik |
|---|---|---|---|---|---|
| **T1 (SPAM)** | „💰💰 KUP TANIE OBSERWUJĄCYCH: bit.ly/xxxx — najlepsze ceny!!!" | `SPAM` | **→ KOLEJKA** (ukryj, do przeglądu) | NIE | ✅ spam trafia do kolejki |
| **T2 (KRYTYKA)** | „Szczerze, nowy album jest słabszy od Kosmosu. Produkcja płaska, zwrotki przewidywalne." | `KRYTYKA` | **→ PRZECHODZI** (NIE cenzurujemy) | NIE | ✅ uczciwa krytyka przechodzi |
| **T3 (HEJT)** | „Metrowy to żałosny nieudacznik, powinien się zamknąć." | `HEJT` (atak na osobę) | **→ KOLEJKA** moderacji + log | NIE | ✅ atak na osobę do kolejki |
| T4 (GROŹBA — brzegowy) | „dorwę cię po koncercie, pożałujesz" | `GROZBA` | paczka dowodowa + **eskalacja HO** | **TAK** | ✅ groźba → HO |
| **T5 (SPORNY → ACK)** | „no genialnie, kolejny »hit« 🙄 brawo ty" (sarkazm — krytyka czy drwina z osoby?) | `DO_WERYFIKACJI` | **→ KOLEJKA spornych + ACK operatora**; domyślnie zostawione widoczne | **TAK (ACK)** | ✅ sporne → ACK, nie cenzurujemy na zapas |

**Walidacja guardrailu (kluczowe):**
- **T1 (SPAM → kolejka)** ✅ — spam zaśmiecający trafia do kolejki.
- **T2 (KRYTYKA → przechodzi)** ✅ — uczciwa, ostra krytyka twórczości **NIE** jest cenzurowana, mimo że jest negatywna.
- **T3 (HEJT)** ✅ — granica: atak na osobę (nie dzieło) idzie do kolejki, ale to **nie** to samo co krytyka z T2.
- **T5 (sporny → ACK)** ✅ — niejednoznaczny sarkazm **nie** jest automatycznie kasowany; idzie do ACK człowieka, domyślnie pozostaje widoczny.

> Wniosek testu: **SPAM → kolejka, KRYTYKA → przechodzi** (dwa wymagane warunki DoD spełnione). Krytyka nie jest cenzurowana.

---

## 3. Log ACK operatora — przypadek sporny (T5)

Demonstracja śladu decyzyjnego dla spornego komentarza. **Rejestr realny startuje pusty** (Proof before Claim) — poniżej przykład struktury, dane fikcyjne.

```json
{
  "id": "MOD-ACK-DEMO-0001",
  "typ": "DO_WERYFIKACJI",
  "data_wplyniecia": "2026-06-12T21:14:00Z",
  "tresc_anonimizowana": "no genialnie, kolejny »hit« 🙄 brawo ty",
  "zrodlo_platforma": "[PRZYKŁAD — komentarz pod klipem, URL do uzupełnienia]",
  "homonim_sprawdzony": true,
  "homonim_werdykt": "dotyczy artysty (nie metro/METER/Metro Boomin)",
  "powod_spornosci": "sarkazm dwuznaczny: może być ironiczną KRYTYKĄ twórczości (przechodzi) albo drwiną z OSOBY (hejt). Brak jednoznacznego ataku na osobę → nie kasujemy automatycznie.",
  "decyzja_domyslna_agenta": "zostaw widoczne + flaga do_weryfikacji (na korzyść wolności wypowiedzi)",
  "status": "OCZEKUJE_ACK_OPERATORA",
  "eskalacja_HO": true,
  "ack_operatora": {
    "kto": "[operator/HO — do uzupełnienia]",
    "decyzja": null,
    "opcje": ["PRZEPUSC_jako_KRYTYKA", "UKRYJ_jako_HEJT", "ZOSTAW_z_obserwacja"],
    "uzasadnienie": null,
    "data_ack": null
  },
  "guardrail": "Agent NIE przesądził. Krytyka NIE cenzurowana na zapas. Ostateczna decyzja = człowiek (Human Override).",
  "log": [
    "2026-06-12T21:14 — wpłynięcie, homonim sprawdzony (dotyczy artysty)",
    "2026-06-12T21:14 — klasyfikacja: DO_WERYFIKACJI (sarkazm dwuznaczny)",
    "2026-06-12T21:14 — decyzja domyślna agenta: zostaw widoczne, flaga sporne",
    "2026-06-12T21:14 — skierowano do KOLEJKI SPORNYCH + powiadomiono operatora (oczekuje ACK)"
  ]
}
```

**Cykl ACK:** `OCZEKUJE_ACK_OPERATORA` → operator wybiera (`PRZEPUSC` / `UKRYJ` / `ZOSTAW_z_obserwacja`) → zapis `decyzja` + `uzasadnienie` + `data_ack` → status `ZAMKNIETY`. Dopóki człowiek nie zadecyduje, komentarz **pozostaje widoczny** (nie cenzurujemy na zapas).

---

## 4. Kampania życzliwości (Kindness Campaign) — DRAFT

> Status: `DRAFT — wymaga zatwierdzenia artysty / operatora (HO) przed startem.`

### 4.1 Nazwa robocza: **„Każdy Dzień Życzliwie"**
Nawiązanie do największego hitu Metrowego („Każdy Dzień" — „pozytywny i motywujący"), bez cytowania tekstu utworu (do ew. użycia fragmentu → zgoda artysty/HO).

### 4.2 Cel
Przesunąć ton społeczności z reaktywnego (hejt/spam) na **proaktywnie życzliwy** — nagradzać dobre komentarze, nie tylko usuwać złe. Życzliwość jako norma, nie wyjątek.

### 4.3 Mechanika (draft)
1. **„Komentarz Tygodnia"** — agent typuje (na podstawie sygnałów: konstruktywność, wsparcie innych fanów, brak ataku) 3 kandydatury **życzliwych** komentarzy; **wybór finalny = artysta/operator (HO)**. Nagroda: wyróżnienie + (opcjonalnie) odznaka w społeczności. **Brak nagród finansowych (R10).**
2. **„Podaj Dalej Dobre Słowo"** — zachęta, by fani sami opisali, co dał im konkretny utwór/koncert (pozytywny prompt). Nawiązanie do wczesnej kompilacji „Podaj Dalej" (2009) z osi czasu.
3. **„Zielona Linia Wsparcia"** — wątek, gdzie fani wspierają lokalnych, początkujących twórców z Rybnika/Śląska (spójne z aktywizmem warsztatowym Metrowego, „Podwórko Boguszowice" — osczasu.html 2017). Artyści artystom.

### 4.4 Ton i guardraile kampanii
- **Życzliwość ≠ cenzura krytyki** — kampania promuje dobre, ale **nie ukrywa uczciwej krytyki**. To dwie różne osie (krytyka może być widoczna i jednocześnie nie nagrodzona).
- **Dobrowolność** — udział fanów dobrowolny; brak presji.
- **Zero astroturfingu** — nie tworzymy fałszywych pozytywnych komentarzy ani botów „pod publikę". Nagradzamy realne, nie produkujemy sztucznych.
- **R10** — zero nagród pieniężnych, zero obietnic kwot.
- **HO** — start kampanii i każdy wybór „Komentarza Tygodnia" wymaga zatwierdzenia artysty/operatora.
- **art.50** — komunikaty kampanii generowane z udziałem AI oznaczone wg AI Act.

### 4.5 Przykładowy post otwierający (draft — do akceptacji HO)
> „Tu społeczność Metrowego. Zaczynamy **»Każdy Dzień Życzliwie«** — miejsce, gdzie dobre słowo waży tyle co dobry bit. Napisz, co dał Ci konkretny kawałek albo koncert. Krytykę przyjmujemy z otwartą głową — życzliwość rozwijamy z otwartym sercem. 🌅 #KażdyDzieńŻyczliwie"
>
> *(Treść finalna = decyzja artysty/HO. Agent proponuje, człowiek zatwierdza.)*

---

## 5. Guardraile (twarde)

- **Human Override (sporne → ACK)** — przypadki sporne idą do ACK operatora; agent nie przesądza. Start kampanii i wyróżnienia = decyzja człowieka.
- **Godność / KRYTYKA ≠ HEJT** — uczciwa krytyka twórczości **NIE jest cenzurowana** (T2 dowodzi). Moderujemy spam i atak na osobę, nie opinie.
- **Spójność ze źródłem** — logika klas wg [antihate_radar.md](antihate_radar.md) i [antihejt_shield.md](../ochrona/antihejt_shield.md); [tarcza.md](../ochrona/tarcza.md) §1 = źródło prawdy.
- **Homonim = bramka** — przed eskalacją sprawdź czy „Metrowy" dotyczy artysty (nie metro/METER/Metro Boomin).
- **No domysł** — werdykt „naruszenie" tylko z dowodem forensic; sporne = `do_weryfikacji` (domyślnie widoczne).
- **No astroturfing / no password custody / R10** — bez fałszywych pozytywów, bez haseł, bez kwot/obietnic odzysku.
- **No porada prawna** — ocena karna/cywilna z dopiskiem „wymaga weryfikacji prawnej".

---

## 6. Status

- Reguły moderacji (R-PASS / R-SPAM / R-HEJT / R-GROZBA / R-DOX / R-ACK) + drzewo decyzyjne community: **gotowe**.
- Test (3 wymagane + 2 brzegowe): **przechodzi** — **SPAM → kolejka (T1), KRYTYKA → przechodzi (T2), HEJT → kolejka (T3)**; sporny → ACK (T5).
- Log ACK operatora dla spornego (T5): **gotowy (struktura + cykl ACK)**; rejestr realny pusty.
- Kampania życzliwości „Każdy Dzień Życzliwie" (draft, 3 mechaniki + post otwierający): **gotowa (DRAFT, oczekuje HO)**.
- **Zatwierdzenie HO (sporne + start kampanii): OCZEKUJE.**

**Proof markery:** [J] spójność z [antihate_radar.md](antihate_radar.md) / [antihejt_shield.md](../ochrona/antihejt_shield.md) (klasyfikator nie duplikowany). [H] reguła SPAM, drzewo community i kampania = heurystyki do kalibracji na realnych danych. [P] motywy kampanii („Każdy Dzień", „Podaj Dalej", „Zielona Linia", warsztaty) z udokumentowanej osi ([osczasu.html](../osczasu.html)).
