docs(ms-ai-architect): Sesjon 6-resultater i KB-redesign-roadmap

Lag 3 ferdig → alle 6 lag står. Roadmap markerer lag 3 done; gjenstår (operatør prioriterer): optimalisering krav 4, kurs-spor, scheduled deteksjon, low-currency, flere Source-backfills.

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:58:10 +02:00
commit 0e0c43dc1a

View file

@ -234,5 +234,23 @@ K1-presisjon (0,951,0) er **PROVISORISK** — operatør må kuratere 20 trigg
**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).**
- 6-lags-arkitekturen står strukturelt: lag 0 (Sesjon 2) · lag 1 currency+completeness (eksisterende + Sesjon 3) · lag 2 (Sesjon 3) · lag 3 (Sesjon 6) · 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~~ ✅ FERDIG Sesjon 6. (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).**
---
## Sesjon 6 — RESULTATER (FERDIG, 2026-06-19)
**Akseptansekriterier møtt:** `authority_source`-dekning **0,22 % (3/1353)** fra 0 ✅ · lag-5 regel 3 demonstrert virksom ende-til-ende med ekte data (test `rule 3 fires end-to-end on a real authority: source_url ≠ header authority → flagged`, `test-authority.test.mjs`) ✅. Tester grønne: **validate 239 · kb-update 122 (+11) · kb-eval 15 · kb-integrity 115/115**. gitleaks: rent på changeset.
**Designvalg (operatør 2026-06-19): HEADER-AS-TRUTH.** En fils `**Source:**`-header ER den utpekte autoriteten for dens påstander. Vi gjetter ALDRI autoritet fra en fils mange siterte URLer — datagrunnlaget viste **251/303 ref-filer siteres av 410 URLer hver** (ingen entydig kilde å utlede; en gjettet autoritet ville fått regel 3 til å bomme + 303 operatør-beslutninger = primær-fallgruven). Dekning vokser organisk når lag 4 regenererer filer (lag 4 skriver alltid Source i header).
**Levert:**
- **`lib/authority.mjs`** (ren lib, SKRIVER ALDRI — speiler decisions-io/verify-out/transform; importerer kun read-only `kb-headers` + `url-normalize`): `resolveAuthority(content)` → deklarert `**Source:**`-URL (validert som http(s); fri tekst avvises — verifiseringsplikt; ikke-MS-autoritet som EU-forordning tillates) · `collectDeclaredSources(contents[])` → normalisert Set (kun MS Learn, matcher registry-nøkler) · `markUrlAuthority(url, set)` → url|null · `authorityCoverage(registry)``{withAuthority,total,ratio}`.
- **`build-registry.mjs` wiret:** samler deklarerte kilder fra headere, setter per URL-entry `authority_source = url` iff en fil deklarerer den (recomputes fra headere = sannhet, ikke carry-over), logger dekning.
- **`commands/kb-update.md` §4 c1 (ny):** `authority_source = resolveAuthority(<fil>)` mates inn i lag-5 `classifyChange` (c2). §4.d/§3.d oppdatert: lag 3 er live (ikke «senere»).
- **Bootstrap (gated KB-skriving):** `**Source:**`-header skrevet til de **3 entydige** (1-sitert-URL) filene med rent topisk treff: `late-chunking-patterns.md` → embeddings-tutorial · `ai-red-team-operations-practical.md` → ai-red-team/training · `batch-api-usage-optimization.md` → batch-blob-storage.
- **TDD:** 11 tester FØR kode inkl. import-invariant + ende-til-ende regel 3.
**Verifiseringsfunn (binding):** den 4. «entydige» fila — `ai-act-annex-iii-checklist.md``purview/compliance-manager-assessments` — ble **bevisst utelatt** fra bootstrap: dens egentlige autoritet er EU-forordningen selv (fila deklarerer allerede `**Hjemmel:** Regulation (EU) 2024/1689, Annex III`), ikke en MS Purview compliance-tool-side. Å sette Purview-URLen som autoritet ville vært en gjetning som får regel 3 til å bomme. **Kandidat for senere:** sett `**Source:**` til EUR-Lex-URLen (`resolveAuthority` aksepterer ikke-MS-autoriteter; den normaliseres bare ikke inn i den MS-keyede registryen — som er riktig).
- **`url-registry.json` er gitignored (generert):** `authority_source` er derfor avledet on-demand fra de committede `**Source:**`-headerne (sannhetskilden), ikke en committet verdi. `build-registry --merge` regenererte registryen à jour (1343→1353 URLer; build-registry er det utpekte verktøyet).