okr/docs/plan-referansegrad-2026-06-23.md
Kjell Tore Guttormsen 16ae8d3db3 docs: add 360 evaluation + reference-grade execution plan (okr)
360-degree evaluation (14-agent workflow: 6 readers, 4 researchers,
2 benchmarks, synthesis + adversarial plan-critic). Verdict C+:
strong architecture/methodology, credibility-critical content defects
(fictional agency presented as fact, find-replace artefacts, scoring
self-contradiction across 5+ files, UTF-8 corruption, dead links).

- docs/evaluering-360-2026-06-23.md: findings per dimension, scorecard,
  verification log, ms-ai-architect maturity gaps, plan-critic appendix.
- docs/plan-referansegrad-2026-06-23.md: critic-corrected, followable
  multi-session plan (Fase 0-3) with finding->phase traceability,
  version-per-phase, file-ownership, On-failure/circuit-breaker rules,
  and Voyage usage per phase.

Pilot review (2026-06-20) covered security/config; this covers domain,
content, language, UX, completeness. Implementation not started.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LSVEbrrahcSVoNG4WG3NrP
2026-06-23 18:36:01 +02:00

156 lines
16 KiB
Markdown

# Utførelsesplan: OKR-plugin → referansegrad (norsk offentlig sektor)
**Dato:** 2026-06-23
**Grunnlag:** `docs/evaluering-360-2026-06-23.md` (360-evaluering, 14 agenter) + adversariell plan-critic-runde.
**Status i dag:** Samlet karakter **C+**. Sterkt fundament (arkitektur, hooks, metodikk-kjerne, ekte forvaltningstilpasning), trukket ned av **troverdighetskritiske innholdsfeil**.
**Mål:** Lukke alle funn i fire faser slik at pluginet trygt kan deles og fungere som referanse. Hver fase er et eget Voyage-løp over én eller flere sesjoner.
> Denne planen er **kritikk-korrigert**: plan-criticen avdekket at synteserunden underestimerte flere leveranser (DDT = 61 forekomster i 14 filer, ikke 2; UTF-8 = total ASCII-stripping som krever omskriving, ikke encoding-fiks; scoring-linjelista var ufullstendig og delvis feilrettet; versjon-per-fase manglet; Fase 1/2 deler filer). Alle disse er innarbeidet under.
---
## 1. Slik følger vi planen (driftsmodell)
1. **Én fase = ett Voyage-løp.** `/trekbrief` (ramme + verifiseringskriterier) → `/trekplan` (fil-for-fil steg) → `/trekexecute``/trekreview` (mot brief-kriteriene). Flersesjons faser bruker `.session-state` + `/trekcontinue`.
2. **Hvert `/trekplan`-steg MÅ bære `On-failure:` og `Checkpoint:` (git commit).** Destruktive steg merkes **circuit-breaker**: ved feil → stopp hele fasen, ikke fortsett.
3. **Verifiseringsplikt.** Hver fase avsluttes med konkrete bevis (grep-/spellcheck-kommandoer som beviser at funnet er borte og at ingen nye er introdusert). Ingen fase er «ferdig» uten grønne bevis.
4. **Versjon per fase.** Hver fase som endrer brukervendt innhold/funksjon bumper versjon + lager release-tag + oppdaterer katalog-`ref` (`catalog/scripts/release-plugin.mjs <plugin> <versjon>`), innenfor push-vinduet. Se §6.
5. **STATE.md oppdateres ved hver sesjonslutt** (local-only, gitignored — offentlig remote).
6. **Scope-guard.** Ingen fase utvider seg utover sine leveranser uten ny godkjenning.
---
## 2. Beslutningsport FØR Fase 0 (avgjøres i `/trekbrief`)
**DDT-beslutning.** «Direktoratet for digital tjenesteutvikling (DDT)» er fiktiv og brukes som løpende eksempel-etat. Verifisert omfang: **61 forekomster i 14 filer** (28 i `okr-offentlig-governance.md`, 7 i `okr-integrations.md`, 4 hver i `okr-examples.md`/`okr-framework.md`, flere i `oppsett.md` m.fl.). To veier:
| Valg | Hva | Innsats | Konsekvens |
|------|-----|---------|------------|
| **(a) Merk fiktiv** *(anbefalt for rask troverdighet)* | Konsekvent «(fiktiv eksempeletat)» + disclaimer ved første bruk; behold alle eksempler | Mekanisk, **én grep-verifisert pass** over alle 61 | Rask, lav risiko. Eksemplene forblir koherente. |
| **(b) Splitt i reelle etater** | Statens vegvesen (vei/trafikk) + Digdir (digitale tjenester) | **Egen dedikert fase (2-3 sesjoner)** mellom Fase 0 og Fase 1 | Omskriver tildelingsbrev-, kaskade- og metrikk-eksempler. Fase 1 avhenger av hvilken etat som «eier» hvilket eksempel. |
**Default i denne planen:** (a). Velges (b), settes en egen «Fase 0b — Etats-resplitt» inn, og Fase 1 omdefineres til å bygge på de nye etatene. **Avgjør i brief, ikke i utførelse.** Uansett valg: fjern den fabrikkerte kilde-attribusjonen «Oboard (Direktoratet for digital tjenesteutviklings valg)» (`okr-sources.md:299`) og DDT fra README-listen over *reelle* brukere (`README.md:23`).
---
## 3. Fase 0 — Fakta- og troverdighetssanering (credibility-critical)
**Avhenger av:** ingenting. **Estimat:** 2-3 sesjoner (oppjustert fra 1-2 etter kritikk: UTF-8 = omskriving av 2 hele filer; DDT = 61 sites). **Versjon ved slutt:** **1.3.1 (patch)**.
**Hvorfor først:** alt annet bygger på at teksten er til å stole på.
**Leveranser (hver med On-failure + Checkpoint):**
1. **[CIRCUIT-BREAKER, flyttet hit fra Fase 2] OKR-01 rm -rf-validering.** Høyeste data-tap-risiko. Valider at `[id]` matcher `^[TQ][1-4]-[0-9]{4}$` og er ikke-tom **før** `rm -rf .claude/okr/syklus/[id]/` i `oppsett.md:457/459`. Manuell test: tom + malformert id skal avvises. On-failure: halt hele fasen.
2. **DDT** per beslutningsporten (default: merk fiktiv). Grep-fasit: `grep -rni 'DDT\|Direktoratet for digital tjenesteutvikling' .` → forvent 61 → 0 umerkede. Fjern fabrikkert Oboard-attribusjon + DDT fra README reell-bruker-liste.
3. **Find-replace-artefakter.** Re-derivér full målliste (ikke stol på synteselista alene): `grep -rni 'saksbehandlingbehandling\|saksbehandlingtjenester\|saksbehandlingklager\|saksbehandling-søknad\|saksbehandlingsøknad\|vevedlikehold\|fornye saksbehandling' .`. Rett til koherent domene. **Regresjonssjekk:** blanket-erstatninger må ikke mangle korrekte sammensetninger — bevis 0 GAMLE *og* 0 NYE artefakter.
4. **ÉN kanonisk scoringsterskel.** Re-derivér: `grep -rn '0\.[567]-0\.[789]\|70-80%\|0\.7 =' .`. Innfør overalt: **«0.7 = forventet for aspirational; 0.6-0.7 = sweet spot (Google/Doerr)»**. **BEVAR `okr-sources.md:44` og `:115`** (de ER kanon 0.6-0.7 — ikke slett). Fjern 0.7-0.9 (`okr-cheatsheet.md:48`, `fremdriftssporer-agent.md:44`) og 70-80% (`governance.md:73`). Inkluder `styringsrådgiver-agent.md:90`. **Avklar:** `analyse.md:138-139` (0.5-0.7/>0.7) er trolig *tverr-syklus modenhet* ≠ enkelt-OKR stretch-score → sannsynlig utenfor scope; bekreft før endring. Verifisering: nøyaktig én stretch-definisjon, kanonisk kilde ikke rørt.
5. **[CIRCUIT-BREAKER] UTF-8: manuell norsk omskriving** av `individual-vs-team-okr.md` og `commands/oppsett.md` (begge 0 å + 0 ø/æ — total ASCII-stripping, ingen ren kilde å «regenerere» fra). Dette er korrekturlesing/omskriving, ikke encoding-fiks. Checkpoint (git) før start. **Verifisering:** spellcheck (`aspell -l nb` eller kuratert vokabular-diff mot øvrige referansefiler) — *ikke* bare `å > 0` (en fil kan ha riktig å men feil ø/æ).
6. **ASCII-kommandonavn.** `grep -rn '/okr:moter\|/okr:innforing\|oppstartsmate' .` → inkluderer `README.md` (L106/114/166), `oppsett.md` (L246/478), `coaching-hook.mjs` (L125). Rett til `/okr:møter`, `/okr:innføring`.
7. **coaching-hook-strenger + læring-regex.** `coaching-hook.mjs:115/124/125` (brukervendte strenger, synlig hver sesjonsstart) + L100 regex → `/## (?:Laering|Læring)/`.
8. **Døde/feil lenker + dokumenttittel.** `futureworks.no` (404) fjern/erstatt; `rework.withgoogle.com` normaliser til `/en/`-form + Wayback-fallback; rett tittel til **«Fremtidens digitale Norge — Nasjonal digitaliseringsstrategi 2024-2030»** (`governance.md:395`).
9. **Dokument-motsigelser.** CONTRIBUTING PR-seksjon → kryssreferanse til GOVERNANCE; SECURITY GitHub → Forgejo/e-post; uciterte statistikker (39/43/30-45/60%) merk «industri-rapportert (ikke fagfellevurdert)» eller erstatt med Locke & Latham-effektstørrelser.
10. **CLAUDE.md «References (15)»****utsett til etter Fase 2** (Fase 2 kan avskrive filer og endre tallet). Sett her bare hvis Fase 2-beslutningen allerede er tatt; ellers er dette en Fase 2-leveranse.
11. **Versjon:** SKILL.md `version` → 1.3.1, sync plugin.json, release-tag + katalog-`ref` (release-plugin.mjs), push-vindu.
**Voyage:** `/trekbrief` (ramme sanering + DDT-beslutning + verifiseringsplikt) → `/trekplan` (fil-for-fil, hvert steg med On-failure/Checkpoint, circuit-breakers på #1/#5) → `/trekexecute``/trekreview` (bekreft 0 artefakter, 0 strippede tegn, én scoringsverdi, kanonisk kilde intakt).
---
## 4. Fase 1 — Domenedybde og kildeintegritet
**Avhenger av:** Fase 0. **Serialisér FØR Fase 2** (deler `møter.md` + `møtefasilitator-agent.md` — kan ikke kjøre parallelt). **Estimat:** 2-3 sesjoner. **Versjon ved slutt:** **1.4.0** (sammen med Fase 2).
**Leveranser:**
1. **Tertial-korreksjon.** Presiser: formelt regime har **2 interim-punkter** (30. april / 31. august) + årsrapport; DFØ vektlegger nå halvårs-/årsrapportmøte. 4-mnd OKR-syklus = pragmatisk valg som *aligner med* — ikke er identisk med — rapporteringsregimet. «Sjekk eget tildelingsbrev.» (`dfo-okr-mapping.md:45`, `okr-framework.md:205`).
2. **OKR posisjonert som lag oppå mål- og resultatstyring** (MRS, økonomireglementet §4) — ikke erstatning. Ny seksjon om **tillitsreformen** (sentral styringsspenning, i dag fraværende). **«Målforskyvning»** lagt til som førsteklasses norsk antipattern.
3. **Metodikk-presisjoner.** Doerrs advarsel mot å snitte committed+aspirational sammen (inn i aggregeringslogikk); Intel rettet (85% = *gjenvunnet* 16-bit-andel, ikke «fra 0%»; ~2300-2500 design wins oppnådd vs 2000 mål); Locke & Latham «250%» → «vanskeligste vs enkleste mål»; legg til Kleingeld-journalref (JAP 96(6):1289-1304).
4. **«Kvartalsreview» → «Syklusreview»** (`møter.md:60`, `møtefasilitator-agent.md:39`); «kvartalsvise» → «syklusvise» (`okr-implementation.md:48/415`).
5. **Reelle norske offentlig-sektor-referanser** (Digdir produktorganisering, NRK/Ruter som faktisk offentlige, Knowit «fire fallgruver») med tydelig vendor-/praktiker- vs uavhengig-merking.
**Voyage:** `/trekresearch` (Tavily/WebFetch triangulerer DFØ-currency, tillitsreform, reelle caser mot primærkilder; confidence-rating) → `/trekplan``/trekexecute``/trekreview`.
---
## 5. Fase 2 — UX-koherens og kommando-/agent-modning
**Avhenger av:** Fase 0 (+ org-kontekst-sti-beslutning, se under). **Serialisér ETTER Fase 1** (delt fil-eierskap). **Estimat:** 1-2 sesjoner. **Versjon ved slutt:** **1.4.0**.
**Forhåndsbeslutning (kritisk avhengighet):** Bestem **kanonisk org-kontekst-sti FØR denne fasen**`~/.claude/okr/org/` (reinstall-overlevende, Fase 3-mål) vs prosjektlokal. Agentene wires til å lese fra **endelig** sti her, slik at Fase 3 ikke må gjøre om arbeidet.
**Leveranser:**
1. **Kontekstbevissthet-blokk** i `møter.md` (syklusfase-deteksjon + OKR-antall) — på linje med de 8 andre.
2. **gap vs governance disambiguert.** «Bruk /okr:gap når … (kvantitativ dekningsmatrise)» vs «Bruk /okr:governance når … (kvalitativ oversettelse + compliance)». Avdupliser den identiske innholdstabellen.
3. **Negative triggere** per agent (særlig `styringsrådgiver` vs `gapanalytiker`, begge på «tildelingsbrev»); `fremdriftssporer` instruert til å lese full antipatterns-fil; **alle Task-spawnbare agenter leser org-kontekst direkte fra fil** (endelig sti).
4. **6 usiterte referansefiler** (`dfo-okr-mapping`, `individual-vs-team-okr`, `metrics-library`, `okr-cheatsheet`, `okr-integrations`, `okr-sources`) — wire inn i relevant kommando/agent eller eksplisitt avskriv. **Deretter** rett CLAUDE.md referanse-tall til post-avskriv-tallet.
5. **Template-YAML ↔ onboarding-skjema-sync** (`okr.local.md.template`); paritetstest manuell bootstrap vs hook-forventet skjema.
**Filer eid av Fase 2 (ikke Fase 1):** `møter.md` (Kontekstbevissthet), agentfilene (negative triggere). Fase 1s `møter.md`-rename (Kvartalsreview) gjøres FØR Fase 2 starter.
**Voyage:** `/trekbrief` (avgrens UX-scope + org-sti-beslutning) → `/trekplan` (Verifisering: grep bekrefter Kontekstbevissthet i alle 10 kommandoer; manuell rm-validering allerede gjort i Fase 0) → `/trekexecute`.
---
## 6. Fase 3 — Referansegrad-løft mot ms-ai-architect-paritet
**Avhenger av:** Fase 1 + Fase 2. **Estimat:** 2-3 sesjoner (flersesjons). **Versjon ved slutt:** **1.5.0** (nye kommandoer = minor).
**Leveranser (prioritert etter adopsjonsverdi):**
1. **[MUST] Reinstall-overlevende `~/.claude/okr/org/`.** Implementer flytting + **bakoverkompatibel fallback** (les ny sti, fall tilbake til prosjektlokal). Oppdater CLAUDE.md «State Management» + `okr.local.md.template` i samme endring. On-failure: agenter faller tilbake til hook-injeksjon, ikke error. (Sti-beslutningen ble tatt i Fase 2; her implementeres migrasjonen.)
2. **[MUST] `/okr:help`** — alle 10 kommandoer + 7 agenter + anbefalt tidlig/midt/sen-syklus-arbeidsflyt.
3. **[SHOULD] Ankrede scoringsrubrikker** (`okr-quality-rubrics.md`, 5 ankere/dimensjon) som `kvalitetssjekker` laster → determinisme i governance-kontekst.
4. **[SHOULD] Test-fixtures + `node --test` smoke-test** for de to hookene (fanger skjema-drift).
5. **[SHOULD] `/okr:export` (PDF)** for kvalitetsvurderinger, gap-matriser, statusrapporter, retrospektiver — deling med ledelse/tillitsvalgte/Riksrevisjon.
6. **[SHOULD] UserPromptSubmit emne-guard** — injiser ikke OKR-kontekst på hver prompt uten relevans.
7. **[SHOULD] Bredere offentlig-metrikkbibliotek** (eForvaltningsindeks, WCAG/universell utforming, klagebehandlingsfrist, eFormidling) + minst én reell etat/kommune-differensiering (statlig vs kommunalt styringsregime).
8. **[NICE] `/okr:freshen-references`** — WebSearch/Tavily-subagenter mot dfo.no/regjeringen.no/riksrevisjonen.no for KB-currency.
**Voyage:** flersesjons `/trekplan` med `.session-state`; `/trekexecute` + `/trekcontinue` mellom sesjoner; `/trekresearch` for metrikkbiblioteket; avslutt med `/trekreview` mot brief-kriteriene for å bekrefte referansegrad.
---
## 7. Tverrgående krav
| Krav | Detalj |
|------|--------|
| **Versjon per fase** | Fase 0 → 1.3.1 (patch) · Fase 1+2 → 1.4.0 (minor) · Fase 3 → 1.5.0 (minor, nye kommandoer). Tag + katalog-`ref` (release-plugin.mjs) som **avsluttende leveranse i HVER fase**, i push-vinduet. |
| **Rollback** | Hvis en publisert tag senere må korrigeres fordi en senere fase endret kanonisk innhold tag-en averterte: dokumentér og lag patch-tag. |
| **Fil-eierskap** | `møter.md` + `møtefasilitator-agent.md` deles av Fase 1 (rename) og Fase 2 (Kontekstbevissthet/triggere) → **serialisér Fase 1 før Fase 2**. Ingen fil redigeres av to parallelle løp. |
| **On-failure/Checkpoint** | Hvert `/trekplan`-steg bærer begge. Destruktive steg (UTF-8-omskriving, DDT, rm -rf) = circuit-breaker (halt hele fasen ved feil). |
| **Gemini-triangulering** | Gemini-bridge var nede (deprecated Interactions API SDK). Oppgradér `gemini-mcp`-SDK før neste runde som trenger uavhengig triangulering. |
| **STATE.md** | Local-only (offentlig remote). Oppdatér ved hver sesjonslutt. |
---
## 8. Sporbarhet: funn → fase
| # | Funn (alvorlighet) | Fase |
|---|--------------------|------|
| 1 | Scoringsterskel selvmotsigende ≥5 filer (KRITISK) | Fase 0 |
| 2 | Fiktiv etat DDT presentert som fakta + fabrikkert Oboard-kilde (KRITISK) | Beslutningsport + Fase 0 (el. Fase 0b) |
| 3 | Total UTF-8-korrupsjon i 2 filer + hook (KRITISK/HØY) | Fase 0 |
| 4 | Find-replace-artefakter i kopierte eksempler (HØY) | Fase 0 |
| 5 | Læring-regex feiler på «Læring» (HØY) | Fase 0 |
| 6 | CONTRIBUTING↔GOVERNANCE-motsigelse (HØY) | Fase 0 |
| 7 | SECURITY peker GitHub på Forgejo-repo (HØY) | Fase 0 |
| 8 | OKR-01 rm -rf ugardert (MEDIUM, men høyest data-tap-risiko) | Fase 0 (flyttet fra Fase 2) |
| 9 | ASCII-kommandonavn i README/oppsett/hook (MEDIUM) | Fase 0 |
| 10 | Døde lenker + feil dokumenttittel (MEDIUM) | Fase 0 |
| 11 | Uciterte statistikker som fakta (MEDIUM) | Fase 0 |
| 12 | Intel/Locke faktarammings-feil (INFO/MEDIUM) | Fase 1 |
| 13 | Committed+aspirational snittes sammen (MEDIUM) | Fase 1 |
| 14 | Tertial overdrevet som DFØ-standard (MEDIUM) | Fase 1 |
| 15 | Tillitsreform + målforskyvning fraværende (REFERANSEGRAD-GAP) | Fase 1 |
| 16 | «Kvartalsreview» i 4-mnd-plugin (MEDIUM) | Fase 1 |
| 17 | møter.md mangler Kontekstbevissthet (LAV) | Fase 2 |
| 18 | gap vs governance overlapp (MEDIUM) | Fase 2 |
| 19 | Agenter mangler negative triggere (MEDIUM) | Fase 2 |
| 20 | Agenter blinde ved Task-spawn (MEDIUM) | Fase 2 |
| 21 | 6 usiterte referansefiler (SHOULD) + CLAUDE.md-tall | Fase 2 |
| 22 | Template ≠ onboarding-YAML (MEDIUM) | Fase 2 |
| 23 | Ikke reinstall-overlevende org-kontekst (REFERANSEGRAD-GAP/MUST) | Fase 2 (beslutning) + Fase 3 (impl.) |
| 24 | Mangler /okr:help, rubrikker, fixtures, PDF-eksport (SHOULD) | Fase 3 |
| 25 | UserPromptSubmit uten emne-guard (SHOULD) | Fase 3 |
| 26 | Tynt offentlig-metrikkbibliotek (SHOULD) | Fase 3 |
| 27 | SKILL-versjon 1.0.0 vs 1.3.0 (MUST) | Fase 0 (del av versjonsbump) |
**Vurdert og forkastet:** Share-session-as-artifacts (claude.ai-hostet, Team/Enterprise-gated, dataresidens/Schrems II for offentlig sektor) — operatørbeslutning 2026-06-23, tas ikke inn.