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
8.1 KiB
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 1–4) er komplett: mekanismen holder de eksisterende 5 skillene oppdatert, komplette og målbart optimaliserte (K1–K9 grønn, lag 0–6 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 0–3» og krav 6 «vurderes etter at lag 1–6 står» — alt står.
Scope-endring (eksplisitt):
kb-mechanism-redesign-plan.md:19listet 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)
- Deteksjon først. Bygg skill-granulær deteksjon (ikke-destruktiv, kun forslag); create/merge/saner drives av det deteksjonen finner.
- Best-practice-bar = K1–K9 + overlapp-kriterium. Behold K1–K9 (nå grønn); legg til ett nytt førsteklasses kriterium: søsken-scope-ikke-overlapp.
- 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 viadecisions.jsonetter 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/.
- 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). - 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.
- 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.mjskjører, skriver gyldigskill-lifecycle-report.jsonmed de tre detektor-seksjonene; 0 skriving tilskills/(bekreft medgit statusetter 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. - K1–K9 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_skilli taksonomi oppdatert, kryss-refs fikset, absorbert skill retired. Dry-run produsererdecisions.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 K1–K10 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.mjsK1–K10 grønt for test-skillen. - De fire suitene + K1–K10 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.