feat(ms-ai-architect): v1.11.0 Sesjon 2 — design-system 100%-adoption (Fase 4-6) [skip-docs]

Migrerer alle 6 PARALLEL CSS-navn i playground HTML til DS-konvensjon:
- .topbar*           -> .app-header*               (DS components.css)
- .residual-pair*    -> .pair-before-after*        (DS components-tier3.css; data-severity -> BEM modifier)
- .command-card*     -> .card + .card__*           (DS base.css + tier3-supplement; outer + 4 sub-elementer)
- .catalog-card*     -> .card + .card__*           (samme; outer + 7 sub-elementer)
- .screen-tabs/.screen-tab/.screen
                     -> .tab-list/.tab/.tab-panel  (DS tier3-supplement; data-active="..." -> [hidden]-attr)
- .pyramide-desc*    -> .stack-sm + .pyramide-tier-detail*
                                                   (DS tier3-supplement section 22+23)

Trimmer plugin-local <style>-blokk fra 202 -> 127 linjer (37% reduksjon):
- Sletter inline duplikater av DS v0.3 sections 14-15 (.page__*, .key-stats, .key-stat--{level})
- Sletter inline duplikater av sections 18-19 (.top-risks, .recommendation-card)
- Refaktorerer renderPageShell + renderKeyStatsGrid til DS markup-pattern
  (.page__header-main + .page__header-aside + .page__title h1; .key-stat--{level} BEM)

Beholdt eksplisitt plugin-local (med dokumentasjon i CSS-kommentarer):
- .verdict-pill (domain-semantikk go/block — distinkt fra DS .verdict-pill-lg severity-band)
- .scenario-card[data-status="met/partial/missing"] (DS har kun "winner")
- .read-more-block + .suppressed-panel (native <details>; DS bruker JS-toggled aria-expanded)
- .onboarding-*, .home-*, .project-*, .modal*, .command-form*, .catalog-cards (plugin-spesifikk layout)

Visuell oppgradering (Fase 6):
- Eyebrow-label "PROSJEKTER · X av X" over home-projects seksjon
- .card--severity-{positive/medium/critical} venstre-border på rapport-cards basert på
  parsed.verdict (go/approved/allow=positive, go-with-conditions/warning=medium,
  block/failed=critical) — visuell signal for rapport-status i project surface
- AI Act-pyramide bredde min-width: 480px + tier-label font-size: var(--font-size-md)
  for å fjerne tekstklipping ("Uakseptabe...", "klassifisert"). Responsive @media for <560px.
- App-header-restruktur: brand + breadcrumb + spacer + actions (DS pattern), ikke flex-between
- .stack-lg vertikalt rytme-utility på home/project/catalog body i renderPageShell

Tests oppdatert for nye DS-navn:
- Step 10: residual-pair -> pair-before-after assert
- Step 12: screen-tabs -> tab-list assert (class="tab-list" eksplisitt)

Verification: 201 + 70 + 7 = 278/278 PASS, 0 FAIL.
6 intentional plugin-local residuals (1 .catalog-cards container + 4 .read-more-block + 1 .suppressed-panel)
— alle dokumenterte i inline <style>.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-05-04 16:46:40 +02:00
commit 31aed40308
3 changed files with 168 additions and 216 deletions

View file

@ -407,7 +407,8 @@ for fn in $SC8_RENDERERS_A; do
done
# -------------------------------------------------------
# 25b. Step 10 must_contain — kanban-board + residual-pair
# 25b. Step 10 must_contain — kanban-board + pair-before-after
# (v1.11.0: residual-pair migrert til DS-navn pair-before-after)
# -------------------------------------------------------
kanban_count=$( { grep -cE "kanban-board|kanban-col" "$HTML_FILE" || true; } | tr -d ' ')
if [ "${kanban_count:-0}" -ge 1 ]; then
@ -416,11 +417,11 @@ else
fail "kanban-board markup mangler (Step 10 must_contain krever >=1)"
fi
residual_count=$( { grep -cE "residual-pair" "$HTML_FILE" || true; } | tr -d ' ')
if [ "${residual_count:-0}" -ge 1 ]; then
pass "residual-pair markup til stede ($residual_count treff, Step 10 must_contain)"
pair_count=$( { grep -cE "pair-before-after" "$HTML_FILE" || true; } | tr -d ' ')
if [ "${pair_count:-0}" -ge 1 ]; then
pass "pair-before-after markup til stede ($pair_count treff, Step 10 must_contain)"
else
fail "residual-pair markup mangler (Step 10 must_contain krever >=1)"
fail "pair-before-after markup mangler (Step 10 must_contain krever >=1)"
fi
# -------------------------------------------------------
@ -473,7 +474,8 @@ for fn in $SC8_RENDERERS_C; do
done
# -------------------------------------------------------
# 25f. Step 12 must_contain — mat-ladder + screen-tabs + _consumer
# 25f. Step 12 must_contain — mat-ladder + tab-list + _consumer
# (v1.11.0: screen-tabs migrert til DS-navn tab-list)
# -------------------------------------------------------
matladder_count=$( { grep -cE "mat-ladder" "$HTML_FILE" || true; } | tr -d ' ')
if [ "${matladder_count:-0}" -ge 1 ]; then
@ -482,11 +484,11 @@ else
fail "mat-ladder markup mangler (Step 12 must_contain krever >=1)"
fi
screentabs_count=$( { grep -cE "screen-tabs" "$HTML_FILE" || true; } | tr -d ' ')
if [ "${screentabs_count:-0}" -ge 1 ]; then
pass "screen-tabs markup til stede ($screentabs_count treff, Step 12 must_contain)"
tablist_count=$( { grep -cE 'class="tab-list"' "$HTML_FILE" || true; } | tr -d ' ')
if [ "${tablist_count:-0}" -ge 1 ]; then
pass "tab-list markup til stede ($tablist_count treff, Step 12 must_contain)"
else
fail "screen-tabs markup mangler (Step 12 must_contain krever >=1)"
fail "tab-list markup mangler (Step 12 must_contain krever >=1)"
fi
consumer_count=$( { grep -cE "_consumer" "$HTML_FILE" || true; } | tr -d ' ')