179 lines
26 KiB
Markdown
179 lines
26 KiB
Markdown
# Plan — Reference-fil-kvalitet + hele workflowen rundt den (de 389 skill-refs)
|
||
|
||
> **SUPERSEDED (2026-07-03):** Videreført av `docs/ref-kb-correctness-program-2026-06.md` (kanonisk program: fire spor + mekanismen + §8 gap-register) og sekvensert av `docs/plugin-roadmap-2026-07.md` (R0–R18). Dette dokumentet beholdes som historisk grunnlag (Fase 0–4-analysen + roadmap-utledningen) — ikke oppdatert etter 2026-06.
|
||
|
||
_Opprettet 2026-06-26. Dette er KJERNEN i ms-ai-architect: innholdet i skills' reference-filer + maskineriet som lager og oppdaterer dem. Kvalitetsbar: svært høy. Operatør-rettesnor: «brukerverdi > teknologi; oppdateringsmekanismene må fungere veldig bra; ta god tid; faktabasert.» Grunnlag: `docs/ref-kb-audit-2026-06.md` (verifisert ground truth), `docs/ref-kb-direction-note-2026-06.md` (workflow-analyse + adversariell kritikk)._
|
||
|
||
## Avgjorte premisser (ikke re-litiger — bekreftet 2026-06-26)
|
||
1. **De 389 forblir Claude Code skill-references.** Skills-vs-OKF-bake-off for MS Learn-kunnskapen er DREPT som kaninhull — Anthropic-best-practice ER den flate skill-ref-strukturen; ingen indikasjon på at OKF slår skills. Begrunnelse: direction-note + [[okf-scope-second-brain-only]].
|
||
2. **OKF gjelder kun brukerens «second brain»** (eget spor, senere — `docs/okf-second-brain-brief-2026-06.md`).
|
||
3. **#1 (utvid Spor D med korrekthets-kriterium) er forkastet** — kategorifeil (Spor D scorer per skill; korrekthet er per-fil/per-påstand).
|
||
4. **Struktur er allerede sunn** (skills 91–96, 0 stale). Det umålte er INNHOLDS-korrekthet. Derfor: ikke masseoppdel filer; store on-demand-filer er Anthropic-sanksjonert.
|
||
|
||
## Mål (suksesskriterium — måles mot brukerverdi, ikke teknologi)
|
||
Reference-innholdet er **korrekt + ferskt + godt strukturert**, og create-/update-workflowen holder det slik **pålitelig og automatisk**. Konkret: (a) en bruker som chatter får korrekte, oppdaterte MS-svar; (b) oppdateringsmekanismen fanger reell drift, ikke bare lastmod-bump; (c) nye ref-filer fødes best-practice-konforme (workflowen regresserer ikke).
|
||
|
||
---
|
||
|
||
## Fase 0 — Gull-testsett + base-rate-måling (FUNDAMENT — gater Fase 3)
|
||
**Hvorfor først:** alle fem analyse-akser hoppet fra «vi måler ikke korrekthet» til «bygg system» uten å vite om korrektheten faktisk er dårlig. KB scorer 91–96 med 0 stale — null bevis for et korrekthets-problem, kun fravær av bevis. Å bygge en $-per-kjøring-detektor før base-raten er kjent er feilallokering.
|
||
|
||
**Gjør:**
|
||
- Trekk et **stort nok, stratifisert** utvalg ref-filer/påstander (start ~30–40 filer; vurder utvidelse), **vektet mot volatile påstander** (pris/SKU, GA/preview, versjoner, regioner) på tvers av alle 5 skills.
|
||
- Verifiser hver manuelt mot **live MS Learn** (microsoft_docs_fetch/search). Merk per påstand: korrekt / utdatert / feil / ikke-kildegrunnet.
|
||
- Persister som **gjenbrukbart gull-sett** (det dobler som evaluerings-harness for en evt. bake-off + judge-kalibreringssett).
|
||
|
||
**Verifisering (testbart):**
|
||
- ≥30 filer merket, feilrate beregnet med usikkerhetsbånd; gull-settet lagret som artefakt (f.eks. `scripts/kb-eval/data/gold-correctness-set.json`).
|
||
- Eksplisitt funn: hvor mange feil finnes UTEN lastmod-endring (= den eneste klassen en judge fanger over eksisterende staleness-loop).
|
||
|
||
**Beslutnings-gate ut av Fase 0:**
|
||
- Lav feilrate (~few %) ⇒ judge IKKE berettiget; staleness + periodisk stikkprøve holder. Hopp over Fase 3.
|
||
- Høy feilrate ⇒ evidensbasert grunnlag for Fase 3; gull-settet er allerede kalibreringssettet.
|
||
|
||
### Utførelses-spec (LOCKED 2026-06-26 — operatør-beslutning; fersk sesjon eksekverer)
|
||
_Fase 0-verifiseringen er bevisst utsatt til en uthvilt sesjon (retnings-avgjørende; var økt #20 da den ble planlagt). Denne spec'en er forankret så den ferske sesjonen kjører deterministisk uten å re-derivere. Sample-frame-scriptet er IKKE bygd ennå — det er steg 1 i den ferske sesjonen (TDD)._
|
||
|
||
**Recon-funn (ground truth 2026-06-26 — ikke re-verifiser, men bekreft mot `git`/registry hvis tvil):**
|
||
- **Verifiserbar populasjon = 306/389 ref-filer** (de som siterer ≥1 MS Learn-URL). De resterende **83 er kildeløse** (maler/metodikk) → utenfor korrekthets-scope.
|
||
- **Kilde-mapping uten authority-backfill:** inverter `scripts/kb-update/data/url-registry.json` → `urls{}` (1353 entries), hver med `reference_files[]`. Invertert gir **fil → [siterte URL-er]** (median 7/fil). Verifiser en påstand mot filens egne siterte kilder; fall tilbake på `microsoft_docs_search` om ingen treffer påstanden. (Kun 3 entries har `authority_source` satt — IKKE en blokker for Fase 0.)
|
||
- **Volatile påstander er tette i:** `cost-optimization/`, `platforms/`, og SKU/TPM/PTU/pris/region/versjon/«preview»/«GA»-tette filer. Eksempel verifisert: `ptu-vs-paygo-economics.md` (GPT-5 4750 TPM/PTU, PTU-minimums per modell, deployment-taksonomier — hver med *selv-erklært* `✅ Verified`, aldri eksternt sjekket).
|
||
- **Gjenbruk K9-grensen** i `scripts/kb-eval/judge-prompt.md` for å klassifisere påstand som volatil vs. stabil identifikator (forordningsår, OWASP-versjonsnavn, MADR v3.0, lovsaksnr er IKKE volatile).
|
||
|
||
**Locked beslutninger:**
|
||
- **Utvalg: ~45 filer volatil-vektet + kontroll-stratum** (~8–10 stabile-påstand-filer). Rapporter BÅDE volatil feilrate (øvre grense — der feilene bor) OG stabil sanity-rate.
|
||
- **Stratifisering:** balansert på tvers av de 5 skills, oversample de volatil-tette (security/engineering/advisor-cost+platforms), kontroll-stratum fra methodology/regulatory.
|
||
|
||
**Metode (4 steg):**
|
||
1. **Sample-frame** (`scripts/kb-eval/build-sample-frame.mjs`, NY, TDD-først): scor de 306 filene på volatilitets-signaler (sti + innholds-tetthet av SKU/pris/TPM/region/versjon/preview/GA), stratifiser → skriv `scripts/kb-eval/data/fase0-sample-frame.json` (45 volatile + kontroll, deterministisk/seedet rekkefølge — ingen `Math.random`). Verifisering: gjenkjørbar, samme input → samme utvalg.
|
||
2. **Per-fil verifisering via subagenter** (Opus 4.8 xhigh, parallelt — agent-strategi; subagenter committer ALDRI): hver subagent får en batch (~4–5 filer). Per fil: ekstraher volatile påstander → hent siterte kilde(r) via `microsoft_docs_fetch`/`_search` → entailment-sjekk hver påstand → merk verdict + bevis. Returner strukturert JSON (schema under).
|
||
3. **Aggreger** (`scripts/kb-eval/compute-base-rate.mjs`, NY, TDD-først): feilrate + **Wilson score-intervall** (95 %), brutt ned per skill + per volatilitets-klasse, OG **delmengden feil UTEN lastmod-endring** (= eneste klasse en judge fanger over staleness-loopen). Skriv base-rate-rapport.
|
||
4. **Gate-beslutning** (over) → noter i STATE + plan.
|
||
|
||
**Gold-set JSON-schema** (`scripts/kb-eval/data/gold-correctness-set.json`, gjenbrukbart — dobler som Fase 3-kalibreringssett):
|
||
```
|
||
{ "_meta": { "created": "...", "method": "...", "sample_frame": "fase0-sample-frame.json" },
|
||
"claims": [ {
|
||
"id": "<skill>/<relpath>#<n>", "file": "<relpath>", "skill": "...",
|
||
"claim": "<ordrett påstand>", "claim_type": "sku|price|tpm|region|version|status|taxonomy|stable",
|
||
"stratum": "volatile|control",
|
||
"verdict": "correct|outdated|wrong|unsourced",
|
||
"evidence_url": "<MS Learn URL brukt>", "evidence_quote": "<sitat som av-/bekrefter>",
|
||
"lastmod_changed": true|false, // har filens siterte kilde endret sitemap_lastmod siden filens dato?
|
||
"notes": "..." } ] }
|
||
```
|
||
|
||
**Eksklusjoner (teller IKKE som feil):** påstander eksplisitt merket illustrative («forenklede tall», eksempel-NOK), og stabile identifikatorer (K9-grensen).
|
||
|
||
**Verifisering (testbart, fra planen + locked):** ≥45 volatile-filer merket; Wilson-bånd beregnet; gull-sett + sample-frame lagret som artefakter; eksplisitt tall for «feil uten lastmod-endring»; begge nye scripts har failing-test-først (Iron Law).
|
||
|
||
### Fase 0 → GATE (BESLUTTET 2026-06-26): **BYGG Fase 3 — scoped/hybrid**
|
||
|
||
Rapport: `scripts/kb-eval/data/base-rate-report.{json,md}` (deterministisk fra `gold-correctness-set.json`, 373 påstander, via testet `lib/base-rate.mjs`). Beslutningen følger gate-kriteriet (over) + per-claim_type-konsentrasjonen:
|
||
|
||
1. **Feilraten klarer baren.** Verifiserbar feilrate **13,4 % (40/299)**, Wilson 95 % **[10,0 %, 17,7 %]**. Nedre bånd 10 % ≫ «~few %» ⇒ «lav feilrate ⇒ hopp over Fase 3»-grenen er utelukket med 95 % konfidens.
|
||
2. **Det billige alternativet fanger ingenting.** Staleness-recall = **0/40 = 0 %**. Ingen av de 40 reelle feilene har `lastmod_changed=true` (false=37, null=3) — de er bakt inn ved fil-skriving, eller MS Learn sitemap_lastmod er for grovt til å fange endringen. En korrekthets-judge er ENESTE automatiske mekanisme som fanger dem. **CAVEAT løst:** registry `last_poll=2026-06-23` er ferskere enn 32/40 fildatoer (ville fanget en post-fildato sitemap-endring om den fantes); de 8 feilene i filer dat. 2026-06-24 er ~2 dager gamle ⇒ kan ikke ha drevet ennå. `true=0` er reelt signal, ikke stale-registry-artefakt.
|
||
3. **Feilene konsentreres der en fetch-judge virker.** Per claim_type: **sku 36,4 % (8/22), version 25,0 % (8/32), tpm 20,0 % (5/25)** — alle nær fullt hentbare (sku 0 unsourced, version 1, tpm 5). Høyt utbytte + høy rekkevidde.
|
||
4. **Pris er ute av scope — av data, ikke antakelse.** 76 pris-påstander, **56 unsourced (74 %)**. «0/20 = 0 %» pris-feilrate er en **falsk null** (74 % kunne ikke sjekkes — ikke at de er korrekte). JS-rendrede Azure-prissider beseirer `microsoft_docs_fetch` ⇒ en fetch-basert judge når dem heller ikke. Pris er 56 av 74 unsourced (76 %); resten av korpuset er 18/297 unsourced (**6 %**) ⇒ den uverifiserbare massen er **isolert til pris**, ikke spredt.
|
||
|
||
**Scope for Fase 3-judgen:** kun fetchbare claim_types — `taxonomy|status|version|tpm|sku|region` (297 påstander, 94 % hentbare, bærer 100 % av de verifiserbare feilene). `claim_type=price` flagges «ikke maskinverifiserbar» ⇒ **operatør-gated, ikke judge-gated**. Forutsetningene i Fase 3-seksjonen (autoritets-backfill, full frontmatter/Fase 2, judge-kalibrering mot dette gull-settet før tallene stoles på) gjelder uendret før judgen tas i bruk. Gull-settet (373 påstander) er kalibreringssettet.
|
||
|
||
---
|
||
|
||
## Fase 1 — Trygge, retnings-uavhengige grep (kan kjøres parallelt med Fase 0)
|
||
Lav risiko, forbedrer workflowen uansett senere valg. **NB: koordiner advisor-filer mot Cosmo-utfasing** (samme skill — se gating-valg).
|
||
|
||
### 1a. Update-mekanisme: registry-herding (operatørs prioritet)
|
||
- ✅ **A — LEVERT (`e74646d`, 2026-06-26):** la `graph`/`ai-builder`/`power-apps`/`power-automate`/`microsoftsearch` i sitemap-prefiksene (taxonomy `sitemap_prefixes`, 18→23 — alle 5 docsets ett child-sitemap, verifisert live mot indeksen). **Bevist read-only: 21/24 not_in_sitemap-URL-er i disse docsetene blir tracked.**
|
||
- ✅ **B — LEVERT (`e74646d`):** `extractUrls`/`normalizeUrl` fanger skjemaløse siteringer (krever `/path` etter domenet → avviser bare-domene-prosa + JSON-eksempler; kanonikaliserer scheme til https). **Bevist: +19 URL-er ekstraherbare.** Bonus-bugfix: backtick-lekkasje fra inline-kode-citat. TDD: ny `test-url-normalize` (14) + taxonomy-test 18→23. Suite 338/338.
|
||
- ⏸️ **C — UTSATT → Cosmo (operatør 2026-06-26):** redirect-følging for 44 legacy `/microsoft-365-copilot/...` + 3 omdøpte microsoftsearch. 20/21 filer er advisor → foldet inn i Cosmo-utfasingen (root-cause citat-fiks, ikke ny redirect-map-mekanisme). Se `docs/cosmo-removal-brief-2026-06.md`. Slug-rename verifisert → krever ekte redirect-resolusjon, ikke streng-rewrite.
|
||
- ⏸️ **Registry-refresh utsatt til kadens (operatør 2026-06-26):** A+Bs +21/+19 lander når neste `build-registry --merge` + poll kjører; effekten er allerede empirisk bevist read-only. Unngår 552KB re-order-churn nå.
|
||
|
||
### 1b. Create/struktur: TOC på de største filene
|
||
- Legg innholdsfortegnelse i de **~20–29 filene >800 linjer** (ikke alle 384 — partial-read er kun plausibelt på de største under whole-file-routing). Skript for konsistent TOC-format.
|
||
- **Verifisering:** `eval.mjs checkN4 hasToc` = true for de filene; ingen diff-churn på små filer.
|
||
|
||
### 1c. Create-time: hindre regresjon i generatoren
|
||
- Oppdater `scripts/kb-update/lib/transform.mjs buildKbHeader`/`validateKbFile` (og evt. `generate-skills`) så NYE/regenererte filer fødes best-practice-konforme (TOC hvis stor; konsistent header). **MÅ gjøres før/sammen med 1b**, ellers regenererer neste KB-update prosa-headere og reverserer arbeidet (write-path-regresjon).
|
||
- **Verifisering:** kjør generatoren på en testfil; output har TOC + kanonisk header.
|
||
|
||
---
|
||
|
||
## Fase 2 — Metadata-substrat (minimal; full versjon betinget av Fase 3)
|
||
- **Minimal type-tag** for hver fil: `reference` | `template` | `methodology` | `regulatory`. Formål: skille de 83 «kildeløse» legitimt (maler/metodikk som `decision-trees`, `cost-models` skal ALDRI ha MS-kilde) fra MS-faktapåstander-uten-kilde (maskin-detekterbart defekt). Kan være sidecar-manifest eller mappekonvensjon — IKKE full YAML-frontmatter ennå.
|
||
- **Full frontmatter** (`type`/`source`/`verified`, OKF-kompatibel form) bygges KUN hvis Fase 3-judgen skal bygges (da trenger den per-fil `source`+`verified` deterministisk). Over-engineering ellers — `report-changes` tolererer alt 3 dato-mønstre i dag.
|
||
- **Verifisering:** hver av 389 filer klassifisert; de 83 kildeløse delt i to bøtter; judge (hvis bygd) skipper `template`/`methodology`.
|
||
|
||
---
|
||
|
||
## Fase 3 — Korrekthets-mekanisme (GATED av Fase 0; bygg kun hvis berettiget)
|
||
**Retning (hvis bygd): #2 som enhet (per-fil korrekthetsdom) på #3s substrat (KB-refresh-pipelinen) — aldri #1.**
|
||
- Per-fil groundedness-judge (Opus 4.8 xhigh): hent filens utpekte autoritet → `microsoft_docs_fetch` → dekomponer i påstander → entailment-sjekk hver mot kilden (RAGAS/Azure Groundedness-mønster) → score = supported/total + liste over ugrunnede/motstridende påstander. Persister analogt til `skill-score-report.json`, men per fil, med «sist verifisert korrekt»-stempel.
|
||
- **Forutsetninger før bygging:** (a) autoritets-backfill — kun 3 URL-er har `authority_source`, 7 filer har `**Source:**`-header i dag; (b) full frontmatter (Fase 2); (c) kalibrer judgen mot Fase 0-gull-settet før tallene stoles på (judge claim-dekomponering er brittle — verifiseringsplikt).
|
||
- **«Bygg begge og mål»** (operatørs metodikk) er tilgjengelig her: staleness-flagg vs judge vs hybrid, målt på gull-settet — men **kun på den volatile populasjonen** (der feilene bor; ikke kår en vinner på stabile påstander).
|
||
- **Kjente feller (fra kritikk):** invertert leverage (judgen auto-scorer stabile lav-risiko-påstander; volatile forblir operatør-gated); kostnad er ~2700 ikke-batchbare `microsoft_docs_fetch` per full-pass (IKKE «$20–40 Batch»); judgen fjerner ikke verifiseringsplikten (flytter den fra «stikkprøv KB» til «kalibrer judge»).
|
||
- **Verifisering:** judge presisjon/recall mot gull-settet ≥ avtalt terskel; staleness-gated inkrement + periodisk full-pass; volatile påstander forblir operatør-gated.
|
||
|
||
---
|
||
|
||
## Fase 4 — Integrasjon & styring
|
||
- Fold valgt mekanisme inn i KB-refresh-kadens (ikke SessionStart — for dyrt). Spor D viser en tynn PEKER til innholds-scoren, ikke et sammenslått tall. CT5 (sourcedness) ERSTATTER K8s rolle (ikke parallelt).
|
||
- Judge-gulv skal være **rapporterende** (worstFile + countBelow), ikke en hard SessionStart-gate, før judgen er kalibrert — ellers alarm-tretthet/waiver-spam på et brittle signal.
|
||
- **Verifisering:** SessionStart-hook surfacer innholds-signal uten falske regresjons-alarmer; operatør-waiver-sti finnes.
|
||
|
||
---
|
||
|
||
## Noterte rester (uavhengig av fase-gating)
|
||
- **✅ `✅ Verified`-trust-hazard — LØST 2026-06-26 (`83fd9b5`).** Premiss-sjekk myknet og innsnevret hazardet: «Verified» var **for det meste provenansbærende**, ikke et tomt stempel. To populasjoner: (a) **101 `✅ Verified`-konfidens-celler i 13 filer** — grønn hake + «Verified» uten nabokilde = det reelle (men myke) over-signalet; legend i `m365-copilot-plugins-ecosystem.md` definerte det faktisk som «hentet fra MS Learn via MCP» = `Documented`. (b) **142 plain `Verified`-celler i 31 kilde-attribusjons-tabeller** — nabokolonnen ER kilden (proveniens til stede). **Operatør valgte smal fix (A):** (a) → `✅ Documented` + 5 kolonne-overskrifter + skill-gen-taksonomien (`Verified/Baseline/Assumed` → `Documented/Baseline/Assumed`); (b) LA STÅ (degraderer ærlige celler). Suite 509/509. **Åpent (operatør):** versjonsbump/release for denne content-endringen — se under.
|
||
- **Versjonsbump for `83fd9b5`?** Ref-fil-innhold er user-facing flate, men dette er label-ærlighet (ikke kapabilitet). Anbefaling: ingen bump nå; batch release med neste substansielle endring (Fase 0-utfall / Cosmo). Operatør avgjør.
|
||
|
||
## Gating-valg for operatør (avklares før relevante faser)
|
||
1. **Mål-først (anbefalt) vs bygg-begge-direkte.** ✅ LØST av Fase 0-gaten: bygg-begge-og-mål på volatil populasjon i **S3** (se roadmap under). Begge krevde gull-settet — nå levert (373 påstander, frosset).
|
||
2. **Cosmo-sekvensering.** Struktur-/tag-arbeid på `ms-ai-advisor` (lavest score 91 + hjem til `adr-template`) kolliderer med godkjent Cosmo-utfasing (samme skill). Vente til Cosmo er ute, eller koordinere? Påvirker Fase 1b/1c/2 for advisor-filer.
|
||
3. **N4-revekting.** Håndheve TOC-regelen reelt (re-vekt N4 / skaler med filstørrelse)? Drar 91–96 midlertidig under 90 → Spor D-alarm. Policy, ikke defekt.
|
||
|
||
## Premiss reconciled (AVKLART 2026-06-26)
|
||
«Navngitt 169 / mappe 220» (audit) vs «151 navngitt / 238 mappe-only» (workflow akse 1). **Løst:** `ref-file-audit.py` kjørt på nytt gir reproduserbart **169 / 220 / 0 orphans** — autoritativt (transparent heuristikk: `basename ∈ SKILL.md + agents/*.md`). 151/238 var et ikke-reproduserbart engangs-agentanslag med strammere «named»-definisjon; forkastet. Begge summerer 389 og er enige om **0 orphans** — avviket er kun named/folder-grensen og er **immaterielt**: intet tiltak (Fase 0–3) kjører på den grensen, kun «0 død vekt» (begge bekrefter).
|
||
|
||
## Fler-sesjons-eksekveringsplan (roadmap — etablert 2026-06-26, etter Fase 0-gaten)
|
||
|
||
Fase 0 ✅ lukket; gaten sa **BYGG Fase 3 (scoped)**. Gjenstående arbeid har **én kritisk sti** (Fase 2 → Fase 3-forutsetninger → judge/bake-off → Fase 4) + **to uavhengige side-spor** (TOC-håndverk, Cosmo) + **ett lav-prio** (OKF). Hver sesjon har en **kjørbar gate** (autonomi-vennlig — gå ikke videre før kriteriet er grønt). Premiss-tall (389/306/83) er recon-funn over; eksekverende sesjon **re-verifiserer mot ground truth FØR den muterer** (premiss-verifiseringsplikt).
|
||
|
||
**Dependensgraf (kort) — mål-FØRST:**
|
||
- `1c → 1b` (ellers reverserer generatoren TOC-arbeidet ved neste KB-update).
|
||
- **Bake-off (S1) bruker det FROSNE gull-settet (373, `evidence_url` per påstand finnes allerede)** ⇒ uavhengig av frontmatter/backfill ⇒ judgen kan **de-rises FØR** scaffolding bygges. Dette er den retnings-avgjørende målingen, ikke type-tag.
|
||
- Fase 2 type-tag (S2): judge-uavhengig, nyttig uansett utfall (trengs selv for staleness-only sourcedness). Backfill + full frontmatter (S3): **KUN hvis S1 passerer** — ellers wasted, judge-spesifikk scaffolding.
|
||
- Fase 3-mekanisme `→` Fase 4.
|
||
- Cosmo berører `ms-ai-advisor` ⇒ kolliderer med strukturarbeid på advisor-filer (løses ved scoping, se beslutning 2).
|
||
|
||
### Kritisk sti (mål-først: de-risk judgen før du bygger scaffolding rundt den)
|
||
|
||
**S1 — Judge-prototype + bake-off på frosset gull-sett (DE-RISK, retnings-avgjørende).** Bygg en minimal per-påstands groundedness-judge (Opus 4.8 xhigh) og kjør den mot de 373 gull-påstandene (hver har allerede `evidence_url` + ordrett påstand). Mål **staleness vs judge vs hybrid** på volatil populasjon, scoped til fetchbare claim_types (`taxonomy/status/version/tpm/sku/region`; `price` ekskludert). Trenger **ingen** backfill/frontmatter — gull-settet er selvbærende. **Gate:** judge presisjon/recall mot gull ≥ avtalt terskel OG slår staleness (recall 0/40); kjent felle adressert (invertert leverage — judgen «vinner» ikke ved å auto-score stabile lav-risiko-påstander). **HVIS FAIL:** stopp — judge ikke berettiget; fall tilbake på staleness + operatør-gating; **bygg IKKE S3**. ~1 sesjon de-risker hele kritisk sti.
|
||
|
||
> **FORHÅNDSREGISTRERT GATE (låst 2026-06-26, operatørvalg, FØR fan-out):** judge **recall ≥ 0,80 OG presisjon ≥ 0,70** (punktestimat), målt på den verifiserbare evaluerings-populasjonen P = volatil + fetchbar claim_type (price ekskl.) = **240 påstander, 38 positive**. PLUSS nødvendig betingelse: judge-recall > staleness-recall (staleness = 0/38). Wilson 95 %-bånd rapporteres som kontekst (n=38 → bredt bånd); grensetilfeller flagges for operatør, ikke mekanisk avvist. Strengt nivå valgt: bygg S3 KUN hvis judgen er svært sterk. **Harness (testet, 14 tester):** `lib/judge-bakeoff.mjs` + `extract-judge-claims.mjs` (blind manifest, 0 label-lekkasje) + `judge-claim-prompt.md` (blind per-påstands-judge) + `run-judge-bakeoff.mjs --min-recall 0.80 --min-precision 0.70`. Blindhet: judgen ser aldri gull-verdict; join på `id` i koden etterpå.
|
||
|
||
> **S1-v2-RESULTAT (2026-06-26, målrettet iterasjon — operatørvalg (c)): GATE ✅ PASS — recall 84,2 %, presisjon 84,2 %.** v2-prompt `judge-claim-prompt-v2.md` (eksakt-verdi-entailment, prinsipiell fiks på diagnostisert grounded-men-feil-feilmode; terskel uendret). Rapport: `judge-bakeoff-report-v2.{json,md}`; resultater: `judge-bakeoff-results-v2.json`. **Judge: recall 84,2 % (32/38, ✅ ≥0,80, Wilson [69,6–92,6 %]), presisjon 84,2 % (✅ ≥0,70), F1 0,842, slår staleness 0/38.** Fiksen løste målet: **sku 37,5 %→75,0 %, taxonomy 66,7 %→100 % recall**; +6 ekte fangster (26→32) UTEN netto nye FP (6→6) ⇒ recall OG presisjon opp samtidig (mekanistisk koherent, ikke støy). **Ærlige forbehold:** (1) andre måling på samme frosne gull-sett etter v1 (åpent erkjent; v1 frosset); (2) Wilson nedre grense 69,6 % < 0,80 (n=38) ⇒ sann recall ≥0,80 ikke statistisk garantert; (3) region 50 % (n=2) for lite. **Gate-logikk ⇒ vei mot S3 (scoped/hybrid).** NESTE OPERATØR-BESLUTNING: gå til S2 (type-tag) + S3 (backfill/frontmatter)? (stoppet her — eskalerer ikke selv.)
|
||
|
||
> **S1-RESULTAT (2026-06-26, blind fan-out 15 batcher Opus xhigh, 255 påstander dekket): GATE ❌ FAIL — recall 68,4 % < 0,80.** Rapport: `scripts/kb-eval/data/judge-bakeoff-report.{json,md}`; resultater: `judge-bakeoff-results.json`. **Judge: presisjon 81,3 % (✅ ≥0,70), recall 68,4 % (❌ <0,80, Wilson [52,5–80,9 %]), fanget 26/38, slår staleness 0/38 desisivt.** Recall-draget er **konsentrert**: sku 37,5 % (3/8) + taxonomy 66,7 % + region 50 % (n=2); version/status/tpm er allerede 80–86 % recall ved 75–100 % presisjon. 10 av 12 bommer var «grounded»-men-feil (brittle claim-dekomponering, isolert til sku/taxonomy). Per pre-registrert gate ⇒ **STOPP, bygg IKKE S3.** **ÅPEN FORK (operatør):** (a) honorer FAIL — fall tilbake på staleness + operatør-gating [ren pre-registrering]; (b) scoped judge — auto-flag kun sterke typer (version/status/tpm), operatør-gate sku/taxonomy [data-støttet mellomvei]; (c) én målrettet prompt-iterasjon på sku/taxonomy + re-kjør [flagg p-hacking-risiko: frys v1 som ærlig pre-registrert utfall].
|
||
|
||
**S2 — Fase 2: minimal type-tag (judge-uavhengig, nyttig uansett).** Klassifiser ~389 filer `reference|template|methodology|regulatory` (sidecar-manifest el. mappekonvensjon — IKKE full YAML ennå). Skiller de ~83 kildeløse legitimt (mal/metodikk: `decision-trees`, `cost-models`) fra MS-fakta-uten-kilde. NY `scripts/kb-eval/classify-ref-type.mjs` (TDD-først). Kan kjøres før/parallelt med S1 (billig). **Scope:** klassifiser advisor-filer, men MUTÉR dem ikke (Cosmo-kollisjon). **Gate:** hver fil har én type; kildeløse delt i to bøtter; reproduserbar; suite grønn.
|
||
|
||
**S3 — Fase 3-forutsetning (a)+(b): backfill + full frontmatter (KUN hvis S1 passerte).** Produksjons-scaffolding for judgen: gi hver verifiserbar fil (~306 som siterer ≥1 MS Learn-URL, **EKSKL. advisor**) en `authority_source` + full frontmatter (`type/source/verified`, OKF-form). Advisor folder inn i **S-Cosmo**. Gated bak S1 fordi dette er judge-spesifikt og wasted hvis judgen feilet. **Gate:** hver ikke-advisor verifiserbar fil har `authority_source`; frontmatter validerer; suite grønn.
|
||
|
||
**S4 — Produksjons-judge-utrulling + Fase 4-integrasjon.** Rull judgen over korpuset (4 skills; advisor post-Cosmo). Fold valgt mekanisme inn i KB-refresh-kadens (IKKE SessionStart — for dyrt; ~2700 ikke-batchbare `microsoft_docs_fetch`/full-pass). Rapporterende gulv (Spor D peker, ikke hard gate, før kalibrert). CT5 (sourcedness) **ERSTATTER** K8s rolle. **Gate:** SessionStart surfacer innholds-signal uten falske regresjons-alarmer; operatør-waiver-sti finnes.
|
||
|
||
### Side-spor (uavhengig — interleaves når kritisk sti venter)
|
||
|
||
**SH — Fase 1b/1c: TOC + generator-guard.** Trygt håndverk. **1c FØR 1b** (ellers reverserer neste KB-update headerne — write-path-regresjon). ~20–29 filer >800 linjer. Ekskluder advisor-filer (Cosmo). Avhenger av operatør-beslutning 3 (N4-revekting). **Gate:** `eval.mjs checkN4 hasToc=true` på målfilene; generator føder TOC + kanonisk header; ingen diff-churn på små filer.
|
||
|
||
**S-Cosmo — Cosmo-utfasing (GODKJENT, gjøres SIST).** Fjern persona helt. Absorbér i samme pass: 1a-C (44+3 redirects), advisor-filenes frontmatter/backfill (fra S2) + TOC (fra SH). LES `docs/cosmo-removal-brief-2026-06.md`. Aldri ny Cosmo-innhold. **Gate:** 0 Cosmo-referanser igjen; advisor judged etter Cosmo.
|
||
|
||
**S-OKF — OKF auto-inbox-pipeline (LAV PRIO).** Skjul OKF fra bruker. `docs/okf-second-brain-brief-2026-06.md`.
|
||
|
||
### Operatør-beslutninger låst inn av denne planen
|
||
1. **Mål-først vs bygg-begge** → ✅ LØST av gaten: bygg-begge-og-mål på volatil populasjon (S3).
|
||
2. **Cosmo-sekvensering** → **ANBEFALT resolusjon:** advisor-strukturarbeid folder inn i S-Cosmo; Fase 3-bake-off bruker frosset gull-sett (uavhengig av advisor-frontmatter); produksjons-judge dekker 4 skills først, advisor post-Cosmo. Respekterer «Cosmo sist» UTEN å blokkere kritisk sti.
|
||
3. **N4-revekting** → avgjøres ved SH (policy, ikke defekt; TOC-håndheving drar 91–96 midlertidig < 90 → Spor D-alarm).
|
||
4. **Versjonsbump `83fd9b5`** → batch med S3- eller S-Cosmo-release.
|
||
|
||
**Anbefalt neste sesjon: S1** (judge-prototype + bake-off på frosset gull-sett — den retnings-avgjørende de-risk-målingen; krever ingen scaffolding, slår staleness-recall 0/40 eller stopper kritisk sti). S2 (type-tag) er judge-uavhengig og kan tas i samme/tidligere slot om ønskelig. Trygt alternativ: SH (TOC), men avklar beslutning 3 først.
|