33 KiB
Program — Reference-fil-korrekthet mot nær-100 % + mekanisme som holder den der
Opprettet 2026-06-26. Operatør-mandat (eksakt): «Alle reference-filene må til enhver tid være 100 % til å stole på, og du må lage en mekanisme som sikrer dette.» Full kvalitetsoffensiv godkjent; Spor 0 først, så grønt lys for skala (Spor 1–3). Dokumenteres skikkelig her; Voyage (/trekplan / /trekexecute) er foreslått motor for skala-fasen.
Forutsetning: S1 de-risket judgen (v1 FAIL → v2 målrettet iterasjon GATE PASS, recall 84,2 % / presisjon 84,2 % — historiske S1-tall; judgen er senere herdet og adoptert som v3.1 med P 100 % / R 100 % på G5b-korrigert gull, se §8 G1/G2). Grunnlag: docs/ref-kb-workflow-plan-2026-06.md (Fase 0–4 + roadmap), docs/ref-kb-audit-2026-06.md, docs/ref-kb-direction-note-2026-06.md.
1. Ærlig ramme (premisser programmet bygger på — ikke re-litiger)
- «100 % til enhver tid» er en prosess-garanti, ikke en øyeblikks-garanti. Microsoft endrer kildene kontinuerlig; ingen statisk fil kan være korrekt i evig tid. Den oppnåelige garantien er: intet upekt/uverifisert innhold shipper, og enhver drift fanges innen én refresh-syklus. Det er den operasjonelle definisjonen av «100 % til å stole på» (§4).
- De 38 kjente feilene er et utvalg, ikke fasiten. Målt på 255 volatile påstander; base-rate 13,4 % ⇒ det fulle korpuset (~306 kildebelagte filer) har statistisk hundrevis av samme feilklasse vi ennå ikke har sett. Spor 0 fikser utvalget; Spor 1 avdekker resten korpus-vidt.
- Taket på én judge-runde er ~84 % recall. Judgen er en høystakk-reduserer, ikke siste autoritet. Nær-100 % fiks-korrekthet oppnås av loopen (judge flagger → menneske bekrefter mot kilde → fiks), ikke av judgen alene. Aldri auto-fiks.
- Pris/unsourced er maskin-uverifiserbar (74 % av pris; JS-rendrede Azure-sider). Disse merkes eksplisitt «ikke maskinverifiserbar» og forblir operatør-gated. Nær-100 %-målet gjelder den maskin-verifiserbare populasjonen (
sku/version/tpm/status/region/taxonomy).
2. Mål (suksesskriterium — måles mot brukerverdi)
En bruker som chatter med pluginen får korrekte, kilde-belagte MS-svar, og mekanismen holder det slik automatisk: (a) flagget feilrate på maskin-verifiserbar populasjon < ~2 % målt på et ferskt gull-utvalg; (b) ingen reference-fil shipper uten kilde + verifiseringsdato; (c) drift fanges innen én KB-refresh-syklus; (d) pris/unsourced er ærlig merket og operatør-gated.
3. De fire sporene
Spor 0 — Fiks de kjente 38 nå (judge-uavhengig, trygt) — STARTET
Fiks-manifest: scripts/kb-eval/data/spor0-fix-manifest.json (38 fikser, 25 filer, deterministisk fra gull-settet). Hver fiks har reverify_required: true.
- Protokoll per fiks (ufravikelig): (1) re-hent kilden (
microsoft_docs_fetchpåsource) og bekreft korrekt verdi live (gull-noteser subagent-produsert — verifiseringsplikten krever fersk bekreftelse FØR en offentlig fil endres); (2) lokaliser den eksakte foreldede strengen i fila; (3) erstatt med kilde-bekreftet verdi; (4) settfixed: true+verified-stempel. - Rydd tverteklyngene: AI Search storage-tall er utdaterte og selvmotsigende på tvers av
rag-cost-optimization.md,embedding-models-selection.md,rag-query-cost-reduction.md,vector-storage-cost-optimization.md— reconcile til én kilde-sann verdi. Samme for «Default/Enterprise → Quota Tiers»-omtalen (4 filer). - Kvalitets-disiplin: kjøres i en fokusert sesjon (ikke som hale på en mettet kontekst) — offentlige filer for hele Norge tåler ikke hastverk.
- Verifisering: re-kjør judge på de 38 → alle
grounded; storage-tall konsistente på tvers; suite grønn.
Spor 1 — Avdekk hele feilsettet korpus-vidt (S3-forutsetning + skalering)
- Authority-backfill: hver kildebelagt fil → sin autoritets-URL (recon: kun 3 URL-er har
authority_sourcei dag — re-verifiseres moturl-registry.jsonFØR start). - Full frontmatter (Fase 2 full):
type/source/verified/verified_byper fil (OKF-kompatibel form). - Korpus-pass: kjør v2-judgen over alle verifiserbare påstander i alle ~306 filer (ikke bare 255-utvalget). Output: komplett flagg-liste → mater Spor 0-protokollen korpus-vidt.
- Kostnad (ærlig): ~2700 ikke-batchbare
microsoft_docs_fetchper full-pass — IKKE «$20–40 Batch». Flersesjons. - Verifisering: hver ikke-advisor kildebelagt fil har
authority_source; frontmatter validerer; flagg-lista persistert.
Spor 2 — Press pålitelighet mot 100 % (hardningen)
- (a) Ensemble for recall: union av N diverse judge-linser (f.eks. eksakt-verdi / strukturell / status-fokus). Mål single vs ensemble på gull-settet FØR adopsjon (operatørens «bygg begge og mål»). Union hever recall (mål: > 84,2 %), senker presisjon — tapet absorberes av menneske-i-loopen (c). Adopter kun hvis gull-målt forbedring.
- (b) Gull-rekonsiliering: ✅ FERDIG (2026-06-30) — alle 12 uenigheter løst mot live kilde. 4 gull-feil rettet + 1 note-fiks; 8 judge-feil dokumentert som kalibreringsmål. Herdet fasit: presisjon 84,2 %→92,1 %, recall 84,2 %→87,5 % (judgen var bedre enn rå-bakeoffen viste — fasiten var kontaminert). Nedre-grense-policy vedtatt (grov understatement >~2× = feil). 0 uløste uenigheter. Full logg:
ref-kb-gold-reconciliation-2026-06.md; herdet rapport:judge-bakeoff-report-v2-reconciled.{json,md}(frozen v2 beholdt som gate-artefakt). - (c) Menneske-i-loopen fiks-protokoll: judge flagger → operatør/ekspert bekrefter mot kilde → fiks +
verified-bump. Garanterer ~100 % fiks-presisjon selv ved 84 % judge-presisjon. Aldri auto-fiks. - Verifisering: ensemble P/R ≥ single på gull; 0 uløste judge-vs-gull-uenigheter; dokumentert at ingen fiks shippet uten menneske-bekreftelse.
Spor 3 — Mekanismen som holder det nær-100 % (Fase 4) — SE §4
Create-time-guard + kadens-judge + rapporterende gulv + frontmatter-kontrakt. Detaljert under, fordi dette ER «mekanismen som sikrer dette».
4. MEKANISMEN — «100 % til å stole på, til enhver tid» (operatørens kjernekrav)
Status (2026-06-29): Port 1 ✅ · Port 2 ✅ (
5a0ba1f) · Port 3 ✅ KOMPLETT — inkrementell stale-since-verified (fea5df5), rapporterende gulv / SessionStart KB-tillit-signal (08e7e72), CT5 sourcedness som erstatter K8 (75ee9ec), og periodisk full-pass worklist (P3d,a1d72fa). P3d-designvalg avklart: arbeidsliste (operatør kickstarter judging separat — §5 «ikke auto-lansert», §4c «aldri auto-fiks»; den ærlige ~2700-fetch/flersesjons-kosten forekluderer inline på korpus-skala).report-full-pass-worklist.mjser lastmod-UAVHENGIG (gater på Port 1-kontrakttype:reference+source+ cadence-alder påverified, default 90 d), så den fanger drift-klassen inkrementell bommer (staleness-recall 0/40). Ekte kjøring: 389 ref-filer alleunmigrated⇒ dormant til Spor 1-migrering backfillersource/verified. Mekanismen (Spor 3) er nå komplett.
Garantien er en invariant håndhevet av tre porter, ikke et engangs-opprydding:
Invariant: Hver maskin-verifiserbar påstand i en
reference-fil er bekreftet mot sin siterte kilde innen siste<kadens>-vindu; intetreference-innhold shipper utensource+verified; drift flagges innen én refresh-syklus.
Port 1 — Frontmatter-kontrakt (tilstanden). Hver fil bærer:
type (reference|template|methodology|regulatory) · source (autoritets-URL) · verified (dato sist bekreftet korrekt mot kilde) · verified_by (judge-vN / human). Template/methodology/regulatory er unntatt korrekthets-scope (skal ikke ha MS-source).
Port 2 — Create-time-guard (innløpet). scripts/kb-update/lib/transform.mjs (buildKbHeader/validateKbFile) + generate-skills:
- Nekter å emitte en
reference-fil utensource. - Nytt/regenerert innhold kjøres gjennom judgen FØR commit → født verifisert (
verified=<i dag>,verified_by=judge-vN). Ellers re-introduserer neste KB-update driften (å øse en lekk båt). - Verifisering: generator-test —
reference-output harsource+verified; manglersource⇒ hard feil.
Port 3 — Kadens-judge (vedlikeholdet). På KB-refresh-kadens (IKKE SessionStart — for dyrt):
- Inkrementell: re-judge filer hvis
sourcesitemap_lastmod >verified(akkurat det staleness-loopen ser — billig, fanger lastmod-synlig drift). - Periodisk full-pass: judge over hele korpuset (fanger den drift-klassen staleness bommer på — base-rate viste staleness-recall 0/40).
- Flagg → menneske-bekreft → fiks →
verified-bump. Rapporterende gulv (Spor D peker: «N filer eldre enn X siden verified» / «M ubekreftede flagg»), ikke hard SessionStart-gate (unngå alarm-tretthet på et 84 %-signal). - Verifisering: SessionStart surfacer trust-ferskhets-signal uten falske alarmer; operatør-waiver-sti finnes; CT5 (sourcedness) ERSTATTER K8s rolle.
Hvorfor dette gir «til enhver tid»: du kan ikke garantere null drift i et øyeblikk (MS endrer ting når som helst), men du garanterer at (a) intet uverifisert shipper (Port 2), (b) tilstanden er eksplisitt og sporbar (Port 1), (c) drift fanges innen én syklus (Port 3). Det er den sterkeste ærlige garantien — og den er buildbar.
5. Voyage-bruk (operatør: «kanskje bruke Voyage aktivt»)
- Skala-fasen (Spor 1–3) er et lærebok-flersesjons-implementeringsløp →
/trekplanmed dette dokumentet som brief gir en revidert, adversarielt gjennomgått implementeringsplan;/trekexecutekjører den på tvers av sesjoner med failure-recovery. - Spor 1 korpus-pass kan dra nytte av Voyage-orkestrering (parallelle judge-agenter per fil, schema-validert output).
- Spor 0 er lite nok til direkte utførelse (manifest finnes) — trenger ikke Voyage.
- Ikke auto-lansert: Voyage er tung maskineri; operatør kickstarter (
/trekbriefel./trekplan --brief <dette docet>). Anbefaling: kjør Spor 0 først, så/trekplanfor Spor 1–3.
6. Sekvensering + status (2026-06-26; à jour per §8 2026-07-03)
| Spor | Status | Neste konkrete handling |
|---|---|---|
| S1 (de-risk) | ✅ FULLFØRT | — (v2 GATE PASS; historisk — se §8 G1 for adoptert v3.1) |
| Spor 0 (fiks 38) | 🟡 STARTET (manifest klart) | Kjøres i fokusert sesjon m/ kilde-reverifisering ETTER substrat-migreringen (roadmap R5, docs/plugin-roadmap-2026-07.md) |
| Spor 1 (korpus-skala) | ⏳ plan klar (trekplan v1.7, adversarielt reviewet) | Eksekver substrat-migreringen (roadmap R1–R4); korpus-judge-pass planlegges i R6, kjøres R7–R10 |
| Spor 2 (hardning) | 🟢 FERDIG — 2a v3.1 MÅLT + ADOPTERT (P 100 / R 100, §8 G1 🟢) · 2b gull herdet + G5/G5b re-adjudert · 2c menneske-i-loop = stående disiplin | — (2c-protokollen brukes i flag→fiks-loopen, roadmap R11) |
| Spor 3 (mekanisme) | 🟢 Port 1+2+3 ✅ KOMPLETT (inkr/gulv/CT5 + full-pass worklist P3d; v3.1 wired i Port 2+3, §8 G2 🟢) | Mekanismen ferdig; dormant til Spor 1-migreringen backfiller source/verified (roadmap R1–R4) |
Avhengigheter: Spor 0 sekvensert etter substrat-migreringen (roadmap R5 — substratet i ro først). Spor 3 Port 2 (create-guard) MÅ på plass før/sammen med korpus-fiksing (ellers reverserer generatoren). Spor 2b (gull-rekonsiliering) ✅ ferdig 2026-06-30 — bunnsolid fasit på plass før Spor 1 skalerer målingen. Advisor-filer koordineres mot Cosmo-utfasing (S-Cosmo).
Avhengighet til skill-eval-rutinen (Spor b, eget spor — kanonisert 2026-06-30): Spor 1 korpus-migrering MÅ kjøres FØR skill-eval-rutine-v2 kalibreres. Koblingen går én vei: migreringen muterer reference-filene (skills/*/references/) som skill-scoringen (scripts/kb-eval/lib/skill-score.mjs + eval.mjs) skanner, og flytter skill-scoren via to deterministiske dimensjoner — CT5 (sourcedness) går available:false→aktiv når **Type:**/**Source:** stemples (skill-score.mjs:114-122), og N4 (TOC) løftes ~0→~1 når ## Innhold-TOC fødes inn på store filer (387/389 filer >100 linjer, kun 3 har TOC før migrering). Kalibrering av v2 før migrering måler en korpus-tilstand som straks endres (gold-freshness-can-invert-adoption generalisert). Paritets-binding (test-håndhevet, ikke import): transform.mjs:55-56 holder TOC_MIN_LINES=100/hasToc i paritet med eval.mjs.checkN4 via assertion i test-transform; skill-eval-v2 som vurderer å endre TOC-terskelen (BP100 vs SC300) MÅ bevare den pariteten, ellers brytes create-guardens fil-fødsel. Migreringen har INGEN runtime-avhengighet til skill-eval (judge/gull er helt separate stakker; metodikk flyter kun KB→skill — port bake-off-disiplinen). Handlingsrekkefølge: (a) Spor 1 → (b) re-score skill-eval ETTER migrering for å fange flyttet CT5+N4.
7. Verifisering — slik beviser vi «nær-100 %» (nordstjerne)
Etter Spor 0+1-fiksing: trekk et NYTT, ferskt gull-utvalg (friske påstander, ikke de vi fikset mot) og mål feilraten på maskin-verifiserbar populasjon → mål < ~2 %. Måling på den fikset-mot prøven er kontaminert; kun en fersk prøve beviser at korpuset faktisk er nær-100 %. Dette gull-utvalget blir også neste kalibreringssett for kadens-judgen.
8. Mekanisme-gap-register (MÅ lukkes — stående disiplin)
Invariant (operatør 2026-06-30, ufravikelig): ingen funnet feilklasse forlates som kun et funn. Hvert gap mellom en oppdaget feilklasse og mekanismen som forhindrer gjentakelse MÅ føres her med en lukke-fase, og MÅ lukkes i en fremtidig sesjon. Å finne + dokumentere er ikke det samme som å lukke loopen. Når et nytt spor/en ny audit avdekker en feilklasse, legg den til her samme sesjon. Registeret er kanonisk; STATE peker hit.
Status-nøkkel: 🔴 ikke startet · 🟡 pågår · 🟢 lukket.
| # | Gap (mekanismen mangler) | Forhindrer feilklasse | Lukke-fase | Status | MÅ lukkes før |
|---|---|---|---|---|---|
| G1 | Judgen er ikke herdet mot de 8 dokumenterte feilmodusene (source_silent-maskerer-fravær, legacy-rad-match, ramme-skifte-tall-overlever, nedre-grense-understatement, eksakt-streng-pedanteri, taksonomi-nyanse, kapabilitet-bom) |
Judge-FN/FP påvist i Spor 2b (8 mål, se ref-kb-gold-reconciliation-2026-06.md) |
Spor 2a — judge-prompt-v3, MÅLT single vs v3/ensemble på herdet gull; adopter kun ved målt forbedring (ad-hoc-patch overfitter + bytter P/R) | 🟢 LUKKET 2026-06-30 — v3.1 MÅLT + ADOPTERT. 45-veis fan-out kjørt (255 claims, 45 Opus-4.8-xhigh-subagenter, live MS Learn, én per fil) → deterministisk re-score mot G5b-korrigert gull: v3.1 = P 100,0 % / R 100,0 % / 0 FP / 0 FN (TP 39→42: fanget alle 3 gjenstående FN; TN 198 + FP 0 uendret). Forhåndsregistrert gate (hold P=100 ∧ løft R>92,9) klarert → v3.1 adoptert som judge. Se lukke-logg. | Spor 1 korpus-pass (judgen brukes i ~2700 fetches) |
| G2 | Herdet judge er ikke wired inn i Port 2 (born-verified create-guard) + Port 3 (kadens) — uten innplugging binder ikke hardningen mekanisk | Re-introdusert drift ved nye/regenererte filer + kadens-bom | Del av Spor 2a→3: bytt ut v2 med v3 i transform.mjs-judge-passet + kadens-runneren |
🟢 LUKKET 2026-06-30 — v3.1 wired (TDD). JUDGE_VERSION 2 → '3.1' (label-streng, provenance navner adoptert judge eksakt); prompt-/command-sites (transform-prompt.md, kb-update.md Port 2+Port 3, generate-skills.md) byttet judge-claim-prompt-v2.md → -v3.1.md. Suite 641/641. Se lukke-logg. |
Spor 1 |
| G3 | Ingen deterministisk gull-intern-konsistens-vakt (verdict=correct mens egen notes sier «uverifisert/illustrativ») |
Gull-labeling-feil av FP1-klassen (selvmotsigende annotasjon) | Liten TDD-lint over gold-correctness-set.json (+ kjøres på fremtidige gull-bygg) |
🟢 lukket 2026-06-30 | Spor 1 (nytt gull bygges) / §7 friskt utvalg |
| G4 | Nedre-grense-policyen lever kun i prosa (denne dok + reconciliation-logg) — ikke kodet i judge-prompt ELLER build-gold-set-instruks |
Re-introdusert nedre-grense-ambivalens i fremtidige gull-bygg + judge-kjøringer | Kod policyen inn i judge-prompt-v3 (G1) + build-gold-set-instruks | 🟢 kodet 2026-06-30 (build-instruks + v3 R1); håndheving rir på G1/G2-adopsjon | Spor 1 / §7 friskt utvalg |
| G5 | Gull-fasiten kan aldre — ingen friskhets-/re-adjuderings-vakt på selve svarnøkkelen. v3-målingen avdekket at flere judge-«feil» trolig er utdatert gull, ikke judge-feil (genaiops-llm-specific#2: claim «1600+», live=1900 ⇒ 1,19× tett nedre grense, R1 sier korrekt grounded, gull sier outdated — gull-standarden er her for streng) |
Feil adopsjonsbeslutning bygd på aldrende baseline; falsk feilrate i §7-nordstjernen | Friskhets-mikropass: re-adjuder de ~5 omstridte v3-vs-v2-claims mot live MS Learn (avgjør gull-feil vs judge-feil) + periodisk gull-re-adjudering knyttet til §7 friskt utvalg | 🟢 lukket 2026-06-30 (G5: 2 gull-feil rettet, 3 judge-feil bekreftet, reverserte adopsjonsbeslutningen; G5b: completeness-caveat lukket — de 4 v3-FP re-sjekket, ALLE 4 stale gull, v3 → P 100 % / R 92,9 % / 0 FP — se lukke-logg) | v3.1-adopsjon (baseline må være til å stole på FØR ny prompt måles mot den) |
| G6 | Ingen sikkerhetsgate på ingestion-kjeden (hentet eksternt innhold → korpus): llm-security-pluginen er deaktivert globalt (verifisert 2026-07-03 i ~/.claude/settings.json), så post-mcp-verify-hooken (injection-skann på all tool-output, inkl. microsoft_docs_fetch) fyrer ikke; commit-gaten dekker kun secrets (gitleaks), ikke injeksjon/steganografi i .md-innhold. Tillit til MS Learn dekker faktisk korrekthet — ikke adversarielt innhold i kanalen eller i kodeeksempler/lokalisert stoff | Indirekte prompt-injeksjon/steganografi persistert i offentlig distribuert KB: references-filene blir instruksjonsnær kontekst i fremtidige agent-sesjoner, én forgiftet fil re-serveres til alle brukere (hele Norge) | R6-briefen designer gaten, to lag: (a) llm-security AKTIV + verifisert fyrende i enhver fetch-økt (kb-update, research, generate-skills, judge-pass); headless-caveat GH #36071 → foreground eller kompenserende skann; (b) deterministisk node-skann (unicode/decode/injection — llm-security-scannerne som CLI, ToS-trygt) over endrede skills/**/*.md før commit. Håndheves fra R7 og i kb-update-kadensen | 🔴 ikke startet — men aktiveringsregelen gjelder STRAKS for fetch-økter (STATE bærer den) | R7 (første judge-pass-fetch-økt); enhver /architect:kb-update- eller generate-skills-økt før det |
Ikke mekanisme-gap, men sporet backlog (innhold, ikke loop): reference-.md-fil-fiksene fra Spor 2b (FP1 11000+/40+, FP2 «kun», FP6 Preview/Norway-East, FN2–FN6 utdaterte tall) + G5b (adr-template.md fjern «zero permission management»; multi-region-azure-openai-deployment.md bytt retired gpt-35-turbo → gjeldende modell; network-resilience-patterns-ai.md «obligatorisk» → «anbefalt»; vector-storage-cost-optimization.md GA-dato 2024-11-01 → 2024-07-01) er Spor 0/1-innholdsarbeid — pekt per-claim i notes, ikke gjentakelses-mekanisme. Føres i Spor 0-manifest / Spor 1-korpus-pass, ikke her.
Lukke-logg
- G3 🟢 lukket (2026-06-30). Deterministisk lint
lib/gold-consistency.mjs+ CLIlint-gold-consistency.mjs+ TDDtests/kb-eval/test-gold-consistency.test.mjs(4 tester); wiret som hard gate påbuild-gold-set.mjs --write(dry-run forhåndsviser ikke-fatalt). De 3 nåværende shippet-gull-treffene resolvert medconsistency_waiver(én —reserved-capacity-planning#5— live kilde-bekreftet FØR waiver, verifiseringsplikt). Bevist mot FP1: rebuild fra batch-returns flaggerazure-ai-foundry.md#2(verdict=correct, note «11000+/40+ uverifisert») — nøyaktig claimen Spor 2b fant via dyr live re-fetch. Linten fanger klassen gratis ved bygg. - G4 🟢 kodet (2026-06-30). Nedre-grense-policyen + konsistens-policyen kodet inn i
build-gold-set.mjs_meta.lower_bound_policy/_meta.consistency_policy(instruks subagenter følger ved fremtidig gull-bygg) OG inn ijudge-claim-prompt-v3.mdsom R1 (nedre-grense-understatement >~2× =not_grounded). Policyen er nå kodet begge steder; håndheving rir på at G1/G2 adopterer en prompt som bærer R1 (v3 hvis bakeoff-målt forbedring; ellers carry R1 inn i adoptert prompt). - G1 (Spor 2a) 🟡 v3 MÅLT + FORKASTET (2026-06-30). Fan-out kjørt: 255 claims / 45 filer, inline Agent-fan-out (45 Opus-4.8-xhigh-subagenter, live MS Learn, én per fil), aggregert 255/255 rent →
judge-bakeoff-results-v3.json, deterministisk re-score mot herdet gull →judge-bakeoff-report-v3.{json,md}.- Resultat: v3 P 89,7 % / R 87,5 % vs v2 P 92,1 % / R 87,5 %. Recall flat, presisjon −2,4 pp (FP 3→4). Adopsjonsgaten (P OG R ≥ v2) ikke klarert → v2 beholdt (forhåndsregistrert regel). Rapportens egen «GATE: PASS» er kun det løse gulvet (R≥0,70/P≥0,60), ikke adopsjonsbaren.
- 22 claims flippet v3-vs-v2: 8 forbedringer (5 FN→TP via R1/R2/R3/R4; 3 FP→TN via R5/R6) + 9 regresjoner (5 TP→FN; 4 TN→FP). Recall-gevinst/-tap kansellerte eksakt; presisjon endte −1 FP. Reglene er dobbelteggede ved full populasjon — table-top validerte de 8 målene isolert, men over de 247 øvrige produserer R1–R7 like mange nye feil som de fikser.
- Konkrete bakslag (input til v3.1): R1 misanvendt på øvre grense (
multi-model-strategy-costs#2: «up to 18» tak, live 28 — R1 er for nedre grenser); R7 for ettergivende (model-selection#8,token-usage#3,ai-foundry-dr#9— fulgte til kanonisk side, fant grunnlag, flippet v2s korrektenot_grounded) [G5-korreksjon:model-selection#8var gull-feil, ikke R7-bom; se G5-lukke-logg]; R2/R6 nye FP (adr-template#1,multi-region-azure-openai#2,network-resilience#4,vector-storage#7). - Nyanse → G5: minst én «regresjon» er trolig aldrende gull, ikke v3-feil (
genaiops#2, se G5-raden). Derfor må gull-friskhet (G5) avgjøres FØR v3.1 måles mot baseline. - Neste (ny sesjon): (1) G5 friskhets-mikropass på de ~5 omstridte claims → fastslå gull-feil vs judge-feil; (2) v3.1 = v3 minus bakslagene (R1 kun nedre grenser; R7-ettergivenhets-vakt; R2/R6 FP-vakt); (3) re-mål samme 45-veis fan-out; (4) adopter vinneren; (5) G2-wiring av adoptert judge.
- G5 🟢 lukket (2026-06-30) — REVERSERTE adopsjonsbeslutningen. Friskhets-mikropass: de 5 omstridte claims (alle v2=
not_grounded, v3=grounded, gull=outdated) re-adjudert mot live MS Learn, én Opus-4.8-subagent per claim, blinde for gull/v3-verdikt (anti-anchoring).- Utfall — 2 gull-feil + 3 judge-feil (even-handed: rettet gull i begge retninger etter ground truth):
genaiops-llm-specific-practices#2«1600+» — live «over 1 900» (1,19×, tett nedre grense). Gull-feil (motsa egen ratifiserte nedre-grense-policy): outdated→correct. v3grounded(R1) korrekt.multi-model-strategy-costs#2«opptil 18» — live 28 (v2025-11-18). Judge-feil: «up to 18» er et tak som er brutt; v3 misanvendte R1 (nedre-grense) på en øvre grense. Gulloutdatedopprettholdt. → v3.1 R1-vakt (kun nedre grenser).model-selection-price-performance#8«Model Router GA» — live GA (nov 2025; kanonisk concept-side uten «(preview)»; siteringssiden bar stale «(preview)»-lenkelabel). Gull-feil (aldret — GA skjedde etter gull-bygg): outdated→correct. v3grounded(R7) vindisert — R7s «følg til kanonisk side» fant GA korrekt.token-usage-tracking-attribution#3metrikk-navn — liveProcessedPromptTokens/InputTokens/GeneratedTokens/OutputTokens; barePromptTokens/CompletionTokensfinnes ikke. Judge-feil: navnet er load-bearing → eksaktverdi skal styre, R7-leniens feil. Gulloutdatedopprettholdt. → v3.1 R7-load-bearing-vakt.ai-foundry-disaster-recovery-planning#9Global training + Norway East — live: Global training er GA (ingen «Public Preview»-label), «billigere/ingen residency» stemmer, MEN Norway East er en Global (ikke-residency) trenings-region, ikke regional/residency (Standard fine-tune-regioner: North Central US / Sweden Central / East US2). 2 av 3 last-bærende delpåstander feil. Judge-feil (v3grounded, ingen regel; ufullstendig fler-delt verifisering). Gulloutdatedopprettholdt. → v3.1 fler-delt-fullstendighets-krav. Fil-fiks (Spor 0): fjern «(Public Preview)» + rett Norway-East-anbefalingen.
- Korreksjon av linje 114 (v3-måling, mot stale gull):
model-selection#8var IKKE «R7 for ettergivende» — det var R7 vindisert (gull-feil). v3.1 R7-vakten gjelder kun load-bearing-strenger (token-usage#3). - Baseline-revurdering (re-score, samme gull begge): v2 falt 92,1/87,5 → 86,8/86,8 (mistet 2 TP→FP på de rettede claims — var oppblåst av stale gull). v3 steg 89,7/87,5 → 89,7/92,1 (2 FN→TN). v3 slår nå v2 på BEGGE akser. Den opprinnelige «v3 regredierte» var et stale-gull-artefakt. Den detaljerte 22-flip-tellingen i linje 113 var mot stale gull (2 «regresjoner» = claims 1+3 er nå presisjon-forbedringer FP→TN) — superseded av re-scoren. Artefakter:
judge-bakeoff-report-v2-g5gold.{json,md},judge-bakeoff-report-v3-g5gold.{json,md}. Gull-_meta.reconciliation_log+ lint (373 claims, 0 flagget) + suite 641/641 grønt. - Beslutning: v3 = interim adoptert baseline (slår v2 på fersk gull per forhåndsregistrert gate). v3.1-baren er nå v3 (89,7/92,1), ikke v2 — strengere og ærligere. Completeness-caveat: kun de 5 omstridte ble re-sjekket; de 4 v3-FP-claims (
adr-template#1m.fl.) sitt gull er IKKE re-verifisert (antattcorrect; spot-sjekk under v3.1). Periodisk gull-re-adjudering knyttes til §7 friskt utvalg (G5-mekanismen er nå et mønster, ikke engangs).
- Utfall — 2 gull-feil + 3 judge-feil (even-handed: rettet gull i begge retninger etter ground truth):
- G5b 🟢 lukket (2026-06-30) — completeness-caveat innfridd; baseline løftet til P 100 %. G5s eksplisitte gjenstående caveat (de 4 v3-FP-claims hadde antatt, ikke verifisert,
correct-gull) lukket: de 4 (adr-template#1,multi-region-azure-openai-deployment#2,network-resilience-patterns-ai#4,vector-storage-cost-optimization#7) re-adjudert mot live MS Learn, én Opus-4.8-subagent per claim, blind for gull/v3-verdikt (anti-anchoring, samme protokoll som G5).- Utfall — ALLE 4 var stale gull; v3 flagget hver korrekt (0 ekte FP):
adr-template#1(status) «zero permission management, permissions respekteres automatisk» — live (data-privacy-security+connecting-external-content-manage-items): del B (auto-respektert ved grounding) stemmer, men del A motsies — Graph connectors krever ACL perexternalItem+ identitets-mapping. Gull-feilcorrect→wrong. v3not_grounded(R6) korrekt.multi-region-azure-openai-deployment#2(region) «Sweden Central … gpt-4o, o1, gpt-35-turbo» — live: gpt-4o + o1 tilgjengelig, men gpt-35-turbo er retired (0301/0613 feb 2025; 0125/1106 fra sep 2025), borte fra katalogen. Gull-feilcorrect→outdated. v3not_grounded(R2 entitet-fravær) korrekt.network-resilience-patterns-ai#4(status) «Circuit Breaker + Retry … obligatorisk for alle Azure AI API-kall» — live (how-to/quota): MS rammer dette som «Rate limit best practices / recommended», circuit breaker kun valgfri Polly-utvidelse. «Obligatorisk for alle» overdriver modalitet + omfang. Gull-feilcorrect→wrong. v3not_grounded(R6) korrekt.vector-storage-cost-optimization#7(status) «Vector quantization GA siden 2024-11-01» — live (search-api-migration): quantization ER GA, men GA-dato var 2024-07-01 (stable release); «2024-11-01» finnes kun som preview-API-versjon (2024-11-01-preview). Last-bærende dato feil. Gull-feilcorrect→wrong. v3not_groundedkorrekt.
- Baseline-revurdering (re-score, G5b-korrigert gull, samme gull begge): de 4 flyttet FP→TP for v3. v3: P 89,7/92,1 → 100,0 / 92,9 (TP 39, FP 0, FN 3, TN 198). v2: 86,8/86,8 → 86,8 / 78,6 (de 4 ble FN for v2 — v2 flagget ingen). v3 dominerer nå v2 på begge akser med større margin; gull var fortsatt kontaminert. Artefakter:
judge-bakeoff-report-v3-g5bgold.{json,md},judge-bakeoff-report-v2-g5bgold.{json,md}. Gull_meta.reconciliation_log+ lint (373 claims, 0 flagget) + suite 641/641 grønt. - Konsekvens for v3.1-design (PLAN-INVERSJON): STATEs planlagte v3.1-endring #4 (R2/R6 «FP-vakt» for de 4) er droppet — R2/R6 fanget disse korrekt; en vakt ville re-knekt 3 reelle treff. v3.1 er nå ren recall-hardning av de 3 gjenstående FN (R1 øvre-grense-skille, R7 last-bærende-streng-carve-out, ny R8 fler-delt-fullstendighet) —
judge-claim-prompt-v3.1.mdforfattet. Adopsjonsgate strammet: v3 sitter på presisjonstaket (P=100), så v3.1 må holde P=100 OG løfte R over 92,9 — enhver ny FP feller den. 45-veis fan-out gjenstår (operatør-gate, stor spend). - Mønster bekreftet: G5b er andre gang gull-friskhet inverterte en adopsjonskonklusjon (gold-freshness-can-invert-adoption). Gull-re-adjudering FØR baseline stoles på er nå fast disiplin, ikke engangs — knyttes til §7 friskt utvalg.
- Utfall — ALLE 4 var stale gull; v3 flagget hver korrekt (0 ekte FP):
- G1 (Spor 2a) 🟢 LUKKET (2026-06-30) — v3.1 MÅLT + ADOPTERT (max-utfall). 45-veis v3.1-fan-out kjørt per
docs/v3.1-fanout-runbook.md: 255 claims / 45 filer, 45 Opus-4.8-xhigh-subagenter (live MS Learn, én per fil, blinde for gull), aggregert 255/255 rent →judge-bakeoff-results-v3.1.json, deterministisk re-score mot G5b-korrigert gull →judge-bakeoff-report-v3.1.{json,md}.- Resultat: v3.1 = P 100,0 % / R 100,0 % / 0 FP / 0 FN / F1 1,000 (TP 42, TN 198, Wilson 95 % [91,6 %, 100 %]) mot v3-baren P 100,0 / R 92,9 / 0 FP / 3 FN (TP 39). v3.1 dominerer: alle 3 gjenstående FN fanget (R 92,9 → 100, TP 39→42) uten én ny FP (FP 0, P 100, TN 198 uendret). Begge scoret over identisk 240-claims-konfusjonsmatrise (samme G5b-gull).
- De 3 FN fanget som designet:
multi-model-strategy-costs#2(R1 øvre-grense — «opptil 18» slått av live 28),token-usage-tracking-attribution#3(R7 last-bærende-streng —PromptTokens/CompletionTokensfinnes ikke live),ai-foundry-disaster-recovery-planning#9(R8 fler-delt — Norway East er Global-trening, ikke regional). Alle tre flippetgrounded→not_grounded, matchet gulloutdated. - FP-risiko avkreftet (R1s dobbeltegg holdt): R1-«+»-floor-flaggene over full populasjon (
rag-context-windows#2«200k+»→1M,ai-services-vs-foundry#5«100+»→1900) er begge gull=outdated→ TP, ikke FP; tette floors (genaiops#2«1600+»→1900,reserved-capacity#3«enkelte 100+») holdtgrounded, gull=correct→ TN. R1s magnitude-skille (>~2× decision-changing vs tett) sporet fasiten i begge retninger over de 255 — ingen ny FP innført. - Forhåndsregistrert gate klarert: «adopter v3.1 KUN hvis P=100 OG R>92,9» → P=100 ✓ ∧ R=100>92,9 ✓ → v3.1 ADOPTERT. v3.1 (
judge-claim-prompt-v3.1.md, R1–R8) er nå inngangen til G2. - Metode-note (portabelt mønster, showcase-reusable-patterns):
build-judge-payloads.mjs(deterministisk payload-generator) + per-payload-splitt + inkrementell per-fil-persistering (resume-trygg mot kvote-stopp) gjorde fan-outen reproduserbar og avbruddssikker. Artefakter:judge-bakeoff-results-v3.1.json,judge-bakeoff-report-v3.1.{json,md}(committet); payloads gitignored.
- G2 🟢 LUKKET (2026-06-30) — adoptert v3.1-judge wired inn i pipelinen (TDD). RED→GREEN: testene
test-transform.test.mjs:200(default-stempel) +:235(ende-til-ende) flippetjudge-v2 → judge-v3.1, så feile, såscripts/kb-update/lib/transform.mjs:44JUDGE_VERSION = 2 → '3.1'.- Designvalg — version-label-streng, ikke integer (
judge-v3forkastet): v3 er en distinkt, målt, forkastet versjon (R 92,9 / 3 FN) med eget navn i programmets artefakter; etjudge-v3-stempel ville navne feil judge og kollidere. Streng'3.1'lar provenance navne adoptert judge eksakt. Blast-radius null:verified_bylagres/parses kun som\S+-token + presence-sjekk (parseVerifiedByHeader), ingen kode trekker ut integeren; parseren tarjudge-v3.1uendret (ende-til-ende-testen bekrefter det gjennomcomposeKbFile). Default-stien interpolerer strengen direkte (utenomNumber.isInteger-guarden), så integer-override-stien (judgeVersion:3 → judge-v3) består. - Prompt-/command-wiring:
transform-prompt.md(46/101/105),commands/kb-update.md(130 — BÅDE Port 2 born-verified OG Port 3-kadens-inngang),commands/generate-skills.md(139/143/305/307) byttetjudge-claim-prompt-v2.md → -v3.1.md+judge-v2 → judge-v3.1.generate-skills.md: kun kirurgisk judge-ref (Cosmo-heading urørt — «gjøres sist» per cosmo-persona-deprecated). Suite 641/641 (kun 2 eksisterende tester flippet, ingen lagt til). - Restgap (guard-minor-nit, §8-oppfølging): stempel-guarden (
transform.mjs:165) honorerer integer-override men ikke en minor-bærende streng-override (judgeVersion:'3.2'faller tilbake til default pgaNumber.isInteger). Harmløst — pipelinen bruker alltid default ('3.1'); en fremtidig judge-revisjon som vil overstyre til en minor må generalisere guarden til en version-label-regex. Logget her, ikke lukket (utenfor G2-scope; ingen failing behov i dag).
- Designvalg — version-label-streng, ikke integer (