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.
This commit is contained in:
parent
285d18ebfa
commit
3a0cbcfbf9
13 changed files with 618 additions and 50 deletions
13
CHANGELOG.md
13
CHANGELOG.md
|
|
@ -5,6 +5,19 @@ All notable changes to this project will be documented in this file.
|
|||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [1.10.0] - 2026-08-10
|
||||
|
||||
Minor-release: **det uwirede leddet**. Kjeden `/okr:rapport` → `/okr:sporing` → `status.md` var beskrevet i prosa, men manglet et mekanisk ledd — ingenting førte en generert rad inn i `status.md`. Det er fila `coaching-hook` teller at-risk-KR i, `/okr:møter` bygger check-in-agenda fra, og `/okr:oppsett arkiver` leser sluttscorer fra. Ingen nye npm-avhengigheter. Suite 329 → 343 cases.
|
||||
|
||||
### Added
|
||||
- **`scripts/syklus-status.mjs`** — deterministisk skriveledd for `.claude/okr/syklus/[id]/status.md`. Tar confidence som JSON på stdin (oppslag fra KR-navn til etikett) og bygger radene med samme kode som tertialrapporten, gjennom `statusrapport()` i `lib/syklus-rapport.mjs`. **Aritmetikken kan ikke drifte fra `/okr:rapport`, fordi det ikke finnes en andre implementasjon av den** — en egen vakt sammenligner radene tegn for tegn mot tertialrapportens, bortsett fra confidence-cellen. Atomisk skriv (temp + rename), klokke-søm via `OKR_NOW` gir byte-identiske kjøringer.
|
||||
- **Kuratert-fil-vern på `status.md`** — en eksisterende fil uten provenans-nøkkelen `kilde: sporing` regnes som håndholdt, og skrivingen avvises med exit 1 i stedet for å klobbe brukerens egne data. Samme mekanikk som `lib/innboks-write.mjs` bruker med `kilde: innboks`. Egne tidligere kjøringer overskrives fritt.
|
||||
- **Lukket confidence-vokabular håndhevet i kode** — `On Track` / `At Risk` / `Off Track` fra `okr-framework.md`, som er eneste sannhetskilde. Et nabo-uttrykk («Grønn», «on-track») avvises i stedet for å tolkes. Hvert KR i syklusen må ha en etikett: en fil med tomme celler ser vurdert ut uten å være det, og konsumentene ville lest den som grønn.
|
||||
|
||||
### Changed
|
||||
- **`/okr:sporing` har fått `Bash`** og skriver `status.md` via scriptet i stedet for å formulere fila selv. Hele sporings-stien var lesende før dette, hvilket var den mekaniske grunnen til at leddet manglet. Kommandoen eier fortsatt **vurderingen** og bare den; malen i kommandofila er erstattet av et utdrag av det scriptet faktisk produserer, med ASCII-etiketter uten emoji som resten av den maskingenererte flaten.
|
||||
- **Beslutning 9 presisert, ikke svekket:** generatoren *plasserer* en etikett den får inn som data, og *utleder* aldri en. Rapportformene (tertial/årsrapport/etatsstyring) emitterer fortsatt aldri confidence selv, og vakt (5c) holder dem til det. `statusrapport` står bevisst utenfor den listen, fordi den ikke utleder noe — den gjengir et skjønn som allerede er utøvd.
|
||||
|
||||
## [1.9.0] - 2026-08-09
|
||||
|
||||
Minor-release: **«Styringssløyfa lukkes»** — kjeden fra tildelingsbrev til årsrapport dekkes nå i én sammenhengende form, i stedet for å stoppe der OKR-ene var skrevet. Åtte arbeidsstrømmer over fem execute-sesjoner (fase D, D4–D8). Ingen nye npm-avhengigheter; de fire eksisterende er fortsatt exact-pinnet. Suite 197 → 315 cases.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue