Gå til innhold

ADR-017: Registerfakta — behold begge, aldri overskriv⚓︎

Fakta kan komme fra ERS-registeret (Registerfakta, projisert fra den replikerte Sak) eller fra saksdokumenter. Begge beholdes side om side; registerfakta overskriver aldri dokumentfakta — divergens mellom dem er et faktum Regler skal kunne sjekke (f.eks. R-SOKNADSDATO-SAMSVAR). Proveniens er strukturell (hvilken blokk et faktum ligger i), ikke en per-felt-diskriminator.

Kontekst⚓︎

ADR-016 ga Kai en vedlikeholdt, read-only replika av ERS/masterdata (Sak, VirkemiddelMasterdata, Vurdering). Runde 3 kobler denne replikaen til regelmotoren: enkelte fakta regler i dag utleder fra saksdokumenter (f.eks. søknadsdato) finnes allerede autoritativt i den replikerte Sak.

Spørsmålet er hvordan et register-sourcet faktum skal forholde seg til det tilsvarende dokument-ekstraherte faktumet når begge finnes for samme Sak: skal de slås sammen (registeret "vinner"), erstatte hverandre, eller leve som to separate fakta en regel eksplisitt kan sammenligne?

Beslutning⚓︎

  • To kilder, aldri sammenslått. Fakta kan komme fra ERS-registeret (Registerfakta, projisert fra den replikerte Sak via en FraSak-projektor) eller fra saksdokumenter (dokumentfakta). Begge lever side om side på samme faktablokk (f.eks. TungeNullutslippFacts, skjema 3.2).
  • Registerfakta overskriver aldri dokumentfakta. Det finnes ingen skrivevei der et register-verdi erstatter et allerede ekstrahert dokument-felt, eller omvendt. Begge beholdes uavkortet.
  • Divergens er noe Regler sjekker, ikke noe systemet løser stille. Når begge kilder har en verdi for samme underliggende opplysning (f.eks. søknadsdato), er det en regels jobb å sammenligne dem og flagge avvik — ikke et pre-prosesseringssteg som velger én kilde. Første eksempel: R-SOKNADSDATO-REGISTRERT (gate: finnes registerfaktumet) og R-SOKNADSDATO-SAMSVAR (sammenligner ERS-registerets søknadsdato mot den dokument-ekstraherte; NotMet ved divergens).
  • Proveniens er strukturell, ikke en diskriminator. Hvorvidt et faktum stammer fra register eller dokument avgjøres av hvilken blokk/hvilket felt det ligger i (Registerfakta vs. dokumentfaktumet), ikke av et per-felt Kilde-flagg. Det innføres derfor ingen Kilde-enum — ingenting i regelmotoren gater et regelutfall på kilde; regler som bryr seg om begge kilder leser begge feltene eksplisitt.

Ikke-mål⚓︎

  • Automatisk konfliktløsning mellom register- og dokumentfakta (bevisst utelatt — se over).
  • Endring av FeltProvenance eller annen eksisterende sporing av hvor i dokumentet et dokumentfaktum kom fra.
  • Utvidelse av Registerfakta utover søknadsdato i denne runden.

Konsekvenser⚓︎

  • Regler som trenger å sammenligne kilder (som R-SOKNADSDATO-SAMSVAR) blir eksplisitte, lesbare uttrykk for en forretningsregel — ikke en implisitt sammenslåingslogikk begravd i en projektor.
  • Faktablokker vokser med to parallelle felt for samme opplysning i overgangsperioder, men dette er synlig og forventet — ikke en datakvalitetsfeil.
  • Forkastet: la registerfaktumet overskrive/erstatte dokumentfaktumet (skjuler divergens som er verdifull signal); innføre et per-felt Kilde-flagg (unødvendig kompleksitet når proveniens allerede følger av blokkstrukturen, og ingen regelutfall skal gates på kilde).

Bygger på ADR-016 og ADR-015. Design: docs/specs/2026-07-06-registerfakta-round3-design.md. AB#20964.