Retningslinjen sier hva som skjer når Verid, en underleverandør eller en kilde er nede, og hvordan data hentes tilbake. Den skiller mellom det Verid har prøvd, det plattformene tilbyr men Verid ikke har prøvd, og det som ikke er på plass. Tall som ikke er målt, står ikke her.
Sist oppdatert: 28.09.2026, etter gjenopprettingstesten.
1. Hva Verid består av
| Del | Hvor | Hvordan den kommer tilbake |
|---|---|---|
| Kildekoden | GitHub | Hele historikken ligger i git. Alle som har en klon, har en kopi |
| Applikasjonen | Vercel fra1 | Bygges fra git. Tidligere utrullinger ligger hos Vercel |
| Databasen | Neon, AWS eu-central-1 | Plattformens gjenoppretting til et tidspunkt (se punkt 3) |
| Rapportarkivet (PDF/A) | Vercel Blob, privat | Ingen kopi utenfor Blob (se punkt 3) |
| Hemmeligheter | Miljøvariabler hos Vercel | Må lages på nytt hos hver leverandør hvis de går tapt |
| Planlagte jobber | apps/web/vercel.json | Følger med koden |
2. Mål for gjenoppretting
Verid har ikke satt mål for hvor mye data som kan gå tapt (RPO) eller hvor lenge tjenesten kan være nede (RTO). Ingen gjenoppretting er målt.
Det som er kjent:
- Applikasjonen kan rulles tilbake til en tidligere utrulling i Vercel. Funksjonen finnes i Vercel. Verid har ikke skrevet ned når den sist ble brukt.
- Databasen kan gjenopprettes til et hvilket som helst tidspunkt det siste døgnet. Neon holder historikk i 24 timer i Verids prosjekt (
history_retention_seconds: 86400, lest 28.09.2026). Det er det største tapet av data en gjenoppretting kan dekke: skjer feilen mer enn et døgn før den blir oppdaget, finnes ikke tilstanden før feilen lenger.
3. Gjenoppretting per del
Applikasjonen. Hver push til main gir en ny utrulling. Er en utrulling feil, velger vi en tidligere utrulling i Vercel og gjør den til produksjon («Instant Rollback»). Det krever ikke nytt bygg.
Merk: en tilbakerulling tar ikke skjemaet i databasen med seg. Migreringer kjøres for hånd med pnpm --filter @workspace/db migrer (packages/db/package.json), og filene ligger i packages/db/migrasjoner/. En migrering som ikke virker med forrige utrulling, må rettes framover.
Databasen. Neon tilbyr gjenoppretting til et tidspunkt og grener av databasen, med 24 timers historikk. Gjenopprettingen er prøvd — se «Gjenopprettingstest 28.09.2026» under. Planen er:
- Ta et øyeblikksbilde av
mainfra tidspunktet før feilen, og gjenopprett det med `finalize: false` (i konsollen: «Restore» uten å fullføre). Se advarselen under før du gjør dette. - Kontroller grenen: antall saker, siste
hendelse, siste rapport. - Pek
DATABASE_URLogDATABASE_URL_UNPOOLEDi Vercel mot grenen, eller gjenopprett hovedgrenen fra tidspunktet. - Rull ut på nytt, og kontroller innlogging og en sak.
- Skriv i hendelsesnotatet hvilket tidspunkt det ble gjenopprettet til, og hva som ble skrevet etter det og gikk tapt.
Rapportarkivet. PDF/A-filene i Vercel Blob har ingen sikkerhetskopi i Verid. Hash-summen av PDF-en står i rapport.pdf_sha256, så en fil som er endret, kan påvises. En fil som er slettet, kan ikke hentes fra Verid. Rapporten kan lages på nytt fra saksdataene, men den nye filen er ikke den arkiverte.
Sletting og gjenoppretting. En gjenoppretting til et tidspunkt før slettejobben kan hente tilbake saker som skulle vært slettet. Etter en gjenoppretting skal slettejobben (apps/web/app/api/cron/slett-utlopte) kjøres med én gang, ikke vente til neste natt. Skriptet pnpm --filter @workspace/db slett-utlopte kan bare vise hva som ville blitt slettet. Det sletter ingenting.
Jobben sletter arkivet i Vercel Blob før radene i databasen. Arkivfiler som jobben har slettet, kommer ikke tilbake med en gjenoppretting av databasen.
Gjenopprettingstest 28.09.2026
Resultat: gjenopprettingen virker. Et øyeblikksbilde av main fra 07:00 UTC ble hentet tilbake som en egen gren, med tilstanden fra 06:51:
| Produksjon (09:22) | Gjenopprettet kopi | |
|---|---|---|
| Hendelser | 290 | 286 |
| Saker | 53 | 51 |
| Siste hendelse | 08:29:42 | 06:43:59 |
| Migreringer | 21 | 19 |
Kopien hadde nøyaktig det som fantes før tidspunktet, og ingenting etter. Operasjonen tok under ett sekund.
Advarsel — det som gikk galt under testen. restore_snapshot uten finalize: false lager ikke en frittstående kopi. Den tar over kildegrenens navn, rollen som hovedgren og compute-en. I ca. 45 sekunder (09:20:42–09:21:27 UTC) pekte produksjonens compute (ep-patient-cell) på kopien fra 06:51. Compute-en sov hele tiden, og kopien skrev 0 byte, så ingen data gikk tapt. Den ble flyttet tilbake til den opprinnelige grenen (br-cool-sun-b12y6nvu), som igjen er main, hovedgren og standard.
Derfor, ved neste test eller ekte gjenoppretting:
- Bruk
finalize: false, og les kopien før noe flyttes. - Sjekk hvilken gren
ep-patient-cellpeker på før og etter. mainer beskyttet i Neon (protected) fra 28.09.2026, så den ikke kan slettes eller nullstilles ved et uhell.
4. Når en kilde er nede
Kildene er registrene og tjenestene Verid slår opp i. En kilde som er nede, stopper ikke saken. Den blir et dokumentert hull.
- Hvert oppslag har et tidsavbrudd på 15 sekunder og to nye forsøk ved 429 og 5xx (
packages/sources/src/kilde.ts). - Svaret føres med en av fire statuser:
ok,ikke-funnet,utilgjengelig(driftsfeil) ellerikke-tilgang(vi mangler nøkkel eller tilgang). Status, URL og tidspunkt lagres uansett. - Er Enhetsregisteret, grunnboken eller Register over reelle rettighetshavere utilgjengelig, blir det en observasjon med alvorlighet «oppfølging» og tekst om at oppslaget må gjentas eller gjøres manuelt (
packages/pipeline/src/observasjoner.ts). - Feiler screeningen hos OpenSanctions eller søket hos Serper, blir det et punkt på sjekklisten (
packages/pipeline/src/sjekkliste.ts). - Er språkmodellen utilgjengelig, blir søketreffene stående uvurdert og går på sjekklisten (
.env.example,README.md). - Er Vercel Blob utilgjengelig, kan rapporten godkjennes uten arkivert PDF/A (
README.md).
Megleren kan kjøre saken på nytt når kilden er tilbake.
5. Når en underleverandør er nede
| Leverandør | Hva som stopper | Hva vi gjør |
|---|---|---|
| Vercel | Hele appen | Vent. Følg Vercels statusside. Ingen reserve |
| Neon | Hele appen | Vent. Følg Neons statusside. Ingen reserve |
| Resend | Invitasjoner, bekreftelse av e-post, nytt passord, kundeerklæring på e-post | Megleren kan sende lenken til kundeerklæringen selv |
| OpenSanctions, Serper, AI Gateway | Bare den delen av søket | Se punkt 4 |
Er Verid nede over fire timer i arbeidstid, varsler vi foretakene. Et foretak som ikke kan bruke Verid, må gjøre kundetiltakene manuelt i mellomtiden. Plikten etter hvitvaskingsloven ligger hos foretaket.
Gjenstår
| Mangel | Risiko | Plan |
|---|---|---|
| Ingen RPO eller RTO er satt | Kunden vet ikke hva de kan regne med | Sett mål når gjenoppretting er prøvd, ikke før |
| Historikken er bare 24 timer | En feil som oppdages etter mer enn et døgn, kan ikke rulles tilbake | Vurder lengre historikk i Neon (betalt plan) |
| Ingen kopi av rapportarkivet utenfor Vercel Blob | En slettet PDF/A kan ikke hentes tilbake | Vurder en kopi i en annen lagring i EU, med samme slettefrist |
| Ingen varsling ved nedetid | Nedetid oppdages av kunden først | Ekstern overvåking av forsiden og innloggingen |
| Migreringer kjøres for hånd | En migrering kan bli glemt eller kjørt mot feil database | Kjør migreringer som et eget, logget steg |