Oppgave 0 (#44): søk-først (claude-code-guide mot offisiell docs) verifiserte at
`auto_discover` IKKE er et gyldig Claude Code plugin.json-felt — auto-discovery er
implisitt default (code.claude.com/docs/en/plugins-reference; ukjent felt gir kun
valideringsadvarsel, ikke feil). → stale konvensjon, IKKE manglende felt.
- tests/test-plugin-discovery.sh: stale hard-assertion (krevde `auto_discover: true`)
→ optional-felt-logikk som speiler validate-plugin.sh (fravær = PASS «auto-discovery
implisitt»; present må være true). plugin.json URØRT (la IKKE til ugyldig felt).
12/13 → 13/13.
validate 239/0 (ingen regresjon). STATE oppdatert: NESTE = C1 Tier 2.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Aktiverer de utsatte krav 5 (lage nye skills) + krav 6 (merge/saner/retire),
omdefinert per operatør-retning 2026-06-20:
- deteksjon først (ikke-destruktiv, driver ops)
- best-practice-bar = K1–K9 + K10 søsken-scope-ikke-overlapp
- INGEN nye domener (ikke Power Platform/Dynamics); tyngdepunkt merge/saner
på de 5 eksisterende; create = dvelende kapabilitet
- Azure-deployment = grensesone eng↔infra (B1 første deteksjonsmål), bekreftet
Superseder kb-mechanism-redesign-plan.md:19 (krav 5/6 «UTE av scope») for Spor B.
3 faser B1 (deteksjon) → B2 (K10) → B3 (ledger+ops). Arkitektur-invariant arvet:
alle skill-ops via decisions.json + operatør-gate; aldri tap av kuratert verdi.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
STATE.md var gitignored fra polyrepo-splittet (d09e0e9) — den gamle konvensjonen
som den globale ~/.claude-regelen nå eksplisitt overstyrer ("STATE.md er tracked
og committes i hvert repo — ALDRI gitignored"). Uten dette persisteres ikke
sesjonsslutt-staten til Forgejo, hvilket bryter kontinuitetssystemets formål.
Fjernet kun STATE.md fra ignore; REMEMBER/ROADMAP/TODO/*.local.md forblir lokale.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
Lukker K5-FAIL (navngitte fil-lenker / totale ref-filer ≥ 0,20) ved å følge
infrastructure-forbildet (0,97): full-sti `references/<mappe>/<fil>.md`-pekere
til kjernefiler, ikke bare mappe-refs.
Funn: security + advisor hadde filene navngitt allerede, men som BARE filnavn
uten `references/`-prefiks → ufanget av både eval-regex og kb-integrity (samme
klasse som de døde ref-paths i steg 2). Fiks = konverter til full sti:
- security: 10→16 navngitte (0,16→0,26). Konverterte 5 perf-filer (§3) + owasp (§1).
- advisor: 1→25 navngitte (0,016→0,40). Konverterte ~18 bare-filnavn i Kunnskaps-
basen + la til model-catalog-2026 og entry-points for copilot-extensi-
bility/prompt-engineering (40 filer som manglet ALLE navngitte pekere).
- engineering: 0→35 navngitte (0,0→0,23). Genuint 0 før; la til `> Kjernefiler:`-linje
med 4-6 kuraterte filer per §1-7.
Bivirkning: kb-integrity-checks 115→181 (de nye full-sti-refsene valideres nå),
orphan-warnings 260→223. Verifisert: K5 PASS alle 5 · K3/refTall ikke regredert ·
validate 239 · kb-eval 15 · kb-update 122 · kb-integrity 181/181.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
Lukker målte eval-FAIL i optimaliseringsfasen (krav 4):
Steg 1 (refTall): engineering agent-orchestration 20→24 (faktisk på disk)
+ total 149→153; governance npsg 29→30; fjerner inkonsistent 24/20-dobbel-
sitering. Verifisert: eval refCountConsistency PASS for alle 5.
Steg 2 (døde ref-paths i governance §4 monitoring-bullets — bare-filnavn,
derfor ufanget av kb-integrity): azure-monitor-ai-services-setup →
azure-monitor-setup-ai-workloads; drift-detection-automated-retraining →
model-performance-drift-detection. Begge fant ekte filer på disk (STATE
flagget kun den ene; den andre er et verifiseringsfunn). Grep: ingen døde igjen.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
Lag 3 ferdig → alle 6 lag står. Roadmap markerer lag 3 done; gjenstår (operatør prioriterer): optimalisering krav 4, kurs-spor, scheduled deteksjon, low-currency, flere Source-backfills.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
De 3 ref-filene som siteres av nøyaktig 1 URL med rent topisk treff får sin **Source:**-autoritetsheader (entydig, ingen gjetning): late-chunking-patterns→embeddings-tutorial, ai-red-team-operations-practical→ai-red-team/training, batch-api-usage-optimization→batch-blob-storage. authority_source-dekning 0→0,22%; lag-5 regel 3 nå virksom for disse filene.
Bevisst utelatt: ai-act-annex-iii-checklist.md — dens autoritet er EU-forordningen (deklarert **Hjemmel:** Regulation (EU) 2024/1689), ikke den tangentielle Purview-URLen den siterer. Å sette Purview som autoritet ville vært en gjetning som får regel 3 til å bomme (verifiseringsplikt).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
Numerert roadmap (Sesjon 1–5) er ferdig; 6-lags-arkitekturen står strukturelt. STATE peker neste fase på operatør-valg: lag 3 verifisering-INN / optimaliserings-fase (krav 4) / kurs-spor / scheduled deteksjon / low-currency-bøtta.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
Lag 4 destillerer et hentet Microsoft Learn-dokument til en KB-referansefil. Speiler mønsteret fra decisions-io/verify-out: ren-funksjon-lib + tynn LLM-integrasjon + TDD. lib/transform.mjs SKRIVER ALDRI — returnerer content/verdict/sti; skriving skjer kun via operatør-gate etter lag 5.
Nøkkelfunn/-fiks: gammel prompt-template.md la kilder i en bunn-seksjon, men build-registry/kb-headers.parseSourceHeader skanner kun øverste 500 bytes → authority_source-dekning = 0 %. Lag 4 legger **Source:** i HEADER-blokka — forutsetningen for at lag 3 (fremtidig) kan backfille authority_source og lag-5 regel 3 fyrer.
- buildKbHeader({title,status,category,source,lastUpdated}): Status+Source obligatoriske (kaster ved mangel). - validateKbFile(content) → {valid,missing[]}; bruker parseSourceHeader (én sannhetskilde med build-registry). - buildChange(...): eksplisitt lag-4→lag-5-bro, mater classifyChange. - resolveTargetPath(tax,category,filename): ruter via taksonomi getCategorySkill; null=ukjent→gate.
Prompt: scripts/kb-update/transform-prompt.md (doc→KB; husformat fra prompt-template.md, status-påstander eksplisitte for lag-5-gaten). Wiret i commands/kb-update.md §3.d (ny godkjent URL→fetch→destillér→header→validate→buildChange→lag5→resolveTargetPath→gate→atomisk) + §4.d (oppdateringer passerer validateKbFile). eval.mjs eksporterer nå evalSkill for kriterium-testen.
Kriterium møtt: «regenerer 1 fil → eval-score ≥ baseline» (test-transform-criterion.test.mjs). TDD: 12 lib-tester (inkl. import-invariant: ingen write-utils) + 2 kriterium FØR kode. Tester: validate 239 · kb-update 111 (+16) · kb-eval 15 (+2) · kb-integrity 115/115.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
Rotårsak: en datoløs ref-fil fikk effectiveDate=0000-01-01 (alltid «stale») OG en path-basert prioritet (kunne bli critical) → flommet critical-bøtta og druknet genuint kritiske filer. Fix: ny unverified-tier deklarert i domain-taxonomy.json (lag 0, eneste sannhetskilde for prioritet).
makePriorityFn(tax) tar nå valgfri hasDate (default true → bakoverkompatibelt for eksisterende én-args-kallere); report-changes sender Boolean(fileDate). unverified rangerer sist i sorteringen — manglende dato er metadata-hygiene, ikke currency-hast. Ekte registry: 1 fil skilt ut som Unverified.
TDD: 4 tester FØR kode (test-priority-unverified.test.mjs).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
Map-fila divergerte fra disk-sannhet i 4 entries og var ukonsumert av all runtime (verifisert: docs/development.md erklærte allerede taksonomien som eneste kilde; kun README kalte den feilaktig «used by generate-skills»). Operatør-valg 2026-06-19: slett + rydd README. Fjerner en av de divergerende taksonomiene redesignet finnes for å eliminere.
README.md peker nå på scripts/kb-update/data/domain-taxonomy.json via lib/taxonomy.mjs getCategorySkill (disk-sann).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
Operatør-valg 2026-06-19: category-skill-map-stale (4 entries) + datoløse-fil-
reklassifisering i getFilePriority tas i Sesjon 5 sammen med lag 4, ikke som
egen cleanup. Binding-fakta (disk-sannhet per entry, §151/§152) festet i
roadmap så neste sesjon har presist scope.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
Markerer lag 5 (verifisering-ut) ferdig: kriterium møtt (agentic-retrieval-
fixtur → flagged, ikke auto-applied). Roadmap-tabell rad 4 ✅ + resultatseksjon.
STATE peker på Sesjon 5 (lag 4 transformasjon). Tester: kb-update 95.
Carry-forward flagget: category-skill-map stale + datoløse-reklassifisering
(operatør avgjør Sesjon 5 vs egen cleanup); authority_source 0 % → regel 3
inert til lag 3 verifisering-INN.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
Lag 5 kjører ETTER transformasjon (lag 4) og FØR en kandidat-endring skrives til
en KB-fil. Den fanger regresjons-klassen: en status-påstand «korrigert» mot en
tilfeldig sitert side og stille auto-applyet (den kjente agentic-retrieval-
regresjonen — hovedkontekst måtte rette manuelt).
Regel (spec §21): status-påstander (GA/preview/versjon/pris) flagges ALLTID for
operatør, aldri auto-applyet — uansett hvor sikker evidensen ser ut.
- lib/verify-out.mjs: ren klassifiserer, null deps (speiler decisions-io).
detectStatusClaim(text) → {isStatus, kinds}; classifyChange(change) →
{verdict: flagged|auto-applied, status_claim, reasons}. Tre flag-regler:
status-gate (§21) · adversarial refutering · autoritets-mismatch (regresjonens
rotårsak). Konservativ med vilje: ved tvil flagges. SKRIVER ALDRI.
- Fixtur tests/fixtures/kb-update/agentic-retrieval-regression.json: den kjente
regresjonen (flat «GA» mot nyansert «delvis GA … resten preview»).
- TDD: 13 tester før kode, inkl. import-invariant (ingen write-utils).
- Wiret i kb-update.md §4 c2 (lag 5 mellom identifiser-endring og skriv).
Kriterium møtt: fixtur → flagged:true, ikke auto-applied.
Tester: validate 239 · kb-update 95 (+13) · kb-eval 13 · kb-integrity 115/115.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
Operatør-flagget kritisk for brukervennlighet (2026-06-19): virksomhetskontekst
må være ambient i enhver interaksjon, overleve oppgraderinger/reinstall, og bære
fritekst utover de formelle spørsmålene. Dagens mekanisme (org/*.md, gitignored,
i plugin-katalog, betinget per-agent-lesing) oppfyller ingen av delene.
Brief, ikke godkjent plan — design godkjennes separat. Egen fil i docs/ per
ingen-lokale-kontinuitetsmekanismer-regelen.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
build-registry leser na **Source:**/**Primary source:**-header via ny
lib/kb-headers.mjs (parseSourceHeader, 7 enhetstester) og logger dekning
(0/N i dag). Hver URL-entry far reserverte felt authority_source:null +
course:null (bakoverkompatibelt). Populering med korrekt semantikk utsatt
til verifiseringslaget (lag 3) - minimal-reservert per operator-valg.
Eksisterende status-felt (poll: tracked/not_in_sitemap/unpolled) urort for
a unnga kollisjon. kb-update 56 tester gronne.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
Ny data/domain-taxonomy.json (tracket via gitignore-negasjon; generert
registry/rapporter forblir ignorert) konsoliderer de 4 divergerende
taksonomiene: (a) sitemap-prefikser, (b) discover INCLUDE/EXCLUDE,
(c) category->skill, (d) getFilePriority. lib/taxonomy.mjs laster + kompilerer.
Refaktor: poll-sitemaps, discover-new-urls, report-changes LESER taksonomien
(ingen embeddede kopier). Kriterium grep TARGET_PREFIXES=[ == 0 oppfylt.
Konsolideringsfunn:
- category-skill-map.json stale i 4 entries (copilot-extensibility,
monitoring-observability, performance-scalability, prompt-engineering ->
sa engineering; disk sier advisor/governance/security/advisor). DISK er
kanon. Map-en er ukonsumert av kode (kun README) -> flagget, ikke rort.
- discover fikk poll-paritet (12 -> 18 sitemap-prefikser).
- skill utledes na fra kanonisk category_skill -> ingen divergens (invariant-test).
Adferdsbevarende: 0 mismatch old vs ny prioritetslogikk pa 51 endrede filer;
discover sine hardkodede skill-verdier matchet allerede disk.
Tester: validate 239, kb-update 49 (+7 taksonomi), kb-eval 13 - alle gronne.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