Browser-observability
Dette er minimumskontrakten for Team eSyfos elleve aktive browserflater. Den sier hva som må være sant før en flate kan stå som dekket; runtimeinventaret viser hva som faktisk er kjent per flate.
Aktivt scope er aktivitetskrav-frontend, aktivitetskrav-microfrontend, bro-frontend, dialogmote-frontend, dialogmote-microfrontend, dinesykmeldte, lumi-dashboard, meroppfolging-frontend, meroppfolging-microfrontend, narmesteleder-frontend og syfo-oppfolgingsplan-frontend.
Minimumskrav
| Område | Bestått når |
|---|---|
| Identitet | app, namespace=team-esyfo, miljø og eksakt deploy-SHA kan leses i mottatt telemetry. |
| SDK | @nais/apm er pinnet til én eksakt versjon og initialiseres én gang. Rå Faro er migreringsstatus, ikke måltilstand. |
| Sider | page.id kommer fra en kort allowlist. Dynamiske ID-er og ukjente ruter faller til en generell verdi. |
| URL-er | @nais/apm eier den obligatoriske PII-vasken. Appen normaliserer egne dynamiske ruter og kjente URL-felt, slik at path-parametre, query, fragment og credentials ikke sendes rått. |
| Brukerdata | setUser, user context, session replay og screenshots er avslått. Aktivering krever en separat privacy- og sikkerhetsbeslutning. |
| Feil | Én komponent eier hver feil. Error boundary eller rammeverkets tilsvarende toppnivåhåndtering gir recovery uten å sende samme feil flere ganger. |
| Sampling | Faktisk rate er kjent og større enn 0 og høyst 1, enten som appkonfigurasjon eller som dokumentert default i den pinnede SDK-versjonen. En samplet session er ikke en unik bruker. |
| Tracing | På eller av er et bevisst valg. Browsertracing aktiveres først når URL-scrubbing og ende-til-ende-kobling er verifisert. |
| Sourcemaps | Build-opplasting og faktisk deobfuskering i produksjon bevises separat. |
| Canary | En syntetisk test viser at app/team/miljø/SHA/rute er riktig, at én feil blir én hendelse, og at rå ID-er og query ikke sendes. |
Rollout-gate
En repoendring er klar for menneskereview når fokuserte tester dekker appens rutetabell og URL-normalisering, avslått bruker-/replay-kontekst og single-owner feilfangst. Felles PII-vask, konfigurasjonsoppløsning og SDK-defaults testes i @nais/apm; de skal ikke implementeres på nytt i hver app. Dette er ikke produksjonsbevis.
Deretter kreves:
- Dev: collector svarer 2xx; metadata og normalisert
page.idmatcher deployet SHA; privacy-canary er ren. - Første produksjonsdeploy: page loads, sessions og CWV finnes med samme identitet og sampling. En kontrollert exception vises nøyaktig én gang.
- Neste produksjonsdeploy: en ny unik SHA erstatter den gamle. Først da er releasekoblingen bevist over tid.
Testen skal bruke genererte canary-verdier og en ufarlig startside, aldri en reell personsak. Evidensen lagrer tidspunkt, miljø og lenke eller kort beskrivelse — ikke rå payload eller personopplysninger.
Matrise og status
Runtimeinventarets browsermatrise er fasiten for de elleve flatene. Den viser eier, identitet, SDK-versjon, side-/rutebeskyttelse, release, sampling, sourcemaps, tracing og siste syntetiske kontroll. mangler, ikke verifisert og SDK-default uten verifisert numerisk rate er gap, aldri grønt.
Følgende er eksplisitt utenfor utrullingen: dulting-studio, syfojanitor-frontend, syfooppfolgingsplanservice og komponentbiblioteket dinesykmeldte-sidemeny. Airflow/data-science-flater og andre namespaces følger sine eiere.
dinesykmeldte-implementasjonen i PR #779 er første kildekodereferanse. Dev-/produksjonsevidens står fortsatt pending og må vises som gap i matrisen. #206 kan lukkes når kontrakten og statusmodellen er godkjent; utrullingsoppgavene eier live-evidensen per flate.
Tolkning i dashboard
- Page loads og sessions er hendelser under valgt sampling, ikke brukere.
- Tall med ulik eller ukjent samplingrate summeres ikke.
No dataer ukjent når collector, miljø eller sampling ikke er bevist.- Browserexceptions brukes til drilldown; de er ikke alene et mål på brukerimpact eller tilgjengelighet.