{
  "schema": "fancore.v1",
  "task_id": "P1-2",
  "module": "FanCore basic + Fan Page / Tuba informacyjna",
  "realm": "0n40i4",
  "project": "K0NSULT / Metrowy MVP",
  "pilot": "Metrowy",
  "generated": "2026-06-12",
  "purpose": "Warstwa profilu fanowskiego NAD pomiarem nastrojow (fanpulse.json). FanCore opisuje fana jako wspierajacego artyste: odznaki za realne dzialania, poziomy za trwala relacje, backstage jako wglad w proces tworczy, misje budujace wsparcie. Tuba informacyjna = jawny kanal ogloszen artysty. NIE jest to mechanizm sterowania emocjami ani wyludzania danych.",
  "relation_to_fanpulse": "fanpulse.json MIERZY nastroj (agregaty OSINT, bez profilowania jednostek). fancore.json to warstwa PROFILU fana ponad pomiarem — opt-in, fan sam decyduje co odblokowuje. Pomiar i profil sa rozdzielone: FanCore nie zasila fanpulse danymi osobowymi, fanpulse nie targetuje pojedynczego fana z FanCore.",

  "anti_dark_pattern": {
    "naczelna_zasada": "GODNOSC FANA. Relacja, nie eksploatacja. Wszystkie mechaniki sluza realnej wiezi fan-artysta, nie maksymalizacji zaangazowania kosztem dobrostanu.",
    "zakazy_twarde": [
      "BRAK FALSZYWEGO NIEDOBORU — zadne 'zostalo 3 miejsca', 'oferta wygasa za 5 min', sztucznych zegarow odliczajacych ani limitow wymyslonych by przyspieszyc decyzje.",
      "BRAK WYMUSZANIA DANYCH — profil dziala anonimowo/pseudonimowo; email/dane kontaktowe sa OPCJONALNE i tylko do tego co fan jawnie wybral (np. newsletter). Zero pol obowiazkowych poza pseudonimem. Minimalizacja danych (RODO).",
      "BRAK NIESKONCZONEGO GRINDU — poziomy maja gorny prog i opisany sens; brak codziennych 'streakow' karzacych za nieobecnosc, brak mechanik FOMO, brak losowych nagrod (loot-box) uzaleznianiajacych.",
      "BRAK MANIPULACJI EMOCJONALNEJ — zero komunikatow typu 'artysta sie zawiedzie jak nie wrocisz', zero zawstydzania (confirmshaming), zero ukrytych kosztow.",
      "BRAK PAY-TO-WIN / PRESJI ZAKUPOWEJ — odznaki i backstage zdobywa sie przez realne wsparcie i obecnosc, nie przez wydanie pieniedzy. R10: zero kwot, zero obietnic zarobku/odzysku.",
      "BRAK DARK SHARING — zadnego wymuszania 'udostepnij by odblokowac'; udostepnianie jest dobrowolne i nagradzane tylko symbolicznie."
    ],
    "pozytywne_zobowiazania": [
      "Przejrzystosc kryteriow — fan zawsze widzi DLACZEGO ma dana odznake/poziom (audytowalne).",
      "Latwe wyjscie — fan moze w kazdej chwili usunac profil i dane (prawo do bycia zapomnianym).",
      "Wartosc realna — backstage daje prawdziwy wglad (proces tworzenia, kulisy), nie wydmuszke.",
      "Disclosure AI — tresci generowane przez AI w tubie oznaczone <ai-badge> (art.50)."
    ],
    "guardrail_ref": "Spojne z fanpulse.json.guardrails (dignity_no_manipulation, privacy_fans, no_password_custody) oraz antihate_radar.md (KRYTYKA != HEJT — krytyki artysty nie blokujemy w komentarzach tuby)."
  },

  "odznaki": [
    {
      "id": "od_od_poczatku",
      "nazwa": "Obecny od poczatku",
      "ikona": "🌱",
      "opis": "Slichasz Metrowego od czasow 3oda Kru / pierwszych nagran.",
      "kryterium": "Fan zadeklarowal lub potwierdzil obecnosc przed kamieniem milowym 'Brud boi' (kontekst OSINT). Self-declared + opcjonalna weryfikacja przez stare interakcje.",
      "typ": "lojalnosc",
      "anti_pattern_note": "Brak presji — to wyroznienie historii, nie warunek dostepu do biezacych tresci."
    },
    {
      "id": "od_pierwszy_koncert",
      "nazwa": "Pierwszy koncert",
      "ikona": "🎤",
      "opis": "Byles na koncercie Metrowego na zywo.",
      "kryterium": "Fan oznaczyl udzial w wydarzeniu live (self-check-in lub kod z biletu, opcjonalnie). Bez przymusu podawania danych biletu.",
      "typ": "obecnosc"
    },
    {
      "id": "od_ambasador",
      "nazwa": "Ambasador",
      "ikona": "📣",
      "opis": "Polecasz tworczosc Metrowego innym — dobrowolnie, bez wymogu.",
      "kryterium": "Fan dobrowolnie udostepnil utwor/ogloszenie >=1 raz. Udostepnianie jest opcjonalne i nie warunkuje innych funkcji (brak dark sharing).",
      "typ": "wsparcie"
    },
    {
      "id": "od_sluchacz_lojalny",
      "nazwa": "Lojalny sluchacz",
      "ikona": "🔁",
      "opis": "Wracasz do muzyki Metrowego regularnie (proxy z Last.fm/Spotify — agregat, opt-in).",
      "kryterium": "Powracajace odsluchania w czasie. Sygnal agregatowy, fan sam laczy konto streamingowe jesli chce (opt-in, nie wymagane).",
      "typ": "lojalnosc"
    },
    {
      "id": "od_wsparcie_w_trudnym",
      "nazwa": "Tarcza spolecznosci",
      "ikona": "🛡️",
      "opis": "Reagujesz konstruktywnie, gdy w komentarzach pojawia sie hejt — wspierasz, nie atakujesz.",
      "kryterium": "Pozytywne, wspierajace interakcje w momentach napiecia (spojne z antihate_radar: krytyka OK, hejt nie). Manualnie przyznawana przez moderacje, nie automat (by uniknac gamifikacji konfliktu).",
      "typ": "spolecznosc",
      "anti_pattern_note": "NIE nagradza sciagania sie z hejterami; nagradza wsparcie ofiary i deeskalacje."
    },
    {
      "id": "od_tworca_tekstu",
      "nazwa": "Wspolny tekst",
      "ikona": "✍️",
      "opis": "Wniosles cos do warstwy tekstowej (poprawka, tlumaczenie, interpretacja na tekstowo.pl).",
      "kryterium": "Udokumentowany wklad w teksty/interpretacje. Jawny, atrybuowany do fana.",
      "typ": "wspolтworzenie"
    }
  ],

  "poziomy": [
    {
      "id": "poz_1",
      "nazwa": "Sluchacz",
      "prog": 0,
      "kryterium": "Zalozenie profilu fanowskiego (pseudonim wystarczy). Punkt startu — kazdy zaczyna tutaj.",
      "odblokowuje": ["dostep do tuby informacyjnej (ogloszenia)", "mozliwosc zdobywania odznak"],
      "cap_note": "Brak warunku oprocz dobrowolnego dolaczenia."
    },
    {
      "id": "poz_2",
      "nazwa": "Staly sluchacz",
      "prog": 3,
      "kryterium": ">=3 odznaki LUB regularna obecnosc przez >=4 tygodnie (obecnosc liczona miekko — brak kar za przerwy, brak streak-shaming).",
      "odblokowuje": ["Backstage poziom 1 (Kulisy)", "wyrozniony pseudonim w spolecznosci"],
      "cap_note": "Prog osiagalny bez wydawania pieniedzy i bez codziennego grindu."
    },
    {
      "id": "poz_3",
      "nazwa": "Spolecznosc rdzenia",
      "prog": 5,
      "kryterium": ">=5 odznak ORAZ >=1 odznaka z kategorii 'wsparcie'/'spolecznosc' (realna kontrybucja, nie sam czas).",
      "odblokowuje": ["Backstage poziom 2 (Pracownia)", "wczesny wglad w ogloszenia tuby", "imienne podziekowanie artysty (opcjonalne, za zgoda fana)"],
      "cap_note": "NAJWYZSZY poziom w v1 — celowo brak nieskonczonej drabiny. Relacja, nie wyscig."
    }
  ],

  "backstage": [
    {
      "id": "bs_1",
      "poziom": 1,
      "nazwa": "Kulisy",
      "wymagany_poziom_fana": "poz_2 (Staly sluchacz)",
      "odblokowuje": "Materialy zza kulis: zdjecia z prob, krotkie notki o powstawaniu utworow, kalendarz nadchodzacych wydarzen przed publicznym ogloszeniem.",
      "wartosc_realna": "Prawdziwy wglad w proces, nie placeholder. Tresc dostarcza artysta/operator (HO), nie generowana sztucznie.",
      "anti_pattern_note": "Brak sztucznego dawkowania ('odblokuj 1/dzien'); material dostepny od razu po osiagnieciu progu."
    },
    {
      "id": "bs_2",
      "poziom": 2,
      "nazwa": "Pracownia",
      "wymagany_poziom_fana": "poz_3 (Spolecznosc rdzenia)",
      "odblokowuje": "Glebszy wglad: wersje robocze/szkice tekstow (za zgoda artysty), komentarz artysty do tworczosci, mozliwosc zadania pytania w sesji Q&A (moderowana), podziekowania imienne.",
      "wartosc_realna": "Bezposrednia relacja z procesem tworczym artysty. Q&A moderowane wg antihate_radar (krytyka przechodzi, hejt nie).",
      "anti_pattern_note": "Pytania nie sa platne; brak licytacji dostepu do artysty. Zero pay-to-skip."
    }
  ],

  "misje": [
    {
      "id": "mis_poznaj_historie",
      "nazwa": "Poznaj historie",
      "opis": "Przeczytaj os czasu Metrowego (osczasu.html) — skad sie wziela jego muzyka.",
      "cel_pozytywny": "Budowa zrozumienia i wiezi z droga artysty. Zero spamu, zero grindu — jednorazowa, sensowna.",
      "nagroda": "Postep w kierunku odznaki 'Obecny od poczatku' (kontekst).",
      "anti_pattern_note": "Misja edukacyjna, nie zadanie powtarzalne dla punktow."
    },
    {
      "id": "mis_podziel_sie",
      "nazwa": "Podziel sie tym co lubisz",
      "opis": "Jesli utwor Cie poruszyl — dobrowolnie polec go komus. Tylko jesli naprawde chcesz.",
      "cel_pozytywny": "Organiczne wsparcie zasiegu artysty z autentycznej checi, nie z przymusu.",
      "nagroda": "Postep ku odznace 'Ambasador'.",
      "anti_pattern_note": "JAWNIE dobrowolna — brak blokady tresci za udostepnienie (no dark sharing), brak licznika presji."
    },
    {
      "id": "mis_wspieraj_spolecznosc",
      "nazwa": "Badz tarcza, nie mieczem",
      "opis": "Gdy widzisz hejt wobec artysty lub innego fana — zareaguj wspierajaco (zglos, wesprzyj ofiare), nie eskaluj.",
      "cel_pozytywny": "Zdrowa, bezpieczna spolecznosc. Spojne z antihate_radar: krytyka tworczosci jest OK, atak na osobe nie.",
      "nagroda": "Postep ku odznace 'Tarcza spolecznosci'.",
      "anti_pattern_note": "NIE nagradza klotni ani 'obrony za wszelka cene' — nagradza deeskalacje i zglaszanie groźb do moderacji (HO)."
    },
    {
      "id": "mis_wspoltworz",
      "nazwa": "Dorzuc swoja cegielke",
      "opis": "Masz interpretacje tekstu, tlumaczenie, poprawke? Podziel sie — Twoj wklad bedzie atrybuowany.",
      "cel_pozytywny": "Wspoltworzenie warstwy tekstowej, docenienie wkladu fana z imienia.",
      "nagroda": "Postep ku odznace 'Wspolny tekst'.",
      "anti_pattern_note": "Wklad jawnie atrybuowany fanowi (godnosc), nie zawlaszczany."
    }
  ],

  "interakcje_cel": {
    "cel": 100,
    "osiagniete": 0,
    "status": "CEL_DO_OSIAGNIECIA",
    "uwaga": "Licznik 100 interakcji to CEL akceptacyjny zadania P1-2, NIE zadeklarowana realna liczba. Startuje od 0. Proof before Claim: rejestr realny startuje pusty, rosnie z monitoringu live po publikacji (GO-A2)."
  },

  "publikacja": {
    "status": "ARTEFAKT_LOKALNY",
    "human_override": "GO-A2",
    "uwaga": "Publikacja zewnetrzna profilu fanowskiego wymaga Human Override (operator). Ten plik + fan_page.html sa zbudowane LOKALNIE i NIE sa publikowane do czasu GO-A2."
  },

  "ai_disclosure": {
    "art50": true,
    "note": "Tresci generowane/wspierane przez AI w fan_page.html (tuba, opisy) oznaczone <ai-badge> wg components/ai-badge.js (6 pol proof-pack).",
    "ai_badge_ref": "../components/ai-badge.js"
  },

  "cross_ref": {
    "fanpulse": "fani/fanpulse.json",
    "antihate_radar": "fani/antihate_radar.md",
    "ai_badge": "components/ai-badge.js",
    "fan_page": "fani/fan_page.html",
    "osint_timeline": "archiwum/Metrowy_Os_Czasu_OSINT_Internet_Timeline_11062026.md"
  },

  "status": "fancore_v1_local_no_publish",
  "podsumowanie_modelu": {
    "odznaki": 6,
    "poziomy": 3,
    "backstage_poziomy": 2,
    "misje": 4
  }
}
