feat(okr): KR-datakontrakt i skriv-malen
This commit is contained in:
parent
2c42e422c1
commit
e3a99b02ff
2 changed files with 84 additions and 0 deletions
|
|
@ -511,3 +511,39 @@ test('(m2) D4: kommunal-styring siterer ikke DFO-notat 2026:2 (sektoravgrensning
|
|||
'DFO-notat 2026:2 er avgrenset mot kommunal sektor og kan ikke siteres her',
|
||||
);
|
||||
});
|
||||
|
||||
// --- (n) D5 steg 6: KR-datakontrakten (beslutning B-1) er dokumentert i skriv-malen ---
|
||||
// Generatorene i lib/syklus-*.mjs leser KR-tall fra `krN_`-noekler i okr-*.md sin
|
||||
// frontmatter. Kontrakten har ingen skjema-fil aa haandheve seg mot -- den haandheves
|
||||
// av at DEFINISJONSFLATEN (skriv-malen) dokumenterer den, siden /okr:skriv er stedet
|
||||
// tallene oppstaar. Vakten binder de to sidene sammen: endres kontrakten i lib/ uten
|
||||
// at malen foelger etter, produserer brukeren filer generatoren ikke kan lese.
|
||||
const KR_KONTRAKT_NOEKLER = ['navn', 'baseline', 'target', 'naa', 'type'];
|
||||
|
||||
test('(n) D5: skriv.md dokumenterer alle fem krN_-noeklene i KR-datakontrakten', () => {
|
||||
const doc = readDoc('commands/skriv.md');
|
||||
const missing = KR_KONTRAKT_NOEKLER.filter(
|
||||
(k) => !new RegExp(`kr(?:N|\\d+)_${k}\\b`).test(doc),
|
||||
);
|
||||
assert.deepEqual(
|
||||
missing,
|
||||
[],
|
||||
`KR-datakontrakten (B-1) mangler noekler i commands/skriv.md: ${missing.join(', ')}`,
|
||||
);
|
||||
});
|
||||
|
||||
// B-2: score BEREGNES, lagres aldri. En `krN_score`-noekkel i malen ville skapt en
|
||||
// andre sannhetskilde som kan drifte fra (naa - baseline) / (target - baseline).
|
||||
// Fravaers-invariant paa NOEKKELFORMEN slik lib/frontmatter.mjs:29 leser den
|
||||
// (`^\s*key:`) -- ikke paa ordet "score", som malen legitimt bruker om
|
||||
// moonshot/roofshot-kalibrering (:124), og ikke paa prosa som FORBYR noekkelen.
|
||||
// Det er noekkelen i frontmatter som skaper den andre sannhetskilden; en omtale
|
||||
// av den gjoer det ikke.
|
||||
test('(n2) D5: skriv.md introduserer ingen krN_score-noekkel (score lagres aldri)', () => {
|
||||
const offenders = linesMatching(readDoc('commands/skriv.md'), /^\s*kr(?:N|\d+)_score\s*:/m);
|
||||
assert.deepEqual(
|
||||
offenders,
|
||||
[],
|
||||
'score skal beregnes fra baseline/target/naa, aldri lagres som egen noekkel',
|
||||
);
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue