1e51ef7def
- Konzept/, didaktik_geografie/, didaktik_simulation/, v2-modules/, v2-platform/ - 12 code-workspace-Files - STATUS-*.md - viele M/D/R-Änderungen an bereits getrackten Files - .gitignore verstärkt: **/.humaninput/, **/secret_keys.txt Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Konformitäts-Check (V2)
PHP-basiertes Skript, das prüft, ob ein V2-Modul die Spec erfüllt
(siehe v2-modules/_spec/delivery-format.md und module-manifest.md).
Aufruf
Aus dem Modul-Wurzelordner:
cd v2-modules/<dein-slug>
php ../../v2-platform/tools/conformance-check/check.php
Exit-Code:
0= LIEFERBEREIT (Phase-1-Checks bestanden, Browser-Checks Phase 2)1= Fehler vorhanden — nicht lieferbar
Output:
- Farbige Console-Ausgabe (✓ / ✗ / ⚠)
tests/conformance-report.jsonmit allen Details
Welche Checks (Phase 1, PHP-only)
| Check | Was wird geprüft |
|---|---|
| Manifest-Schema | Pflichtfelder, Slug-Format, supportedLanguages (de-AT-easy Pflicht), Lehrplan-Anker mit Land-Prefix, glossarSchwerpunkte ≤ 10, dbTables-Prefix m_<slug>_, difficultyLevels, telemetryMilestones |
| Pflicht-Files | README.md, db/migrations.sql, tests/mock-platform.html, entryHtml/cardImage/screenshots existieren physisch, verbotene Files (.env.local, node_modules), Großdateien-Warnung > 50 MB |
| i18n | pro supportedLanguage eine JSON-Datei in public/i18n/, Easy-Variante deckt alle Keys der Standard-Variante ab |
| DB-Migrations | CREATE TABLE mit IF NOT EXISTS, ADD COLUMN mit IF NOT EXISTS, keine DROP/TRUNCATE/RENAME, Tabellen mit Modul-Prefix |
| admin-fields.json | Pflicht-Datei, moduleId matcht slug, groups[].fields[] mit key/label/labelEasy/type |
| CSS-Hex-Hardcodes | scant public/**/*.css und .html nach Hex-Werten — verboten, müssen var(--ggs-*) oder var(--<slug>-*) sein |
Phase 2 (später, mit Headless-Browser)
- A11y-Audit via axe-core
- Telemetry-Event-Test (mindestens 5 Heartbeats, alle deklarierten Milestones werden gefeuert, ein Result-POST)
- Keyboard-Navigation-Test (Tab-Reihenfolge, Enter/Esc)
- Focus-Indikator vorhanden
- prefers-reduced-motion respektiert
- High-Contrast-Render-Test
- Alt-Texte auf allen
<img> - Semantische Buttons statt
<div onclick>
Diese Tests brauchen Playwright/Headless-Chrome — folgt in einer
späteren Iteration. Vorläufig manuell mit tests/mock-platform.html
prüfen.
Beispiel-Output
=== GeoGraSim V2-Konformitäts-Check ===
Modul: hallo-welt @ 1.0.0
Pfad: c:\xampp\htdocs\geograsim\v2-modules\hallo-welt
Spec: 1.0
--- Manifest-Schema ---
✓ Alle Pflichtfelder vorhanden
✓ Slug-Format ok ('hallo-welt')
✓ Lehrplan-Anker: 1 Eintrag/Einträge, alle mit Land-Prefix
✓ glossarSchwerpunkte: 0 von max 10 Einträgen
--- Pflicht-Files ---
✓ Pflicht-File vorhanden: README.md
✓ Pflicht-File vorhanden: db/migrations.sql
✓ Pflicht-File vorhanden: tests/mock-platform.html
...
=== Zusammenfassung ===
✓ Passed: 18
✗ Failed: 0
⚠ Warning: 1
STATUS: LIEFERBEREIT (Phase-1-Checks). Browser-Checks Phase 2 noch manuell.
Bekannte Limitationen
- Slug-Eindeutigkeit über alle Module wird nicht geprüft (das macht
Atlas beim Integrieren — braucht Zugriff auf
module_info_v2) - Lehrplan-Anker-Existenz in der DB nicht geprüft (selbe Grund)
- Glossar-Slug-Existenz nicht geprüft (selber Grund)
- Sed-Lauf erkennt nicht, ob
<div onclick>in JS-Templates gebaut wird - Schwere Spec-Verstöße (z.B. fetch auf OpenAI im Browser) werden nur in Phase 2 erkannt