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

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