waffensachkunde
Waffensachkunde – Lernsoftware für die Sachkundeprüfung nach § 7 WaffG. Barrierefrei, offline, EUPL-1.2.
/ REUSE.toml
| 1 | # Lizenzangaben nach dem REUSE-Standard (https://reuse.software/). |
| 2 | # |
| 3 | # Das Projekt vereint zwei rechtlich verschiedene Arten von Inhalten, die |
| 4 | # strikt auseinandergehalten werden müssen: |
| 5 | # |
| 6 | # 1. Eigene Software und eigene didaktische Inhalte -> EUPL-1.2 |
| 7 | # 2. Der amtliche Fragenkatalog des Bundesverwaltungsamtes |
| 8 | # -> amtliches Werk, KEIN eigenes Urheberrecht. Er wird unverändert |
| 9 | # übernommen und mit Quellenangabe geführt. Eine eigene Lizenz kann |
| 10 | # und darf darauf nicht erteilt werden. |
| 11 | # |
| 12 | # Prüfen mit: pipx run reuse lint |
| 13 | |
| 14 | version = 1 |
| 15 | |
| 16 | SPDX-PackageName = "Waffensachkunde-Lernsoftware" |
| 17 | SPDX-PackageSupplier = "Olaf Willerding <Olaf@olaf-willerding.de>" |
| 18 | SPDX-PackageDownloadLocation = "" |
| 19 | |
| 20 | # ── Eigene Software ──────────────────────────────────────────────────────── |
| 21 | [[annotations]] |
| 22 | path = [ |
| 23 | "app/**", |
| 24 | "data-pipeline/**", |
| 25 | "tools/**", |
| 26 | ".githooks/**", |
| 27 | # Die vorbereitete Prüfstrecke. Sie stand bis Fassung 0.24.1 in keiner |
| 28 | # Liste, und `reuse lint` fiel daran durch – gemeldet als einzige Datei ohne |
| 29 | # Copyright- und Lizenzangabe. Aufgefallen war es nicht, weil die Prüfung |
| 30 | # in keinem Torwächter läuft: Ohne Fernarchiv gibt es keinen Runner, und |
| 31 | # `npm run gate` ruft `reuse` nicht auf. |
| 32 | ".github/**", |
| 33 | # Arbeitsregeln und Prüfhaken für Claude Code: CLAUDE.md in der Wurzel, |
| 34 | # Einstellungen, Haken-Skript und die Fehlersuche-Anleitung unter .claude/. |
| 35 | ".claude/**", |
| 36 | "CLAUDE.md", |
| 37 | "PLAN.md", |
| 38 | "CHANGELOG.md", |
| 39 | "README.md", |
| 40 | ".gitignore", |
| 41 | ".gitattributes", |
| 42 | ".prettierignore", |
| 43 | "REUSE.toml", |
| 44 | ] |
| 45 | precedence = "aggregate" |
| 46 | SPDX-FileCopyrightText = "2026 Olaf Willerding" |
| 47 | SPDX-License-Identifier = "EUPL-1.2" |
| 48 | |
| 49 | # ── Lizenztexte im Projektverzeichnis ────────────────────────────────────── |
| 50 | # Kopien der EUPL fuer Werkzeuge und Menschen, die nur die Wurzel absehen; die |
| 51 | # massgeblichen Fassungen liegen unter LICENSES/. Der Text gehoert der |
| 52 | # Europaeischen Union und wird unveraendert wiedergegeben - das Projekt kann |
| 53 | # darauf keine eigene Lizenz erteilen, deshalb steht hier nicht der eigene |
| 54 | # Urheberrechtsvermerk. |
| 55 | [[annotations]] |
| 56 | path = ["LICENSE", "LICENSE.de.txt"] |
| 57 | precedence = "aggregate" |
| 58 | SPDX-FileCopyrightText = "European Union 2007, 2016" |
| 59 | SPDX-License-Identifier = "EUPL-1.2" |
| 60 | |
| 61 | # ── Eigene didaktische Inhalte ───────────────────────────────────────────── |
| 62 | # Alternativtexte, Erklärungen und Glossar sind eigene Werke. Sie sind bewusst |
| 63 | # vom amtlichen Katalog getrennt, damit die Grenze nachvollziehbar bleibt. |
| 64 | # |
| 65 | # Das Glossar gibt an vielen Stellen gesetzliche Begriffsbestimmungen wieder. |
| 66 | # Die sind nach § 5 Abs. 1 UrhG gemeinfrei und begründen kein fremdes Recht; |
| 67 | # eigenes Werk sind Auswahl, Anordnung und die erklärenden Texte. |
| 68 | [[annotations]] |
| 69 | path = ["content/erklaerungen.json", "content/glossar.json"] |
| 70 | precedence = "aggregate" |
| 71 | SPDX-FileCopyrightText = "2026 Olaf Willerding" |
| 72 | SPDX-License-Identifier = "EUPL-1.2" |
| 73 | |
| 74 | # ── Fundstellenindex der Gesetze ─────────────────────────────────────────── |
| 75 | # Maschinell erzeugt aus dem amtlichen XML von gesetze-im-internet.de. Gesetze |
| 76 | # und Verordnungen sind nach § 5 Abs. 1 UrhG gemeinfrei; die Datei wird nicht |
| 77 | # mit der Anwendung ausgeliefert und dient allein der Pruefung der |
| 78 | # Fundstellen im Entwicklungsbaum. |
| 79 | [[annotations]] |
| 80 | path = ["content/gesetze/index.json"] |
| 81 | precedence = "aggregate" |
| 82 | SPDX-FileCopyrightText = "gemeinfrei nach § 5 Abs. 1 UrhG; zusammengestellt aus gesetze-im-internet.de" |
| 83 | SPDX-License-Identifier = "LicenseRef-Gesetzestext-Gemeinfrei" |
| 84 | |
| 85 | # ── Ausgelieferte Normtexte ──────────────────────────────────────────────── |
| 86 | # Anders als der Index oben wird diese Datei mitgeliefert: Sie enthaelt den |
| 87 | # Wortlaut der Normen, die in Erklaerungen und Glossar zitiert werden, damit |
| 88 | # sich „Im Gesetz nachlesen“ ohne Netz erfuellen laesst. Der Wortlaut ist der |
| 89 | # amtliche und unveraendert; Gesetze und Verordnungen sind nach § 5 Abs. 1 UrhG |
| 90 | # gemeinfrei. Eigene Leistung ist allein die Auswahl der zitierten Normen — |
| 91 | # und die ist keine schoepferische, sondern eine Folge der Fundstellen. |
| 92 | [[annotations]] |
| 93 | path = ["content/normtexte.json"] |
| 94 | precedence = "aggregate" |
| 95 | SPDX-FileCopyrightText = "gemeinfrei nach § 5 Abs. 1 UrhG; Wortlaut aus gesetze-im-internet.de" |
| 96 | SPDX-License-Identifier = "LicenseRef-Gesetzestext-Gemeinfrei" |
| 97 | |
| 98 | # Die Themengliederung ist eigene redaktionelle Leistung: Der amtliche Katalog |
| 99 | # gliedert die Kapitel II bis IV gar nicht auf, die Gruppen und ihre Titel |
| 100 | # stammen vollstaendig von hier. Uebernommen sind nur die Fragen-Kennungen. |
| 101 | [[annotations]] |
| 102 | path = ["content/themen.json"] |
| 103 | precedence = "aggregate" |
| 104 | SPDX-FileCopyrightText = "2026 Olaf Willerding" |
| 105 | SPDX-License-Identifier = "EUPL-1.2" |
| 106 | |
| 107 | [[annotations]] |
| 108 | path = ["content/alttexte.json"] |
| 109 | precedence = "aggregate" |
| 110 | SPDX-FileCopyrightText = "2026 Olaf Willerding" |
| 111 | SPDX-License-Identifier = "EUPL-1.2" |
| 112 | |
| 113 | # ── Amtlicher Fragenkatalog ──────────────────────────────────────────────── |
| 114 | # Herausgeber: Bundesverwaltungsamt, Referat S II 6, im Auftrag des BMI. |
| 115 | # Stand 16.12.2024. Der Wortlaut wird unverändert wiedergegeben; Änderungen am |
| 116 | # Katalog bedürfen laut Katalog-Hinweis der schriftlichen Zustimmung des BVA |
| 117 | # (entspricht dem Änderungsverbot des § 62 UrhG). Die Quellenangabe nach |
| 118 | # § 63 UrhG führt die Software sichtbar mit. |
| 119 | [[annotations]] |
| 120 | path = [ |
| 121 | "content/katalog/**", |
| 122 | "Fragenkatalog_sachkunde_mitAntworten.pdf", |
| 123 | ] |
| 124 | precedence = "aggregate" |
| 125 | SPDX-FileCopyrightText = "Bundesverwaltungsamt – amtliches Werk" |
| 126 | SPDX-License-Identifier = "LicenseRef-Amtliches-Werk-BVA" |
| 127 | |
| 128 | # ── Lizenzübersicht der Fremdsoftware ────────────────────────────────────── |
| 129 | # Selbst erzeugtes Verzeichnis der mitgelieferten Pakete. Die darin zitierten |
| 130 | # Lizenztexte gehören ihren jeweiligen Urhebern; die Datei als solche ist ein |
| 131 | # Erzeugnis dieses Projekts und läuft deshalb unter dessen Lizenz. |
| 132 | # |
| 133 | # Frühere Fassung setzte hier "MIT". Das war doppelt unrichtig: Die Datei ist |
| 134 | # kein MIT-lizenzierter Fremdcode, und ohne LICENSES/MIT.txt schlug |
| 135 | # `reuse lint` mit "MISSING LICENSES" fehl. |
| 136 | [[annotations]] |
| 137 | path = ["content/drittlizenzen.json"] |
| 138 | precedence = "aggregate" |
| 139 | SPDX-FileCopyrightText = "2026 Olaf Willerding" |
| 140 | SPDX-License-Identifier = "EUPL-1.2" |
| 141 | |
| 142 | # Die Datenschutzerklärung für die Anwendung, erzeugt aus docs/datenschutz.md |
| 143 | # über tools/datenschutz_anwendung.py. Eigener Text, keine amtliche Quelle – |
| 144 | # derselbe Urheber und dieselbe Lizenz wie das Markdown daneben. |
| 145 | [[annotations]] |
| 146 | path = ["content/datenschutz.json"] |
| 147 | precedence = "aggregate" |
| 148 | SPDX-FileCopyrightText = "2026 Olaf Willerding" |
| 149 | SPDX-License-Identifier = "EUPL-1.2" |
| 150 | |
| 151 | # ── Übrige Dokumentation ─────────────────────────────────────────────────── |
| 152 | # Eigene Texte und Bildschirmfotos ohne amtlichen Wortlaut – darunter die |
| 153 | # vier Store-Bilder 03, 04, 06 und 07. |
| 154 | # |
| 155 | # **Diese Regel steht bewusst VOR der genaueren darunter.** Treffen mehrere |
| 156 | # Einträge auf dieselbe Datei, gilt der letzte. Bis Fassung 0.24.1 stand |
| 157 | # `docs/**` hinter der Aufzählung der Bilder mit amtlichem Wortlaut und |
| 158 | # überschrieb sie damit vollständig: Am `reuse lint --json` nachgemessen |
| 159 | # trugen alle neun Dateien und der Prüfbericht die Angabe `EUPL-1.2`, also |
| 160 | # genau die Zuordnung, die der Block darunter verhindern sollte. Die |
| 161 | # Aufzählung war zwölf Zeilen Begründung ohne jede Wirkung. |
| 162 | [[annotations]] |
| 163 | path = ["docs/**"] |
| 164 | precedence = "closest" |
| 165 | SPDX-FileCopyrightText = "2026 Olaf Willerding" |
| 166 | SPDX-License-Identifier = "EUPL-1.2" |
| 167 | |
| 168 | # ── Dokumente, die amtlichen Katalogtext wiedergeben ─────────────────────── |
| 169 | # Nur diese: der Prüfbericht und die Bildschirmfotos, auf denen eine Frage |
| 170 | # des amtlichen Katalogs im Wortlaut zu sehen ist. Eine pauschale Zuordnung |
| 171 | # aller Dateien unter docs/ wäre unzutreffend – der Barrierefreiheits-Prüfplan |
| 172 | # und das Antragsdossier enthalten keinen Wortlaut des BVA. |
| 173 | # |
| 174 | # Dazugekommen mit den Store-Bildern (docs/store-bilder/, erzeugt von |
| 175 | # app/e2e/store-bilder.spec.ts). Von den sieben zeigen genau drei amtlichen |
| 176 | # Wortlaut: die Frage 1.37 mit ihren Antwortmoeglichkeiten (01), dieselbe mit |
| 177 | # der Rueckmeldung (02) und die Trefferliste der Suche mit drei Fragen (05). |
| 178 | # Die uebrigen vier zeigen Startbildschirm, Profilwahl und Glossar – dort |
| 179 | # steht kein Katalogtext. |
| 180 | # |
| 181 | # Ebenfalls nachgetragen: 13-suche.png. Auf ihm stehen fuenf Fragen im |
| 182 | # amtlichen Wortlaut; die Datei lief bislang unter der allgemeinen |
| 183 | # docs/**-Regel mit EUPL (offener Punkt 6 in docs/store-eintrag.md). Derselbe |
| 184 | # Sachverhalt wie bei 04, 05, 08 und 10 – also dieselbe Auszeichnung. |
| 185 | # |
| 186 | # `app/v2-frage.png` ist ein Bildschirmfoto aus der Entwicklung und zeigt |
| 187 | # ebenfalls eine Frage im amtlichen Wortlaut. Es lag unter der `app/**`-Regel |
| 188 | # und war damit als eigenes EUPL-Werk ausgezeichnet – dieselbe unzutreffende |
| 189 | # Zuordnung, die bei 13-suche.png schon einmal aufgefallen ist. Die Datei ist |
| 190 | # in keinem Dokument und keinem Test verwendet; ob sie bleibt, entscheidet |
| 191 | # der Betreiber. Bis dahin steht sie wenigstens richtig. |
| 192 | [[annotations]] |
| 193 | path = [ |
| 194 | "docs/katalog-pruefbericht.html", |
| 195 | "docs/bildschirmfotos/04-lernsitzung.png", |
| 196 | "docs/bildschirmfotos/05-lernsitzung-feedback.png", |
| 197 | "docs/bildschirmfotos/08-pruefungslauf.png", |
| 198 | "docs/bildschirmfotos/10-erklaerung.png", |
| 199 | "docs/bildschirmfotos/13-suche.png", |
| 200 | "docs/store-bilder/01-frage-mit-antwortmoeglichkeiten.png", |
| 201 | "docs/store-bilder/02-rueckmeldung-mit-begruendung.png", |
| 202 | "docs/store-bilder/05-fragen-durchsuchen.png", |
| 203 | "app/v2-frage.png", |
| 204 | ] |
| 205 | precedence = "aggregate" |
| 206 | SPDX-FileCopyrightText = "2026 Olaf Willerding; enthält amtlichen Text des Bundesverwaltungsamtes" |
| 207 | SPDX-License-Identifier = "LicenseRef-Amtliches-Werk-BVA" |