fix(ms-ai-architect): #7d privat-sektor-paritet — sektor-parametrisering + onboarding-forgrening + 2 nye kommandoer (audit §5)

Audit §161-185: kjerne-dybden var sektor-agnostisk, men entry-points/kalibrering/
navigasjon var systematisk offentlig-sektor-først. Operatørvalg: full audit (kjerne
+ begge nye kommandoer). Telling 27→29 kommandoer. Ingen versjonsbump (→ #9-release).

Mekanisk kjerne:
- Sektor parametrisert i 6 kmd (classify/dpia/ros/review default nøytral m/offentlig-
  spesialisering; utredning beholder utredningsinstruksen + peker privat til :design;
  review får privat/regulert-gren DORA/Finanstilsynet). frontmatter-desc for review
  synket i CLAUDE/help.
- FRIA-scope KORRIGERT (verifisert mot AI Act Art. 27(1), WebSearch 2026-06-18):
  obligatorisk for (a) offentligrettslige organer, (b) private som leverer offentlige
  tjenester, (c) private deployere i kredittscoring (UNNTATT svindeldeteksjon) +
  livs-/helseforsikringsprising. Ikke lenger feilrådet som rent offentlig-verktøy.
- onboarding-agent forgrenet: sektortype (offentlig/privat) → private sektor-valg
  + privat reg-sett (DORA/Finansforetaksloven/IKT-forskrift/Verdipapirhandelloven);
  stiller ALDRI private om Offentleglova/Arkivloven. Sektortype skrevet til org-fil.
- requirements detekterer finans → DORA/Finanstilsynet (betinget §3-sjekkliste).

Nye kommandoer (refererer kun eksisterende kjerne-KB → ingen nye orphans):
- /architect:design — sektor-nøytralt Solution Architecture Document (mellombane
  mellom samtale og full utredning).
- /architect:vendor — tredjeparts/SaaS due diligence (dataresidens, sub-prosessorer,
  DPA, Schrems II/EDPB-TIA, AI Act-deployer).

Navigasjon/wiring:
- README: privat-enterprise-arbeidsflyt (eksempel 5) + DORA/FRIA-nyanse + design/vendor
  i tabeller + "Beyond Public Sector"-note.
- help.md: privat-bane i arbeidsflyt + design/vendor + manglende kb-update lagt til.
- CLAUDE.md-tabell: design/vendor + synket review/frimpact-desc.
- playground: katalog-oppføringer (produces_report:false), SHARED.sector utvidet med
  private sektorer, 2 privat-seeds (fraud-detection FRIA-unntatt + kredittscoring
  FRIA-pliktig). Telling 25/27→29 i playground/docs/README/test.

Tester: validate 239 PASS · playground v3 223 static / 390 kombinert · kb-integrity
115/115 · run-e2e alle suiter — 0 FAIL. CHANGELOG-«24 commands» bevart (historiske notater).

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:
Kjell Tore Guttormsen 2026-06-18 18:27:51 +02:00
commit 6e1fc6d37c
16 changed files with 291 additions and 33 deletions

View file

@ -805,7 +805,7 @@
// COMMAND CATALOG (Step 4)
// ============================================================
//
// Kanonisk single-source-of-truth for alle 25 commands. Driver:
// Kanonisk single-source-of-truth for alle 29 commands. Driver:
// - Step 5/8: skjema-render via input_fields[]
// - Step 9: katalog-UI gruppert på category
// - Step 11: parser-routing via report_archetype
@ -834,7 +834,7 @@
// som bruker det.
const SHARED = {
organisation_name: { id: 'organisation_name', label: 'Virksomhet', type: 'text', from: 'shared', shared_path: 'organization.name' },
sector: { id: 'sector', label: 'Sektor', type: 'select', from: 'shared', shared_path: 'organization.sector', options: ['Statlig', 'Kommunal', 'Fylkeskommune', 'Helseforetak', 'Undervisning', 'Annet'] },
sector: { id: 'sector', label: 'Sektor', type: 'select', from: 'shared', shared_path: 'organization.sector', options: ['Statlig', 'Kommunal', 'Fylkeskommune', 'Helseforetak', 'Undervisning', 'Finans', 'Industri', 'Handel', 'Energi', 'Telekom', 'Annet'] },
regulatory_requirements: { id: 'regulatory_requirements', label: 'Regulatoriske krav', type: 'multiSelect', from: 'shared', shared_path: 'organization.regulatory_requirements', options: ['Personopplysningsloven/GDPR', 'Sikkerhetsloven', 'Arkivloven', 'Forvaltningsloven', 'Offentleglova', 'Helseregisterloven', 'Annet'] },
cloud_platform: { id: 'cloud_platform', label: 'Skyplattform', type: 'multiSelect', from: 'shared', shared_path: 'technology.cloud_platform', options: ['Azure', 'M365', 'Power Platform', 'On-prem', 'Hybrid', 'Annet'] },
license_type: { id: 'license_type', label: 'Lisenstype', type: 'select', from: 'shared', shared_path: 'technology.license_type', options: ['E3', 'E5', 'F1/F3', 'A3/A5', 'G3/G5', 'Annet'] },
@ -1125,7 +1125,7 @@
]
},
// ===== DOCUMENTATION (7) =====
// ===== DOCUMENTATION (9) =====
{
id: 'anskaffelse',
category: 'documentation',
@ -1267,8 +1267,50 @@
{ id: 'use_case', label: 'Use case', type: 'textarea', from: 'local' }
]
},
{
id: 'design',
category: 'documentation',
label: 'Solution Architecture Document (SAD)',
description: 'Sektor-nøytralt arkitekturdokument: kontekst, krav/NFR, alternativer, valgt design, risiko, veikart.',
argument_hint: '[løsningsnavn] for [bruksscenario]',
calls_agent: null,
kb_files: ['decision-trees.md', 'security.md', 'cost-models.md'],
produces_report: false,
report_archetype: null,
report_root_class: null,
renderer: null,
input_fields: [
SHARED.organisation_name,
SHARED.sector,
{ id: 'solution_name', label: 'Løsningsnavn', type: 'text', from: 'local' },
{ id: 'use_case', label: 'Bruksscenario', type: 'textarea', from: 'local' },
{ id: 'nfr', label: 'Ikke-funksjonelle krav (NFR)', type: 'textarea', from: 'local' },
{ id: 'constraints', label: 'Begrensninger', type: 'textarea', from: 'local' }
]
},
{
id: 'vendor',
category: 'documentation',
label: 'Leverandørvurdering (tredjepart/SaaS)',
description: 'Due diligence for ekstern SaaS/AI-leverandør: dataresidens, sub-prosessorer, DPA, Schrems II, AI Act-deployer.',
argument_hint: '[leverandør/tjeneste] for [bruksscenario]',
calls_agent: null,
kb_files: ['data-residency-audit-monitoring.md', 'ai-act-deployer-obligations.md', 'security.md'],
produces_report: false,
report_archetype: null,
report_root_class: null,
renderer: null,
input_fields: [
SHARED.organisation_name,
SHARED.sector,
{ id: 'vendor_name', label: 'Leverandør/tjeneste', type: 'text', from: 'local' },
{ id: 'use_case', label: 'Bruksscenario', type: 'textarea', from: 'local' },
{ id: 'data_to_vendor', label: 'Data som flyter til leverandøren', type: 'textarea', from: 'local' },
{ id: 'deployment_model', label: 'Driftsmodell', type: 'select', from: 'local', options: ['SaaS (multi-tenant)', 'Dedikert', 'Hybrid', 'On-prem'] }
]
},
// ===== TOOL (7) — ingen rapport, kun skjema + output-kopiering =====
// ===== TOOL (8) — ingen rapport, kun skjema + output-kopiering =====
{
id: 'architect',
category: 'tool',
@ -1856,7 +1898,7 @@
'<button type="button" class="tracks__card tracks__card--expert" data-action="goto-catalog">' +
'<span class="tracks__card-icon" aria-hidden="true"></span>' +
'<h3 class="tracks__card-title">Command-katalog</h3>' +
'<p class="tracks__card-desc">Bla i alle 25 commands gruppert på kategori. Generer pipeline-strenger uten et prosjekt.</p>' +
'<p class="tracks__card-desc">Bla i alle 29 commands gruppert på kategori. Generer pipeline-strenger uten et prosjekt.</p>' +
'<span class="tracks__card-meta"><span>' + CATALOG.commands.length + ' commands</span><span class="tracks__card-cta">Bla →</span></span>' +
'</button>' +
'</div>'
@ -1967,7 +2009,9 @@
{ id: 'copilot-extension', name: 'Copilot-utvidelse for M365' },
{ id: 'customer-service', name: 'Kundeservice-chatbot' },
{ id: 'intelligent-search', name: 'Intelligent søk på tvers av fagsystemer' },
{ id: 'reporting', name: 'AI-assistert rapportering' }
{ id: 'reporting', name: 'AI-assistert rapportering' },
{ id: 'fraud-detection', name: 'Bank fraud-detection (finans, DORA — FRIA-unntatt)' },
{ id: 'credit-scoring', name: 'Kredittscoring (finans, FRIA-pliktig privat deployer)' }
];
// v1.15.0: currentProjectTab beholdes som zombie for ACTIONS['project-tab']-
@ -2116,7 +2160,7 @@
// CATALOG SURFACE (Step 9)
// ============================================================
//
// 25 commands gruppert i 5 .expansion-grupper (CATALOG.categories) med
// 29 commands gruppert i 5 .expansion-grupper (CATALOG.categories) med
// søke-input som filtrerer på id+label+description+argument_hint.
// Hver kategori-expansion rendrer en .catalog-cards-grid med kort.
// "Åpne skjema" på et kort åpner renderCommandForm() i modal.