Sektorspesifikt eksempelmateriale er erstattet med generiske, fiktive
eksempler. Det fiktive direktoratet DDT får eksempler fra digitale
tjenester, som samsvarer med navnet. Fjordvik kommune (fiktiv) får
eksempler fra vann, avløp og avfall. Strukturen, tallene og poenget i
hvert eksempel er bevart, blant annet committed-doktrinens stokastiske
samfunnsutfall, progress-regnestykkene i Oboard-eksempelet og
kaskadekjeden.
Valg:
- Én kildebelagt case er fjernet fra okr-sources.md og én virksomhetsliste er
gjort generell («m.fl.»). Påstandene som står igjen, er fortsatt sanne.
- Standardverdien i malens domene-felt er «digitalisering». «annet»
dekker det som er tatt ut av alternativlistene.
- De historiske evalueringsdokumentene er endret bare der de siterte det
gamle eksempelinnholdet.
Suite 350/350 grønn, vakten har 0 treff.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Hooken teller alle rader merket At Risk/Off Track under ett og sier «vurder
tiltak». okr-framework.md:605 sier samtidig at de fleste stretch-KR BOER staa
At Risk, og at permanent groent er sandbagging-signalet -- saa for en sunn
aspirational-portefoelje peker varselet feil vei: eneste maate aa dempe det paa
er aa merke stretch-KR groenne.
Kollisjonen er ikke ny i art (en haandskrevet status.md ble talt likt), men fra
1.10.0 fylles kolonnen deterministisk, saa den inntreffer alltid. Fikset hoerer
hjemme i hooken, ikke i skriveleddet, og foeres som patch-lane-post.
Operatoerbeslutning: dokumenter naa, fiks i egen oekt med egen TDD-syklus.
Ogsaa: sporing.md stavet samme KR-navn paa to maater i to eksempler (fixturens
ASCII-form lakk inn i det ene). Oppslaget er eksakt match paa kr*_navn, saa to
stavemaater i samme fil er en felle.
Kjeden /okr:rapport -> /okr:sporing -> status.md var beskrevet i prosa, men
manglet et mekanisk ledd: ingenting foerte en generert rad inn i status.md --
fila coaching-hook teller at-risk-KR i, /okr:moeter bygger agenda fra, og
/okr:oppsett arkiver leser sluttscorer fra. Rot-aarsaken var at HELE
sporings-stien var lesende (ingen Write/Edit/Bash i allowed-tools).
scripts/syklus-status.mjs tar confidence som JSON paa stdin og bygger radene
gjennom statusrapport() i lib/syklus-rapport.mjs -- samme kode som
tertialrapporten. Aritmetikken kan derfor ikke drifte fra /okr:rapport, fordi
det ikke finnes en andre implementasjon av den. En LLM skriver ikke av et tall
paa veien, og en maskin utleder ikke et trafikklys: beslutning 9 staar, presist
formulert som at generatoren PLASSERER en etikett den faar inn som data og
UTLEDER aldri en.
Haandhevet i kode, ikke i prosa: lukket vokabular (On Track/At Risk/Off Track),
full dekning (en tom confidence-celle ville lest som groenn hos hver konsument),
typo-fangst paa ukjente KR-navn, og kuratert-fil-vern -- en status.md uten
provenans-noekkelen `kilde: sporing` er haandholdt og overskrives aldri (samme
mekanikk som innboks-write bruker med `kilde: innboks`).
Suite 329 -> 343. Fem vakter mutasjons-verifisert: rad-drift mot
tertialrapporten, vokab, dekning (baade alene og sammen med vokab-vakten som
overlapper den), og kuratert-vernet.
Lukker det siste av de ti F-funnene fra review-2026-07-16.md §3. F-j ble
utsatt fra 1.8.0 via Non-Goal i C-fasens brief, mens SC-85 samtidig pastod
at alle ti var lukket. review.md abc1b4f6 fant at utsettelsen kun var
registrert i gitignorede STATE.md, saa diskrepansen stod uimotsagt i repoet.
Loest ved aa faktisk lukke funnet, og registrert i CHANGELOG.
Maalt foer arbeidet (ground truth, ikke gjenbrukt fra review):
etatsstyringsmoete 0 treff
kommunelov 1 treff (metrics-library.md:245)
gevinstrealiser 1 treff (metrics-library.md:296)
ut-siden 14 linjer, en 4-raders ASCII-tabell
NY FIL skills/okr-offentlig-sektor/references/okr-kommunal-styring.md
Kommunal styring er en PARALLELL linje, ikke en variant av statlig -- egen
fil speiler det. Selvstyre uten tildelingsbrev (koml §§2-1/2-2), oekonomiplan
og kommuneplanens handlingsdel (§§14-1..14-4, jf. pbl §11-1 fjerde ledd),
kommunedirektoerens utrednings- og iverksettingsansvar (§13-1), og koblingen
4-aarig plan <-> 4-maaneders OKR. Fylkeskommunen dekket eksplisitt.
UTVIDET okr-offentlig-governance.md
Ut-siden: styringsdialogen, etatsstyringsmoetet som sentralt moetepunkt,
aarsrapportens seks faste deler med del III som anker for maaloppnaaelse og
del IV som stedet OKR-prosessen selv dokumenteres, + tre regler for aa
rapportere aspirational oppover uten at 0.7 leses som svikt.
Gevinstrealisering: eget kapittel, DFOe-metodikk mappet mot OKR, med
gevinstansvarlig som LINJErolle (= KR-eier som faktisk raar over utfallet).
Guiden merket eksplisitt som statlig, med peker til den kommunale fila.
VERIFISERING (verifiseringsplikten -- ingen maskin validerer fagprosa)
Hver domenepaastand sjekket mot offisiell kilde foer den ble skrevet:
kommuneloven kap. 14 (Lovdata), pbl §11-1 (Lovdata), aarsrapportens seks
deler (DFOes veiledningsnotat), 15. mars-fristen (Bestemmelser om
oekonomistyring i staten), etatsstyringsmoetet (DFOe hovedinstruks del D),
gevinstrealisering (DFOes veileder + Digdirs Prosjektveiviseren). Alle
lenket i fillenes kildeseksjoner.
En paastand ble FJERNET som uverifiserbar: «typisk 2-4 etatsstyringsmoeter
i aaret». DFOes hovedinstruks sier bare at antallet KAN fastsettes i
departementets hovedinstruks -- erstattet med det.
Tellinger bumpet paa alle flater som baerer dem: 17 -> 18 referansefiler
(CLAUDE.md, README.md) og 16 -> 17 scorede filer (freshen-references.md,
inkl. den nummererte lista). Verifisert mot disk: ls | wc -l = 18.
Suite 192/192 groenn. canon-consistency + reference-integrity gjoer at den
nye fila ikke redefinerer kanon (kadens/confidence/scoreband) og at alle
krysslenker resolverer paa disk.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016BDwL2pweAjLaHYZFjgYUa
Tre C7-review-funn der vakten var groenn fordi den ikke KUNNE se defekten sin.
Alle tre TDD: vakten skrevet om foerst, mutasjons-verifisert roed mot ekte
filer, deretter kilden rettet. Suite 179 -> 182.
D1 (607313e3) tests/canon-consistency.test.mjs case (b) -- F-d-kadensvakten
kunne ikke feile paa den KANONISKE kadens-tabellen. teamMonthly bandt kadens-
adjektivet direkte til check-in med \s+, men etter "Maanedlig" kommer "**" og
en cellevegg, aldri whitespace; ledWeekly krevde /review/, mens den kanoniske
raden sier "statusgjennomgang". Vakten var altsaa blind paa nettopp det
artefaktet F-d produserer. Erstattet av to former med ulik struktur: prosa
(kadens + binding i SAMME klausul -- setning/komma/celle/" og ") og kadens-rad
(kadens-adjektivet alene i foerste celle, binding paa tvers av celleveggene).
Klausul-splittingen er det som skiller korrekt dobbeltrytme ("Ukentlig 15-min
check-in + maanedlig 30-min review", okr-implementation.md:181) fra motsigelse.
To nye fixture-caser holder hverandre i sjakk: (b2) de fire muterte kanoniske
linjene MAA flagges, (b3) ti legitime former MAA ikke.
D2 (7579d59c) case (g) -- agent.includes(d) er substring-containment, saa
rubrikk-dimensjonen "Outcome" var subsumert av "Outcome-fokus" og kunne
slettes uten at vakten falt. Ni av ti dims var ekte dekket; den tiende var
utestbar. Matcher naa token-grenser (uthevede listeledd + overskrifter).
Ny fixture (g2) pinner skillet.
D3 (029ef814) case (i) + commands/freshen-references.md:24 -- vakten
ekskluderte to filer permanent under en kommentar som kalte dem
"allerede-fiksede". freshen-references.md var aldri fikset; den falt utenfor
review-lista paa ni, og bar fortsatt "OKR-kontekst injiseres automatisk via
hook" -- en eksakt match for vaktens egen frase. Begge ekskluderinger fjernet
(analyse.md-ekskluderingen var dead code: fila matcher ingenting), kontekst-
blokken skrevet om til analyse.md-moensteret (oppdag fra disk via Glob).
Mutasjons-verifisering (alle fem forble groenne FOER, roede ETTER):
okr-framework.md:54 -> team maanedlig check-in -> (b) RED
okr-framework.md:55 -> ledelse ukentlig -> (b) RED
okr-framework.md:58 -> prosa "holdes maanedlig" -> (b) RED
okr-framework.md:59 -> prosa "holdes ukentlig" -> (b) RED
kvalitetssjekker-agent.md:48 slettet (Outcome) -> (g) RED
Artefakt: .claude/projects/2026-07-23-en-kanon-metodekonsolidering/review.md
Rot-index.md bar en markoer som dekket to urelaterte konsepter: den upstream
OKF-versjonen bundelen sikter mot OG pluginens egen layout-revisjon. Specen
(catalog/docs/okf-second-brain/spec.md 12, log.md 2026-07-23) skiller dem i to
markoerer. Denne releasen migrerer emitteren og sjekkeren over.
- okf-index.mjs: emitterer okf_version: 0.1 (upstream, paakrevd per 3) +
okf_layout: kb-layout-2026-06 (vaar revisjon, valgfri per 12). Ny konstant
OKF_LAYOUT; OKF_VERSION baerer naa upstream-verdien. Begge rot-eksklusive.
- Migrasjonssti: en ikke-upstream verdi i okf_version FLYTTES verbatim til
okf_layout ved neste kjoering. Spec-konform okf_version roeres aldri;
eksisterende okf_layout bevares. Byte-idempotent.
- okf-check.mjs: ekkoer begge markoerene (fravaerende -> MANGLER). Rent ekko,
ingen ny haandheving -- spec 3 er ikke haandhevende paa form ennaa.
- CLI: --okf-layout er kanon. --okf-version beholdt som deprecated alias
(verdien var alltid en layout-revisjon) m/ varsel til stderr, ALDRI stdout.
Samme aliasing for generateIndexes({ okfLayout }) mot { okfVersion }.
- Doc-flater (CLAUDE.md, second-brain SKILL.md, commands/oppsett.md) beskriver
naa to markoerer der de beskrev en.
Suite 167 -> 179, alle groenne. Versjonssync 1.8.1 over alle shippede flater.
Laaser opp catalog + llm-ingestion-okf, som begge ventet paa denne migrasjonen.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016pUfkQ1YyH75z9y6RBaBHG
Lukker de fire release-relevante MAJOR-funnene fra /trekreview (S33). Alle TDD
roed -> groenn, ingen fiks landet uten en test som feilet foerst. Suite 163 -> 167.
R1 (af16d5e4) hooks/scripts/coaching-hook.mjs:83 -- LEVENDE REGRESJON innfoert av
1.8.0. Denne releasen skrev status-malen (commands/sporing.md:86-88) om til den
kanoniske skalaen On Track/At Risk/Off Track, mens hooken fortsatt talte kun
/i fare|blokkert/i over tabellrader. En status generert under 1.8.0 ga derfor
atRiskCount = 0 og SessionStart-nudgen sluttet stille aa utloese seg. Hooken
teller naa de kanoniske etikettene; de to norske er BEHOLDT som bakover-
kompatibilitet for status-filer skrevet foer 1.8.0. Nudge-teksten bruker samme
kanoniske vokabular. Ny testcase mates av malen slik den faktisk genereres i dag;
den eksisterende casen beholder gammelt vokabular og daekker legacy-stien.
R2 (7ec575be) F-i-omskrivingen ga hver kommando en Kontekstbevissthet-blokk som
INSTRUERER Glob, men allowed-tools ble kun utvidet i kaskade.md. Glob lagt til i
export, gap, governance, innfoering, kvalitet, moeter, skriv, sporing. Ny vakt-
case (k): nevner BODY verktoeyet, maa frontmatter deklarere det (13 kommandoer
instruerer Glob; alle 13 dekket). Case (i) grepper kun etter fjernede fraser og
kunne ikke fange dette.
R3 (5e61ae0d) tests/package-shape.test.mjs asserterte KUN package.json -- som er
private:true og dermed den ene flaten som aldri shipper. En delvis bump ville
shippet groenn. Ny versjonssync-case dekker .claude-plugin/plugin.json, README-
badgen og begge SKILL.md, med forventet verdi UTLEDET fra package.json (ett sted
aa endre ved neste bump). Mutasjonsbevist: hver av de fire flatene tilbakestilt
til 1.7.1 en om gangen -> casen roed i alle fire tilfeller.
R4 (ccff16e1 + 231c53fc) Tre parallelle confidence-etikettsett overlevde F-c:
fremdriftssporer-agent.md:68 ("Paa sporet / I fare / Blokkert"), :98
("Confidence: [Hoey/Medium/Lav]" -- en annen akse: stoerrelse, ikke sannsynlighet)
og SKILL.md:48 ("blocked"; kanonisk er "off track"). Alle tre erstattet med
referanse til kanon (okr-framework.md:389-392). sporing.md og agenten den
delegerer til svarer naa i samme vokabular. Vakt-case (a)/(b) skanner naa samme
sett som (d) allerede brukte (+ agents/ + SKILL.md), samlet i canonScan(). Ny
case (a2) fanger etikettsett skrevet som bullet eller mal-linje -- tabell-
signaturen alene fanget dem ikke, og det var nettopp formen driften overlevde i.
Divergens gjenkjennes STRUKTURELT (skraastrek-enumerasjon av >= 2 etiketter, med
>= 1 ikke-kanonisk), saa loepende prosa som "For KR i fare" og "Blokkert av
eksterne faktorer" ikke gir falske positive. Verifisert: roed-listen var noeyaktig
de 3 kjente linjene, ingen andre.
CHANGELOG/README: vakt-antall 13 -> 15 cases, suite 149 -> 167, og de fire
fiksene lagt inn under [1.8.0] (Added + Fixed). Ingen versjonsbump.
GJENSTAAR fra reviewet (3 MAJOR, IKKE i denne bolgen): 607313e3 F-d-kadens-
moensteret kan ikke feile paa den kanoniske kadens-tabellen; 029ef814
freshen-references.md:24 baerer fortsatt en foreldet kontekstblokk og vaktens
exclude-kommentar kaller fila feilaktig "allerede-fikset" (den er utenfor
1.8.0-scope by design, jf. ba91fc2 -- kommentaren er usann, ikke ekskluderingen);
7579d59c "Outcome" er utestbar i 10-dims-casen pga. substring-containment.
Verify: node --test --test-reporter=tap tests/*.test.mjs -> 167 pass / 0 fail.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016pUfkQ1YyH75z9y6RBaBHG
C6 markedsclaim -> verifisert-bruker-disiplin (README):
Paastanden "increasingly by Norwegian public sector organizations like NAV and
FINN.no" hadde ingen kilde i kunnskapsbasen. Erstattet med fire adoptorer som
ALLE har en offentlig kilde i okr-sources.md par. 4 (Digdir, NAV-team, Oslo
Origo, FINN.no) + eksplisitt setning om at usourcede virksomheter ikke navngis.
Skatteetaten/Entur/Politiet er fortsatt IKKE verifisert og navngis derfor ikke.
okr-sources.md par. 4: NAV manglet helt som oppslag selv om README paastod
bruken. Lagt til med first-party-kilde (aksel.nav.no produktbloggen), scopet
til team-/produktnivaa - etatsnivaa-OKR er ikke dokumentert.
okr-sources.md par. 7 (ny): alternative rammeverk med verifisert attribusjon.
- NCT (Narrative, Commitments, Tasks) tilskrives Ravi Mehta / Reforge, med
eksplisitt advarsel om den vanlige feilattribusjonen til Radical Focus 2. utg.
- Evidence-Based Management -> 2024-guiden. Kun det verifiserte "what's new"
er gjengitt (KVA-til-maaletype-kobling, Input/Impact som egne maaletyper,
klargjorte KVA-beskrivelser). Mission/Vision-innrammingen fra raarapporten
er UTELATT - ikke bekreftet av Scrum.orgs egen What's-New.
Sist oppdatert-markoer bumpet Januar -> Juli 2026.
align, don't cascade (kaskade.md + kaskadebygger-agent.md):
Begge flater laerte mekanisk kaskadering ("et overordnet KR blir teamets
Objective"). Rammet om til alignment via lineage: org-KR er INPUT til teamets
Objective, teamet omformulerer og eier formuleringen, team-KR maaler teamets
eget bidrag, og manglende paavirkbarhet rapporteres som gap i stedet for et
konstruert bidrag. Individ-OKR eksplisitt utelukket paa begge flater.
NAV-praksisen er brukt som norsk anker for doktrinen.
F-i (kaskade.md): siste gjenstaaende foreldede kontekstblokk skrevet om til
post-1.6.0-moensteret (analyse.md:13-20). Glob lagt til i allowed-tools siden
blokken naa instruerer Glob.
Planavvik (premiss-verifisering): Step 13 sa README "16" -> "17 domenefiler".
Ground truth motsier premisset - freshen-references.md scorer 16 AV 17 filer
(okr-quality-rubrics.md er eksplisitt ekskludert som sirkulaer). "17" ville
gjort README feil. Skrevet presist i stedet: "16 of the 17 ... the quality
rubric itself is excluded". Planens Verify (grep -c "16 domain" -> 0) passerer.
Vakt-case (i) GROENN. Alle 13 konsistens-cases groenne; suite 163/163/0.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016pUfkQ1YyH75z9y6RBaBHG
F-i: seks kommandoer paastod fortsatt at hooken for-injiserer en fil-liste.
Skrevet om til post-1.6.0-moensteret (analyse.md:13-20 / governance / kvalitet):
disk-oppdagelse via Glob + peker til okr-second-brain-search for bredere wiki-
kontekst + kjerne-profil for organisasjon/syklus.
- sporing.md: blokk + den stale "Automatisk OKR-lasting"-underseksjonen UTENFOR
headeren fjernet (enumererings-logikk, ikke bare header-paastand)
- skriv.md, moter.md, gap.md, export.md, innforing.md: blokk
F-c (sporing): egne confidence-nivaaer ("Paa sporet / I fare / Blokkert" med
trend-kriterier) + et fjerde vokab ("Confidence level: Medium") -> refererer den
kanoniske confidence-tabellen i okr-framework.md; trend er naa ETT innspill, ikke
en definisjon. Eksempel-output bruker samme kanoniske merkelapper.
F-d (moter): check-in-motet stod "Ukentlig eller annenhver uke, 15-30 min,
Team + leder" -> kanonisk "Ukentlig, 15 min, Team", med eksplisitt note om at den
maanedlige statusgjennomgangen for ledergruppen er et EGET mote (annet publikum).
Verifisert konsistent uten endring: innforing.md:117-118 (ukentlige check-ins +
maanedlig review med sponsor) foelger allerede kanon. 1:1-kadensen i moter.md
er CFR-styrt (cfr-framework.md), ikke dekket av kadens-tabellen - urort.
Vakt-case (i): 8/9 kommandoer lukket. Gjenstaaende treff er KUN kaskade.md
(Step 13, Wave 5); freshen-references.md er utenfor 1.8.0-scope by design.
Suite 163/162/1.
- Ny tests/reference-integrity.test.mjs: alle ${CLAUDE_PLUGIN_ROOT}-stier i
commands/agents må finnes på disk OG være shippbare (aldri under gitignored
.claude/). Fanger død-referanse-klassen permanent (TDD: rød på
freshen-references før fiks). Suite 135 -> 138.
- Døde referanser lukket: freshen-references peker nå på metrics-library
«Review-kadens»; metrics-library-provenanslinje uten død relativ sti.
- Kryssref-isolasjon: «Ressurser/Interne referanser»-seksjon i de 5 isolerte
KB-filene (examples, oboard-guide, meeting-guides, calculator, cfr).
- «Sist oppdatert»-markør på alle 17 referansefiler (var 4).
- 19 -> 20 antipatterns (SKILL, kvalitet x2, help — help-forekomst funnet i
sweep utover review-lista); «15. oktober» -> tidlig oktober (arshjul x2,
framework); garblet prognoseformel rettet mot calculator-kanon (framework).
- Typonits: schuld/Næste (meeting-guides), resultatmål (dfo-mapping),
sandbagging (trendanalytiker), Q1-2026 -> T1-2026 (fremdriftssporer).
- README: hooks-badge 4 -> 3, død Stop-rad fjernet.
- BACKLOG.md foldet inn i docs/roadmap.md (tema-nivå, ingen interne
plandetaljer) og slettet; .gitignore ROADMAP.md ankret til rot (/ROADMAP.md)
så docs/roadmap.md kan trackes.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
compose-org-profile.mjs prepender top-level OKF-noekler (type:
Organisasjonsprofil/resource/timestamp) over den nestede org-profilen i
ETT frontmatter-blokk, pipes til write-org-profile.mjs (uendret). Kun de
tre trygge noeklene top-level; FORBID nye top-level navn/id/fase/domene/
sektor som ville skygge nestede verdier hooken leser. oppsett.md (begge
profil-skriv-sites) + template oppdatert. Test: compose->pip->readback +
inject-roundtrip (4), full suite 51->55.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SFW5scLL7oEwWWTv1fPQG6