fix(ms-ai-architect): Sesjon 11 — K1 trigger-presisjon, blindet judge PASS alle 5

(a) 2 description-fikser (operatør-godkjent):
- governance: +Schrems II/TIA-trigger (recall-gap 0.85→1.0; governance eier
  domenet — 20 ref-filer + data-residency-audit-monitoring.md)
- advisor: strammere — selection-forankret + eksplisitt negativ scope
  (NOT for build/secure/operate/legally-assess); fjernet bred
  "Microsoft AI architecture"-trigger som kolliderte med søsken

(b) Kuratert testsett + mekanikk:
- ny data/k1-trigger-prompts.json (100 prompts: 10 in + 10 adversarielt out/skill)
- judge-prompt.md K1: generer→konsumer kuratert sett + nytt skjema
  (inDomainHitRate/outDomainFalsePositiveRate/pass/misclassified, provisional=false)
- blindet måling: 5 Opus-dommere ser kun description + 20 stokkede umerkede
  prompts; ground-truth scoret deterministisk utenfor dommeren

Resultat: K1 PASS alle 5 — hit 1.0 / fp 0.0 / presisjon 1.0 / 0 miss.
Begge fikser validert i dommer-begrunnelsene. K2 fortsatt PASS.
Ikke regredert: validate 239 · kb-eval 15 · kb-update 122 · kb-integrity 192/192.

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-20 10:00:47 +02:00
commit c1f75f9c78
6 changed files with 187 additions and 17 deletions

View file

