feat(ms-ai-architect): Spor 1 — worklist aktivert + CT5/N4 flyttet; utfall + policy-delta + base-felt-restanse logget [skip-docs]

This commit is contained in:
Kjell Tore Guttormsen 2026-07-04 10:20:48 +02:00
commit c910945ca4

View file

@ -0,0 +1,91 @@
# Spor 1 — Corpus-migrasjon: utfall og policy-delta (R4, Steg 911)
_Datert 2026-07-04. Kilde: `migrate-corpus.mjs --write` over de 4 ikke-advisor-skills +
`build-registry --merge``score-skill --write``report-full-pass-worklist`._
Denne noten registrerer det målte utfallet av Port-1-substrat-migrasjonen (Type/Source/TOC
+ stale-verified-fjerning) og skiller **verifisert** fra **antatt**, per verifiseringsplikten.
## Hva migrasjonen gjorde (verifisert mot ground truth)
| Felt | Antall | Kilde |
|------|--------|-------|
| Filer mutert (ikke-advisor) | 327 / 327 | applier-output + `git diff --name-only` |
| `**Type:**` stemplet | 327 | manifest (alle typer) |
| `**Source:**` backfilt | 243 | manifest (sourced reference; deferred = ingen source) |
| `## Innhold` TOC innsatt | 325 | store filer (≥100 linjer) |
| stale `**Verified:** MCP` fjernet | 14 header + 9 body-dup (i 500B-vinduet) | normalizer + parser |
| advisor-filer rørt | 0 | `git diff --stat -- skills/ms-ai-advisor/` |
| prosa-kropper endret (fra første `##`) | 0 | per-fil `git show HEAD:` diff |
| `verified` satt | null (uendret) | migrasjonen stempler ALDRI verified |
Slettelinjer i diffen: 25 totalt, **alle `**Verified:**`-relaterte** (21 Verified-linjer + 4
tilhørende tomlinjer) — ingen prosa slettet.
## To applier-fixes oppdaget under kjøring (TDD, RED→GREEN)
Migrasjonen avdekket to reelle feil i de testede primitivene. Begge fikset med failing
test først; suiten 728/728 grønn.
1. **`insertHeaderFields` anker-overshoot (2 filer).** `agentic-rag-patterns.md` og
`gpt5-gpt41-pricing-models.md` pakker et helt avsnitt inn i én `**Status:**`-linje
(>500 B). Ankeret satte innsettingspunktet ETTER den linja → Type/Source landet forbi
500-byte-scan-vinduet. Applierens post-write-assertion fanget det og restaurerte hele
korpuset fra backup (sikkerhetsmekanismen virket). Fix: ankeret faller tilbake til
siste meta-linje som fortsatt ligger innenfor vinduet.
2. **`normalizeStaleVerified` body-dup poison (9 filer, alle `mlops-genaiops/`).** Etter at
header-`**Verified:** MCP` ble fjernet, leste `parseVerifiedHeader` fortsatt en stray
duplikat-`**Verified:** MCP`-linje rett under `---` men innenfor 500 B → filene ble
falskt lest som "verified" → droppet til `fresh`, utenfor worklisten. Fix (operatør-
godkjent utvidelse av carve-out): normalizer fjerner nå ALLE stale non-date
`**Verified:**` i 500B-vinduet, uansett `---`-posisjon; kun stray metadata-linjer,
aldri prosa. Alt forbi 500 B er ekte kropp og røres ikke.
## Skill-score-delta (pre → post)
| Skill | Score | CT5 available | N4 (sub / pass) |
|-------|-------|---------------|-----------------|
| ms-ai-engineering | 95 → **99** | false → **true** | 0 → **1.000 / pass** |
| ms-ai-governance | 96 → **100** | false → **true** | 0.013 → **1.000 / pass** |
| ms-ai-infrastructure | 95 → **98** | false → **true** | 0 → **1.000 / pass** |
| ms-ai-security | 95 → **100** | false → **true** | 0 → **1.000 / pass** |
| ms-ai-advisor | 91 → 91 | (uendret) | (uendret) |
CT5 `pass=false` på engineering + infrastructure er forventet: full CT5-pass krever
`verified`-stempler, som settes først i corpus-judge-pass (fremtidig). CT5 er nå
**available** (evaluert) på alle 4 fordi reference-filene bærer Type+Source.
## Policy-artefakt: forventet dip inntraff IKKE
Planen (Risks) forhåndsdeklarerte en **transient sub-90 dip** (CT5/N4-aktivering kunne
dra de 4 skills under 90 midlertidig) som et **policy-artefakt** å ikke reagere på.
**Målt utfall: dip inntraff ikke** — scorene STEG (95→98100). N4 gikk 0→1.000 (TOC lagt
til), CT5 ble available. Advarselen var altså konservativ; ingen skill falt under target.
Registrert her for å hindre at en senere sesjon leter etter en dip som ikke finnes.
## Worklist-transisjon (verifisert)
Post-migrasjon + poison-fix (`report-full-pass-worklist.mjs`):
| Bøtte | Antall | Merknad |
|-------|--------|---------|
| `due` | 243 | aktivert (var 0 pre-migrasjon); +9 etter poison-fix |
| `fresh` | 0 | var 9 (body-dup poison) → 0 etter fix |
| `unsourced` | 59 | deferred no-citation reference (dokumentert follow-up) |
| `unmigrated` | 62 | advisor (bevisst utenfor scope) |
| `outOfScope` | 25 | — |
| **sum** | **389** | 243 + 59 + 62 + 25 = 389 ✅ |
## Base-felt-restanse (dokumentert follow-up — utenfor dette substratet)
Substrat-migrasjonen normaliserer IKKE base-feltene (worklist/CT5/N4 leser dem ikke):
- `**Status:**` mangler: **29 filer** (planen anslo 31).
- `**Last updated:**` (engelsk RE) mangler: **0** (planen fryktet 45 norske — ikke reelt).
- `**Source:**` mangler: 59 (deferred no-ms-citation — trenger kilde før stempling).
- `verified`/`verified_by` mangler: 302 (= `verified` null; settes i corpus-judge-pass).
- TOC mangler: 0.
Base-felt-normalisering (Status på de 29) er en egen, senere oppgave — ikke nødvendig for
Port-1-substratet.