ms-ai-architect/docs/skill-lifecycle-spor-b-plan.md
Kjell Tore Guttormsen e8ceb7a8b4 docs(ms-ai-architect): Spor B plan godkjent — skill-livssyklus (krav 5+6, omdefinert)
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
2026-06-20 11:09:11 +02:00

8.1 KiB
Raw Permalink Blame History

Spec — Spor B: Skill-livssyklus (ms-ai-architect)

Plan-input (operatør-retning 2026-06-20, IKKE ferdig-godkjent ennå). Avløser «Spor B»-stikkordene i kb-mechanism-redesign-plan.md linje 281/383. Implementeres én sesjon per økt, per-fase gated; STATE.md peker på neste sesjon. Sti-konvensjon: relativt til plugin-rot.

Hva dette er

Spor A (krav 14) er komplett: mekanismen holder de eksisterende 5 skillene oppdatert, komplette og målbart optimaliserte (K1K9 grønn, lag 06 står). Spor B aktiverer de to kravene som ble utsatt (ikke forkastet) 2026-06-19:

  • Krav 5 — lage nye skills profesjonelt. (kb-mechanism-redesign-plan.md:90)
  • Krav 6 — slå sammen / slette / sanere skills (livssyklus, destruktive ops). (kb-mechanism-redesign-plan.md:91)

Forutsetningene er nå innfridd: krav 5 «forutsetter lag 03» og krav 6 «vurderes etter at lag 16 står» — alt står.

Scope-endring (eksplisitt): kb-mechanism-redesign-plan.md:19 listet krav 5/6 som «UTE av scope». Denne planen flytter dem inn i scope, men omdefinert (se under). Linje 19 er dermed superseded av dette dokumentet for Spor B.

Operatør-retning 2026-06-20 (binder denne planen)

  1. Deteksjon først. Bygg skill-granulær deteksjon (ikke-destruktiv, kun forslag); create/merge/saner drives av det deteksjonen finner.
  2. Best-practice-bar = K1K9 + overlapp-kriterium. Behold K1K9 (nå grønn); legg til ett nytt førsteklasses kriterium: søsken-scope-ikke-overlapp.
  3. INGEN nye domener. Ikke Power Platform, ikke Dynamics 365. De 5 skillene dekker domenerommet. → Tyngdepunktet forskyves fra create til merge/saner på de eksisterende 5. Create bygges som dvelende kapabilitet (mekanismen finnes og valideres, men ingen ny domene-skill shippes nå).

Åpen antakelse — MÅ bekreftes før B1 bygges

Operatør sa: «det eneste [nye dekningsområde] måtte være overlapp mot Microsoft Azure for deployment». Tolkning lagt til grunn: dette er IKKE en ny skill, men en grensesone mellom eksisterende ms-ai-engineering («bygge») og ms-ai-infrastructure («drifte») rundt Azure-deployment/-drift. → Brukes som det konkrete første deteksjonsmålet i B1 (overlap-detektoren ser spesifikt på engineering↔infrastructure-grensen). Hvis tolkningen er feil: korriger før B1.

Arkitektur-invarianter (arvet fra Spor A — ufravikelig)

  • Ingen direkte KB-/skill-skriving. Deteksjon/verifisering/transformasjon skriver ALDRI til skills/ direkte — kun via decisions.json etter operatør-gate. Lag 3/4/5 returnerer kun data/verdict.
  • Aldri tap av kuratert verdi. Destruktive ops (merge/saner/retire) har obligatoriske guardrails som beviser at kuratert innhold er bevart (ref-fil-invariant + diff vist før apply).
  • TDD. Test før kode. Deterministiske kriterier regrederer aldri (eval --json + de fire suitene = akseptansemål: validate 239 · kb-update 122 · kb-eval 15 · kb-integrity 192/192).
  • Kontinuitet: kun STATE.md/MEMORY.md/CLAUDE.md + docs/-referanser.

Fase B1 — Skill-granulær deteksjon (oppdage) · ikke-destruktiv

Problem: Dagens deteksjon (lag 1) jobber kun på referansefil-nivå; SKILL.md er eksplisitt ekskludert (build-registry.mjs:27). Ingenting resonnerer om skill-overlapp, dekningshull eller oppblåsthet.

Mål: Tre detektorer som resonnerer på SKILL-nivå og produserer KUN en rapport (scripts/kb-eval/data/skill-lifecycle-report.json), aldri skriving til skills/.

  1. Overlap-detektor — gjenbruk K1-mekanikken (data/k1-trigger-prompts.json, blindet judge) men cross-skill: hvilke prompts trigger >1 skill? Output: overlapp-par + styrke. Første konkrete mål: engineering↔infrastructure (Azure-deployment-grensen).
  2. Coverage/gap-detektor (innen-domene) — per taksonomi-kategori: er den eid + dekket (ref-fil-antall vs forventet)? Flagg tynne/ueide kategorier. Ingen nye domener — kun hull innenfor det dekkede.
  3. Bloat/stale-detektor (per skill) — K3-margin (body-linjer mot 500) + aggregert ref-stale-andel per skill → split-/saner-kandidat.