@ -339,6 +339,25 @@ K1-presisjon (0,951,0) er **PROVISORISK** — operatør må kuratere 20 trigg
---
## Sesjon 11 (SPOR A — K1 trigger-presisjon) — RESULTATER (FERDIG, 2026-06-20)
**Begge S11-kriterier møtt.** LLM-judge **K1 PASS for alle 5** (blindet) — hit-rate **1.0** / false-positive-rate **0.0** / presisjon **1.0** / 0 feilklassifiserte hver. K2 (description-format) fortsatt **PASS** etter edits (advisor quoted=6/useWhen=true; governance quoted=8/useWhen=true). Deterministisk ikke regredert: **validate 239 · kb-eval 15 · kb-update 122 · kb-integrity 192/192**. K1 er ikke lenger provisorisk — `provisional=false` for alle 5.
**(a) 2 description-fikser (operatør-godkjent ordlyd):**
- **governance +Schrems II-trigger:** la til prosa «cross-border personal-data transfer assessment (Schrems II / TIA)» + to triggere «Schrems II data transfer», «overføring av persondata til tredjeland». Lukker recall-gapet (0.85→1.0). Verifisert FØR skriving at governance *eier* domenet (20 ref-filer + `data-residency-audit-monitoring.md` med EDPB seks-stegs-TIA).
- **advisor strammere mot over-trigging:** byttet bred ledesetning «Microsoft AI architecture guidance» + trigger «Microsoft AI architecture» → selection-forankret «Microsoft AI platform selection …» + eksplisitt negativ scope «NOT for how to build (engineering), secure (security), operate (infrastructure), or legally assess (governance)». Fjernet den brede triggeren som kolliderte med søsken.
**(b) Kuraterte 20 prompts/skill + blindet måling:**
- Ny `data/k1-trigger-prompts.json` (100 prompts: 10 in-domain + 10 out-of-domain/skill). Out-of-domain er adversarielt — hver er en søsken-domene-prompt (`belongs_to`) som tester over-trigging-grensen, + 1 urelatert kontroll. Bilingvalt (no/en).
- **Mekanikk-endring:** `judge-prompt.md` K1-bulleten endret fra *generer* prompts → *konsumer* det kuraterte settet; nytt output-skjema (`inDomainHitRate`/`outDomainFalsePositiveRate`/`pass`/`misclassified`, `provisional=false`).
- **Blindet kjøring:** 5 parallelle Opus-dommere, hver ser KUN sin skills description + 20 **stokkede, umerkede** prompts (speiler skill-routeren); ground-truth holdt utenfor dommeren; scoret deterministisk etterpå. Begge fikser validert i dommernes begrunnelser: governance trigget på Schrems II/tredjeland via de nye triggerne; advisor avviste alle 4 søsken-prompts med eksplisitt sitat til den nye eksklusjonsklausulen.
**Judge-cache:** `judge-results.json` oppdatert med S11 K1-verdikter for alle 5 (`_updated: S11`, `provisional=false`); K4/K7/K8/K9 urørt (uendret av description-edits — frontmatter, ikke body).
**Binding for S12 (lukk SPOR A):** K4/K7/K8/K9 er uendret av S11 (description ≠ body), alle PASS fra S9/S10 kalde re-judges. Gjenstår kun: regenerer `eval-baseline.json` (gated `--write`) så baseline fanger S9+S10+S11 judge-oppdateringer. Trivielt — ett kommando-steg.
---
## SPOR A — gjenstående sesjoner (PLANLAGT, operatør godkjente alle 4 anbefalinger 2026-06-20)
De 4 beslutning-gated punktene er nå **avgjort** (operatør: «følger anbefalingene gjennomgående»):
@ -356,7 +375,7 @@ De 4 beslutning-gated punktene er nå **avgjort** (operatør: «følger anbefali
| **8** ✅ FERDIG (`1c0da88`, se «Sesjon 8 — RESULTATER») | **6×5-vekting (#1).** Fold adaptive workload-varianter inn i `security-scoring-rubrics-6x5.md` (Standard = kanonisk; foreslå eksakte varianttall, gated). Fjern divergerende vekttabell fra security SKILL.md → peker til rubrikken (behold risikoklassifiserings-tabellen — den er stabil). | `grep` security SKILL.md: ingen 3-kolonne-vekttabell med divergerende tall; rubrikken har én Standard + dokumenterte varianter; agent+skill peker samme kilde. `eval --json`: refTall/K5/K3 ikke regredert · validate 239 · kb-integrity grønt. **Antakelse testet:** ingen kode/test asserter SKILL.md-vekttallene (agenten bruker rubrikken — verifisert i S7-diskusjon; bekreft med `grep -r` på vekttallene før sletting). |
| **9** ✅ FERDIG (se «Sesjon 9 — RESULTATER») | **K4+K9 body-cleanup: security + governance** (begge feiler begge kriteriene). Tynn dupliserte avsnitt → pekere; flytt volatil status → ref. Gated forslag per skill FØR endring. | ✅ LLM-judge: security **K4 5/5 · K9 PASS** · governance **K4 5/5 · K9 PASS**. `eval`: K5 sec 16→20/gov 24→25, K3/refTall ikke regredert · kb-integrity 192/192 · validate 239. Antakelse testet (read-only verifiserings-agenter kartla ref-dekning FØR sletting). |
| **10** ✅ FERDIG (se «Sesjon 10 — RESULTATER») | **K9-destale: engineering + infrastructure** (feiler kun K9). Volatil status ut av body. Gated forslag FØR endring. | ✅ LLM-judge: **K9 PASS** eng+infra (kald re-judge). `eval --json` ikke regredert (K5/refTall) · validate 239 · kb-integrity 192/192 · K4 hevet 4→5 begge. |
| **11** | **K1 (#4).** (a) 2 description-fikser: governance +Schrems II-trigger; advisor strammere (foreslå ordlyd, gated — K2-format må holdes). (b) draft 20 kandidat-prompts/skill → operatør-review → mål presisjon via judge. | LLM-judge **K1 ≥90 % treff / ≤10 % falske** for alle 5 (eller dokumentert avvik m/ begrunnelse) · K2 (description-format) fortsatt PASS etter edits. |
| **11** ✅ FERDIG (se «Sesjon 11 — RESULTATER») | **K1 (#4).** (a) 2 description-fikser: governance +Schrems II-trigger; advisor strammere (foreslå ordlyd, gated — K2-format må holdes). (b) draft 20 kandidat-prompts/skill → operatør-review → mål presisjon via judge. | ✅ Blindet LLM-judge: **K1 PASS alle 5** (hit 1.0 / fp 0.0 / presisjon 1.0, `provisional=false`). K2 fortsatt PASS · validate 239 · kb-eval 15 · kb-update 122 · kb-integrity 192/192. Ny `data/k1-trigger-prompts.json` (kuratert 20/skill); `judge-prompt.md` konsumerer settet. |
| **12** | **Lukk SPOR A.** Full LLM-judge re-run (K1/K4/K7/K8/K9) alle 5 → bekreft alle kriterier PASS → skriv ny `eval-baseline.json` (operatør-gated `--write`). (Kan foldes inn i S11 hvis lett.) | `eval-baseline.json`: ingen åpen eval-FAIL på tvers av K1K9 for de 5 skills. STATE: SPOR A FERDIG → Spor B neste. |
**Invariant gjennom alle sesjoner:** SKILL.md-/rubrikk-skriving er **gated** (presenter forslag FØR endring, som K5 i S7). Subagenter committer ALDRI. Validate + relevante tester grønne før commit. Push i vindu (hverdag 2023 / helg fritt / operatør-go). Verifiseringsplikt: flyttet/endret fakta verifiseres mot kilde før skriving.