# F0 anti-cheat regler — Fup og Fakta ## Formål Fastlæg simple, håndhævelige anti-cheat regler for F0, så runderne opleves fair uden tung NLP/moderation. ## Scope (F0) Gælder for inputfasen hvor spillere indsender løgne til et spørgsmål. ## Regelsæt (F0) ### 1) Ingen identiske løgne i samme runde - To spillere må ikke have samme løgntekst efter normalisering. - Hvis en indsendt løgn matcher en eksisterende løgn i runden, afvises den med fejlbesked og spilleren skal indsende ny tekst. ### 2) Ingen løgn må være identisk med korrekt svar - En løgn, der matcher det korrekte svar efter normalisering, afvises. ### 3) Ingen tomme eller trivielt ugyldige svar - Tom tekst, kun whitespace eller kun tegnsætning afvises. - Minimumslængde: 2 tegn efter trim. ### 4) Én aktiv løgn pr. spiller pr. spørgsmål - Spilleren må gerne overskrive sin egen løgn inden deadline. - Ved deadline er kun seneste gyldige version gældende. ### 5) Ingen afslørende metatekst - Svar som eksplicit afslører bluff-mekanikken (fx “det rigtige svar er …”, “jeg lyver”) afvises i F0 via enkel nøgleordsblokliste. ## Normalisering (bruges i regel 1 + 2) Følgende normalisering anvendes før sammenligning: 1. Unicode NFKC 2. Trim + collapse af flere mellemrum til ét 3. Lowercase 4. Fjern afsluttende tegnsætning (`.`, `,`, `!`, `?`, `:` `;`) Bemærk: F0 bruger **ikke** semantisk duplikatdetektion (synonymer/stavevarianter kan passere). ## Håndhævelse i UX/API - Validering sker server-side ved submit. - Klienten får konkret fejlårsag og kan indsende igen inden tidsfrist. - Samme valideringsregler gælder for alle klienter (web/mobil). ## Acceptance criteria (F0) - Identiske løgne (efter normalisering) kan ikke gemmes i samme runde. - Løgn == korrekt svar (efter normalisering) kan ikke gemmes. - Tom/ugyldig input afvises. - Overskrivning af egen løgn inden deadline virker. - Ved deadline bruges kun seneste gyldige løgn. ## Out-of-scope (bevidst udskudt) - Semantisk duplikatdetektion (embeddings/fuzzy matching) - Avanceret toxicitet/moderation - Sprogdetektion og translitterering