Leveranser: scripts/kb-eval/detect-skill-lifecycle.mjs (+ libs etter behov) · data/skill-lifecycle-report.json · tester tests/kb-eval/test-skill-lifecycle-detect.test.mjs.

Gate-kriterier (verifiserbare):

  • node scripts/kb-eval/detect-skill-lifecycle.mjs kjører, skriver gyldig skill-lifecycle-report.json med de tre detektor-seksjonene; 0 skriving til skills/ (bekreft med git status etter kjøring).
  • Overlap-detektoren rapporterer engineering↔infrastructure-paret med en tallfestet overlapp-score.
  • Nye tester grønne; de fire eksisterende suitene uendret (239/122/15/192).

Fase B2 — Best-practice-bar: K10 søsken-scope-ikke-overlapp (definere)

Mål: Utvid rubrikken med ett nytt kriterium K10 = søsken-scope-ikke-overlapp (deterministisk der mulig: cross-skill trigger-kollisjon fra B1-mekanikken; semantisk i judge-prompt.md der nødvendig). Dette er baren merge/create-beslutninger hviler på.

Leveranser: K10 i eval.mjs og/eller judge-prompt.md · måling på alle 5 · gated regenerering av eval-baseline.json · oppdatert kb-eval-test (forventet ny telling) · STATE/roadmap-tall.

Gate-kriterier:

  • K10 definert og målt på alle 5; resultat dokumentert. (Forventning: kan avdekke FAIL — det er signalet som mater B3 merge/saner, ikke en blokkering.)
  • Baseline regenerert via gated --write; kb-eval-suiten grønn med ny telling.
  • K1K9 ikke regredert.

Fase B3 — Ledger-utvidelse + livssyklus-ops (opprette / slå sammen / sanere) · krav 5 + krav 6

Mål: Utvid decisions.json med skill-nivå action-typer og bygg ops som gated transformasjoner (lag-4-analog på skill-granularitet), hver med guardrails. Alt via operatør-gate.

Ledger-utvidelse: legg action/operation_type i decisions-io.mjs-skjemaet: merge_skills, sanitize_skill, retire_skill, create_skill. (Dagens skjema er URL-nøklet, har ikke action-felt — decisions-io.mjs.)

Ops (prioritert per operatør-retning):

  • merge_skills (aktiv). Guardrail: pre/post ref-fil-antall bevart (ingen tap), begge descriptions forsont, category_skill i taksonomi oppdatert, kryss-refs fikset, absorbert skill retired. Dry-run produserer decisions.json-entry + full diff; ingenting anvendt uten eksplisitt godkjenning.
  • sanitize_skill (aktiv). Kun dødt innhold (orphan-refs, dead paths fra kb-integrity-warnings) — diff vist; aldri kuratert innhold.
  • retire_skill (aktiv, sjelden). Hel-skill kun via eksplisitt gate + arkivering (aldri hard delete uten arkiv).
  • create_skill (dvelende). Scaffold som passerer K1K10 fra fødsel; valideres mot et test-domene, men ingen ny domene-skill shippes (svar 3). Beviser at mekanismen finnes.

Gate-kriterier:

  • decisions-io.mjs-skjema utvidet + tester for hver action-type (round-trip, dedup).
  • merge: guardrail-test beviser at ALLE ref-filer fra begge skills finnes etter merge (count-invariant + sett-likhet).
  • Hver op har dry-run som skriver decisions-entry + diff og anvender INGENTING uten godkjenning (test bekrefter no-write uten approval).
  • create: scaffold-output passerer eval.mjs K1K10 grønt for test-skillen.
  • De fire suitene + K1K10 ikke regredert.

Ute av scope (Spor B)

  • Nye domener (Power Platform, Dynamics 365, etc.) — eksplisitt nei.
  • Restpunkter fra Spor A-stikkordene som ikke er skill-livssyklus: scheduled deteksjon · kurs-spor #25 · low-currency-bøtta (51) · bredere Source-backfill · onboarding-redesign #26. (Beholdes på roadmap; tas separat.)

Sesjons-sekvens (foreløpig)

Sesjon Innhold Gate
13 B1 overlap-detektor (eng↔infra Azure-deployment først) report m/overlapp-score, 0 skill-skriving
14 B1 coverage/gap + bloat/stale-detektorer full skill-lifecycle-report.json, tester grønne
15 B2 K10 + gated baseline-regen K10 målt alle 5, baseline grønn
16+ B3 ledger-utvidelse + ops (merge/saner først) guardrail-tester, dry-run no-write

Tall er foreløpige; én feature per sesjon, gated. create_skill (dvelende) tas sist.