/* ros-data.js — Mock data for Lier kommune ROS, M365 Copilot Enterprise */

window.ROS_DATA = {
  meta: {
    id: 'ROS-2026-LIER-COPILOT-01',
    system: 'M365 Copilot Enterprise (E5)',
    sektor: 'kommune',
    organisasjon: 'Lier kommune',
    brukerantall: 1850,
    dataresidens: 'EU (vurderer Sovereignty)',
    oppdatert: '2026-05-01'
  },

  // 7-axis NS 5814 radar
  radarAxes: [
    { key: 'personvern',     label: 'Personvern',           current: 4.2, target: 2.6 },
    { key: 'informasjonssikkerhet', label: 'Info.sikkerhet', current: 3.8, target: 2.4 },
    { key: 'dataintegritet', label: 'Dataintegritet',       current: 2.9, target: 2.1 },
    { key: 'tilgjengelighet', label: 'Tilgjengelighet',     current: 2.4, target: 2.0 },
    { key: 'leverandør',     label: 'Leverandør',           current: 3.6, target: 2.8 },
    { key: 'compliance',     label: 'Compliance',           current: 4.0, target: 2.2 },
    { key: 'omdomme',        label: 'Omdømme',              current: 3.2, target: 2.0 }
  ],

  // 12 representative threats (rest aggregated as counts in cells)
  threats: [
    { id: 'T-001', tittel: 'Eksponering av personopplysninger via Copilot Chat', sannsynlighet: 4, konsekvens: 5,
      kategori: 'Personvern', kilde: 'Brukere kan ved feil dele klientdata fra arkiv inn i prompts.',
      konsekvensBegrunnelse: 'Sensitive klientdata kan bli kontekst i utgående svar; brudd på taushetsplikt og GDPR Art. 5.',
      sannsynlighetBegrunnelse: 'Copilot indekserer alle SharePoint-områder ansatt har tilgang til. 1 850 brukere uten Sensitivity Labels = høy treffsannsynlighet.',
      mitigeringer: [
        { id: 'M-001', tittel: 'Sensitivity Labels på alle saksarkiv', status: 'planned' },
        { id: 'M-002', tittel: 'Endpoint DLP-policy for clipboard og prompt', status: 'planned' }
      ],
      restrisiko: { sannsynlighet: 2, konsekvens: 4 }
    },
    { id: 'T-002', tittel: 'Schrems II-eksponering ved cross-tenant-spørringer', sannsynlighet: 3, konsekvens: 4,
      kategori: 'Compliance',
      kilde: 'Web-grounded svar kan rute via amerikanske endepunkter.',
      konsekvensBegrunnelse: 'Brudd på Schrems II ved overføring av personopplysninger til USA uten TIA.',
      sannsynlighetBegrunnelse: 'EU Data Boundary er ikke aktivert per i dag.',
      mitigeringer: [{ id: 'M-003', tittel: 'EU Data Boundary aktivert tenant-bredt', status: 'planned' }],
      restrisiko: { sannsynlighet: 1, konsekvens: 4 }
    },
    { id: 'T-003', tittel: 'Hallusinering i saksbehandlingsutkast', sannsynlighet: 4, konsekvens: 4,
      kategori: 'Dataintegritet',
      kilde: 'Copilot-genererte utkast kan inneholde påstander uten kildedekning.',
      konsekvensBegrunnelse: 'Borgere får feilaktig vedtak; klagebehandling og omdømmetap.',
      sannsynlighetBegrunnelse: 'Modell uten retrieval-tvang vil generere flytende, men ikke alltid faktariktige tekster.',
      mitigeringer: [{ id: 'M-004', tittel: 'Obligatorisk Saksbehandler-review før utsendelse', status: 'implemented' }],
      restrisiko: { sannsynlighet: 2, konsekvens: 3 }
    },
    { id: 'T-007', tittel: 'Promptinjeksjon via mottatt e-post', sannsynlighet: 3, konsekvens: 5, kategori: 'Info.sikkerhet',
      kilde: 'Skjult instruks i innkommende dokument kan kapre Copilot-kontekst.',
      konsekvensBegrunnelse: 'Eksfiltrering eller manipulasjon av interne data.',
      sannsynlighetBegrunnelse: 'Vektor er kjent (LLM01:2025). Lavt målrettet trusselbilde, men teknisk gjennomførbart.',
      mitigeringer: [{ id: 'M-005', tittel: 'Defender for Cloud Apps prompt-shield', status: 'planned' }],
      restrisiko: { sannsynlighet: 2, konsekvens: 4 }
    },
    { id: 'T-012', tittel: 'Manglende sletting ved tjenesteslutt', sannsynlighet: 2, konsekvens: 4, kategori: 'Personvern',
      kilde: 'Copilot-historikk og embeddings beholdes utover lovlig periode.',
      konsekvensBegrunnelse: 'Brudd på lagringsbegrensning (GDPR Art. 5(1)(e)).',
      sannsynlighetBegrunnelse: 'Default-policy er 90 dager; krav er 30.',
      mitigeringer: [{ id: 'M-006', tittel: 'Purview retention policy 30 dager', status: 'proposed' }],
      restrisiko: { sannsynlighet: 1, konsekvens: 3 }
    },
    { id: 'T-019', tittel: 'Diskrimineringsbias i innbygger-svar', sannsynlighet: 3, konsekvens: 5, kategori: 'Compliance',
      kilde: 'Ukvalifisert bruk av Copilot mot innbygger-portal.',
      konsekvensBegrunnelse: 'EU AI Act Art. 5 forbud kan utløses; tilsynssak.',
      sannsynlighetBegrunnelse: 'Krever direkte deployering mot publikum — i dag intern bruk, men ambisjon finnes.',
      mitigeringer: [{ id: 'M-007', tittel: 'AI Act Art. 50 transparens-merking', status: 'proposed' }],
      restrisiko: { sannsynlighet: 2, konsekvens: 3 }
    },
    { id: 'T-022', tittel: 'Skygge-IT: alternative AI-verktøy', sannsynlighet: 4, konsekvens: 3, kategori: 'Info.sikkerhet',
      kilde: 'Ansatte bruker ChatGPT/Claude for sensitive data parallelt.',
      konsekvensBegrunnelse: 'Datalekkasje uten styringskontroll.',
      sannsynlighetBegrunnelse: 'Allerede observert i 2 av 4 seksjoner.',
      mitigeringer: [{ id: 'M-008', tittel: 'Defender web-policy + brukeropplæring', status: 'implemented' }],
      restrisiko: { sannsynlighet: 2, konsekvens: 2 }
    },
    { id: 'T-028', tittel: 'Avhengighet av leverandør-prising', sannsynlighet: 3, konsekvens: 3, kategori: 'Leverandør',
      kilde: 'Microsoft har historisk hevet Copilot-prising på kort varsel.',
      konsekvensBegrunnelse: 'Budsjettoverskridelse på 2026/2027-rammer.',
      sannsynlighetBegrunnelse: 'Sannsynlig basert på 2024–2025 pristrend.',
      mitigeringer: [{ id: 'M-009', tittel: 'Eksitstrategi vurdert i ADR', status: 'proposed' }],
      restrisiko: { sannsynlighet: 2, konsekvens: 3 }
    },
    { id: 'T-031', tittel: 'Audit-loggene ufullstendige', sannsynlighet: 2, konsekvens: 3, kategori: 'Info.sikkerhet',
      kilde: 'Copilot-audit krever E5 Compliance-tier.',
      konsekvensBegrunnelse: 'Ikke tilfredsstiller Riksrevisjonens dokumentasjonskrav.',
      sannsynlighetBegrunnelse: 'E5 er på plass, men retention må konfigureres eksplisitt.',
      mitigeringer: [{ id: 'M-010', tittel: 'Purview audit log 1 år', status: 'planned' }],
      restrisiko: { sannsynlighet: 1, konsekvens: 2 }
    },
    { id: 'T-035', tittel: 'Manglende klageadgang for AI-beslutning', sannsynlighet: 2, konsekvens: 4, kategori: 'Personvern',
      kilde: 'Borgere får ikke vite at vedtak er AI-assistert.',
      konsekvensBegrunnelse: 'GDPR Art. 22 / forvaltningsloven kan brytes.',
      sannsynlighetBegrunnelse: 'Krever bevisst transparens-tiltak.',
      mitigeringer: [{ id: 'M-011', tittel: 'Saksbehandlings-sjekkliste oppdatert', status: 'proposed' }],
      restrisiko: { sannsynlighet: 1, konsekvens: 3 }
    },
    { id: 'T-041', tittel: 'Tilgjengelighetsbrudd i Copilot-grensesnitt', sannsynlighet: 2, konsekvens: 2, kategori: 'Tilgjengelighet',
      kilde: 'WCAG-konformitet ikke verifisert for nye Copilot-flater.',
      konsekvensBegrunnelse: 'UU-tilsynet kan pålegge retting; omdømmesak.',
      sannsynlighetBegrunnelse: 'Microsoft rapporterer AA-konformitet, men ikke testet i norsk språkdrakt.',
      mitigeringer: [{ id: 'M-012', tittel: 'NVDA + VoiceOver pilot-test', status: 'proposed' }],
      restrisiko: { sannsynlighet: 1, konsekvens: 2 }
    },
    { id: 'T-047', tittel: 'Konfigurasjonsdrift mellom tenant og policy', sannsynlighet: 3, konsekvens: 3, kategori: 'Info.sikkerhet',
      kilde: 'Ulike admin-er gjør usignerte endringer over tid.',
      konsekvensBegrunnelse: 'Sikkerhetspolicyer eroderer; revisjonshendelser overses.',
      sannsynlighetBegrunnelse: 'Standard mønster i Microsoft-tenanter med 5+ admins.',
      mitigeringer: [{ id: 'M-013', tittel: 'config-audit-plugin kjørt månedlig', status: 'planned' }],
      restrisiko: { sannsynlighet: 2, konsekvens: 2 }
    }
  ],

  // Distribution of all 49 threats by cell (for the matrix bubbles)
  cellCounts: {
    // key = "sann,kons", value = number of threats in that cell beyond the named ones
    '1,1': 2, '1,2': 1, '2,1': 1, '2,2': 3, '3,1': 1, '1,3': 1,
    '3,2': 2, '2,3': 4, '3,3': 3, '4,2': 1,
    '2,4': 1, '4,3': 2, '3,4': 1, '4,4': 1,
    '5,3': 0, '5,4': 1
  }
};
