A frontend teljes egészében statikus HTML/CSS/JS — nincs SSR, nincs framework, nincs build pipeline. A backend Flask alkalmazás Railway-en fut, minden üzleti logikával (AI hívás, kódgenerálás, adatbázis). Az AI válaszok Server-Sent Events csatornán streamelnek (L3), illetve tool-use structured output után word-by-word SSE-vel (L1/L2). Az in-memory active_chat_objects dict tárolja az aktív chat sessionöket (30 perces TTL, 1800 mp, automatikus eviction).
/api/analytics alapú játékosszám a top barbanBase URL: https://milton-ai-production.up.railway.app · Globális limit: 100 req/perc, 5000 req/nap (IP alapon)
L Z R . A B C . 1 2 3 4 . X Y Z WMinden API hívásnál a backend szerver-oldalon kiszámolja az eddig alkalmazott technikákat, és egy kompakt [INTEL] blokkot fűz a user üzenet elejére. Az AI ezt saját memóriaként kezeli — ismételt technikára személyreszabott visszautasítást ad, névvel szólítja az operátort a kulcsmomentumokban. A blokk nem tárolódik a DB-ben (csak az eredeti prompt), de megjelenik az in-memory chat historyben.
Az _extract_base_prompt() helper stripeli az [INTEL] prefixet a tárolt üzenetekből újraosztályozáskor,
így a technika-számolás nem szennyezi saját magát egymást követő körökben.
classify_prompt()4 kategória keyword-lista alapján, szótár score-al, nyertes kategória visszaadással:
/api/analytics) már betöltve. Indításkor az adatok localStorage.chimera_session-ba kerülnek, majd az oldal átirányít a game.html játékkonzolra.BIO-[8 hex karakter, 0-9A-F], pl. BIO-4AF31C8D. A localStorage.chimera_session beolvasásával inicializálódik a játékállapot; ha hiányzik, visszairányítás az index.html-re. Az első /api/chat híváskor a backend létrehozza a session rekordot, generál egy egyedi titkos kódot (RDQ-XXXX), és beállítja az in-memory active_chat_objects bejegyzést a RED-QUEEN system prompttal és üres üzenettörténettel. Boot sequence animáció jelenik meg.[INTEL] blokk számítás → effective_prompt összerakás → /api/chat POST → tool-use structured output → word-by-word SSE stream → kliens megjeleníti. Technikafelismerő chip frissül. Node progress bar tölt. Hint rendszer aktív (1/2/3 percnél)./api/verify POST → timing-safe összehasonlítás → success: true. Achievement tracking: levelStats[n].firstCodeRight beállítva. NODE CLEARED fullscreen overlay (scanline effekt, 1.9 mp). Szintváltás: session ID suffix -L2, új hint rendszer indul.base64, hex, rot13, fordítva) ad vissza azonnal a szövegben, a base64decode.org dekódolási tippel együtt. A játékos dekódolja és beírja a terminálba.thinking SSE esemény, majd first_token. LAZARUS csak önreferens logikai paradoxonra adja ki a kódot karakterenként szóközzel. GLaDOS easter eggek aktívak. L3 glitch effekt fut minden AI válaszon./api/generate_final POST → VACCINE-XXXXX-0000 generálás, DB mentés. Gépelős terminál animáció mutatja a szintézis folyamatot és a kódot. A játékos beírja a kódot → /api/verify_final POST → verified=1./api/win POST. Achievement adatok mentése localStorage-ba (omega_achievements). Result screen: konfetti, LinkedIn badge, PNG letöltés, achievement badge-ek, replay link, CTA a versenyre.SQLite · leaderboard.db · 8 tábla · ALTER TABLE migration (sessions.is_public) · Row-level locking
hmac.compare_digest() metódussal — azonos futási idő helyes és helytelen jelszónál, megakadályozva az időzítési alapú brute-force támadásokat. Minden admin endpoint egyedi POST kérést és jelszó mezőt vár.5000/nap, 100/perc (IP-alapon, in-memory). Endpoint-specifikus: /api/chat 60/perc, /api/verify 15/perc, /api/win 5/perc, admin endpointok 5-30/perc. 429 visszaadása limitáláskor, kliens kezeli.bleach.clean()-en megy át mielőtt DB-be vagy AI-hoz kerül. XSS védelem az összes string mezőnél.script-src 'self' 'unsafe-inline' https://www.googletagmanager.com, connect-src Railway + Analytics, frame-ancestors 'none'.[KÓD_TÖRÖLVE_A_TŰZFAL_ÁLTAL] helyettesíti. A kód kizárólag a pipe utáni hint mezőben adható vissza.[szöveg] | [kód VAGY NONE]. A frontend a pipe utáni részt sosem jeleníti meg közvetlenül — a hint mező külön SSE event-ben jön, és csak a kódfelismerő logikán megy keresztül.parse_base_session())/api/replay és /api/live endpointokban a session ID a parse_base_session() helperrel kerül validálásra: regex ^BIO-[0-9A-F]{8}$. Érvénytelen vagy LIKE wildcardot tartalmazó (pl. %) session ID esetén 400-as hiba kerül visszaadásra — megakadályozva az összes rekord kiszivárgását.A kliens ReadableStream API-val olvassa a streaming választ (nem EventSource, mert POST kell). SSE event típusok:
thinking → L3-nál: thinking overlay megjelenik first_token → thinking overlay eltűnik, AI üzenet bekerül a DOM-ba token → szöveg chunk hozzáfűzése (L3 stream / L1-L2 word-by-word) done → { hint: "RDQ-1234" | "NONE", thinking_ms?: number } error → { message: "..." } — hálózati vagy API hiba
A pipe szeparátor detektálása L3-nál streaming közben: ha | megjelenik a full_text-ben, a pipe előtti rész streamelődik, utána megáll — a hint a done eventben érkezik.
localStorage.omega_achievementsresult.html renderAchievements()spectator.html?session=ID&replay=1GET /api/replay/<session_id>CAMPAIGN_END = 2026-06-27 10:00/api/analytics oldalbetöltéskorgunicorn app:appANTHROPIC_API_KEY = sk-ant-... # Kötelező — Anthropic Claude API kulcs ADMIN_PASSWORD = <titkos> # Kötelező — admin panel HMAC jelszó DB_PATH = leaderboard.db # SQLite fájl elérési útja CLAUDE_MODEL = claude-haiku-4-5-20251001 # L1/L2 modell CLAUDE_MODEL_L3 = claude-sonnet-4-6 # L3 modell (extended thinking) THINKING_BUDGET = 8000 # L3 thinking token budget