6e1fc6d37c
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
2026-06-18 18:27:51 +02:00
20c1be6531
fix(ms-ai-architect): #7c wire foreldreløse deliverable-KB — nye kommandoer businesscase + anskaffelse (I)
...
Audit P2 I. 6 foreldreløse deliverable-KB-er surfaces nå (var skrevet/betalt for, ikke nåbare).
Operatørvalg: dedikerte kommandoer (audit-primær), ikke kun dokumentasjon. Telling 25→27 kommandoer.
Nye kommandoer:
- businesscase.md → samfunnsokonomisk-analyse-nnv.md + gevinstrealisering-dfo-methodology.md (NNV + DFØ 5-stegs gevinst)
- anskaffelse.md → anskaffelser-ai-procurement-framework.md (kravspec, leverandørevaluering, terskelverdi)
Utvidet eksisterende:
- compare.md: weighted multi-kriterie-modus (alternativanalyse-methodology.md) ved 3+ alternativer / --weighted
- cost.md: kapasitet-/gjennomførbarhetssteg (gpu-compute-sizing.md + capacity-feasibility-benchmarks.md) ved --capacity
De-orphaning (kb-integrity måler orphan via SKILL.md/agents, ikke kommandofiler):
- ms-ai-governance/SKILL.md: ny seksjon 1.4 Beslutningsgrunnlag (3 referanser)
- ms-ai-advisor/SKILL.md: alternativanalyse + capacity-feasibility
- ms-ai-security/SKILL.md: gpu-compute-sizing
→ alle 6 de-orphaned (kb-integrity warnings 268→262)
Registrering/docs: help.md + README + CLAUDE.md-tabell + playground-katalog (2 produces_report:false-
oppføringer, gjenbruker ikke 14-parser/17-renderer-kanonen) + docs/playground.md (25→27) + test 25→27.
validate 231 PASS · playground v3 221 PASS · e2e alle suiter · kb-integrity 115/115 — 0 FAIL overalt.
NB: README:358/418/427 har pre-eksisterende «24 commands»-drift (uavhengig av denne endringen) — flagget for #8 .
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REiKFhP4w6xGXXqWKpPCJJ
2026-06-18 17:50:06 +02:00
9601c6a93b
feat(ms-ai-architect): v1.15.0 — playground v3 project-view integration
...
Erstatter v2 project-surface (screen-tabs + category-tabs + per-command paste-cards)
med v3 renderProjectView (sidebar med 17 artifacts + main-area + import-modal overlay).
renderActive() ruter project-surface til renderProjectSurfaceV3() som wrapper
renderProjectView + topbar + app-shell.
V2-surface helt fjernet:
- renderProjectSurface (152 linjer)
- renderCommandSubCard (87 linjer)
- rehydratePasteImports (15 linjer)
- ACTIONS['project-screen'], currentProjectScreen
- 5 v2-CSS-klasser: .project-tabs, .project-tab*, .sub-zone, .paste-import-row, .project-header__*, .command-cards
Zombie-handlers beholdt for test-back-compat:
currentProjectTab, ACTIONS['project-tab'], ACTIONS['parse'],
handlePasteImport, window.__handlePasteImport. Unreachable fra v3 DOM
men nødvendige for test-playground-v3.sh + test-playground-parsers.sh.
2 fingerprint-gap lukket:
- requirements.headers: utvidet med "EU AI Act — Krav" pattern
- license.headers: utvidet med "Lisens-kapabilitetsmatrise" pattern
- KNOWN_GAP_FIXTURES = {} i test-playground-fingerprints.sh
migrateDataVersion utvidet med parserFor (3. arg):
- Demo-state med kun raw_markdown auto-parses til project.artifacts[cid]
- defaultParserFor(cmdId) resolverer PARSERS[archetypeFor(cmdId)]
- 3 bootstrap-callsites oppdatert (cold-load, import, load-demo)
Ship-QA bugfixes funnet via browser-dogfood:
- components-tier4-project-view.css lagt til i <link>-kjeden (var ikke loaded
-> modal-overlay og two-column layout virket ikke)
- renderImportModal setter data-open="true" (DS-kontrakt for display: flex)
Bundler også sesjon 2-4 deliverables som ikke ble committed tidligere:
- shared/playground-design-system v0.6.0 (Tier 4 project-view CSS + 6 tokens)
- ms-ai-architect/playground/vendor/ re-sync til DS v0.6.0
- tests/test-playground-fingerprints.sh (sesjon 4 NY - 32 PASS)
- tests/test-playground-projectview.sh (sesjon 4 NY - 30 PASS)
- tests/test-playground-actions.sh (sesjon 4 NY - 19 PASS)
- tests/test-playground-migrations.sh utvidet (7 -> 16 PASS)
- tests/run-e2e.sh wirer alle 6 playground-suiter
Stats:
- bash tests/run-e2e.sh --playground: 386 PASS, 0 FAIL, 2 WARN (pre-eks)
- bash tests/run-e2e.sh (full): All E2E suites passed
- bash tests/validate-plugin.sh: 219 PASS
Screenshots regenerert til playground/screenshots/v1.15.0/ (24 PNG-er, 12
surfaces x 2 tema). Nye v3-surfaces: project-overview, project-artifact-*,
project-import-modal (viewport-only), project-search.
Docs oppdatert (3 nivåer): README.md (badge + version history),
CHANGELOG.md, CLAUDE.md (playground-seksjon + valideringstabell),
rot-README.md + rot-CLAUDE.md (marketplace-landingen + plugin-index).
.gitignore: ny pattern *.local.html + *.local.json for sesjon-state-filer.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 20:58:51 +02:00
080434d847
refactor(ms-ai-architect): playground v1.14.0 sesjon 3 — risk-rapporter til DS-konvensjon
...
- renderDpia: matrix wrappet i .card med h2
- renderSecurity: ros-layout (matrix+radar), small-multiples-section, top-risks som <ol> i .card
- renderRos: speil renderSecurity (5x5) + summary-grid for top-risks+recommendation
- renderFindingsBlock: fjern .report-meta-band-aid, bruk findings-section + findings__items--standalone
- Legg til .ros-layout, .summary-grid, .findings-section, .small-multiples-section i lokal CSS
- Fjern .top-risks fra defensive layout-block
- test-playground-v3.sh: bytt .findings__list → .findings__items i DS-klasse-asserts
- Style-blokk: 182 → 188 linjer (mål ≤195 nådd)
Refs V1.14.0-AUDIT.local.md sub-batch B + helper-section.
2026-05-08 20:13:00 +02:00
69cc501eba
fix(ms-ai-architect): playground v1.13.0 — visuelle DS-bugs
...
Fix-pakke som speiler llm-security v7.6.1 (commit f9b555a). Samme klasse
visuelle bugs identifisert via parallell DS-analyse av playground-rendrere.
- B1: renderFindingsBlock + renderRequirements bytter <div class="findings">
outer (DS grid 360px+1fr klemte indre struktur til 360px-kolonne, lot
1fr-detail-panel-kolonnen stå tom) til <section class="report-meta">.
BEM-strukturen findings__list > findings__group > findings__items uendret.
- B2: lokal .report-table CSS for 6+ rapporter (Trusler, Kostnadsoversikt,
TCO, Risiko-tabell, Key Metrics) som manglet styling — DS implementerer
ikke klassen. Speilet lokal styling fra llm-security v7.6.1.
- B3: ROS-matrise-bobler bytter <span> til <button type="button"
data-threat-id="..." aria-label="..."> med document-level click-handler
som scroller smooth til tilsvarende rad i Trusler-tabellen og
highlighter raden i 1.6 sek. Lokal CSS for cursor:pointer, hover
scale(1.15), :focus-visible outline.
- B4: renderRadarSvg bumpet 300x300 til 380x380, R fra 100 til 125,
label-offset fra R+25 til R+28, dynamisk text-anchor basert på
horisontal-posisjon for å unngå at bottom-labels overlapper hverandre
ved 6+ akser (typisk for ROS-rapport med 7 risiko-dimensjoner).
- B5: lokal .recommendation-card__body { overflow-wrap: anywhere;
word-break: break-word } for å forhindre at lange single-line tekster
(URLer, owner-tags, dato) skubber innhold ut av viewport i grid-cellen.
tests/test-playground-v3.sh: DS-klasse-assertion oppdatert fra .findings
til .findings__list (BEM-list er fortsatt i bruk; outer grid-container
bevisst fjernet i B1).
Verifisering:
- 22/22 smoke-test PASS (B1-B5 grep-asserts)
- 271/271 playground E2E PASS (201 statisk-struktur + 70 parser-fixtures)
- 219 plugin-validering PASS
- 42 KB-update test PASS
Versjon: v1.12.0 -> v1.13.0 (plugin.json, README badge, README
version-history, CHANGELOG, ROADMAP, TODO, plugin CLAUDE.md
playground-header, root README plugin-list, root CLAUDE.md plugin-list).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-06 14:51:15 +02:00
78dcc6a16f
feat(ms-ai-architect): v1.12.0 manuell KB-refresh — fjern launchd/cron-arkitektur
...
ToS-vurdering konkluderte med at autonom cron-kjøring er unødvendig kompleks
for en solo-fork-and-own-plugin. Apply-fasen krever LLM-resonnering uansett,
så manuell trigger fra en aktiv Claude Code-sesjon er enklere og holder
pluginen klart innenfor Anthropic Consumer Terms paragraf 3 (automated access
only via API key or where explicitly permitted — Claude Code CLI er
eksemptert som offisielt verktøy).
Lagt til:
- commands/kb-update.md — ny /architect:kb-update slash-kommando som driver
poll, endringsrapport, microsoft_docs_fetch-update og commit fra sesjonen.
Argumenter: --skip-discover, --priorities, --dry-run, --single-commit
- Catalog-entry i playground HTML for kb-update (categori: tool, 4 input-felt)
Slettet (Wave 3-5 reversert, ~1500 linjer + 7 testmoduler):
- scripts/install-kb-cron.mjs (cross-OS scheduler-installer)
- scripts/kb-update/weekly-kb-cron.mjs (cron-orkestrator med pre-flight, lock,
backup, claude -p subprocess, post-run verify, rollback)
- scripts/kb-update/templates/ (4 scheduler-templates: launchd plist, systemd
service+timer, Windows ps1 + README)
- scripts/kb-update/lib/auth-mode.mjs (cron-spesifikk auth validation)
- scripts/kb-update/lib/lock-file.mjs (PID+mtime stale-detection)
- scripts/kb-update/lib/cost-estimat.mjs (pre-flight budget-cap)
- 7 testmoduler under tests/kb-update/ for slettet kode
- tests/test-kb-update.sh (Bash-3.2-shim, erstattet av direkte node --test)
Beholdt (utility-laget fortsatt brukbart):
- run-weekly-update.mjs, report-changes.mjs, build-registry.mjs,
discover-new-urls.mjs (KB change-detection-pipelinen)
- lib/atomic-write, lib/backup, lib/cross-platform-paths, lib/log-rotate
- 4 testmoduler (42/42 tester PASS)
Endret:
- hooks/scripts/session-start-context.mjs: fjern kb-update-status.json-overvaaking
- tests/run-e2e.sh --kb-update kaller node --test direkte i stedet for shim
- README.md, CLAUDE.md: KB-vedlikehold-seksjon rewriter for manuell modell
- plugin.json: 1.11.0 -> 1.12.0
- Rot README + CLAUDE.md: ms-ai-architect-versjon bumpet
Schedulering er bevisst utenfor scope og overlatt til brukeren — eventuelle
forks som vil ha periodisk varsling kan sette opp egen cron / launchd /
GitHub Actions som kjører rapport-fasen og varsler om aa kjore
/architect:kb-update i CC-sesjon.
Verifisering:
- bash tests/validate-plugin.sh: 219 PASS, 0 FAIL
- bash tests/run-e2e.sh --kb-update: 42/42 inner + suite PASS
- bash tests/run-e2e.sh --playground: 271/271 PASS (statisk + parsers)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-05 12:03:45 +02:00
a60e3c7cd5
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>
2026-05-04 16:46:40 +02:00
8cbdeb15c1
feat(ms-ai-architect): renderer batch C (econ + docs 8) + structural test asserts [skip-docs]
...
Sesjon 5 av v1.10.0-løpet (8 av 17 renderers wrapped med renderPageShell).
Nå alle 17 renderers bruker felles grunnskjelett (page__eyebrow + h1 + verdict).
Renderers wrapped:
- C.1 renderCost: eyebrow=KOSTNAD, key-stats utvidet med DOMINERENDE-komponent
- C.2 renderLicense: eyebrow=LISENS, scenario-card-grid per kandidat-lisens,
TOPP-LISENS key-stat
- C.3 renderMigrate: eyebrow=MIGRASJON, E2 mat-ladder erstatter aiact-timeline,
E4 cycle-ribbon ved aktiv fase
- C.4 renderAdr: eyebrow=ADR, D4 critique-card per beslutningsseksjon, ADR-status
→ verdict-pille (accepted/proposed/rejected/deprecated)
- C.5 renderSummary: eyebrow=SAMMENDRAG, E8 read-more for lange rationale
- C.6 renderPoc: eyebrow=POC, E2 mat-ladder + B5 traffic-light per success-kriterie,
pocVerdict styrer verdict-pille
- C.7 renderUtredning: eyebrow=UTREDNING, A4 screen-tabs (Bakgrunn/Funn/Konklusjon/
Anbefaling) + E8 read-more på lange seksjoner
- C.8 renderCompare: eyebrow=SAMMENLIGN, D1 scenario-cards-grid per kandidat,
parseComparison.winner styrer vinner-pille + VINNER key-stat
Parser-utvidelser (R15 forward-compat — eksisterende fixtures uendret):
- parsePhasedPlan: phases[].status (planned/active/done), currentPhaseIndex,
pocVerdict (kun ved POC-Verdict-linje)
- parseComparison: optional winner-felt fra "## Vinner: <id>"-linje
Topic 2 strategi A i handlePasteImport: sentralisert _consumer-tildeling
(result.data._consumer ||= cmd.id), respekterer parser-spesifikk verdi
(parseMatrixRisk → 'ros').
Fixture-updates: migrate/poc med Status: per fase + POC-Verdict, compare med
"## Vinner:"-linje.
Test-asserts (tests/test-playground-v3.sh +18 PASS, totalt 201/201):
- 25e SC8 per-renderer for batch C (8 renderers)
- 25f Step 12 must_contain (mat-ladder, screen-tabs, _consumer)
- 25g Felles grunnskjelett: alle 17 renderers bruker renderPageShell
- 25h Tier 3-bruk: kanban i conformity/review, mat-ladder i migrate/poc
- 25i Onboarding field-distribution (4 strukturerte, 14 fritekst)
Verifisert: 201/201 statiske, 70/70 parser-fixtures, 7/7 migrations PASS.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-04 07:52:52 +02:00
298a5d04e9
feat(ms-ai-architect): renderer B.3 review adopt page-header + kanban (Keep/Review/Remove) + suppressed-panel
...
- parseFindings utvidet med status-felt-deteksjon og buckets-mapping {keep, review, remove, suppressed}
- Eksplisitt status vinner; severity-fallback (kritisk/høy → review, medium/lav → keep)
- Norsk og engelsk status-vokabular støttet (suppress/waive/akseptert, behold/keep, tilsyn/review, fjern/remove)
- renderReview wrapper renderPageShell med eyebrow=REVIEW; bytter findings-listen til E1 kanban-board (3 kolonner Keep/Review/Remove)
- E6 SUPPRESSED-panel som collapsible details for waived/akseptert items
- KeyStats utvidet med KEEP/REVIEW/REMOVE-stats
- review.md fixture utvidet med Status-kolonne (1 remove, 4 review, 2 keep, 2 suppressed)
Pluss test-utvidelser:
- Seksjon 25c: SC8 per-renderer verdict-pill assert for Sub-batch B (renderSecurity, renderRos, renderReview)
- Seksjon 25d: Step 11 must_contain — top-risks + suppressed >=1 treff
- Test-suite gar fra 178 -> 183 PASS
[skip-docs]
2026-05-04 06:35:38 +02:00
9fdcd8938f
test(ms-ai-architect): SC8 per-renderer verdict-pill + Step 10 must_contain asserts
...
- Seksjon 25a: per-renderer verdict-pill assert for de 6 Sub-batch A-rendererene (R7)
- Hver awk-ekstraherer body og krever data-verdict ELLER renderPageShell-kall
- Seksjon 25b: Step 10 manifest must_contain — kanban-board + residual-pair >=1 treff
- Test-suite gar fra 170 -> 178 PASS i Playground v3 Static structure
2026-05-04 06:12:23 +02:00
d137161090
feat(ms-ai-architect): renderer A.4 frimpact adopt page-header + critique-cards
...
- renderFria wrapped med renderPageShell (eyebrow FRIA, lede ref AI Act Art. 27)
- Erstatter rights-matrix med D4 critique-cards per rettighet (severity fra impact-score)
- Ny fria-case i inferVerdict: max impact >=4 block, >=3 warning, ellers go-with-conditions
- DS_CLASSES test oppdatert: rights-matrix -> critique-card (Step 10 endrer body for FRIA)
2026-05-04 06:06:28 +02:00
151f78aba7
feat(ms-ai-architect): replace playground v2 with v3 + docs update
...
Step 17 (Wave 5, final). Closes the v3 playground delivery (5-session run,
17 commits total).
Pre-flight tests verified passing before deletion:
- bash tests/validate-plugin.sh -> 215/215 PASS
- bash tests/run-e2e.sh --playground -> 240/240 PASS (170 + 70)
Changes:
- DELETE playground/ms-ai-architect-v3.html
- MOVE v3 content to playground/ms-ai-architect-playground.html (3867 lines).
Replaces the deleted v2 file at the same canonical path so external
references continue to resolve.
- UPDATE tests/test-playground-v3.sh + tests/test-playground-parsers.sh
to point at the renamed canonical file.
- UPDATE plugin README.md (## Playground (v3) section): describes the
4-surface decision-builder + report-viewer architecture, persistent state
model, 17 report renderers, theme toggle, and the validation matrix.
- UPDATE plugin CLAUDE.md: replaces v2 5-step pipeline section with v3
architecture overview. Marks docs/playground-v2-spec.md as historical-only
(no longer the contract); points at .claude/projects/2026-05-03-playground
-v3-architecture/ for v3 spec.
- UPDATE root README.md: marketplace listing for ms-ai-architect now
describes v3 architecture (4 surfaces, persistence, 17 renderers, theme,
240-test validation) and references the test command.
Verify (post-rename):
- ! test -f playground/ms-ai-architect-v3.html: pass
- test -f playground/ms-ai-architect-playground.html (>3000 lines): pass
- grep -q "v3" in plugin README + plugin CLAUDE.md + root README: pass
- bash tests/validate-plugin.sh: exit 0 (215/215)
- bash tests/run-e2e.sh --playground: exit 0 (240/240)
2026-05-03 20:16:37 +02:00
12f5043905
test(ms-ai-architect): playground v3 static tests [skip-docs]
...
Step 14 (Wave 5). Adds tests/test-playground-v3.sh — 170 PASS-line static
validation suite for the v3 HTML, bash 3.2-compatible.
Coverage:
- File existence + min line count (>= 1500)
- HTML skeleton markers (DOCTYPE/html/head/body) + data-theme default
- 7 vendored CSS link tags in canonical order
- Theme bootstrap (Step 13): localStorage key + .theme-toggle + toggle-theme action
- file://-safety: no external script/stylesheet src
- 4 surfaces (onboarding/home/catalog/project)
- STATE_KEY = 'ms-ai-architect-state-v1'
- 8 exposed window.__-globals (store, CATALOG, PARSERS, RENDERERS, ...)
- All 24 command IDs from commands/*.md referenced
- 14 parser functions (canonical archetype routing)
- 17 renderer functions (canonical command routing)
- Design-system class usage (Tier 1+2+3); .cmd-pipeline reserved (warn)
- 5 onboarding groups + 5 catalog expansion groups
- 11 helpers (renderError, renderEmptyState, parseTable, ...)
- SCHEMA_VERSION + MIGRATIONS pipeline + IndexedDB primary
- 23 ACTIONS handlers (incl. toggle-theme)
- Export/import primitives (Blob, URL.createObjectURL, FileReader)
Pipefail-safe (grep | wc patterns wrapped in `{ ... || true; }`).
2026-05-03 20:07:55 +02:00