# Contract-gate — §B/§C1 mekanisk binding-gate Deterministisk gate som håndhever den **mekaniske** halvdelen av Maskinrommet-skrivekontrakten (`maskinrommet/docs/skrivekontrakt.md`: §B de ti reglene, §C1 regelsjekk-gaten, §C2 prosa-håndverk) **før et utkast leveres til operatøren** — så de samme mekaniske korreksjonene aldri når KTG to ganger. Dette er **slice 1** av fix #1 (§C2 bindende + akkumulerende). Den er bevisst _bindende_: ren string/regex-evaluering, ingen AI, ingen nettverk — den kan ikke hoppes over eller snakkes rundt, og kjører på millisekunder. ## Hva gaten gjør (og ikke gjør) Tre-nivå-modellen fra diagnosen — denne gaten er **nivå 1**: | Nivå | Hva | Hvem | Hvor | |------|-----|------|------| | **1 — rent mekanisk** | §B/§C1-grep + tellinger | **denne gaten** (BLOCK/WARN) | her | | 2 — AI-mekanisk | §C1 pkt 1/8/9 | `voice-scrubber` (fikser før handoff) | Step 4 | | 3 — ekte dømmekraft | §C2 narrativ-arkitektur | `editorial-reviewer` (flagg til KTG) | Step 5.5 | **Klassifiseringsprinsipp:** BLOCK bare det gaten kan _bevise_ med ~null false positives. Alt som krever dom → WARN (blokkerer ikke). Ekte dømmekraft / ekstern data er ikke her i det hele tatt (blir hos nivå 2/3). ### Regler (seed) | Regel | Ref | Severity | |-------|-----|----------| | Modell-stråmann (4 eksakte fraser) | §B-3 | **BLOCK** | | Serie-tese «er ikke modellen» | §B-10 | **BLOCK** | | `_understrek_`-emfase | §C1 | **BLOCK** | | Metafor-ord (tak/lodd/reise/landskap) | §B-2 | WARN | | Bar «modell» (alle treff) | §B-3 | WARN | | «KI-en» som subjekt (>3×) | hygiene | WARN | | PS-blokk | §B-9 | WARN | | Tankestrek-tetthet (>1/50 ord) | §C2 | WARN | | Versal-tic (emfase-ord, ikke akronymer) | §C2 | WARN | | AI-tells (navngitte fraser) | §B-8 | WARN | Reglene er **data** (`src/rules.ts`), ikke hardkodet logikk — det er det som gjør akkumuleringen (slice 2) ren: en ny regel = én rad i `skrivekontrakt.md` + én post her. ### Bevisst utsatt (dokumenterte gap, ikke stille utelatelser) - **§C2 «postulerte tall»** (tall uten hedge/kilde) — krever hedge-nærhet-heuristikk med ikke-triviell false-positive-risiko. - **§C2 «ordrette gjentakelser»** (n-gram gjentatt >2×) — krever n-gram-analyse; kontraktens navngitte fraser er utgave-spesifikke. Begge hører hjemme i en senere slice når heuristikken kan gjøres tillitsverdig. ## Kjøre ```bash cd scripts/contract-gate npm install # engangs (tsx + typescript) node --import tsx src/cli.ts # kvittering + exit 0/1 node --import tsx src/cli.ts --json # maskinlesbart npm test # 21 tester ``` Exit: `0` = passert (ingen BLOCK, handoff tillatt), `1` = blokkert, `2` = bruksfeil. WARN feiler aldri gaten — de surfaces for KTGs dom. ## Validering (6 ekte utgaver, juni 2026) - **0 BLOCK** på publiserte Del 2–5 → false-blokkerer ikke ekte arbeid. - **Del 6 (WIP):** fanget et ekte Regel-10-brudd («Den knappe ressursen er ikke modellen» i brødteksten) automatisk — slog-drepingen i praksis. - **Del 1:** blokkerer på samme frase, men ble publisert **før** Regel 10 ble kodifisert (01.06) — historisk artefakt, ikke gate-feil. - Versal-tic-redesignet (denylist av emfase-ord, ikke allowlist av akronymer) fjernet NAV/DFØ/NPM-false-positivene som ekte data avslørte.