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.