merge: F0 anti-cheat rules

This commit is contained in:
2026-02-27 14:01:09 +01:00
2 changed files with 54 additions and 1 deletions

View File

@@ -29,7 +29,7 @@ Byg **Weirsøe Party Protocol**: en dansk party-webapp platform ala Jackbox, hvo
### Fase 0 — Scope + regler
- [x] Fastlæg MVP for Spil 1 (`Fup og Fakta`) — se `docs/F0_MVP_FUP_OG_FAKTA.md`
- [x] Midlertidige defaults sat (X/Z, spillerantal)
- [ ] Fastlæg anti-cheat regler (fx ingen identiske løgne)
- [x] Fastlæg anti-cheat regler (fx ingen identiske løgne) — se docs/F0_ANTI_CHEAT_RULES.md
### Fase 1 — Monorepo + Django skelet
- [x] Opret Django-projekt (`partyhub`)

View File

@@ -0,0 +1,53 @@
# 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