# Änderungsverlauf Alle nennenswerten Änderungen an dieser Anwendung stehen hier, neueste zuerst. Das Format folgt [Keep a Changelog](https://keepachangelog.com/de/1.1.0/), die Nummerierung [Semantic Versioning](https://semver.org/lang/de/): - **Hauptnummer** (1.0.0) — erst mit dem Abschluss der Barrierefreiheitsprüfung. Solange die Null vorn steht, ist der Funktionsumfang noch nicht vollständig. - **Nebennummer** (0.**9**.0) — neue Merkmale. - **Fehlernummer** (0.9.**1**) — nur Fehlerbehebungen. Dieses Dokument sagt, *was sich geändert hat* — nicht, welche Merkmale es gibt und welche fehlen. Jede veröffentlichte Fassung trägt ein Git-Etikett (`v0.9.0`) und ein Installationspaket unter `app/release/`. In der Anwendung selbst stehen Programmversion und Baustand unter „Systemzustand“ auf dem Startbildschirm; ein `+` hinter der Baukennung heißt, dass beim Bauen unversionierte Änderungen im Arbeitsbaum lagen. --- ## [Unveröffentlicht] Seit der Fassung 0.26.4 hat sich nichts geändert. ## [0.26.4] — 2026-09-01 Die ersten Befunde aus der Prüfung, ob diese Software dem Stand der Technik entspricht. Acht Felder wurden gegen die heutige Fachliteratur und den Wettbewerb gehalten; hier stehen der eine echte Defekt und die drei Lücken mit dem besten Verhältnis von Nutzen zu Aufwand. ### Für die Öffentlichkeit - **Ein abgewähltes Kapitel bleibt auch auf dem zweiten Rechner abgewählt.** Wer seinen Lernstand auf ein anderes Gerät überträgt, bekam dort bisher stillschweigend alle Kapitel zurück — auch die, die er für seine Prüfung gar nicht braucht. Die Prüfungsreife-Anzeige fiel dadurch um zwei Stufen, ohne dass etwas darauf hinwies. - **Der Vergleich zweier Simulationen sagt jetzt, wann ein Unterschied nichts bedeutet.** Ein Bogen zieht seine Fragen aus dem gesamten Bestand; zwei Läufe fallen deshalb schon durch die Ziehung auseinander, auch wenn sich am Wissen nichts geändert hat. Liegt der Unterschied darunter, steht das jetzt dabei — mit der Zahl der Fragen, um die es tatsächlich geht. - **Das Handbuch erklärt, wie man eine frei zu formulierende Antwort aufbaut.** 104 der 575 Fragen verlangen eine eigene Antwort, und sie werden von Menschen bewertet. Woran man erkennt, was verlangt ist, steht jetzt im Kapitel zur Lernsitzung. - **Und es sagt, dass ein Nachteilsausgleich beantragt werden muss.** Die Anwendung bietet die verlängerte Zeit zum Üben an. In der Prüfung ist sie kein Selbstläufer: Wer sie braucht, muss sie bei der Stelle beantragen, die seine Prüfung abnimmt. Das Kapitel zur Simulation sagt jetzt, wen man fragt und wonach. ### Behoben - **Die Kapitelabwahl reiste beim Übernehmen eines Profils nicht mit.** `profil-uebernehmen.ts` las aus der Quelle nur `name` und `pruefungstermin`; `kapitel_ausschluss` steht als Spalte am Profil und nicht in einer Kindtabelle, wurde von der Schleife über `KINDTABELLEN` also nicht erfasst und fiel auf den Vorgabewert `'[]'` zurück. Die Folge ist in `shared/verlust.ts` seit jeher ausgerechnet: derselbe Bestand von **85,0 auf 71,9 Prozent**, zwei Ampelstufen. Kein Test sah hin. - **Der Laufvergleich meldete Rauschen als Fortschritt.** „5 Prozentpunkte besser“ sind bei einem Bogen von 80 Fragen vier Fragen — weniger, als zwei Ziehungen aus demselben Bestand ohnehin auseinanderliegen. ### Für die Werkbank - **Der Defekt saß im Weg, den das Handbuch selbst empfiehlt.** Zwei Geräte über die Sicherungsdatei zu verbinden ist die dokumentierte Lösung; genau dort ging die Abwahl verloren. Die neue Wache setzt in der Quelle `kapitel_ausschluss = '["IV"]'` und prüft es am Ziel nach. - **Die Abfrage greift nur, wenn die Quelle die Spalte kennt.** Eine Sicherung von vor 0.20.0 hat sie nicht; dort ist „nichts abgewählt“ die richtige Annahme. Der vorhandene Test über ältere Quellen bleibt grün. - **Warum die binomiale Streuung hier trägt, obwohl der Reifegrad sie ausschlägt.** `entscheidung-reifegrad.md` Abschnitt 5 lehnt eine Bestehenswahrscheinlichkeit ab, weil die Trefferchancen je Frage zweigipflig verteilt sind. Das trifft eine **Prognose**. Beim bereits gezogenen Bogen hebt sich die Zweigipfligkeit auf: Eine zufällig gezogene Frage zu beantworten ist selbst ein Bernoulli-Versuch mit der mittleren Trefferchance. Mit **200 000 Läufen** gegen die in der Notiz beschriebene Verteilung nachgerechnet — bei 85, 70 und 50 Prozent gefestigter Fragen lag die gemessene Streuung jedes Mal **unter** der binomialen (11,63 zu 12,51 · 15,36 zu 16,87 · 16,97 zu 18,73). Die Endlichkeitskorrektur bliebe zusätzlich draußen. Die Schätzung ist also die vorsichtige Seite. - **Ein bestehender Test musste seine Erwartung ändern, und das ist der Befund.** `verlaufsvergleich.test.ts` prüfte mit `toEqual([])`, dass es keine Vorbehalte gibt — an Werten, die selbst ein Rauschfall sind: 80 Fragen, 75 gegen 80 Prozent. Die Zusicherung war zu weit gefasst; sie prüft jetzt, was ihr Name verspricht. - **Die Zahlen im Handbuch sind an den Katalog gebunden.** `tests/hilfe-zahlen.test.ts` zählt die 104 offenen Fragen und ihre Anfangswörter (26 „Was“, 25 „Welche“, 7 „Wie“, je 5 „Wann“ und „Nennen Sie“) bei jedem Lauf nach und liest die Zahlen aus dem Handbuchtext selbst, nicht aus einer zweiten Liste daneben. Gegengeprobt: eine verstellte Ziffer macht ihn rot. - **Der Entwurf zum Handbuch war zuerst falsch.** Er nannte „Erläutern Sie …“ als Beispiel einer Fragestellung — nachgezählt kommt das Wort im ganzen Katalog nicht vor. Und die Regel „zählen Sie, wie viele Punkte gefragt sind“ galt nur für **5 von 104** Fragen. Beides steht jetzt so da, wie es gemessen ist. - **Nachteilsausgleich: nachgeschlagen statt behauptet.** `data-pipeline/gesetz.py --suche` findet das Wort in keinem der beigelegten Gesetze. Genannt sind deshalb nur belegte Stellen: § 2 Absatz 1 AWaffV (die zuständige Behörde bildet die Prüfungsausschüsse), § 3 Absatz 5 (schießsportliche Vereine dürfen für ihre Mitglieder prüfen), § 2 Absatz 3 (theoretischer **und** praktischer Teil) und § 2 Absatz 5 (Wiederholung, Frist möglich). - Zahlen: **1742 Vitest-Tests in 77 Dateien** (vorher 1734), ESLint ohne Warnung. --- Fruehere Fassungen sind in dieser Ausgabe nicht einzeln aufgefuehrt. Die Entwicklung bis zum 31.08.2026 ist im Ausgangs-Commit dieses Archivs zusammengefasst.