From d6a60ca48021fd0bad2d0e95813f5d6f81b2d08a Mon Sep 17 00:00:00 2001 From: Kjell Tore Guttormsen Date: Tue, 23 Jun 2026 18:48:40 +0200 Subject: [PATCH] =?UTF-8?q?feat(ms-ai-architect):=20Spor=20E=20krav=202=20?= =?UTF-8?q?=E2=80=94=20onboarding=20Phase=206=20guided-prose=20(coaching)?= =?UTF-8?q?=20(TDD)=20[skip-docs]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Phase 6 (fri kontekst) coacher nå brukeren FØR det åpne spørsmålet med to lister: «hva som typisk hører hjemme» (initiativer, smertepunkter, tidligere hendelser, strategiske føringer, leverandør-preferanser/-forbud) og «hva du vanligvis kan hoppe over» (det de fem strukturerte kategoriene alt fanget; generell AI-synsing; secrets/sensitive personopplysninger → ALDRI). Lagring forblir ordrett. Lukker operatør-krav 2 (S39): onboarding skal coache på inkludering/ekskludering, ikke bare stille ett blankt spørsmål. TDD: 7 nye assert i tests/test-onboarding-parity.sh (RED→GREEN), suite-navn utvidet til «K4-paritet + Phase 6 guided-prose». 21/21 PASS. validate 0-fail, test-hooks 11/11, user-data node 25/25 — alle grønne. Co-Authored-By: Claude Opus 4.8 (1M context) --- agents/onboarding-agent.md | 19 +++++++++++++++++-- tests/test-onboarding-parity.sh | 23 ++++++++++++++++++++++- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/agents/onboarding-agent.md b/agents/onboarding-agent.md index d366334..763f8dc 100644 --- a/agents/onboarding-agent.md +++ b/agents/onboarding-agent.md @@ -112,9 +112,24 @@ After answers, write `business-references.md` to the data directory. ### Phase 6: Fri kontekst (`org/free-context.md`) — VALGFRI -Et enkelt fritekst-felt for alt de strukturerte spørsmålene ikke fanget. Still ÉTT åpent spørsmål (vanlig prompt, ikke AskUserQuestion): +Et fritekst-felt for alt de strukturerte spørsmålene ikke fanget. Dette er ofte den enkeltkategorien som gjør rådene mest treffsikre — så ikke still spørsmålet blankt. **Du skal coache brukeren** på hva som hører hjemme her og hva de trygt kan hoppe over. Presenter de to listene under (kort, i prosa) FØR det åpne spørsmålet, slik at brukeren vet hva som er verdt å nevne — og ikke kaster bort tid på det som ikke hjelper. -> «Er det noe annet du vil at AI Architect skal vite om virksomheten din? F.eks. pågående initiativer, smertepunkter, tidligere AI-/sky-hendelser, strategiske føringer, eller preferanser — alt som gjør rådene mer treffsikre. (Valgfritt — trykk enter / skriv «hopp over» for å hoppe over.)» +**Hva som typisk hører hjemme her** (nevn disse som eksempler til brukeren): +- Pågående eller planlagte AI-/sky-initiativer, og hvor de står +- Konkrete smertepunkter eller flaskehalser dere vil at AI skal løse +- Tidligere AI-/sky-hendelser, mislykkede piloter eller lærdommer +- Strategiske føringer, veikart eller politiske/organisatoriske rammer +- Leverandør- eller teknologi-preferanser og -forbud (f.eks. «ikke OpenAI direkte», «kun EU-region») +- Bransje- eller virksomhetsspesifikke forhold som ikke passet inn i kategoriene over + +**Hva du vanligvis kan hoppe over her** (si dette eksplisitt så brukeren ikke gjentar seg): +- Alt som allerede er fanget i de fem strukturerte kategoriene (sektor, lisens, dataklassifisering, plattformvalg osv.) — ikke gjenta det +- Generell AI-synsing uten konkret virksomhetsrelevans +- Passord, nøkler, secrets eller sensitive personopplysninger — slikt skal ALDRI inn her + +Still deretter ÉTT åpent spørsmål (vanlig prompt, ikke AskUserQuestion): + +> «Er det noe annet du vil at AI Architect skal vite om virksomheten din? Se gjerne på listen over — alt som gjør rådene mer treffsikre. (Valgfritt — trykk enter / skriv «hopp over» for å hoppe over.)» - **Hvis brukeren gir tekst:** skriv `free-context.md` til datakatalogen med brukerens prosa gjengitt ordrett (ikke omskriv eller forkort): diff --git a/tests/test-onboarding-parity.sh b/tests/test-onboarding-parity.sh index 8d1e990..c8a1675 100755 --- a/tests/test-onboarding-parity.sh +++ b/tests/test-onboarding-parity.sh @@ -24,7 +24,7 @@ if [ ! -f "$AGENT" ]; then exit 1 fi -init_suite "Onboarding Privat-sektor-paritet (K4)" +init_suite "Onboarding-agent kildesjekk (K4-paritet + Phase 6 guided-prose)" # === Forgrening: sektortype velges først og styrer oppfølgingen === assert_matches_pattern "$AGENT" "Sektortype.*Offentlig sektor, Privat sektor" \ @@ -52,6 +52,27 @@ done assert_matches_pattern "$AGENT" "ALDRI private virksomheter om Offentleglova" \ "Private spørres ALDRI Offentleglova/Arkivloven/Forvaltningsloven" +# === Spor E krav 2: Phase 6 guided-prose (coaching) === +# Operatør-direktiv S39 (memory: onboarding-quality-bar): fri-kontekst-fasen skal +# ikke bare stille ÉtT blankt spørsmål — den skal COACHE brukeren på hva som typisk +# hører hjemme og hva som trygt kan hoppes over, så fri-konteksten faktisk gjør +# rådene mer treffsikre (multiplikator-effekten). Vi asserterer mot agent-kilden. +assert_matches_pattern "$AGENT" "coache? brukeren" \ + "Phase 6 instruerer agenten om å coache brukeren (ikke bare stille blankt spørsmål)" +assert_matches_pattern "$AGENT" "[Pp]resenter de to listene" \ + "Phase 6 ber agenten presentere coaching-listene for brukeren" +assert_matches_pattern "$AGENT" "typisk hører hjemme" \ + "Phase 6 lister hva som typisk bør med (inkluderings-coaching)" +assert_matches_pattern "$AGENT" "vanligvis kan hoppe over" \ + "Phase 6 lister hva som vanligvis kan hoppes over (ekskluderings-coaching)" +assert_matches_pattern "$AGENT" "allerede.*fanget i de fem strukturerte kategori" \ + "Phase 6 ber bruker ikke gjenta det de fem strukturerte kategoriene alt fanget" +assert_matches_pattern "$AGENT" "(secrets|sensitive personopplysninger).*ALDRI" \ + "Phase 6 advarer mot å lime inn secrets/sensitive personopplysninger" +# Regresjon: fri-konteksten lagres fortsatt ordrett (ikke omskrevet/forkortet) +assert_matches_pattern "$AGENT" "ordrett" \ + "Phase 6 lagrer fortsatt brukerens prosa ordrett (regresjonsvakt)" + # === Orkestratoren er sektor-nøytral (delegerer, hardkoder ikke offentlig) === if [ -f "$ORCH" ]; then if grep -qE "Onboarding-agenten styrer selve intervjuet" "$ORCH"; then