feat(llm-security): playground v7.6.0 — Tier 3 referanse-case komplett

Komplett integrasjon av playground-design-system Tier 3-komponenter
i playground-en. Playground er nå referanse-case for hva DS-en kan
levere når alle komponenter brukes som tilsiktet. Levert over 5 sesjoner
med atomic commits per sesjon.

Endringer i v7.6.0 (fase 1-7):
- Fjernet ~30 duplikat-CSS-deklarasjoner (DS vinner cascade)
- Page-shell harmonisert (page__header-klynge på alle 4 overflater)
- Scope-identitet via badge--scope-security
- verdict-pill-lg erstatter custom verdict-pill
- Onboarding wizard via Tier 3 form-progress + fp-step
- Tier 3 spesialkomponenter integrert:
  - tfa-flow + tfa-leg + tfa-arrow (toxic-flow-rapport)
  - mat-ladder + mat-step (posture-modenhet)
  - suppressed-group (narrative-audit)
  - codepoint-reveal + cp-tag/cp-zw/cp-bidi (UNI-funn)
  - top-risks + top-risk[data-severity] (rangert funn-listing)
  - recommendation-card[data-severity] (clean/harden/audit/posture/
    pre-deploy/plugin-audit advisory)
  - risk-meter (band-visualisering 0-100 på 5 archetypes)
  - card--severity-{level} (findings-cards modifier)

5 nye DS-helpers + mapSeverityToCardLevel + parseNarrativeAudit.
renderRecommendationsList utvidet med severity-param. renderHarden-rewrite
fra diff-row-struktur til recommendation-card med action-mapping.

Ingen scanner/hook-atferd berørt. Kun visuelt og strukturelt.
A11Y-rapport oppdatert (WCAG 2.1 AA bekreftet, severity-soft fargepar
verifisert, semantiske elementer erstatter generic div).

Versjon bumpet v7.5.0 → v7.6.0:
- plugins/llm-security/.claude-plugin/plugin.json
- plugins/llm-security/package.json
- plugins/llm-security/README.md (badge + Playground-seksjon + history)
- plugins/llm-security/CLAUDE.md (header + ny v7.6.0-blurb)
- plugins/llm-security/CHANGELOG.md ([7.6.0] entry)
- README.md (rot — llm-security-rad + history-bullet)
- plugins/llm-security/playground/llm-security-playground.html (footer)

Filendring playground.html totalt over 5 sesjoner: 10209 → 10677 linjer
(+468 netto). Per-sesjons-commits: 9ef0c48 (Sesjon 1, fase 1-2),
2481133 (Sesjon 2, fase 3-4), fbda041 (Sesjon 3, fase 5a-d),
e9e5cee (Sesjon 4, fase 5e-h).

Verifisering bekreftet:
- 18/18 renderere passerer regresjons-smoke-test mot dft-komplett-demo
- Grep-criteria oppfylt: top-risks 5, recommendation-card 32,
  risk-meter 7 (5 archetypes), card--severity- 4, verdict-pill-lg 20,
  fp-step 12, badge--scope-security 5, tfa-flow 3, mat-ladder 2,
  suppressed-group 8, codepoint-reveal 12
- Window-globaler intakt, JS parse OK, demo-state JSON parse OK

Kjent begrensning: parsed.findings er tom for deep-scan/audit demo-
fixturer (parser-begrensning, defensiv design — dokumentert i CHANGELOG
+ A11Y-rapport, sporet for v7.6.x patch).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-05-06 14:12:59 +02:00
commit f006143fb8
9 changed files with 309 additions and 60 deletions

View file

