fix(okr): B1 KB/doc-hygiene + referanse-integritetstest (1.7.1-lane)
- 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>
This commit is contained in:
parent
8328d5d31e
commit
6028ac2f90
25 changed files with 214 additions and 53 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -30,7 +30,7 @@ node_modules/
|
|||
# --- session/local state (gitignored per ~/.claude polyrepo-konvensjon) ---
|
||||
STATE.md
|
||||
REMEMBER.md
|
||||
ROADMAP.md
|
||||
/ROADMAP.md
|
||||
TODO.md
|
||||
NEXT-SESSION-PROMPT*.local.md
|
||||
*.local.md
|
||||
|
|
|
|||
29
BACKLOG.md
29
BACKLOG.md
|
|
@ -1,29 +0,0 @@
|
|||
# OKR Plugin Backlog
|
||||
|
||||
Forbedringsoppgaver for fremtidige versjoner.
|
||||
|
||||
## v1.1 - Planlagt
|
||||
|
||||
### OKR-1: Forbedre /okr:oppsett wizard
|
||||
|
||||
**Beskrivelse:** Steg-for-steg wizard med fremdriftsindikator, input-validering, og "Quick start" vs "Full setup".
|
||||
|
||||
**Akseptansekriterier:**
|
||||
- Ny bruker kan sette opp plugin uten dokumentasjon
|
||||
- Alle obligatoriske felt valideres
|
||||
- "Quick start" hopper over valgfrie steg
|
||||
|
||||
### OKR-4: SubagentStop quality gate
|
||||
|
||||
**Beskrivelse:** Hook på SubagentStop som blokkerer kvalitetssjekker-agent hvis OKR ikke møter minimumskvalitet.
|
||||
|
||||
**Akseptansekriterier:**
|
||||
- Exit 2 hvis score < 3/10 på noe element
|
||||
- Feilmelding forklarer hva som må forbedres
|
||||
- Kan deaktiveres via konfig
|
||||
|
||||
## Fremtidige ideer (ikke prioritert)
|
||||
|
||||
- **OKR-3:** Flere konkrete norske offentlig sektor-eksempler
|
||||
- **OKR-6:** Integration med flere verktøy (Notion, Confluence)
|
||||
- **OKR-7:** Notification hook for OKR-deadline påminnelser
|
||||
|
|
@ -10,7 +10,7 @@
|
|||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
|
|
@ -258,7 +258,6 @@ The plugin understands this hierarchy and helps you maintain alignment at every
|
|||
| SessionStart | Proactive coaching — tells you where you are in the cycle and what to focus on |
|
||||
| UserPromptSubmit | Injects your organization profile and available context files into every interaction |
|
||||
| PreCompact | Preserves OKR draft state if the conversation gets long |
|
||||
| Stop | Reminds you to save work to your tracking system |
|
||||
|
||||
### Skills
|
||||
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ Score = (Nåværende - Baseline) / (Target - Baseline)
|
|||
## OKR Statusrapport
|
||||
|
||||
**Dato:** [dato]
|
||||
**Syklus:** Q1-2026 (Uke X av 16)
|
||||
**Syklus:** T1-2026 (Uke X av 16)
|
||||
**Team:** [teamnavn]
|
||||
|
||||
---
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ Ekstraher strukturert data:
|
|||
|
||||
Les antipattern-kategorier fra referanser:
|
||||
- **Formuleringsfeil**: Aktivitetsfokus i KR, binære KR, vage Objectives
|
||||
- **Prosessfeil**: Set-and-forget, retrospektiv-mangel, sandbægging
|
||||
- **Prosessfeil**: Set-and-forget, retrospektiv-mangel, sandbagging
|
||||
- **Ambisjonsbalanse**: For mange Objectives, for ambisiøst, for forsiktig
|
||||
- **Organisatoriske feil**: Silo-OKR, OKR-shaming, manglende sponsor
|
||||
- **Offentlig sektor-spesifikke**: Tildelingsbrev-drift, politisk overreaksjon
|
||||
|
|
|
|||
|
|
@ -153,10 +153,11 @@ har blitt utdaterte. Poll disse navngitte kildene:
|
|||
trådt i kraft og erstattet 1967-loven KB-en refererer.
|
||||
- **eFormidling** — sjekk om status fortsatt er «bør» (ikke påbudt) for statlige virksomheter.
|
||||
|
||||
Kildegrunnlaget for de volatile markørene er dokumentert i
|
||||
`${CLAUDE_PLUGIN_ROOT}/.claude/projects/2026-06-24-fase3-referansegrad-loft/research/01-norsk-offentlig-metrikker.md`
|
||||
(lokal research). Rapporter hvilke `Sist oppdatert`-markører som bør bumpes, og
|
||||
hvilke faktapåstander som må re-verifiseres.
|
||||
Kildegrunnlaget for de volatile markørene er oppsummert i
|
||||
`${CLAUDE_PLUGIN_ROOT}/skills/okr-offentlig-sektor/references/metrics-library.md`
|
||||
(seksjonen «Review-kadens»; full provenans i lokalt research-arkiv, ikke
|
||||
distribuert med pluginen). Rapporter hvilke `Sist oppdatert`-markører som bør
|
||||
bumpes, og hvilke faktapåstander som må re-verifiseres.
|
||||
|
||||
## Referanser
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ kommandoene for det temaet. Ellers vis full oversikt.
|
|||
| Kommando | Hva den gjør |
|
||||
|----------|--------------|
|
||||
| `/okr:skriv` | Skriv ny OKR med veiledet Objective- og KR-utforming |
|
||||
| `/okr:kvalitet` | Kvalitetssjekk OKR mot ankret rubrikk og 19 antipatterns |
|
||||
| `/okr:kvalitet` | Kvalitetssjekk OKR mot ankret rubrikk og 20 antipatterns |
|
||||
| `/okr:kaskade` | Kaskader OKR fra org til team, visualiser alignment |
|
||||
| `/okr:sporing` | Spor fremdrift, beregn score (0.0–1.0), generer check-ins |
|
||||
| `/okr:møter` | Planlegg OKR-workshops, check-ins, reviews og 1:1 (CFR) |
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ OKR-kontekst injiseres automatisk via hook. Sjekk system-konteksten FØR du spø
|
|||
- Identifiser styrker og svakheter
|
||||
|
||||
3. **Sjekk for antipatterns** — se etter de vanligste feilene
|
||||
- Les `${CLAUDE_PLUGIN_ROOT}/skills/okr-offentlig-sektor/references/okr-antipatterns.md` for alle 19 antipatterns
|
||||
- Les `${CLAUDE_PLUGIN_ROOT}/skills/okr-offentlig-sektor/references/okr-antipatterns.md` for alle 20 antipatterns
|
||||
- Kategoriser: formulering, prosess, kultur, struktur, ledelse
|
||||
|
||||
4. **Tilby forbedringer** — for OKR som scorer lavt:
|
||||
|
|
@ -115,5 +115,5 @@ OKR-kontekst injiseres automatisk via hook. Sjekk system-konteksten FØR du spø
|
|||
## Referanser
|
||||
|
||||
- `${CLAUDE_PLUGIN_ROOT}/skills/okr-offentlig-sektor/references/okr-quality-rubrics.md` — ankret scoringsrubrikk (5 ankere per dimensjon); kanonisk kilde for scoringen over
|
||||
- `${CLAUDE_PLUGIN_ROOT}/skills/okr-offentlig-sektor/references/okr-antipatterns.md` — alle 19 antipatterns
|
||||
- `${CLAUDE_PLUGIN_ROOT}/skills/okr-offentlig-sektor/references/okr-antipatterns.md` — alle 20 antipatterns
|
||||
- `${CLAUDE_PLUGIN_ROOT}/skills/okr-offentlig-sektor/references/okr-examples.md` — gode vs dårlige eksempler
|
||||
|
|
|
|||
45
docs/roadmap.md
Normal file
45
docs/roadmap.md
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
# Roadmap
|
||||
|
||||
Retning og backlog for OKR Offentlig Sektor-pluginen. Versjonshistorikk: se
|
||||
`CHANGELOG.md` (README bærer et sammendrag). Detaljert fase-/sesjonsplanlegging
|
||||
skjer i lokalt planverk og speiles ikke hit.
|
||||
|
||||
## Planlagte spor (tema-nivå)
|
||||
|
||||
- **1.7.x (patch-lane):** dokumentasjons- og kodehygiene — KB-kryssreferanser,
|
||||
referanse-integritetstest, småfikser i ingestion-bibliotekene og hooks.
|
||||
- **1.8.0 «Én kanon»:** konsolidering av metodedoktrine — én kadens, én
|
||||
confidence-tabell, ett scorebånd, harmoniserte antipattern-kategorier;
|
||||
kommandoene moderniseres til post-1.6.0 retrieval.
|
||||
- **1.9.0 «Styringssløyfa lukkes»:** gevinstrealisering-bro (DFØ-vokabular),
|
||||
kommunal styringslinje, rapportering ut-siden (tertial-/årsrapport-underlag),
|
||||
GDPR-posisjon og deterministisk rydde-kommando for ingested innhold.
|
||||
- **2.0.0:** beriket ingestion (`--enrich`) og validering i reell tertialsyklus.
|
||||
|
||||
## Backlog (fra tidligere BACKLOG.md)
|
||||
|
||||
### OKR-1: Forbedre /okr:oppsett wizard
|
||||
|
||||
**Beskrivelse:** Steg-for-steg wizard med fremdriftsindikator, input-validering, og "Quick start" vs "Full setup".
|
||||
|
||||
**Akseptansekriterier:**
|
||||
- Ny bruker kan sette opp plugin uten dokumentasjon
|
||||
- Alle obligatoriske felt valideres
|
||||
- "Quick start" hopper over valgfrie steg
|
||||
|
||||
### OKR-4: SubagentStop quality gate
|
||||
|
||||
**Beskrivelse:** Hook på SubagentStop som blokkerer kvalitetssjekker-agent hvis OKR ikke møter minimumskvalitet.
|
||||
|
||||
**Akseptansekriterier:**
|
||||
- Exit 2 hvis score < 3/10 på noe element
|
||||
- Feilmelding forklarer hva som må forbedres
|
||||
- Kan deaktiveres via konfig
|
||||
|
||||
### Fremtidige ideer (ikke prioritert)
|
||||
|
||||
- **OKR-3:** Flere konkrete norske offentlig sektor-eksempler
|
||||
- **OKR-6:** Integration med flere verktøy (Notion, Confluence)
|
||||
- **OKR-7:** Notification hook for OKR-deadline påminnelser
|
||||
|
||||
*Sist oppdatert: Juli 2026*
|
||||
|
|
@ -131,7 +131,7 @@ All reference material is in `references/`:
|
|||
- `okr-framework.md` — Core methodology, scoring, cycle management
|
||||
- `okr-quality-rubrics.md` — Anchored quality rubric (5 anchors per dimension) for `/okr:kvalitet`
|
||||
- `okr-examples.md` — Good and bad examples from public sector
|
||||
- `okr-antipatterns.md` — 19 common OKR mistakes
|
||||
- `okr-antipatterns.md` — 20 common OKR mistakes
|
||||
- `okr-sources.md` — Bibliographic evidence base
|
||||
|
||||
### Operations
|
||||
|
|
|
|||
|
|
@ -346,6 +346,11 @@ Bruk denne for å vurdere din CFR-praksis:
|
|||
|
||||
## Ressurser
|
||||
|
||||
### Interne referanser
|
||||
- `meeting-guides.md` - Agendaer for 1:1 og check-in der CFR praktiseres
|
||||
- `individual-vs-team-okr.md` - Hvorfor CFR (ikke individuelle OKR) dekker individnivået
|
||||
- `okr-framework.md` - OKR-metodikken CFR komplementerer
|
||||
|
||||
### Bøker
|
||||
- **Measure What Matters** av John Doerr, kap. 13-14 om CFR
|
||||
- **Radical Candor** av Kim Scott for feedback-teknikker
|
||||
|
|
@ -362,3 +367,5 @@ Bruk denne for å vurdere din CFR-praksis:
|
|||
- **SBI-modellen** (Situation-Behavior-Impact) for strukturert feedback
|
||||
- **70/30-regelen** for lyttende samtaler
|
||||
- **Skalaspørsmål** for å unngå defensivitet i OKR-samtaler
|
||||
|
||||
*Sist oppdatert: Juli 2026*
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ OKR-metodikken.
|
|||
|
||||
## Hvorfor denne broen trengs
|
||||
|
||||
Norsk offentlig sektor snakker "DFØ-språk" — resultmål, styringsparametere,
|
||||
Norsk offentlig sektor snakker "DFØ-språk" — resultatmål, styringsparametere,
|
||||
resultatindikatorer. OKR-verden snakker om Objectives, Key Results, stretch goals.
|
||||
Denne terminologiske kløften skaper motstand og forvirring ved OKR-innføring.
|
||||
|
||||
|
|
@ -112,3 +112,5 @@ Den konseptuelle broen: DFØ beskriver selv MRS som å «konsentrere seg om *hva
|
|||
- DFØ: [Etatsstyring](https://dfo.no/fagomrader/styring-i-staten/etatsstyring)
|
||||
- `okr-offentlig-governance.md` — Tildelingsbrev-analyse og Riksrevisjon-compliance
|
||||
- `okr-framework.md` — OKR-metodikk i detalj
|
||||
|
||||
*Sist oppdatert: Juli 2026*
|
||||
|
|
|
|||
|
|
@ -50,3 +50,5 @@ Via bidragsvurdering til team-OKR, 360-feedback, KPIer for rollen, og kvalitativ
|
|||
|
||||
**"Ledelsen vil ha individuelle OKR"**
|
||||
Del denne veiledningen og forskningen bak. Foreslå en hybrid hvor ledere har team-OKR, ikke personlige OKR.
|
||||
|
||||
*Sist oppdatert: Juni 2026*
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ For hvert Key Result:
|
|||
### Fasilitatortips
|
||||
- Hold det kort og fokusert (ikke gå i detaljer om utførelse)
|
||||
- Feir fremgang: Hvis noe går bra, gi skryt
|
||||
- Vær løsningsorientert: Ikke schuld, men "hva kan vi gjøre?"
|
||||
- Vær løsningsorientert: Ikke skyld, men "hva kan vi gjøre?"
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -212,7 +212,7 @@ For hvert tema:
|
|||
**00:45 - 01:00 | Action items**
|
||||
- Justeringer til OKR hvis nødvendig
|
||||
- Kommunikasjonsplan mellom teams
|
||||
- Næste alignment-sjekk dato
|
||||
- Neste alignment-sjekk dato
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -267,3 +267,15 @@ Lærdommer:
|
|||
6. **Dokumentasjon**: Logg decisions og actions i Oboard/Confluence
|
||||
7. **Hybridvennlig**: Sørg for at remote-deltakere ser og høres
|
||||
8. **Celebration**: Feir wins, ikke bare fokuser på problemer
|
||||
|
||||
---
|
||||
|
||||
## Ressurser
|
||||
|
||||
### Interne referanser
|
||||
- `okr-arshjul.md` - Når i tertialet de ulike møtene hører hjemme
|
||||
- `okr-calculator.md` - Confidence- og score-vurderingene i check-in
|
||||
- `cfr-framework.md` - Samtale- og feedback-teknikker for 1:1-er
|
||||
- `okr-framework.md` - Metodikken møtene opererer innenfor
|
||||
|
||||
*Sist oppdatert: Juli 2026*
|
||||
|
|
|
|||
|
|
@ -298,6 +298,6 @@ Disse ser imponerende ut, men Riksrevisjonen/tilsyn har dokumentert svak reell e
|
|||
|
||||
### Review-kadens
|
||||
|
||||
Alt regelverk i denne seksjonen er et **bevegelig mål 2025–2026** (ny forvaltningslov fases inn, EAA pending, eFormidling 4.0-migrasjon, årlige indeksrunder, ny DI-indeks). Biblioteket kan derfor ikke være statisk. Før hver deling/release: re-verifiser kilde + dato per metrikk. `/okr:freshen-references` bør prioritere de volatile primærkildene: Lovdata (forvaltningslov-status), uutilsynet (WCAG/EAA), Digdir (eFormidling/indeks). Full provenans og confidence-vurdering: `research/01-norsk-offentlig-metrikker.md` (trekresearch 2026-06-24, confidence 0,85).
|
||||
Alt regelverk i denne seksjonen er et **bevegelig mål 2025–2026** (ny forvaltningslov fases inn, EAA pending, eFormidling 4.0-migrasjon, årlige indeksrunder, ny DI-indeks). Biblioteket kan derfor ikke være statisk. Før hver deling/release: re-verifiser kilde + dato per metrikk. `/okr:freshen-references` bør prioritere de volatile primærkildene: Lovdata (forvaltningslov-status), uutilsynet (WCAG/EAA), Digdir (eFormidling/indeks). Full provenans og confidence-vurdering: trekresearch 2026-06-24, confidence 0,85 (lokalt research-arkiv, ikke distribuert med pluginen).
|
||||
|
||||
*Sist oppdatert: Juni 2026*
|
||||
|
|
|
|||
|
|
@ -549,3 +549,5 @@ Denne guiden dekker de vanligste feilmønstrene organisert i fem kategorier.
|
|||
- `okr-framework.md` - Metodikk i detalj
|
||||
- `okr-examples.md` - Gode og dårlige eksempler
|
||||
- `meeting-guides.md` - Agendaer for OKR-møter
|
||||
|
||||
*Sist oppdatert: Juni 2026*
|
||||
|
|
|
|||
|
|
@ -94,7 +94,7 @@
|
|||
|
||||
**September - Oktober**
|
||||
- Syklus 3 gjennomføring
|
||||
- **15. oktober**: Statsbudsjett fremlegges (viktig for neste år!)
|
||||
- **Tidlig oktober**: Statsbudsjett fremlegges (viktig for neste år!)
|
||||
- Forberedelse til årlig review
|
||||
|
||||
**November**
|
||||
|
|
@ -117,7 +117,7 @@
|
|||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ BUDSJETTPROSESSEN │
|
||||
├─────────────┬───────────────────────────────────────────────────┤
|
||||
│ Oktober 15 │ Statsbudsjett fremlegges → Indikasjon på rammer │
|
||||
│ Tidlig okt. │ Statsbudsjett fremlegges → Indikasjon på rammer │
|
||||
│ November │ Stortingsbehandling → Avklaringer │
|
||||
│ Desember │ Budsjett vedtas → Rammer bekreftet │
|
||||
│ Januar │ Tildelingsbrev → Endelige mål og ressurser │
|
||||
|
|
@ -186,3 +186,5 @@ Se også:
|
|||
- `okr-framework.md` - Komplett metodikk
|
||||
- `okr-cheatsheet.md` - Hurtigreferanse
|
||||
- `meeting-guides.md` - Agendaer for møter
|
||||
|
||||
*Sist oppdatert: Juli 2026*
|
||||
|
|
|
|||
|
|
@ -260,3 +260,14 @@ Oppsummering av alle OKR for et team:
|
|||
3. **Fokuser på tiltak** - At Risk og Off Track krever konkrete handlinger
|
||||
4. **Del synlig** - Bruk Oboard eller lignende for transparens
|
||||
5. **Lær av avvik** - Gap mellom prognose og resultat gir verdifull innsikt
|
||||
|
||||
---
|
||||
|
||||
## Ressurser
|
||||
|
||||
### Interne referanser
|
||||
- `okr-framework.md` - Scoring og prognosering i metodisk kontekst
|
||||
- `meeting-guides.md` - Check-in-møtene der confidence vurderes
|
||||
- `okr-quality-rubrics.md` - Kvalitetsvurdering av selve KR-formuleringen
|
||||
|
||||
*Sist oppdatert: Juli 2026*
|
||||
|
|
|
|||
|
|
@ -116,3 +116,5 @@ Måned 4: REVIEW
|
|||
---
|
||||
|
||||
**Mer hjelp?** Spør OKR-skillen eller se `references/` for dybdeguider.
|
||||
|
||||
*Sist oppdatert: Juni 2026*
|
||||
|
|
|
|||
|
|
@ -227,3 +227,14 @@ Bruk denne når du skriver eller vurderer OKR:
|
|||
- [ ] Kan vi verifisere suksess objektivt?
|
||||
- [ ] Er det klart hvem som eier hvert KR?
|
||||
- [ ] Ville dette imponere stakeholders hvis vi lykkes?
|
||||
|
||||
---
|
||||
|
||||
## Ressurser
|
||||
|
||||
### Interne referanser
|
||||
- `okr-framework.md` - Metodikken eksemplene bygger på
|
||||
- `okr-quality-rubrics.md` - Rubrikk for å vurdere egne utkast mot eksemplene
|
||||
- `okr-antipatterns.md` - Fallgruvene de dårlige eksemplene illustrerer
|
||||
|
||||
*Sist oppdatert: Juli 2026*
|
||||
|
|
|
|||
|
|
@ -182,7 +182,7 @@ OKR i offentlig sektor må koordineres med statens budsjettprosess for å være
|
|||
|
||||
| Dato | Hendelse | OKR-implikasjon |
|
||||
|------|----------|-----------------|
|
||||
| Oktober 15 | Statsbudsjett fremlegges | Indikasjon på ressursrammer |
|
||||
| Tidlig oktober | Statsbudsjett fremlegges | Indikasjon på ressursrammer |
|
||||
| November | Stortingsbehandling | Avklaringer underveis |
|
||||
| Desember (tidlig) | Budsjett vedtas | Rammer bekreftet |
|
||||
| Januar | Tildelingsbrev sendes | Endelige mål og rammer |
|
||||
|
|
@ -414,16 +414,14 @@ Hvis confidence alltid starter og forblir på 90%+, setter dere sannsynligvis ik
|
|||
Den enkleste metoden for å forutsi sluttresultat:
|
||||
|
||||
```
|
||||
Prognose = Baseline + (Nåværende progresjon / Tid brukt) × Total tid
|
||||
Prognose = Baseline + (Nåværende - Baseline) × (Total tid / Tid brukt)
|
||||
|
||||
Eksempel:
|
||||
KR: Øke konvertering fra 10% til 20%
|
||||
Tid: 2 av 4 måneder brukt (50%)
|
||||
Nåværende: 14%
|
||||
Progresjon: (14-10) / (20-10) = 0.4 (40%)
|
||||
|
||||
Rate = 40% progresjon / 50% tid = 0.8
|
||||
Prognose ved syklusslutt: 10 + (0.8 × 100% × 10) = 18%
|
||||
Prognose = 10 + (14 - 10) × (4 / 2) = 10 + 8 = 18%
|
||||
```
|
||||
|
||||
#### Tidsjustert forventning
|
||||
|
|
@ -580,3 +578,5 @@ Selv kvalitative mål bør ha en definert måte å verifisere suksess på.
|
|||
4. **Transparency**: OKR er åpne
|
||||
5. **Continuous Tracking**: Følg opp månedlig
|
||||
6. **Learning over Punishment**: Scorer brukes til forbedring, ikke straff
|
||||
|
||||
*Sist oppdatert: Juli 2026*
|
||||
|
|
|
|||
|
|
@ -507,3 +507,5 @@ Stretch-mål krever psykologisk trygghet. Ansatte må:
|
|||
- [OKR Institute](https://okrinstitute.org/) - Forskning og best practices
|
||||
- [What Matters](https://www.whatmatters.com/) - John Doerrs ressursside
|
||||
- [Code for America OKR Case Study](https://www.whatmatters.com/articles/code-for-america-okrs-local-government) - Offentlig sektor-eksempel
|
||||
|
||||
*Sist oppdatert: Juni 2026*
|
||||
|
|
|
|||
|
|
@ -593,3 +593,5 @@ Outcome-KR | Manuell med kilde
|
|||
- `meeting-guides.md` – Agendaer for OKR-møter (inkl. sprint planning med OKR)
|
||||
- `okr-implementation.md` – Innføringsguide
|
||||
- `okr-offentlig-governance.md` – Kobling til tildelingsbrev og politisk styring
|
||||
|
||||
*Sist oppdatert: Juni 2026*
|
||||
|
|
|
|||
|
|
@ -128,3 +128,12 @@ Oboard kan integreres med:
|
|||
---
|
||||
|
||||
**Tips**: Bruk Oboard mobile app for rask check-in underveis!
|
||||
|
||||
## Ressurser
|
||||
|
||||
### Interne referanser
|
||||
- `okr-integrations.md` - Verktøylandskapet Oboard er en del av
|
||||
- `okr-calculator.md` - Scoring og confidence som føres i verktøyet
|
||||
- `meeting-guides.md` - Check-in-møtene der Oboard-data brukes
|
||||
|
||||
*Sist oppdatert: Juli 2026*
|
||||
|
|
|
|||
81
tests/reference-integrity.test.mjs
Normal file
81
tests/reference-integrity.test.mjs
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
// reference-integrity.test.mjs
|
||||
// B1 (1.7.1): referanse-integritet for alle ${CLAUDE_PLUGIN_ROOT}-stier i
|
||||
// commands/ og agents/. Fanger doed-referanse-klassen permanent (review 4:
|
||||
// freshen-references pekte paa gitignored .claude/-sti som aldri shippes).
|
||||
// To invarianter per referert sti:
|
||||
// 1. Stien maa finnes paa disk (relativt til plugin-rot).
|
||||
// 2. Stien maa vaere shippbar: aldri under .claude/ (gitignored, finnes
|
||||
// lokalt men ikke i installert plugin — ren existsSync er falsk groenn).
|
||||
// Glob-stier (* i siste segment) sjekkes som: katalog finnes + minst ett treff.
|
||||
// Zero npm deps. Moenster: tests/package-shape.test.mjs (les fil, assert).
|
||||
|
||||
import { test } from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
import { readFileSync, readdirSync, existsSync } from 'node:fs';
|
||||
import { join, dirname } from 'node:path';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
|
||||
const ROOT = join(dirname(fileURLToPath(import.meta.url)), '..');
|
||||
const SCAN_DIRS = ['commands', 'agents'];
|
||||
|
||||
// Stopper paa whitespace, backtick, anfoerselstegn, ), ] — tegnene som
|
||||
// avslutter en sti i markdown-prosa/lenker. Ingen legitime stier her
|
||||
// inneholder dem.
|
||||
const PATH_RE = /\$\{CLAUDE_PLUGIN_ROOT\}\/([^\s`"')\]]+)/g;
|
||||
|
||||
function collectReferences() {
|
||||
const refs = [];
|
||||
for (const dir of SCAN_DIRS) {
|
||||
for (const name of readdirSync(join(ROOT, dir))) {
|
||||
if (!name.endsWith('.md')) continue;
|
||||
const file = join(dir, name);
|
||||
const body = readFileSync(join(ROOT, file), 'utf8');
|
||||
for (const m of body.matchAll(PATH_RE)) {
|
||||
refs.push({ file, rel: m[1] });
|
||||
}
|
||||
}
|
||||
}
|
||||
return refs;
|
||||
}
|
||||
|
||||
function assertResolvable(rel) {
|
||||
const starName = rel.lastIndexOf('*');
|
||||
if (starName === -1) {
|
||||
assert.ok(existsSync(join(ROOT, rel)), `finnes ikke: ${rel}`);
|
||||
return;
|
||||
}
|
||||
// Glob: kun *-i-siste-segment brukes i repoet (f.eks. references/*.md).
|
||||
const dir = dirname(rel);
|
||||
assert.ok(!dir.includes('*'), `glob i katalogsegment stoettes ikke: ${rel}`);
|
||||
assert.ok(existsSync(join(ROOT, dir)), `glob-katalog finnes ikke: ${dir}`);
|
||||
const suffix = rel.slice(starName + 1);
|
||||
const hits = readdirSync(join(ROOT, dir)).filter((n) => n.endsWith(suffix));
|
||||
assert.ok(hits.length > 0, `glob uten treff: ${rel}`);
|
||||
}
|
||||
|
||||
test('commands/agents refererer minst en plugin-rot-sti (regex-sanity)', () => {
|
||||
const refs = collectReferences();
|
||||
assert.ok(refs.length >= 10, `fant bare ${refs.length} referanser — regex broken?`);
|
||||
});
|
||||
|
||||
test('alle ${CLAUDE_PLUGIN_ROOT}-stier er shippbare (aldri under .claude/)', () => {
|
||||
const offenders = collectReferences().filter(({ rel }) =>
|
||||
rel === '.claude' || rel.startsWith('.claude/'));
|
||||
assert.deepEqual(
|
||||
offenders.map((o) => `${o.file} -> ${o.rel}`),
|
||||
[],
|
||||
'gitignored .claude/-stier shippes aldri med pluginen'
|
||||
);
|
||||
});
|
||||
|
||||
test('alle ${CLAUDE_PLUGIN_ROOT}-stier finnes paa disk', () => {
|
||||
const missing = [];
|
||||
for (const { file, rel } of collectReferences()) {
|
||||
try {
|
||||
assertResolvable(rel);
|
||||
} catch (e) {
|
||||
missing.push(`${file} -> ${rel} (${e.message})`);
|
||||
}
|
||||
}
|
||||
assert.deepEqual(missing, [], 'doede referanser funnet');
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue