feat(ms-ai-architect): Spor E krav 2 — onboarding Phase 6 guided-prose (coaching) (TDD) [skip-docs]

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) <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-06-23 18:48:40 +02:00
commit d6a60ca480
2 changed files with 39 additions and 3 deletions

View file

@ -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):

View file

@ -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