@ -6,6 +6,117 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
## [Unreleased]
## [7.6.0] - 2026-05-06
Playground Tier 3-referanse-case. v7.6.0 hever playgroundet
(`playground/llm-security-playground.html`) til en visuelt og strukturelt
fullført referanse-implementasjon for `shared/playground-design-system/`
Tier 3-supplementet. Ingen scanner- eller hook-behavior-changes — purely
additive surface og struktur. Levert over 5 sesjoner med atomic commits
per sesjon (rollback-vennlig).
### Added
- **Tier 3 spesialkomponenter integrert i renderere:**
- `tfa-flow` + `tfa-leg` + `tfa-arrow``renderScan` + `renderDeepScan`
— visualiserer lethal-trifecta-kjede (untrusted input → sensitive
access → exfil sink) når `findings` inneholder en trifecta-pattern
(regex-match på category/description/owasp). Defensiv design: returnerer
tom streng hvis ingen finding matcher. Hver leg er `<button>`-element
med `aria-label` + `:focus-visible` (DS).
- `mat-ladder` + `mat-step``renderPosture` — 5-trinns modenhets-stige
(Initial/Aware/Defensive/Mature/Optimized) med terskler 0/25/50/75/95%
PASS. Beregner currentIdx fra `posture_score / posture_applicable`.
- `suppressed-group``renderScan` + `renderDeepScan` — narrative-audit
fra `summary.narrative_audit.suppressed_findings` (v7.1.1). Ny parser-
helper `parseNarrativeAudit(md)` ekstraherer "**Suppressed signals:**
N (reason: count examples, ...)" fra raw_markdown.
- `codepoint-reveal` + `cp-tag`/`cp-zw`/`cp-bidi``renderMcpInspect`
side-ved-side reveal for Unicode-steganografi (synlig form vs. dekoded
codepoints). Detection: U+200B-D|FEFF|2060|180E → `cp-zw`,
U+202A-E|2066-9 → `cp-bidi`, andre non-ASCII → `cp-tag`.
- `top-risks` + `top-risk``renderScan`, `renderDeepScan`,
`renderPluginAudit`, `renderPosture`, `renderAudit` — rangert top-funn-
listing med `data-severity`-tinted left-border. Filtrerer info-funn
(observability-noise) og viser de 5 høyeste alvorlighetsnivåene.
Semantisk `<ol>`/`<li>` for skjermlesere.
- `recommendation-card[data-severity]` utvidet på alle inline-bruk:
Trust-verdict (severity fra verdict-tekst), Quick wins (positive),
Action plan tiers (immediate→critical / high→high / medium→medium),
Vilkår å løse (high), `renderClean` per-bucket advisory-cards
(auto→positive / semi-auto→medium / manual→high / suppressed→low),
`renderHarden` intro snapshot + diff-rows med action-mapping
(CREATE→positive / APPEND→medium / MERGE→low / SKIP→low).
- `risk-meter` (full band-visualisering 0-100) brukes nå på 5
archetypes: scan, deep-scan, plugin-audit, audit, red-team. Båndene
Low/Medium/High/Critical/Extreme har synlige labels.
- `card--severity-{level}` modifier (critical/high/medium/low/info) på
`findings__item`-cards i `renderFindingsBlock` (delt helper) +
inline-bruk i `renderAudit` kategori-cards og `renderDiff` row-items.
- **Identitet og wizard-mønster (Sesjon 2):**
- `badge--scope-security` som identitets-chip på prosjekt-cards,
rapport-cards og app-header.
- `verdict-pill-lg` (med `__verdict` + `__sub`) erstatter custom
`.verdict-pill` på alle 18 rapport-typer.
- DS Tier 3 `form-progress` + `fp-step` (med `__bar`/`__bar-fill`/
`__num`/`__name`) erstatter playground-ens lokale
`form-progress__step`-implementasjon i onboarding-wizard.
- **Foundation (Sesjon 1):**
- DS `page__header`/`page__eyebrow`/`page__title`/`page__lede`/
`page__meta` på alle 4 overflater (onboarding, home, catalog, project).
Hero-mønster på home med `clamp(36px, 5vw, 56px)` editorial type-
hierarki.
- **Helpers og parser-utvidelser:**
- `renderToxicFlow(findings)`, `renderMatLadder(categories, score, applicable)`,
`renderSuppressedGroup(data)`, `renderCodepointReveal(codepoints)`,
`renderTopRisks(findings, n)` — fem nye DS-helpers.
- `mapSeverityToCardLevel(input)` — normaliserer severity-strenger
OG action-types (CREATE/APPEND/MERGE/SKIP) til DS Tier 3-konvensjonene.
- `renderRecommendationsList(recs, label, severity)` — tredje param
styrer `data-severity` (default 'low').
- `parseScan` + `parseDeepScan` utvidet med `narrative_audit`-felt.
- **A11Y-rapport oppdatert** (`playground/A11Y-RAPPORT.md`) med Tier 3-
integrasjonene, ARIA-egenskaper og severity-soft fargepar-kontrast.
### Changed
- **Slettet ~30 duplikat-CSS-deklarasjoner** fra `<style>`-blokken
(`.app-shell`, `.tab-list`, `.fleet-tile*`, `.form-progress*`, `.eyebrow`,
`.page__*`, `.key-stat*`, `.field-*`, `.multi-select`, `.checkbox-row`,
`.required-mark`, `.expansion*`, `.stack-*`, `.card__*`). DS Tier 3-
supplementet vinner cascade-en — eliminerer subtile visuelle drift mellom
playground og referanse-scenarioer.
- **`renderHarden`-rewrite:** diff-rows konvertert fra
`<div class="diff__row"><div class="diff__cell">…</div></div>` til
`<section class="recommendation-card" data-severity="…">…</section>`.
Severity-tinted advisory-struktur over per-rad-diff. Fall-back til
`<div class="diff">`-wrapper kan reintroduseres hvis print-stylesheet
brytes (ikke observert per 2026-05-06).
- Ingen scanner- eller hook-behavior-changes — purely additive surface.
### Known limitations
- **`parsed.findings` er tom array for `deep-scan` og `audit` demo-fixturer.**
Parser ekstraherer ikke findings fra raw_markdown for disse to rapport-
typene, selv om markdown-en lister findings i scanner-resultat-seksjoner.
Konsekvens: `renderTopRisks` og `renderFindingsBlock` returnerer defensivt
tom HTML for disse to demo-rapportene — `card--severity-{level}` og
`top-risks` rendrer ikke i demo-en. Korrekt arkitektur (tomme findings
→ tom HTML), men demo-en mister noe showcase-verdi. Sporet for v7.6.x
patch.
### Verification
- 18/18 renderere passerer regresjons-smoke-test mot `dft-komplett-demo`-
fixturer (vm-basert dummy-DOM, alle forventede markører til stede).
- Grep-criteria oppfylt: `top-risks` 5, `recommendation-card` 32,
`risk-meter` 7 (5 archetypes), `card--severity-` 4, `verdict-pill-lg`
20, `fp-step` 12, `badge--scope-security` 5, `tfa-flow` 3, `mat-ladder`
2, `suppressed-group` 8, `codepoint-reveal` 12.
- Window-globaler intakt (10 forventede), JS parse OK (`node --check`),
demo-state JSON parse OK (3 prosjekter, 18 rapporter).
- Filendring totalt over 5 sesjoner: 10209 → 10677 linjer (+468).
## [7.5.0] - 2026-05-05
### Added