CYBER-HANDOFF.md

# Cyber Command — bieżący handoff Stan na: **2026-09-12** Kod: **C-01…C-06 GO** · **E-01 CONTENT GO** · **E-02 CONTENT REVIEW LGD** · UI lab **V-01G · V-02 · V-02E · V-03** · silnik dalej bez C-07 · EDU: E-03 nie startować Domena: `cyber.gramy.biz` (istnieje, niepodłączona do builda) `game_key`: `cyber` · produkt: **CYBER COMMAND** **Jedyny dokument startowy dla Cyber.** Audyt silnika: rozmowa `GRAMY-SHARED-ENGINE-AUDIT`. Standard nowej gry: `docs/STANDARD-NOWEJ-GRY-GRAMY-BIZ.md`. Karty i modele: `docs/games/cyber/CYBER-PODZIAL-MODELI.md`. Kontrakt i Reuse Map: `docs/games/cyber/CYBER-CONTRACT.md`. Świat kampanii V1: `docs/games/cyber/CYBER-WORLD-V1.md` (**W-01**; w nowszych kartach: **COMPANY-01**, former NEXORA). Kanon incydentu V1: `docs/games/cyber/CYBER-INCIDENT-V1.md` (**W-02**). Mission Control V1: `docs/games/cyber/CYBER-MISSION-CONTROL-V1.md` (**W-03**). Audyt UI: `docs/games/cyber/CYBER-UI-REUSE-AUDIT.md` (**U-01**). Prototyp COMMAND: `cyber-prototype.html` → `src/prototypes/cyber-mission-control/` (**V-01**). Curriculum Map V1: `docs/games/cyber/CYBER-CURRICULUM-MAP-V1.md` (**E-01**). Pre-Game Briefing V1: `docs/games/cyber/CYBER-PRE-GAME-BRIEFING-V1.md` (**E-02**). Nie czytaj Gminy, Hotelu ani `docs/analiza` „na wszelki wypadek”. TARGETED REUSE REVIEW: tylko 1–3 pliki wskazane w karcie / Reuse Map. --- ## Decyzja LGD (wiążąca) **CYBER SHOULD USE = wariant 2** ```text istniejąca platforma GRAMY + istniejące kontrakty CORE (bez zmian sygnatur) + lokalne moduły domenowe w src/lib/cyber ``` Kolejność pracy: ```text REUSE FIRST → ADAPT SECOND → DESIGN NEW LAST ``` - Nie projektujemy mechaniki Cyber od zera, jeśli Gmina (lub CORE) ma sprawdzony mechanizm. - Runtime Gminy **nie wolno importować** (`src/lib/gmina/*`). - Przed analogicznym modułem Cyber: TARGETED REUSE REVIEW wskazanych plików. - Dobry mechanizm Gminy: zachować logikę, adaptować ontologię, położyć kopię w `src/lib/cyber`, dodać lokalny test Cyber. - **Nie** wyciągamy Crisis Engine do `src/core`. Identyczny stabilny kontrakt → zgłoszenie `SHARED-EXTRACTION CANDIDATE`, bez refaktoru. - **Nie** wyginać Cyber do `weekly-loop`, turówkowego `delayed-effects`, `cashDelta`, P&L, ekonomii Hotelu/Agro. --- ## Twardy podział | Warstwa | Co | |---|---| | **SHARED / PLATFORM** | auth, launch, instytucje, grupy, sloty, `game_progress`, save/resume, panel nauczyciela, kontrakt replay, RNG, decision record, neutralne UI | | **REUSE BY ADAPTATION** | injecty warunkowe, zegar kryzysowy, delayed effects w czasie kryzysu, fog of war, zależności infrastruktury, inbox, wzorzec AAR | | **CYBER LOCAL (NEW)** | stan atakującego, kill chain, tożsamości, privilege / lateral / exfil / ransomware, twin IT, zasoby i działania IR, comms SOC/IT/CEO/DPO/media, regulatory deadlines, scoring i fakty Cyber, dane scenariusza | **Nie zmieniamy na start:** `src/core/*`, Gmina, Hotel, inne gry, istniejące kontrakty CORE. --- ## Model czasu (zatwierdzony) - Jednostka logiczna: **1 minuta czasu symulacji**. - To **nie** jest tick co minutę ani zegar ścienny. - Silnik **event-driven**: następny event = koniec działania **lub** inject **lub** postęp ataku **lub** komunikat **lub** deadline **lub** delayed consequence. - Determinizm: ten sam seed + ten sam stan + te same decyzje = ten sam wynik. Los wyłącznie przez `mulberry32` z seeda w stanie. --- ## Testy (wiążące) - Implementacja lokalnego modułu Cyber → **jeden** test `scripts/cyber-*-test.mjs`. - Nie ruszamy kodu Gminy → **nie** odpalamy regresji Gminy. - Zakaz: `build:all-surfaces`, pełny test suite, golden innych gier. - Zmiana shared/CORE → **CROSS-GAME ESCALATION**, osobna karta, osobne testy. --- ## Plan (nie przeskakuj) | # | Krok | Status | |---|---|---| | 1 | Audyt shared engine (`GRAMY-SHARED-ENGINE-AUDIT`) | ✅ | | 2 | Decyzja LGD: wariant 2 | ✅ | | 3 | Dokumenty: ten handoff, kontrakt, podział modeli | ✅ ten commit dokumentacyjny | | 4 | LGD zamyka max. 5 otwartych kwestii z raportu | ⏳ | | 5 | Prymitywy: `C-01`…`C-06` (zegar, kolejka, inject, wiedza, graf, player twin) | ✅ GO | | 5a | **W-01** World Bible | ✅ `CYBER-WORLD-V1.md` | | 5c | **W-02** Adversary & Incident Canon | ✅ `CYBER-INCIDENT-V1.md` | | 5d | **W-03** Mission Control experience | ✅ `CYBER-MISSION-CONTROL-V1.md` | | 5e | **U-01** Targeted UI reuse audit | ✅ `CYBER-UI-REUSE-AUDIT.md` | | 5f | **V-01 / V-01G** Static Mission Control slice | ✅ LAB; `http://127.0.0.1:5173/cyber-prototype.html` | | 5g | **V-02** Incoming Call / CEO pressure | ✅ LAB mock; bez audio, bez silnika | | 5h | **V-02E** Educational terminology layer | ✅ registry + tooltip/karta; TRAINING/EXAM | | 5i | **V-03** Dynamics & visual state language | ✅ LAB overlay + demo; bez silnika | | 5b | `C-04` fog of war (kod) | ✅ `src/lib/cyber/cyber-knowledge.js` | | 5j | `C-05` Digital Twin Graph | ✅ `src/lib/cyber/cyber-graph.js` + `world/company-v1-graph.js` | | 5k | `C-06` Player Twin Projection | ✅ `src/lib/cyber/cyber-twin-projection.js` | | E1 | **E-01** Curriculum Map | ✅ CONTENT GO `CYBER-CURRICULUM-MAP-V1.md` | | E2 | **E-02** Pre-game briefing / miniwykład | ⏳ CONTENT REVIEW LGD `CYBER-PRE-GAME-BRIEFING-V1.md` | | E3 | **E-03** Student Handbook / e-book | ⏸ | | E4 | **E-04** Teacher Guide | ⏸ | | E5 | **E-05** Mission Advisor / avatar | ⏸ nie kodować teraz | | E6 | **E-06** Debrief & learning report | ⏸ | | 6 | Manifest / surface / zapis pustego stanu | ⏸ po prymitywach Etapu 1 | | 7 | Mission Control UI / kampania / twin IT | ⏸ poza Etapem 1 | --- ## ▶ CO TERAZ | Wybierz | Znaczenie | |---|---| | **`stop`** | E-02 CONTENT REVIEW LGD. Nie startować E-03 bez karty. | | **`lgd`** | Przegląd Curriculum Map (baseline, 8 kompetencji, briefing). | | **`E-02`** | ⏳ CONTENT REVIEW LGD — treść briefingu V1 na review channel. Final GO po LGD. | | **`C-07`** | **Nie zaczynać.** | **Następny krok:** E-02 CONTENT REVIEW LGD na docs.gramy.biz/cyber-review/. Final GO po akceptacji. E-03 nie startować samodzielnie. **Nie implementować teraz:** skrypt wykładu, handbook, avatar, C-07, UI→C-06. Hotel, Gmina, Recepcja — poza tym handoffem. W working copy są obce zmiany Hotel/Gmina: **nie ruszać**. --- ## EDU / LEARNING TRACK (obowiązkowy) To są **planowane, obowiązkowe** części CYBER COMMAND. Nie traktować ich jako opcjonalnych dodatków. Dalsza architektura **nie może** pominąć tej warstwy. **Zakaz w kartach silnika C-\*:** wykład, avatar, ebook, slajdy, onboarding flow, Learning Content Registry. | Karta | Tytuł | Status | |---|---|---| | **E-01** | CURRICULUM MAP | ✅ CONTENT GO | | **E-02** | PRE-GAME BRIEFING / MINIWYKŁAD | ⏳ CONTENT REVIEW LGD (przed final GO) | | **E-03** | STUDENT HANDBOOK / E-BOOK | ⏸ | | **E-04** | TEACHER GUIDE / PODRĘCZNIK PROWADZĄCEGO | ⏸ | | **E-05** | MISSION ADVISOR / AVATAR | ⏸ | | **E-06** | DEBRIEF & LEARNING REPORT | ⏸ | ### Pre-game briefing Przed właściwą symulacją uczestnik dostaje krótkie przygotowanie dydaktyczne. Docelowo **8–15 minut**. Dwa sposoby — treść **merytorycznie spójna**: - **A. TEACHER-LED** — briefing prowadzi nauczyciel / prowadzący. - **B. SELF-GUIDED** — jeżeli nauczyciel nie prowadzi wprowadzenia, CYBER COMMAND przeprowadza briefing samodzielnie. Minimalny zakres (uczeń rozumie przed misją): - czym jest cyberatak; - czym jest incydent cyberbezpieczeństwa; - nie każdy alert oznacza potwierdzony atak; - phishing / przejęcie konta; - ransomware; - możliwość kradzieży danych; - znaczenie tożsamości cyfrowej i kont; - czym jest SOC; - czym jest WMS i dlaczego system IT może zatrzymać magazyn; - czym jest containment; - czym jest recovery; - różnica SIGNAL / SUSPECTED / CONFIRMED; - bezpieczeństwo może kolidować z ciągłością działania firmy; - rola Incident Commandera; - gracz podejmuje decyzje przy niepełnej informacji. Briefing **nie może** zdradzać rozwiązania scenariusza ani ścieżki ataku W-02. Treść V1: `docs/games/cyber/CYBER-PRE-GAME-BRIEFING-V1.md` (**E-02**). Review channel: `CYBER-PRE-GAME-BRIEFING-V1.html` na docs.gramy.biz/cyber-review/. **Decyzje LGD (E-02 / E-02R):** - **Self-guided briefing** = wymaganie **V1 i pilotażu** (nie opcjonalny dodatek). - **Self-guided:** osobny ekran dla **dwóch osi** — pewność informacji (confidence/verification) vs stan operacyjny (operational status). - **Baseline** pozostaje **10 węzłów**; visibility **nie** oznacza obowiązku omawiania każdego node w briefingu. - **EXAM** używa **tego samego rdzenia** pre-game briefing; różni się **pomocą podczas właściwej misji** (Advisor, hints — nie treścią miniwykładu). - **E-02** wymaga **CONTENT REVIEW LGD** przed **final GO**. ### Wiedza organizacyjna przed grą E-01 / E-02 określą, które elementy COMPANY V1 uczestnik zna jeszcze przed T0. To później stanie się właściwym `baselineVisibleNodeIds` dla C-06. C-06 ma **mechanizm** baseline. C-06 **nie** ustala finalnej listy. ### Student Handbook Docelowy materiał ucznia: - podstawy cyberbezpieczeństwa potrzebne do gry; - opis organizacji; - słownik; - role; - sposób czytania Mission Control; - rodzaje statusów; - rodzaje decyzji; - podstawy incident response; - materiały do powtórki po grze. **Nie może** zawierać: ground truth scenariusza, poprawnych decyzji dla W-02, ukrytych ścieżek ataku. ### Teacher Guide Szerszy niż handbook ucznia. Docelowo: - cele dydaktyczne; - wymagania wstępne; - gotowy scenariusz miniwykładu; - odpowiedzi i wyjaśnienia; - pełny przebieg scenariusza; - Ground Truth dostępny prowadzącemu; - Decision Windows; - typowe błędy studentów; - pytania do debriefingu; - możliwe warianty przebiegu; - sposób oceniania; - instrukcja przeprowadzenia zajęć; - tryb TRAINING i EXAM. ### Mission Advisor / Avatar Docelowy prowadzący w produkcie. **Nie implementować teraz.** Może: poprowadzić pre-game briefing; wyjaśniać terminy; pomagać w orientacji w interfejsie; pojawiać się przy nowych rodzajach zdarzeń; uczestniczyć w debriefingu. **Nie może:** wskazywać właściwej decyzji; zdradzać Ground Truth; mówić, którędy idzie atak; zastępować samodzielnego rozumowania uczestnika. TRAINING — większa dostępność Advisora. EXAM — silnie ograniczona pomoc. ### Przyszły kontrakt EDU: CYBER LEARNING CONTENT REGISTRY Tooltipy, słownik, pre-game briefing, avatar, Student Handbook i Teacher Guide **nie mogą** mieć sześciu różnych wersji definicji. Jedna wspólna warstwa treści edukacyjnych: **CYBER LEARNING CONTENT REGISTRY**. Nie implementować w C-06. Osobna karta EDU, nie silnik. --- ## REVIEW DOCS CHANNEL Public review index: https://docs.gramy.biz/cyber-review/ **Jeden URL dla narzędzi AI (ChatGPT / fetch):** https://docs.gramy.biz/cyber-review/review-bundle.txt Cała whitelist w jednym pliku tekstowym — nie trzeba ręcznie wklejać `.md`. Alternatywa per dokument (HTML, `text/html`): https://docs.gramy.biz/cyber-review/CYBER-CURRICULUM-MAP-V1.html (pełna lista w `manifest.json` → pola `html`). Publikacja: **explicit whitelist only**. Nowe pliki z `docs/games/cyber/` nie wchodzą automatycznie — wymagają jawnego dopisania do whitelisty. Skrypt: `scripts/publish-cyber-review-docs.sh` Zdalny katalog: `pub/docs/cyber-review` **Crawl / fetch (robots.txt w katalogu review):** - `OAI-SearchBot` — **Allow** - `ChatGPT-User` — **Allow** - `GPTBot` — **Disallow** (trening, nie search) - Brak `noindex` na indexie review **WAF (Hosti24 — ręcznie poza skryptem):** upewnij się, że reguły WAF **nie blokują** `OAI-SearchBot` ani `ChatGPT-User` na `docs.gramy.biz`. Test po deployu: `curl -A OAI-SearchBot -I https://docs.gramy.biz/cyber-review/review-bundle.txt` → oczekiwane **200**. --- ## Budżet kontekstu **ONE CARD = ONE PROBLEM.** Agent czyta: ten plik, kontrakt Cyber, kartę z podziału modeli, pliki dozwolone na karcie. TARGETED REUSE REVIEW: wyłącznie źródła z kolumny „files allowed” w Reuse Map.