#!/bin/bash # test-onboarding-parity.sh — K4 (privat-sektor-paritet) regresjonsvakt for onboarding. # # Låser audit §5 punkt #1 (devils-advocate-audit-2026-06-18.md:167): en privat # virksomhet skal kunne fullføre onboarding UTEN å velge «Annet» på sektor, med en # relevant (privat) reguleringsliste, og uten å bli spurt rene offentlig-sektor-lover. # # Onboarding-intervjuet er interaktivt (AskUserQuestion) → ingen fixture-fangst som de # andre output-testene. Vi asserterer derfor mot KILDEN (agents/onboarding-agent.md + # commands/onboard.md): forgreningen og de private alternativene må være til stede. set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" source "$SCRIPT_DIR/lib/e2e-helpers.sh" PLUGIN_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" # Tillat override (rød-fase-diskrimineringsbevis kjører testen mot en strippet kopi). AGENT="${ONBOARDING_AGENT_FILE:-$PLUGIN_ROOT/agents/onboarding-agent.md}" ORCH="${ONBOARDING_ORCH_FILE:-$PLUGIN_ROOT/commands/onboard.md}" if [ ! -f "$AGENT" ]; then echo "ERROR: Onboarding agent not found: $AGENT" exit 1 fi init_suite "Onboarding Privat-sektor-paritet (K4)" # === Forgrening: sektortype velges først og styrer oppfølgingen === assert_matches_pattern "$AGENT" "Sektortype.*Offentlig sektor, Privat sektor" \ "Sektortype forgrener offentlig/privat på toppnivå" assert_matches_pattern "$AGENT" "forgren intervjuet" \ "Eksplisitt instruks om å forgrene intervjuet på sektortype" # === K4 kjerne: privat virksomhet trenger IKKE velge «Annet» på sektor === # Den private sektor-greinen må liste navngitte private sektorer. assert_matches_pattern "$AGENT" "Hvis Privat sektor.*Finans/bank/forsikring" \ "Privat sektor-grein lister Finans/bank/forsikring (bank slipper «Annet»)" for sektor in "Industri/produksjon" "Handel" "Energi" "Telekom"; do assert_matches_pattern "$AGENT" "Hvis Privat sektor.*${sektor}" \ "Privat sektor-grein lister ${sektor}" done # === K4 kjerne: relevant privat reguleringsliste === for reg in "DORA" "Finansforetaksloven" "Finanstilsynets IKT-forskrift" \ "Verdipapirhandelloven" "Hvitvaskingsloven"; do assert_matches_pattern "$AGENT" "$reg" \ "Privat reg-sett inneholder ${reg}" done # === Forgrening verner private mot rene offentlig-sektor-lover === assert_matches_pattern "$AGENT" "ALDRI private virksomheter om Offentleglova" \ "Private spørres ALDRI Offentleglova/Arkivloven/Forvaltningsloven" # === Orkestratoren er sektor-nøytral (delegerer, hardkoder ikke offentlig) === if [ -f "$ORCH" ]; then if grep -qE "Onboarding-agenten styrer selve intervjuet" "$ORCH"; then pass "Orkestrator delegerer intervjuet til agenten (sektor-nøytral)" else warn "Orkestrator: fant ikke delegerings-note (sjekk onboard.md)" fi fi print_summary