Risiken und technische Schulden: Der fremde Tutor und falsche Rückmeldungen wiegen am schwersten
Das Monorepo hat zwei große Risiken der Vorlage beseitigt: Der Kern driftet nicht mehr (ehemals R-001),
und keine Version wird mehr vergessen (ehemals R-014). Dafür sind neue entstanden: eine Abhängigkeit
beim Build und ein Repository, dessen tutor.md die Chat-KI eines Kindes anleitet (R-024). Die
Zwei-Faktor-Pflicht für die Organisation gilt seit dem 24.09.2026 (R-017, erledigt). Die alten Einzel-Repos, die neben dem
Monorepo weiterliefen, sind seit dem 23.09.2026 gelöscht (R-016). Der Product Owner hat am 23.09.2026 über mehrere Risiken und Schulden
entschieden; die Tabellen nennen jeweils die Entscheidung.
Risiken
Wahrscheinlichkeit (W) und Auswirkung (A) in drei Stufen: niedrig = 1, mittel = 2, hoch = 3. Priorität = W × A: 6–9 hoch, 3–4 mittel, 1–2 niedrig. Die Tabelle ist nach Priorität geordnet; erledigte Risiken stehen am Ende. Die Einschätzungen von W und A sind abgeleitet, nicht vom Team bestätigt.
Seit dem 23.09.2026 schützt ein Branch-Schutz main (8.2 M-15): PR-Pflicht, Pflicht-Check
test-und-build, kein Force-Push, kein Löschen. Admins dürfen ihn umgehen. Er mindert R-004, R-005,
R-015 und R-024. Die Einstufung nach dem Vibe-Coding Risk Radar (Tier 2) und ihre Maßnahmen stehen in
ADR-023.
| ID | Risiko | W | A | Prio | Maßnahme |
|---|---|---|---|---|---|
Tutor-Anbindung bricht. claude.ai lädt |
2 |
3 |
hoch (6) |
Statischer Fallback-Link und |
|
Falsche Rückmeldung in allen Apps zugleich. Ein Fehler im Kern-Prüfer oder in einem Generator meldet eine richtige Antwort als falsch; im Monorepo trifft ein Kern-Fehler sofort jede App. |
2 |
2 |
mittel (4) |
Eine Rundungsregel mit Business Rules (8.7; QS-6, QS-7); Vertragstest für jede Kompetenz jeder App (8.3); der Pflicht-Check |
|
Aufgabennummer zeigt eine andere Aufgabe. Ein geänderter Generator oder umbenannter Parameter bricht alte Tutor-Links. |
2 |
2 |
mittel (4) |
Vertrag im |
|
Eleventy als Abhängigkeit. Ein Update bricht den Build, das Projekt wird aufgegeben, oder eine kompromittierte Version einer transitiven Abhängigkeit schleust Code in die Ausgabe (T-012). |
2 |
2 |
mittel (4) |
Exakt gepinnt, |
|
Lizenz offen. Das Repository hat keine |
2 |
2 |
mittel (4) |
[OPEN] Weiter offen (Stand 23.09.2026). Lizenz festlegen (Code und Inhalte getrennt?), |
|
Apps werden schwer auffindbar. Mit rund 20 Apps je Schuljahr wächst die Zahl der Kompetenzseiten; ein Kind findet die passende Seite nicht mehr, wenn eine Auswahl zu viele Treffer zeigt. |
2 |
2 |
mittel (4) |
Navigation über Bundesland, Klassenstufe und Fach statt Volltextsuche (ADR-020); Mathe-Karte mit |
|
Doku-Build blockiert das Deployment aller Apps. |
2 |
2 |
mittel (4) |
Die zuletzt deployte Fassung bleibt online; der Fehler steht im Actions-Log (8.4); Cache je gepinntem Commit (8.2 M-13). Doku-Build und Ausgabeprüfung in PRs, die |
|
„Zurück zu Claude“ in mobilen In-App-Browsern ungetestet. Öffnet die Claude-App einen Link in einer eingebetteten Ansicht, kann |
2 |
2 |
mittel (4) |
Nachprüfung nach 300 ms mit |
|
Tutor beurteilt den Rechenweg falsch. Er liest Handschrift auf dem Foto falsch oder wertet einen richtigen, aber ungewohnten Schritt als Fehler (ADR-022). |
2 |
2 |
mittel (4) |
Der Tutor nennt nur den ersten falschen Schritt und stellt eine Leitfrage, statt zu korrigieren; das Kind kann widersprechen. Das Ergebnis prüft weiter die App (8.7). Kein automatischer Test; nur der Tutor-Dialog (8.3). |
|
Fotos der Handschrift beim Chat-Anbieter (T-014). Das Kind schickt ein Foto je Kompetenz, erst in der Klassenarbeit-Phase (ADR-022), nicht zu jeder Aufgabe; darauf können Name, Schule oder Aufnahmeort stehen. Das Zwei-Phasen-Modell senkt die Zahl der Fotos deutlich. |
3 |
1 |
mittel (3) |
Die App überträgt nichts; |
|
Dreistufige Bäume passen nicht auf das Handy. Ein Baum mit drei Zügen und mehr als zwei Ergebnissen (bis 27 Blätter) ist hochkant breiter als 279 px und liegt quer (600 px); auf 360 px muss das Kind scrollen oder das Handy drehen (QS-12). |
3 |
1 |
mittel (3) |
Zweistufige Bäume stehen hochkant und passen (ADR-024; |
|
Übernommenes Repository leitet die Chat-KI eines Kindes an (T-015). |
1 |
3 |
mittel (3) |
Link-Allowlist im Build (8.2 M-22); Zwei-Faktor-Pflicht (M-21); Secret Scanning mit Push Protection (M-19); Branch-Schutz (M-15); Review jedes PRs (M-08, R-026). Fremder Text in einem gemergten PR bleibt Sache des Reviews (ADR-023). |
|
Lernschaden. Eine falsche Rückmeldung oder ein falsches Beispiel bringt einem Kind still etwas Falsches bei; kein System fällt aus, niemand merkt es. Das Vibe-Coding Risk Radar misst diesen Schaden nicht (ADR-023). |
1 |
3 |
mittel (3) |
Property-Based Tests für Term-Parser, Termgleichheit und Rundung (QZ-3; 8.3), sie fanden gleich #30 (behoben); Vertragstest für jede Kompetenz; Rundungs- und Formregeln fachlich bestätigt (R-004, R-012). |
|
Fremde Anfrage nach einer Eingabe ungetestet (ATAM AR-3, SP-4). Der Build erkennt fremde Hosts nur an Mustern im Quelltext, |
1 |
3 |
mittel (3) |
Build-Prüfung auf externe Ressourcen und Importe (8.2 M-02; QS-2); ESLint im Pflicht-Check (M-20); das KI-Review prüft Datenschutz in jedem PR (M-23). [OPEN] Die Übungsrunde in |
|
Konto oder Token übernommen (T-001): veränderte Apps oder |
1 |
3 |
mittel (3) |
Zwei-Faktor-Pflicht (8.2 M-21), Secret Scanning mit Push Protection (M-19), M-08, M-11. |
|
Prompt Injection über |
1 |
3 |
mittel (3) |
Review jedes PRs, |
|
Kompromittierte |
1 |
3 |
mittel (3) |
Vendored statt CDN, Diff im PR (8.2 M-06). [OPEN] Keine Prüfsumme gegen die Quelle. |
|
Geteiltes Schulgerät zeigt Selbsteinschätzung, letzten Test und Video-Merker (T-006). |
2 |
1 |
niedrig (2) |
Nur Stufen, keine Namen (8.2 M-07). |
|
YouTube nach Klick erhält IP-Adresse und Browserdaten (T-005). |
2 |
1 |
niedrig (2) |
Zwei-Klick mit Hinweis, youtube-nocookie (8.2 M-03; QS-1). |
|
GitHub Pages ändert sich oder fällt aus. |
1 |
2 |
niedrig (2) |
|
|
Original-Harness-Rad ändert sein URL-Format oder seine Schicht-ids. Link und Einbettung in 8.16 zeigen dann einen falschen oder leeren Stand (ADR-025); betroffen ist nur die Doku, kein Kind. |
2 |
1 |
niedrig (2) |
Die ids stehen fest in |
|
Review hängt an einer Person. Der Product Owner sieht jeden PR durch und merged ihn (Sampling Review 100 %, ADR-023). Technisch erzwingen lässt sich eine Freigabe nicht: Ein einzelner Maintainer kann seinen eigenen PR nicht freigeben, und Admins dürfen den Branch-Schutz umgehen. Ein eiliger Merge lässt KI-generierten Code ungelesen durch. |
1 |
2 |
niedrig (2) |
Pflicht-Check mit Tests, ESLint, |
|
ATAM-Abschnitt als Formalie (ADR-030). Der Check |
2 |
1 |
niedrig (2) |
Feste Gliederung in |
|
Termprüfung irrt an den Prüfstellen oder bei der Form (ADR-009). |
1 |
2 |
niedrig (2) |
Feste Prüfstellen, Form nur als Hinweis (8.7.1; QS-19). Formregeln vom Domain Expert bestätigt (23.09.2026). |
|
Alte Seite nach Deployment. Eine bis zu zehn Minuten alte HTML-Seite im Cache fordert URLs ihres alten Hashes an; Pages liefert die neuen Dateien. |
1 |
2 |
niedrig (2) |
|
|
Barrierefreiheit nur stichprobenartig geprüft (ATAM AR-6, SP-6). axe-core prüfte je App eine Kompetenzseite; eine neue Seitenform, etwa ein Baum oder ein Termfeld, konnte WCAG 2.2 AA verletzen, ohne dass ein Check rot wird (QS-27). Seit 25.09.2026 prüft axe jede Seite; offen bleibt, was axe nicht erkennt, und jeder Zustand nach der geladenen Übung (Lösung, Rückmeldung). |
1 |
2 |
niedrig (2) |
axe-core im Pflicht-Check |
|
Keine Content Security Policy (Security-Review S-005). GitHub Pages setzt keine Header. Fände sich doch ein XSS-Pfad (T-003) oder lüde ein Skript zur Laufzeit von einem fremden Host (R-031), hielte der Browser nichts auf. |
1 |
2 |
niedrig (2) |
Kein |
|
Mini-DOM weicht vom Browser ab. Eine Zeichenfunktion nutzt etwas, das |
1 |
1 |
niedrig (1) |
Nur |
|
Geschätzte Textbreite zu knapp. Ob ein Baum hochkant passt und wie breit eine Blattspalte ist, rechnet |
1 |
1 |
niedrig (1) |
Tests prüfen jede Urnenvorlage mit grober Breite 0,6 je Zeichen auf Überlappung ( |
|
Freitext über einen präparierten Link im Chat (T-015; Security-Review S-008, S-009). Ein Link mit |
1 |
1 |
niedrig (1) |
Parameter nur aus |
|
Alte Einzel-Repos liefen parallel. |
– |
– |
erledigt |
Erledigt am 23.09.2026: alle sechs gelöscht, ihre Pages-Adressen liefern 404. Der Skill liegt seit PR #7 unter |
|
Organisation ohne Zwei-Faktor-Pflicht (T-001). Ein übernommenes Mitgliedskonto ändert alle Apps. |
– |
– |
erledigt |
Entschieden am 24.09.2026 und eingeschaltet (8.2 M-21; ADR-023). Vorher zurückgestellt (23.09.2026), bis weitere Personen mitarbeiten. |
Entfallen: R-001 „Kern driftet“ (durch ADR-012 und ADR-013; in den alten Repos lebte es als R-016 weiter, bis sie gelöscht wurden) und R-014 „Version nicht gehoben“ (durch ADR-014).
Technische Schulden
| ID | Schuld | Belasteter Baustein (Kapitel 5) | Abbau |
|---|---|---|---|
TD-3 |
|
Entschieden am 23.09.2026: ja, Umsetzung läuft. Der Build prüft |
|
TD-4 |
Die Mathe-Karte kennt nur Mathe und nur das Gymnasium; Physik- und Chemie-Apps haben keine Karte. |
Karte für weitere Fächer und Schulformen (edugo). |
|
TD-5 |
Der Browser-Test (360/1280 px, ohne JS, 0 fremde Requests, Deep Link, Schnelltest) lief nicht in CI, sondern von Hand mit Playwright. |
Erledigt am 24.09.2026 (#26): Playwright und axe-core im eigenen Workflow |
|
TD-7 |
7 von 57 Testdateien nennen im Kopf keinen Use Case; die Exponent-Grenze in |
Kopfzeile |
|
TD-9 |
docToolchain v4 ist unveröffentlicht; |
Nach dem Release von v4.0.0: Skript löschen, |
|
TD-10 |
Fremde Hosts im Theme (#1705): gepatchte Kopien von |
Nach dem Fix beide Kopien und die Ausnahme löschen. |
|
TD-11 |
Kein Schlüssel für |
Nach dem Fix |
|
TD-12 |
Markenfarbe erreicht |
Nach dem Fix Farbregeln löschen. |
|
TD-13 |
Unsichtbarer Suchplatzhalter (#1702); Regeln in |
Nach dem Fix Regeln löschen. |
|
TD-14 |
Navigationsleiste verdeckt die Startseite (#1699); |
Nach dem Fix |
|
TD-15 |
Theme- |
Nach dem Fix je nach Default behalten oder löschen. |
|
TD-16 |
|
Tests und CI ( |
Nach dem Fix die |
TD-17 |
Je Kompetenzseite war nur ein Video vorgesehen ( |
Layout ( |
Erledigt am 24.09.2026 (Lektorat L-023): |
TD-18 |
Die Vorschau zeigt „≈“ auch bei exakten Werten ( |
Entschieden am 23.09.2026, PR in Arbeit: „=“ bei exakt darstellbarem Wert, mit Test (BR-5). |
|
TD-19 |
Die neuen Zufall-Seiten 7 und 8 ( |
Apps ( |
Entschieden am 23.09.2026: Der Product Owner oder der Lernende sieht die Seiten fachlich durch. |
TD-20 |
Das Hilfsskript für neue Kompetenzen ( |
Entschieden am 23.09.2026: kommt mit der nächsten App. Ein Skript legt die drei Dateien mit rotem Test an und trägt die Zeile in |
|
TD-21 |
Optionale Überschrift „Die Formel“ im Seitengerüst fehlt (offen aus PR #2). |
Optionales Front-Matter-Feld im Gerüst. |
Erledigt: TD-1 (Kern kopiert) und TD-2 (Prozent/Zufall nicht migriert) durch ADR-012 und die Migration
in PR #2; TD-6 (APP.uebersicht ungelesen) entfällt, das Layout verlinkt „Alle Apps“; TD-8 (Pages-Modus
uneinheitlich) galt nur noch für die alten Repos und ist mit R-016 erledigt; TD-17 (nur ein Video je Seite) mit L-023;
TD-5 (Browser-Test nur von Hand) mit #26; TD-22 (Doku-Build nur nach dem Merge) und TD-23 (Doku ohne Prüfung auf
externe Ressourcen) mit doku.yml, das in PRs mit Änderungen an src/docs die Doku baut und die Ausgabe prüft.
Risikothemen: Drei Themen bedrohen drei Geschäftsziele
Die Risikothemen fassen die Befunde der ATAM-Bewertung vom 25.09.2026 zusammen (IDs AR, SP und TP dort). Anders als der datierte Bericht im Anhang zeigen sie den laufenden Stand; die nächste Bewertung schreibt sie fort.
RT-1: Ein Fehler trifft alle Apps zugleich (AR-1, AR-2, SP-1, SP-2, TP-1, TP-3). Das Monorepo macht Korrekturen billig und Fehler teuer. Bedroht ist das Ziel, dass ein Kind der Rückmeldung trauen kann (QZ-3); der Schaden ist Lernschaden, der still bleibt (R-025). Property-Tests und der Vertragstest je Kompetenz sind die Gegenwehr; sie wirken nur, solange jede Kern-Änderung sie erweitert.
RT-2: Der Vertrag mit dem Tutor bewegt sich (AR-4, AR-5, SP-3, TP-2). Die App übt, Claude unterrichtet; beide verbinden nur Links und Texte. Bedroht ist die Tutor-Anbindung (QZ-2) und damit das Lernmodell der Apps. Zwei Ursachen liegen außerhalb des Repositorys (claude.ai), eine ist bewusst akzeptiert (R-003).
RT-3: Die Prüfer sehen nur Stichproben (AR-3, AR-6, AR-7, SP-4, SP-6). Build und Browser-Tests prüfen das Laden jeder Seite, aber nicht jede Interaktion und nicht jede Seitenform; das Review hängt an einem Konto. Bedroht sind die Zusagen an Eltern und Schulen: kein Datenabfluss (QZ-1) und Zugänglichkeit (QZ-5). Daraus stammen R-030 und R-031.
Die Bewertungen selbst stehen datiert im Anhang Bewertungen:
-
ATAM-Bewertung vom 25.09.2026 – Quelle von R-030, R-031, R-032 und RT-1 bis RT-3.
-
Security-Review vom 25.09.2026 – Quelle von R-033 und R-034.
-
Harness-Audit vom 24.09.2026 – prüft das Harness-Rad in 8.16.
Offene Fragen: Nur die Lizenz ist noch offen
Der Product Owner hat am 23.09.2026 alle übrigen Fragen beantwortet: Rangfolge der Qualitätsziele (Kapitel 1.2), Zielwerte (Kapitel 10), die ADRs mit Status „Accepted (inferred)“ (Kapitel 9), R-002, R-003, R-011, R-016, R-017, TD-3, TD-5, TD-17 bis TD-20, TD-22, TD-23 und den Rückmelde-Kanal (8.4). Der Domain Expert hat Rundungs- und Formregeln bestätigt (8.7).
Product Owner
-
Unter welcher Lizenz stehen Code und Inhalte (R-018)? Getrennt für Code und Texte?
Architekt
Keine offenen Fragen.
Entwickler
Keine offenen Fragen.
Domain Expert (Mathe-Didaktik)
Keine offenen Fragen.
Betrieb
Keine offenen Fragen.
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.