ADR-015: Norsk domenespråk i kode — ingen oversettelseslag⚓︎
Domenebegreper i koden bærer det kanoniske norske navnet fra CONTEXT.md (æøå tillatt i C#). Teknisk stillas forblir engelsk. Ett ord per begrep — likt i saksbehandlerens munn, i ordlisten og i koden.
Kontekst⚓︎
CONTEXT.md har norsk som kanonisk domenespråk, men koden er tospråklig: nyere kode er norsk
(SøknadsDato, Saksnummer), eldre bruker engelske kodenavn (Case, Rule, CaseEvaluation) som
ordlisten må pare med en «(kodenavn X)»-parentes. Den parentesen er et oversettelseslag — hver gang
noen beveger seg mellom domenespråket og koden, oversetter de, og slike lag drifter. Den kommende
ERS-replikerings-pivoten ville bygd mange nye modeller på engelsk og fordypet laget.
Nøkkelinnsikten: anti-korrupsjon mot ERS ≠ anglifisering. ACL-en skal beskytte mot ERS' tekniske skjema, men målspråket kan og bør være norsk domenespråk. Det er faktisk mer frikoblet — domenespråket overlever en utskifting av ERS (eller at Kai overtar saksbehandlingen); en engelsk oversettelse tjener ingen.
Beslutning⚓︎
Norske domeneidentifikatorer. Typer, properties, metoder, namespaces og ports som uttrykker
domenebegreper bærer det norske navnet fra CONTEXT.md, stavet med æøå. (Presedens: SøknadsDato. Bonus:
Sak fjerner #pragma warning disable CA1716 som Case krevde.)
Teknisk stillas forblir engelsk. Repository, Handler, Adapter, DbContext, Factory,
Options, osv. Grensetest: ville en saksbehandler kjent igjen ordet? → norsk; ren plumbing? →
engelsk. Blandet er forventet: SakRepository, RegelresultatHandler, MimirSakAdapter.
DB-identifikatorer er ASCII. Tabell-/kolonnenavn holdes ASCII for å unngå æøå-friksjon i
migrasjoner/psql. Det norske navnet lever i C#-typen; kolonnen er et ASCII-alias via eksplisitt
EF-mapping (SøknadsDato → soknads_dato). Ingen info tapt — typen er kilden.
Omdøp av eksisterende kode lander som én mekanisk, oppførsels-bevarende PR før berikelses-pivoten:
| Engelsk | Norsk |
|---|---|
Case |
Sak |
Rule |
Regel |
CaseEvaluation |
Regelresultat |
RuleDecision |
Beslutning |
StageReview |
Stadiegjennomgang |
Stage |
Stadium |
…+ tilhørende *Id-typer, ports, EF-DbSet-er/-konfig og en datapreserverende EF-migrasjon.
Ordlistens «(kodenavn X)»-parenteser fjernes, og en kort regel i CLAUDE.md håndhever konvensjonen for
ny kode.
Ikke-mål⚓︎
- Oversette teknisk sjargong til norsk.
- Endre API-/SDK-wire-kontrakter (JSON-navn, ruter, enum-verdier) — ekstern konsument, egen vurdering.
- v1 (
Enova.Agent.*) — sunsettes, omdøpes ikke. - Hvilke felter de replikerte modellene får — egen ERS-spec.
Konsekvenser⚓︎
- Ingen oversettelse; ordlisten blir enkelt kilde, og koden er mer frikoblet fra ERS.
- Pris: ett stort mekanisk omdøp (egen PR) + et lite navne-gap C#↔DB (
SøknadsDato/soknads_dato) som EF-mappingen bygger bro over. - Forkastet: status quo (beholder oversettelseslaget) og ASCII-translitterert norsk (
Soknad— innfører en annen oversettelse, og er allerede brutt avSøknadsDato).
Verifisering⚓︎
- [ ] Ingen
Case/Rule/Stage/CaseEvaluation/RuleDecision/StageReview-domenetyper igjen; «(kodenavn)» borte fra CONTEXT.md. - [ ] Teknisk sjargong fortsatt engelsk; DB-identifikatorer ASCII via EF-mapping.
- [ ]
CLAUDE.md-regel på plass;dotnet build Kai.slnxgrønt, oppførsel uendret.
Bygger på CONTEXT.md; motivert av ERS-replikerings-pivoten. Implementasjon:
docs/superpowers/plans/2026-06-29-norsk-domenesprak-rename.md. Håndheving lever i CLAUDE.md.