feat(ms-ai-architect): generator-anti-regresjon Fase 1c — composeKbFile + TOC-gate
Nye ref-filer fodes best-practice-konforme sa neste KB-update ikke reverserer TOC-arbeidet (write-path-regresjon). MA fore 1b. - buildToc(body): deterministisk ## Innhold fra ##-seksjoner, GitHub-slugs, fence-aware, idempotent (lister aldri seg selv) - composeKbFile(meta, body): generatoren — header + (store filer >100 linjer) TOC + brodtekst; erstatter bar buildKbHeader+body-konkatenering - validateKbFile: stor fil uten TOC -> missing:['toc'] (write-path-gaten) - Terskel 100 speiler eval.mjs N4_LARGE_FILE_LINES; bundet atferdsmessig via test som importerer ekte checkN4 (anti-regresjons-orakel), ikke cross-import - Wiret composeKbFile inn i transform-prompt.md + kb-update.md (create + in-place) TDD: +11 transform-tester. kb-update 349/349, kb-eval 154/154 (503 totalt). Fikset pre-eksisterende skjor assertion i criterion-testen (stale 'Azure AI Foundry' -> 'AI Foundry'; produktet omdopt) — var rod for 1c.
This commit is contained in:
parent
89eccf8881
commit
2240f1efdd
5 changed files with 215 additions and 19 deletions
|
|
@ -42,9 +42,12 @@ ikke av modellen. Den ser slik ut og MÅ stå først:
|
|||
---
|
||||
```
|
||||
|
||||
Modellen skriver **kun brødteksten under `---`**. Etterpå kjører
|
||||
`validateKbFile(header + body)` og MÅ returnere `valid: true` (title + Last updated +
|
||||
Status + Source til stede) før noe gates videre.
|
||||
Modellen skriver **kun brødteksten under `---`**. `composeKbFile({...}, body)` setter så
|
||||
sammen hele fila — header + (for **store filer >100 linjer**) en deterministisk
|
||||
`## Innhold`-TOC fra brødtekstens `##`-seksjoner + brødteksten. Etterpå kjører
|
||||
`validateKbFile(content)` og MÅ returnere `valid: true` (title + Last updated + Status +
|
||||
Source til stede; **for store filer også TOC**) før noe gates videre. TOC-en fødes inn så
|
||||
en senere regenerering ikke stripper den (write-path-regresjon — Fase 1c).
|
||||
|
||||
## Prompt (brødtekst)
|
||||
|
||||
|
|
@ -87,8 +90,8 @@ Ingen innledning eller avslutningskommentar — kun markdown-brødteksten.
|
|||
|
||||
## Etter destillasjon (caller, gated)
|
||||
|
||||
1. `content = buildKbHeader({...}) + body`
|
||||
2. `validateKbFile(content)` → må være `valid: true` (ellers: be modellen fikse manglende felt).
|
||||
1. `content = composeKbFile({title, status, category, source, lastUpdated}, body)` — header + (store filer) `## Innhold`-TOC + brødtekst. Erstatter den bare `buildKbHeader(...) + body`-konkateneringen.
|
||||
2. `validateKbFile(content)` → må være `valid: true` (title + Last updated + Status + Source; **store filer også TOC**) (ellers: be modellen fikse manglende felt).
|
||||
3. For hver status-/load-bearing-påstand: `buildChange({field, oldValue, newValue, sourceUrl, authoritySource})`
|
||||
→ `classifyChange(...)` (lag 5). `flagged` → operatør avgjør; status-påstander er alltid `flagged`.
|
||||
4. `resolveTargetPath(tax, category, filename)` → eierskill-sti (null = ukjent kategori → gate, ikke skriv).
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue