Laufzeitsicht: Der Build erledigt die Arbeit, im Browser trägt das Kind jede Information

Zwei Laufzeiten gibt es: den Build auf dem Rechner der Autor:in oder in GitHub Actions und den Browser des Kindes. Kein Szenario hat einen Server der Apps als Beteiligten. Wo App und Tutor Daten austauschen, trägt das Kind sie: als Link, als Aufgabennummer oder als Ergebniszeile. Die Tabelle am Ende zeigt, welcher Baustein aus Kapitel 5 in welchem Szenario vorkommt.

Szenario 1: Der Build macht aus App-Ordnern eine geprüfte Site

laufzeit build

Gemessen am 23.09.2026: 45 Seiten, 103 kopierte Dateien, Eleventy meldet 0,41 s (Konsolenausgabe von npm run build).

Szenario 2: Der Tutor verlinkt eine Aufgabe, das Kind löst sie

Claude schickt „Mach Aufgabe Nr. 42“ mit einem Link wie https://lernapps.github.io/binom/erste-binomische.html?seed=42. Das Kind öffnet ihn, rechnet auf Papier und tippt das Ergebnis. Das Ergebnis prüft die App. Ein Foto des Rechenwegs prüft der Tutor erst, wenn die Kompetenz in die Klassenarbeit-Phase kommt, eines je Kompetenz (ADR-022).

laufzeit aufgabe

Szenario 3: Tutor-Sitzung und Schnelltest, Ergebniszeile an den Tutor

laufzeit test

Szenario 4: Ein Video lädt erst nach dem Klick

laufzeit video

Szenario 5: Eine neue Kompetenz entsteht und geht mit der Doku live

laufzeit kompetenz

Szenario 6: Fehler und Wiederherstellung: Der Build hält an, der Browser fällt zurück

Fehler im Build halten die Auslieferung an, bevor ein Kind sie sieht. Fehler im Browser enden in einem Rückfall, den das Kind sieht und selbst auflösen kann.

laufzeit fehler
Fehlerfall Verhalten und Quelle

Unbekannter Karten-Knoten

pruefeAppEintrag meldet Datei und Knoten; ladeKarte wirft, der Build bricht ab (lib/karte/eintraege.js:46, lib/karte/laden.js:53-56). Auch ein Übergangseintrag für eine App, die ihren Eintrag schon selbst trägt, bricht ab (lib/karte/eintraege.js:57-59).

Regelverstoß im Build

Externe Ressource, Datei über 500 Zeilen, fehlende Kompetenz-Datei, Seite fehlt in llms.txt: eleventy.config.js wirft mit allen Funden; nichts wird deployt.

Unbekanntes Fach, falsche App-Konfiguration

fachfarbe wirft (lib/fachfarben.js:29-32); pruefeAppKonfig meldet fehlende id, titel oder falschen pfad (lib/apps.js:12-18).

Cache nach Deployment

Neue Seiten fordern nur URLs mit neuem Hash an (8.10). Nur eine alte, gecachte HTML-Seite kann für einen Aufruf alte und neue Module mischen (R-013); neu laden behebt es.

Doku-Build scheitert

pages.yml bricht ab, bevor das Artefakt entsteht; die zuletzt deployte Fassung bleibt online (R-011).

localStorage gesperrt oder voll

Alle Zugriffe in try/catch; Laden liefert einen leeren Wert, Speichern false; die Seite sagt es dem Kind (src/kern/js/storage.js:17-21).

Ungültige oder fehlende URL-Parameter

leseSeed akzeptiert nur Ziffern, sonst Zufallsnummer (src/kern/js/zufall.js:47); leseVorgaben übernimmt nur gültige Werte; leseModus fällt auf voll zurück (src/kern/js/testablauf.js:15-18).

Zwischenablage verweigert

kopiereText markiert den Text (src/kern/js/aufgabenlink.js). „Zurück zu Claude“ lässt den Tab dann offen und zeigt die Zeile markiert in einem Feld (src/kern/js/zurueck.js, Szenario 7).

Tab lässt sich nicht schließen

Nach window.close() prüft „Zurück zu Claude“ nach 300 ms window.closed und sagt dem Kind per aria-live, dass es den Tab selbst schließen soll (ADR-021, Szenario 7).

claude.ai kann tutor.md nicht laden

Außerhalb des Systems. Rückfall: TalkItOver-Provider „copy“ kopiert den Prompt; llms.txt ist auf der Startseite verlinkt (R-002).

Szenario 7: Tutor-Deep-Link → Übung → Zurück zu Claude

Claude schickt „Mach Aufgabe Nr. 4“ mit https://lernapps.github.io/binom/erste-binomische.html?nr=4&von=tutor; claude.ai öffnet ihn in einem neuen Tab. Nach der Aufgabe bringt ein Knopf das Kind samt Ergebnis zurück in den Chat (ADR-021). Die Ergebniszeile geht nur in die Zwischenablage des Geräts. Der Test verläuft genauso: Der Knopf steht neben der Ergebniszeile und kopiert sie.

laufzeit zurueck

Ohne von=tutor zeigt die Seite keinen Knopf, ohne JavaScript ebenfalls. „Link zu dieser Aufgabe“ und „Link kopieren“ lassen den Parameter weg. Der Rückfall für mobile In-App-Browser ist ungetestet (R-021).

Jeder Baustein kommt in einem Szenario vor

Baustein (Kapitel 5) S1 S2 S3 S4 S5 S6 S7

Build

x

x

x

Layout

x

x

x

x

x

x

Kern

x

x

x

x

x

x

Apps

x

x

x

x

x

Mathe-Karte

x

x

Architektur-Doku

x

Tests und CI

x

x

Browser-Speicher

x

x

x