Netzwerk-Labor · Doku 🔍 Review – Wartbarkeit der Bausteine „Hilfestellung" Zum Spiel Online

🔍 Review – Wartbarkeit der Bausteine „Hilfestellung"

âŹ†ïž Netzwerk-Labor · Auftrag: task-14 · Vertrag: Hilfestellung – Stufen und Schnittstellen · Architektur: Architektur

Auftrag. PrĂŒfe die WARTBARKEIT der neuen Bausteine A–H. Kein Umbau, keine Meinung ohne Beleg. Stand der Messung: Commit c341c2d, Arbeitsbaum sauber. Gelesen wurde nur; geĂ€ndert wurde allein diese Datei. PrĂŒfpunkte (aus task-14): 1 GrĂ¶ĂŸe/Verantwortung · 2 doppelte Wahrheiten · 3 Kopplung · 4 defensive RĂŒckfĂ€lle · 5 Testbarkeit. PrioritĂ€ten: P1 verhindert Änderungen · P2 kostet Zeit · P3 Kosmetik.

Kurzfassung

Antwort auf die Leitfrage („doppelte Wahrheiten beseitigt oder verschoben?"): Die Definitionstabelle ist beseitigt – § 2 steht genau einmal, in Spiel.STUFE/STUFEN_SCHALTER/STUFEN_WANN (src/spiel/stufensystem.js:44–76), und die Mini-Hilfe baut die Fehlerregel nachweislich nicht mehr nach (src/spiel/mini.js:144–152). Verschoben worden sind zwei Dinge: (a) die Terminal-Hilfe prĂŒft „erst nach Fehler" weiterhin selbst, an drei Stellen (src/spiel/hilfe.js:278, 306, 321), statt Spiel.stufe.wannPasst zu fragen; (b) vier Fallback-Kopien der § 2-Zahlen entstanden in src/ui/konsole.js:25–30, src/cli/parser.js:279,354, src/ui/lernstand-hilfe.js:29–35 und src/spiel/mini.js:11–12. Kein P1 gefunden.

#BefundPrioritÀt
2.1Zwei Vorschlagsquellen: Spiel.hilfe.passend und CLI.vorschlag (im Bau nur die erste erreichbar, die zweite ungetestet)P2
2.2„erst nach Fehler" in src/spiel/hilfe.js:278, 306, 321 selbst gebaut – plus 4 Fallback-Kopien der § 2-ZahlenP2
2.3Der Freigabe-Text existiert zweimal: Spiel.stufe.freigabeText und UI.lernstandHilfe.freigabeTextP2
1.1src/spiel/fehlertexte.js: 1176 Zeilen, davon ~1015 Tabelle – Daten liegen in der SpielschichtP2
417 × „Baustein A da?"-PrĂŒfungen: 11 mĂŒssen bleiben, 6 sind entfernbarP3
2.4 / 2.5GerĂŒst-Texte (GERUEST vs. WERKZEUGE) und ErklĂ€rwege (fehlertext vs. grundText): KEINE Doppelung–

1 · GrĂ¶ĂŸe und Verantwortung

Gemessen am Stand c341c2d (Zeilen = Get-Content | .Count, öffentliche Namen = Zuweisungen ^Spiel.|^UI.|^DATEN.):

DateiZeilenöffentliche NamenWas noch drinsteckt
src/spiel/stufensystem.js2357 (dazu 16 Methoden in Spiel.stufe)4 Tabellen + 16 Funktionen – eine Verantwortung (Bildungsstand)
src/spiel/hilfe.js33915Daten (LEITER, WERKZEUGE 27, SENIOR_FRAGEN 13) + Stufenmodell + Baustein B (ab :189)
src/spiel/fehlertexte.js1176282 TabelleneintrÀge + 106 Zeilen Auswertung
src/spiel/training.js2522Notvorrat TRAINING_EIGENE_SZENARIEN (9 Szenarien) + Logik
src/ui/hilfe.js1721 (2 Methoden)reine DOM-Ausgabe
src/ui/training.js1381reine DOM-Ausgabe
src/ui/lernstand-hilfe.js2821DOM + Lernmotor-Leser + Stufen-RĂŒckfalltabelle (:29–35)
src/ui/stufensystem.js811Einstellungs-Abschnitt
src/daten/hilfen.js2591drei Tabellen (VORSCHLAEGE, GERUEST, SYNTAX) – thematisch zusammengehörig
src/daten/trainings.js383134 Szenarien, reine Daten

1.1 · fehlertexte.js ist ein Datenpaket in der Spielschicht — P2

1.2 · src/spiel/hilfe.js trĂ€gt jetzt drei Verantwortungen — P3


2 · Doppelte Wahrheiten

2.1 · Zwei Vorschlagsquellen: entschĂ€rft, nicht beseitigt — P2

2.2 · „erst nach Fehler" wird in der Terminal-Hilfe weiterhin selbst gebaut — P2

2.2a · Vier Fallback-Kopien der § 2-Zahlen — P3

KopieDatei:ZeileWas dupliziert wirderreichbar?
STUFE_RUECKFALLsrc/ui/konsole.js:25–30einstieg, tipps aus Spiel.STUFE (stufensystem.js:45–48)nur ohne A (:33–43)
o.tipps \|\| (o.einstieg ? "alle" : "keine")src/cli/parser.js:279, :354dieselbe Zuordnung, dritte Fassungwenn konsole.js nichts ĂŒbergibt
RUECKFALL + SCHALTER_AZUBIsrc/ui/lernstand-hilfe.js:29–35rang, name, vorschlaege, leiter, kontoTestkapsel „ohne A" (tests/spiel-lernstand-hilfe.test.js:431)
SPROSSEN / HILFE_KONTOsrc/spiel/mini.js:11–12HILFE_KONTO = stufensystem.js:52zweiter Eintrag ist toter Zweig, s. 4

2.3 · Der Freigabe-Text existiert zweimal — P2

2.4 · GerĂŒst-Texte: KEINE Doppelung — entlastet

2.5 · Zwei ErklĂ€rwege (Spiel.fehlertext / Spiel.grundText): KEINE Doppelung — entlastet


3 · Kopplung und Schichtung


4 · Defensive RĂŒckfĂ€lle: wie viele sind noch nötig?

GezĂ€hlt (Stand c341c2d): 11 PrĂŒfungen der Form typeof Spiel.stufe !== "undefined" in src/ (src/spiel/erstestunde.js:148, 179, 197; src/spiel/mini.js:126, 137, 146, 159; src/spiel/fehlertexte.js:1139; src/spiel/training.js:104, 110, 116) und 6 gleichwertige der Form typeof Spiel !== "undefined" && Spiel.stufe in src/ui/ (src/ui/hilfe.js:20, 28, 36; src/ui/konsole.js:33, 40; src/ui/lernstand-hilfe.js:37) – zusammen 17.

Datei:ZeilePrĂŒftVerdiktBeleg
spiel/erstestunde.js:148, 179, 197id, alle, setzenbleibttests/spiel-einstieg-stufe.test.js:234 löscht A und prĂŒft den RĂŒckfall
spiel/mini.js:126rangbleibttests/spiel-mini-hilfe.test.js:228 setzt Spiel.stufe = undefined und prĂŒft :229–232 Hilfe und Anker
spiel/mini.js:137darfbleibtdito (der Test lÀuft durch hilfe()/anker(), die beide darf fragen)
spiel/mini.js:146wannPasstbleibtzweifach gedeckt: :220 lÀsst wannPasst werfen, :228 entfernt A ganz
spiel/mini.js:159kann("konto")entfernbar (toter Zweig):157–158 antwortet vorher ĂŒber Spiel.HILFE_KONTO; kein Test löscht HILFE_KONTO
spiel/fehlertexte.js:1139textbleibttests/spiel-fehlertexte.test.js:289 löscht A, erwartet „ausfĂŒhrlich"
spiel/training.js:104, 110, 116id, darf, erklaerungbleibttests/spiel-training.test.js:241 löscht A; tests/ui-training.test.js:131 setzt stufe: null
ui/lernstand-hilfe.js:37Spiel.stufebleibtTestkapsel „ohne A" tests/spiel-lernstand-hilfe.test.js:431
ui/hilfe.js:20, 28, 36def, konto, rangentfernbarkein Test baut UI.hilfe ohne A; tests/spiel-hilfe-vorschlaege.test.js:456 ersetzt A nur
ui/konsole.js:33, 40kann, identfernbardito (die Konsole lÀuft in Tests immer mit A)

5 · Testbarkeit: was ist nicht abgedeckt?

Gemessen: Name in tests/*.test.js gesucht (grep), Stand c341c2d, 44 Testdateien.

Nicht abgedeckt (neu in diesem Bau):

Datei:FunktionWarum es auffÀlltVorschlag
src/spiel/stufensystem.js:174 Spiel.stufe.hilfenFrei(inst)Kein Test ruft sie; tests/spiel-stufensystem.test.js:262 prĂŒft nur das Feld a.hilfenFreiEin Testfall: Ticket mit hilfenFrei: 3 → hilfenFrei() = 3, ohne Feld = konto().frei
src/spiel/stufensystem.js:229 Spiel.stufeInstanz()Kein Test; nur mittelbar ĂŒber konto() ohne ArgumentEin Testfall: ohne offenes Ticket null, mit st.aktiv die Instanz
src/cli/entspricht.js:188 CLI.vorschlagKein Test, im Bau nicht erreichbar (s. 2.1)Entweder löschen oder zwei Tests
src/spiel/lernen.js:101 Spiel.grundTextkein Test (vorbestehend, nicht neu) – grundTitel/lernenNachAbnahme ebenso wenigEin Testfall ĂŒber einen bekannten Grundcode je Niveau
src/spiel/fehlertexte.js:55 Spiel.FEHLERTEXTE (Tabelle)mittelbar abgedeckt: tests/spiel-fehlertexte.test.js prĂŒft jeden Eintrag ĂŒber seine probekeine Aktion

Abgedeckt (zur Entlastung, damit die Liste vollstĂ€ndig ist): Spiel.stufe.alle/id/def/rang/setzen/kann/ darf/wann/wannPasst/erklaerung/konto/hilfeZiehen/text/erklaerungText/freigabeText (tests/spiel-stufensystem.test.js, tests/pruefung-hilfestellung.test.js), Spiel.hilfe.passend/geruest/leiter/syntaxBruecke (tests/spiel-hilfe-vorschlaege.test.js:196–330), Spiel.mini.hilfe/anker (tests/spiel-mini-hilfe.test.js), Spiel.fehlertext (tests/spiel-fehlertexte.test.js), Spiel.training.liste/starten/stand/abnehmen (tests/spiel-training.test.js), UI.stufeAbschnitt.zeichnen (tests/spiel-stufensystem.test.js:389), UI.lernstandHilfe.* (tests/spiel-lernstand-hilfe.test.js), UI.training.* (tests/ui-training.test.js), DATEN.trainings (tests/daten-trainings.test.js). UI.hilfe.aktualisieren und UI.hilfe.zeichnen werden indirekt ausgefĂŒhrt (tests/spiel-hilfe-vorschlaege.test.js:471 öffnet UI.konsole, das den Streifen zeichnet), aber nie direkt gerufen.


Anhang · So sind die Zahlen entstanden

Zeilen            Get-Content <Datei> | .Count                      (je Datei oben)
öffentl. Namen    Select-String '^(Spiel|UI|DATEN)\.[A-Za-z_.]+ *='
TabelleneintrÀge  Select-String '^\s+id: "' in src/spiel/fehlertexte.js   -> 82
Kopplung          grep '\bUI\.|\bdocument\.|\bwindow\.' in src/daten, src/spiel -> 0 Treffer
RĂŒckfĂ€lle         grep 'typeof Spiel\.stufe' bzw. 'typeof Spiel !== "undefined"' in src/
Testabdeckung     grep '<Funktionsname>' in tests/*.test.js

Kein Testlauf nötig fĂŒr dieses Review; der Stand des Auftrags ist 395/395 grĂŒn (Commit c341c2d), gemessen vom Lead.