91 lines
4.9 KiB
Markdown
91 lines
4.9 KiB
Markdown
# Spor 1 — Corpus-migrasjon: utfall og policy-delta (R4, Steg 9–11)
|
||
|
||
_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→98–100). 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.
|