Commit graph

4 commits

Author SHA1 Message Date
6712f855ed
test(okr): generiske, fiktive fixturer og testdata
okf-realistic har samme struktur og samme tall som før. Organisasjonen er
Fjordvik kommune (fiktiv), og OKR-fila heter okr-vannforsyning.md, så den
alfabetiske rekkefølgen mot okr-digitalisering.md holder. KR2 går fra 12
til 20 med nå-verdi 17, og scoren er fortsatt 0.625. Retrieval-testene
bruker fortsatt «nullvisjon», og disambigueringen bruker et felles token i
tittel og status-kropp, så de tester det samme på nytt innhold.
docx-fixturen er bygget på nytt med bare document.xml endret. Øvrige
testdata (KR-navn, sektorverdi, eksempeltekst) er nøytrale.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 12:27:22 +02:00
43a84d2326 fix(okr): seksjons-bevisst confidence-telling i coaching-hook (patch-lane #1)
Hooken talte alle tabellrader merket At Risk/Off Track under ett. okr-framework.md:605
sier samtidig at de fleste stretch-KR BOER staa At Risk, og at permanent groent er selve
sandbagging-signalet. For en sunn aspirational-portefoelje pekte varselet dermed feil vei:
eneste maate aa dempe det paa var aa merke stretch-KR groenne -- noeyaktig det kanon
advarer mot. Fra 1.10.0 fylles kolonnen deterministisk, saa kollisjonen inntraff alltid.

Tellingen foelger naa seksjonen raden staar under:
  committed     -> At Risk OG Off Track teller
  aspirational  -> KUN Off Track ("progresjonen har stoppet opp" er reelt ogsaa for stretch)
  uplasserbar   -> telles som committed

Fallbacken er en operatoerbeslutning, ikke en default: haandskrevne status.md fra foer
1.10.0 har ingen seksjonsstruktur, og en fil som varsler for lite er farligere enn en som
varsler for mye. Samme verdi som dekningsvakten i statusrapport() haandhever paa skrivesiden.

Rad-predikatene er navngitte konstanter, og de to testfilene som leser dem ut av hookens
kilde henter dem naa ved NAVN i stedet for ved posisjon -- hooken har flere predikater enn
to, saa "det foerste og det andre literalet" ville vaert en vakt som stille plukket feil regex.

Test (7) i syklus-status.test.mjs kunne ikke bare endres fra 3 til 2: den SIMULERTE hookens
aritmetikk med skrapte rad-predikater, og en seksjons-bevisst regel er ikke uttrykkbar per
rad. Splittet i (7) rad-form og (7b) ekte ende-til-ende-telling som kjoerer hooken mot
generatorens fil paa disk.

Suite 343 -> 348. Fire mutasjoner verifisert: seksjons-bevissthet fjernet -> ROED (4),
aspirational teller aldri -> ROED (1), fallback snudd -> ROED (3), navne-forankring brutt
-> ROED (6).

Ingen versjonsbump: bugfix paa releaset kode (presedens 8a7bc08). CHANGELOGs "Kjent avvik"
under 1.10.0 er ikke slettet -- 1.10.0 BLE utgitt med avviket -- men lukket med hva som
gjelder naa.
2026-08-10 21:20:51 +02:00
9033f37b63 docs(okr): kjent avvik i coaching-hooks confidence-telling
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.
2026-08-10 20:59:48 +02:00
3a0cbcfbf9 feat(okr): deterministisk skriveledd for status.md (1.10.0)
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.
2026-08-10 20:56:26 +02:00