Commit graph

28 commits

Author SHA1 Message Date
0059da7bef feat(okr): 1.8.1 okf_version/okf_layout-splitt (OKF-spec 12)
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
2026-07-25 15:33:30 +02:00
44ceec7205 fix(okr): C7b remediering R1-R4 (release-relevante review-funn for 1.8.0)
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
2026-07-25 12:33:55 +02:00
1cb2eed5a2 fix(okr): C6 markedsoppdatering + kaskade F-i (verifisert-bruker, align-not-cascade, NCT)
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
2026-07-25 06:32:18 +02:00
ba91fc2a1a fix(okr): F-i post-1.6.0 kontekstblokker (6 kommandoer) + kadens-konsumenter
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.
2026-07-25 06:13:38 +02:00
329089671a fix(okr): F-e scoreband-til-rubrikk + 10 dims + F-h binaer-unntak + kvalitet F-i 2026-07-24 20:19:48 +02:00
51f6e23175 fix(okr): F-b committed=forpliktelse OG paavirkbarhet + governance F-i 2026-07-24 20:14:04 +02:00
4bbba6e719 fix(okr): F-a fjern score-til-modenhet + F-g ekte antipattern-kategorier 2026-07-24 19:57:34 +02:00
6028ac2f90 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>
2026-07-17 03:43:22 +02:00
8328d5d31e feat(okr): innboks-ingestion 1.7.0, docs + release (SC alle)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 03:21:55 +02:00
79d3c1ee64 feat(okr): /okr:innboks kommando (tynn wrapper, ASCII) [skip-docs]
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 20:34:08 +02:00
77280ac319 feat(okr): tre-skrivere emitterer OKF-frontmatter + index-regenerering (SC2,SC3)
oppsett.md (eneste tre-skriver m/ Write+Bash): strategisk-kontekst-filer
faar OKF-frontmatter (type: Tildelingsbrev/Virksomhetsplan/Overordnede OKR),
retro -> type: Retrospektiv, ny-syklus status.md -> type: Status; regenererer
.claude/okr-indeksen via okf-index.mjs etter tre-skriv (2 punkter). skriv.md/
sporing.md har ikke Write -> dokumenterer OKF-frontmatter (type: OKR / Status)
i eksempel-output (malen brukeren lagrer). Lukker SC2-gapet: alle konsept-
filer paa disk baerer type:. Verify: okf-check fixture exit 0; suite 55/55.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SFW5scLL7oEwWWTv1fPQG6
2026-06-26 17:24:20 +02:00
5219d50d4b feat(okr): onboarding skriver OKF-frontmatter paa org-profil (SC6)
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
2026-06-26 17:19:14 +02:00
615542d064 fix(okr): analyse leser historikk direkte etter hook-splitt (SC5)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SFW5scLL7oEwWWTv1fPQG6
2026-06-26 15:07:19 +02:00
88eaca81e0 feat(okr): /okr:help kommando-/agentoversikt + syklusarbeidsflyt (SC2) 2026-06-26 09:53:46 +02:00
4488a84e3a feat(okr): /okr:freshen-references + KB-selvevaluator-rubrikk (SC8) 2026-06-26 09:49:35 +02:00
a0e533a856 feat(okr): /okr:export PDF via weasyprint + scripts/export-pdf.py (SC5) 2026-06-26 09:46:39 +02:00
60174e8f5c feat(okr): wire org-profil-skriving i oppsett + dokumenter hjem-sti (SC1) 2026-06-26 00:08:52 +02:00
d969cedf47 feat(okr): wire 6 referansefiler i kommando/agent + rett CLAUDE.md-tall (SC4) 2026-06-24 11:42:18 +02:00
9eddec836b feat(okr): avdupliser gap/governance-tabell + disambiguering (SC2) 2026-06-24 11:28:23 +02:00
2cb8f71a47 feat(okr): kontekstbevissthet-blokk i moter (SC1) 2026-06-24 11:26:50 +02:00
6f31a52b6a refactor(okr): rename plugin-egen Kvartalsreview til Syklusreview (6 sites) 2026-06-23 22:56:44 +02:00
821ee242a0 fix(okr): innfør én kanonisk scoringsterskel (0.7/0.6-0.7), bevar kanon-kilde 2026-06-23 21:14:42 +02:00
73b34c09fd fix(okr): merk DDT fiktiv, fjern fabrikkert Oboard-kilde og README reell-bruker-påstand 2026-06-23 21:11:16 +02:00
ca14bde4d0 fix(okr): rett find-replace-artefakter i framework/examples/skriv 2026-06-23 21:07:54 +02:00
4231ccf513 fix(okr): saner oppsett.md — UTF-8, rm-rf-gardering, kommandonavn, DDT
Fase 0 Step 1/10 (circuit-breaker). Restaurerer norske tegn i prosa
(0→55å/67ø/5æ), garderer rm -rf med regex ^[TQ][1-4]-[0-9]{4}$ + non-empty,
retter /okr:moter→/okr:møter + oppstartsmate→oppstartsmøte, merker 2 DDT
som fiktiv eksempeletat. YAML-schema-nøkler bevart (Fase 2-scope).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LSVEbrrahcSVoNG4WG3NrP
2026-06-23 20:43:52 +02:00
Kjell Tore Guttormsen
21e9fb546b chore(privacy): scrub real-org references from plugin internals (phase 2)
Same bulk replacement applied to plugin-internal KB, examples, fixtures,
tests, and docs. Real organization names, persona names, internal system
identifiers, and domain-specific terms replaced with fictional generic
public-sector entity (DDT) and generic terminology.

Scope:
- okr/ — examples, governance, framework, integrations, sources
- ms-ai-architect/ — KB references (engineering, governance, security,
  infrastructure, advisor), tests/fixtures, agents, docs
- linkedin-thought-leadership/ — voice samples, network-builder,
  examples (genericized identifying headlines to "[your organization]")
- llm-security/ — research notes, scan report

Manual genericization beyond bulk replace:
- okr SKILL.md "Primary user / Domain" — generic Norwegian public sector
- linkedin-voice SKILL.md headline placeholder
- network-builder.md headline placeholder
- high-engagement-posts.md voice sample employer line + hashtag

Phase 3 (factual-attribution review) remains: a few KB files attribute
publicly known transport-sector docs/datasets (e.g. håndbok V440, NVDB)
to the fictional DDT after bulk replace. Needs manual semantic review
to either remove or restore correct citation without re-introducing
affiliation references.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-03 04:28:15 +02:00
Kjell Tore Guttormsen
f8dcf05f17 feat(okr): sync to v1.3.0 from ktg-privat
Syncs all changes from v1.0.0 through v1.3.0:

v1.1 (quick fixes):
- Fix deprecated Viva Goals references
- Add DFO-OKR terminology mapping
- Add tillitsvalgt/fagforening perspective
- Update Objectives recommendation from 3-5 to 2-3

v1.1 (persistent context):
- Deep onboarding interview (full/mvp)
- Persistent .claude/okr/ directory tree
- Context-aware commands
- Cycle archival with retrospective

v1.3 (AI-first differentiators):
- /okr:gap — tildelingsbrev gap analysis with coverage matrix
- /okr:analyse — cross-cycle Mermaid analytics
- SessionStart coaching hook (proactive, phase-aware)
- gapanalytiker + trendanalytiker agents
- inject-okr-context.mjs extended for historikk/

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-08 20:31:49 +02:00
Kjell Tore Guttormsen
906abb8201 feat: add okr plugin v1.0.0 — OKR guidance for Norwegian public sector
Expert OKR guidance based on Google/Doerr methodology, adapted for
4-month tertial cycles and Norwegian government accountability.

Components:
- 8 commands (skriv, kvalitet, kaskade, sporing, møter, innføring, governance, oppsett)
- 5 agents (kvalitetssjekker, kaskadebygger, fremdriftssporer, møtefasilitator, styringsrådgiver)
- 3 hooks (UserPromptSubmit context injection, PreCompact state preservation, Stop reminder)
- 15 reference files covering methodology, governance, meetings, antipatterns
- Linear MCP integration for OKR tracking

Previously in ktg-privat, now open-sourced.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-08 13:32:45 +02:00