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
This commit is contained in:
parent
c778cf6cd2
commit
e8ceb7a8b4
1 changed files with 102 additions and 0 deletions
102
docs/skill-lifecycle-spor-b-plan.md
Normal file
102
docs/skill-lifecycle-spor-b-plan.md
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
# 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: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 = K1–K9 + overlapp-kriterium.** Behold K1–K9 (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.
|
||||
- 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_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 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.mjs` K1–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._
|
||||
Loading…
Add table
Add a link
Reference in a new issue