docs(ms-ai-architect): Sesjon 5-resultater i KB-redesign-roadmap + STATE

Numerert roadmap (Sesjon 1–5) er ferdig; 6-lags-arkitekturen står strukturelt. STATE peker neste fase på operatør-valg: lag 3 verifisering-INN / optimaliserings-fase (krav 4) / kurs-spor / scheduled deteksjon / low-currency-bøtta.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
This commit is contained in:
Kjell Tore Guttormsen 2026-06-19 22:31:40 +02:00
commit 3ed32c343c

View file

@ -213,3 +213,26 @@ K1-presisjon (0,951,0) er **PROVISORISK** — operatør må kuratere 20 trigg
- **(B) datoløse-fil-reklassifisering i `getFilePriority` (`report-changes.mjs`):** datoløse filer skal være «uverifisert»-prioritet, ikke critical-støy (Sesjon 2-funn §152). Adferdsendrende refaktor → TDD, test FØR kode.
- **`authority_source`-feltet er fortsatt 0 % dekning** (registry); lag 5-regel 3 (autoritets-mismatch) er derfor inert i praksis i dag — den aktiveres når **lag 3 verifisering-INN** (egen fremtidig fase) backfiller feltet. Status-gaten (regel 1) er full virksom uavhengig.
- **Neste — Sesjon 5:** transformasjonslaget (lag 4, doc→KB-fil, LLM-destillasjon med obligatorisk status-felt) **+ cleanup (A) og (B) over**. Kriterium (lag 4): regenerer 1 fil → eval-score ≥ baseline. Lag 5 (Sesjon 4) er motbevis-gaten lag 4 mates gjennom før skriving.
---
## Sesjon 5 — RESULTATER (FERDIG, 2026-06-19)
**Akseptansekriterium møtt:** «regenerer 1 fil → eval-score ≥ baseline» — test `regenerate 1 real file → valid, dated, source-anchored, body preserved, same path` + `live deterministic eval ≥ baseline for ms-ai-infrastructure` (`tests/kb-eval/test-transform-criterion.test.mjs`). Tester grønne: **validate 239 · kb-update 111 (+16) · kb-eval 15 (+2) · kb-integrity 115/115**. gitleaks: rent på changeset (3 pre-eksisterende i `playground/vendor/` urørt).
**Lag 4 levert (`lib/transform.mjs`, ren lib, SKRIVER ALDRI — speiler decisions-io/verify-out):**
- `buildKbHeader({title, status, category, source, lastUpdated})` → deterministisk header. **`Status` + `Source` obligatoriske** (kaster ved manglende felt). **Nøkkelfunn/-fiks:** den gamle `prompt-template.md` la kilder i en bunn-seksjon, men `build-registry`/`kb-headers.parseSourceHeader` skanner kun **øverste 500 bytes** → derfor `authority_source`-dekning = 0 %. Lag 4 legger `**Source:**` i header-blokka → det er dette som lar lag 3 (fremtidig) backfille `authority_source` og lag-5 regel 3 fyre.
- `validateKbFile(content)``{valid, missing[]}` (title/last_updated/status/source); bruker `parseSourceHeader` så «hva er en Source-header» har én sannhetskilde med build-registry.
- `buildChange({field, oldValue, newValue, sourceUrl, authoritySource, refutations})` → eksplisitt lag-4→lag-5-bro; mater rett inn i `classifyChange` (verifisert: status-endring → `flagged`, ikke-status → `auto-applied`).
- `resolveTargetPath(tax, category, filename)` → ruter via taksonomiens `getCategorySkill` (disk-sann); `null` = ukjent kategori → gate, ikke skriv.
- **Prompt:** `scripts/kb-update/transform-prompt.md` (doc→KB-destillasjon; gjenbruker husformatet fra `prompt-template.md`, men Source i header + status-påstander eksplisitt for lag-5-gaten). Deterministisk header bygges av lib-en, ikke modellen.
- **Wiret i `commands/kb-update.md`:** §3.d (ny godkjent URL → fetch → destillér → buildKbHeader → validateKbFile → buildChange→lag 5 → resolveTargetPath → operatør-gate → atomisk skriving) + §4.d (oppdateringer må også passere `validateKbFile`; legg Source-header der pre-lag-4-filer mangler den). `eval.mjs` eksporterer nå `evalSkill` for kriterium-testen.
- **TDD:** 12 lib-tester (`test-transform.test.mjs`) inkl. import-invariant (ingen write-utils) + 2 kriterium-tester FØR kode.
**Carry-forward A — `category-skill-map.json` (operatør-valg 2026-06-19: SLETT + rydd README):** premiss verifisert mot kode — fila var ukonsumert av all runtime (`docs/development.md:60` erklærte allerede taksonomien som eneste kilde; kun `README.md:654` kalte den feilaktig «used by generate-skills»). Slettet (`git rm`); README peker nå på `domain-taxonomy.json` via `lib/taxonomy.mjs` `getCategorySkill`. Fjerner en divergerende taksonomi helt (redesignets mål). `test-taxonomy.test.mjs`-kommentarer beholdt som historikk (leser kun taksonomien, ikke map-fila).
**Carry-forward B — datoløse filer (TDD):** rotårsak: datoløs fil fikk `effectiveDate='0000-01-01'` (alltid «stale») **+** path-basert prioritet (kunne bli `critical`) → flommet critical-bøtta. Fix: ny **`unverified`-tier** deklarert i `domain-taxonomy.json` (lag 0). `makePriorityFn` tar nå valgfri `hasDate` (default `true` → bakoverkompatibelt); `report-changes` sender `Boolean(fileDate)`. `unverified` rangerer sist i sorteringen (metadata-hygiene, ikke currency-hast). Verifisert mot ekte registry: `Unverified: 1` skilt ut fra path-bøttene. TDD: 4 tester FØR kode (`test-priority-unverified.test.mjs`).
**Binding for neste fase (numerert roadmap Sesjon 15 er nå FERDIG):**
- 6-lags-arkitekturen står strukturelt: lag 0 (Sesjon 2) · lag 1 currency+completeness (eksisterende + Sesjon 3) · lag 2 (Sesjon 3) · lag 4 (Sesjon 5) · lag 5 (Sesjon 4) · lag 6 eval (Sesjon 1).
- **Gjenstår (ikke numerert — operatør prioriterer):** (1) **lag 3 verifisering-INN** — backfill `authority_source`, aktiverer lag-5 regel 3 (i dag inert); den ene kjernelaget som mangler. (2) **Optimaliserings-fase (krav 4-anvendelse):** fiks de målte eval-FAIL-ene (K5 progressive disclosure advisor/eng/security, K9 tid-sensitiv i body, K4 duplisering, refTall) + de 2 SKILL.md-bugene (6×5-vekting kanonisk? + governance ref-path) — krever operatør-beslutning på kanonisk vekting. (3) **Kurs-spor** (task #25, parallelt, av kritisk vei). (4) **Scheduled deteksjon** + siste integrasjon. (5) **Low-currency-bøtta (51 filer).**