ms-ai-architect/docs/spor1-migration-outcome.md

91 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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.