fix(okr): frontmatter-verdi krysser ikke linjeskift (patch-lane #5)
`get()`-regexens verdi-gren brukte `\s*`, som inkluderer linjeskift. Enhver
key med tom rest-av-linje slukte dermed den neste ikke-tomme linja. Utslaget
var bredere enn list-keys: en tom `title:` returnerte neste keys hele linje
("type: OKR"), og et tomt `description:` dempet okf-checks anbefalt-felt-
advarsel med data som tilhorte en annen key.
Verdi-grenen strammet til `[ \t]*`. Innrykk-ankeret (`^\s*`) er urort -- det
er load-bearing for inject-okr-context.mjs:69s nestede organisasjon:-lesing.
Kontrakt-kommentaren i :13-16 lovet allerede null for list-keys; den er naa
sann i stedet for aa bli rettet ned.
Sju RED-verifiserte tester: (L1) list-key gir null - (L2) tom skalar sluker
ikke neste rot-key - (L3) tom key foran list-blokk - (L4) innrykk-toleransen
bevart, forelder gir null - (L5) tab-separert verdi - (L6) tomt anbefalt felt
demper ikke okf-check-advarselen (rootLevelGet arvet defekten) - (L7)
broedtekst-fallbacken plukker ikke list-verdi fra frontmatter.
(L7) gjor S57s latente begrunnelse maalbar: uttrekket i okf-check.mjs:125 ble
beholdt mot nettopp denne defekten, og naar fm-laget endelig taper for
list-keys er `body = raw` foerste gang en roednende mutasjon.
Mutasjons-verifisert (M1 revert, M3 anker-fjerning, M4 uttrekk-fjerning). M2
viste at (L5) ikke vokter tegnklassen -- .trim() gjor `[ \t]*` og `[ ]*`
ekvivalente -- saa testen er omskrevet til aa paastaa det den faktisk viser.
Suite 321 -> 328.
This commit is contained in:
parent
35a0bb8377
commit
9a68441161
4 changed files with 109 additions and 15 deletions
|
|
@ -1194,6 +1194,48 @@ test('(N4) okf-check: et NESTET anbefalt felt demper ikke advarselen', () => {
|
|||
}
|
||||
});
|
||||
|
||||
test('(L6) okf-check: et TOMT anbefalt felt demper ikke advarselen', () => {
|
||||
// Linjeskift-aksen naar rootLevelGet: innrykk-filteret fjerner list-elementer,
|
||||
// men et tomt `description:` fulgt av neste ROT-key slukte den linja og gjorde
|
||||
// feltet ikke-tomt -- advarselen ble dempet av data som tilhorte `title`.
|
||||
const dir = tmpRoot();
|
||||
try {
|
||||
buildCleanIngest(dir);
|
||||
writeFileSync(
|
||||
join(dir, 'dokumenter', 'tom-anbefalt.md'),
|
||||
'---\ntype: Notat\ndescription:\ntitle: Ekte tittel\n---\n# Tom anbefalt\n',
|
||||
);
|
||||
const r = checkBundle(dir, { files: [join(dir, 'dokumenter', 'tom-anbefalt.md')] });
|
||||
assert.ok(
|
||||
r.warnings.some((w) => /tom-anbefalt\.md: mangler anbefalt felt .description./.test(w)),
|
||||
`tomt description -> advarsel forventet, fikk:\n${r.warnings.join('\n')}`,
|
||||
);
|
||||
} finally {
|
||||
rmSync(dir, { recursive: true, force: true });
|
||||
}
|
||||
});
|
||||
|
||||
test('(L7) okf-check: broedtekst-fallbacken plukker ikke list-verdi FRA frontmatter', () => {
|
||||
// S57 beholdt broedtekst-uttrekket (okf-check.mjs:125) mot en LATENT defekt den
|
||||
// ikke kunne maale: saa lenge get() paa en list-key ga foerste list-element,
|
||||
// vant fm-laget alltid og fallbacken kjorte aldri for list-keys. Etter (L1) gir
|
||||
// fm-laget null -> fallbacken kjorer -> uttrekket er foerste gang observerbart.
|
||||
// Uten det ville `^okf_version:` matchet inne i frontmatteren og plukket «- 9.9».
|
||||
const dir = tmpRoot();
|
||||
try {
|
||||
buildCleanIngest(dir);
|
||||
writeFileSync(
|
||||
join(dir, 'index.md'),
|
||||
['---', 'type: Index', 'okf_version:', ' - 9.9', '---', '# Rot', '', 'okf_layout: kb-layout-2026-06', ''].join('\n'),
|
||||
);
|
||||
const r = checkBundle(dir, { files: [] });
|
||||
assert.equal(r.okfVersion, null, 'list-verdi i frontmatter skal ikke lekke via fallbacken');
|
||||
assert.equal(r.okfLayout, 'kb-layout-2026-06', 'ekte broedtekst-markoer resolver fortsatt');
|
||||
} finally {
|
||||
rmSync(dir, { recursive: true, force: true });
|
||||
}
|
||||
});
|
||||
|
||||
test('(N5) okf-check: en NESTET okf_version i rot-index leses ikke som rot-markoer', () => {
|
||||
const dir = tmpRoot();
|
||||
try {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue