fix(okr): skjerp separasjonsvakten og lukk tre defekter i D6-leveransen

This commit is contained in:
Kjell Tore Guttormsen 2026-08-02 07:09:35 +02:00
commit d2ac153a68
5 changed files with 100 additions and 14 deletions

View file

@ -146,9 +146,11 @@ Drop documents — tildelingsbrev PDFs, virksomhetsplan docx, meeting notes —
> /okr:rapport
```
Generates a tertial report straight from the KR numbers in the cycle's `okr-*.md` frontmatter — deterministic, so the same data yields byte-identical output. Committed and aspirational Key Results are reported **separately**, never aggregated into one figure: the two are measured against different standards, and a combined average is ambiguous by construction. The generator owns the arithmetic, the table structure and the formatting invariants (score is stated on its 01.0 scale, never as percent goal attainment; a committed KR below target is flagged as a deviation, not a middling score).
Generates a report straight from the KR numbers in the cycle's `okr-*.md` frontmatter — deterministic, so the same data yields byte-identical output. Three forms, one command argument: `tertial` for interim reporting, `arsrapport` for part III of the statutory annual report ("Årets aktiviteter og resultater"), and `etatsstyring` for the agency-governance meeting brief. Committed and aspirational Key Results are reported **separately** in all three, never aggregated into one figure: the two are measured against different standards, and a combined average is ambiguous by construction. The generator owns the arithmetic, the table structure and the formatting invariants (score is stated on its 01.0 scale, never as percent goal attainment; a committed KR below target is flagged as a deviation, not a middling score).
It does **not** own confidence. The Confidence column is left empty by design and filled in during `/okr:sporing`, because confidence is a probability judgement — the canon designates one source of truth for the On Track / At Risk / Off Track scale and explicitly rejects deriving it mechanically from score. Scores themselves are never written to disk; they are recomputed from `baseline`/`target`/`naa` each run so a second, drifting source of truth cannot arise.
An aspirational KR with a low score is **never** presented as a deviation — landing near 0.7 is expected attainment for that type, and letting the aspirational score carry consequences in reporting would re-bundle target and forecast, which is what makes sandbagging structurally rational in the next cycle.
It does **not** own confidence, nor the assessment fields it reserves — the per-Objective evaluation of goal attainment in the annual report, and the mapping from Objectives to the letter of allocation's governance parameters. Those are left as marked placeholders because they require judgement or sources the generator does not read. The Confidence column is likewise left empty by design and filled in during `/okr:sporing`, because confidence is a probability judgement — the canon designates one source of truth for the On Track / At Risk / Off Track scale and explicitly rejects deriving it mechanically from score. Scores themselves are never written to disk; they are recomputed from `baseline`/`target`/`naa` each run so a second, drifting source of truth cannot arise.
### Help and Maintenance