From 12a1fe7becb65b803e298d63d306890f4d7fe717 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 11 Aug 2026 19:38:45 +0000 Subject: [PATCH 1/2] feat(wissen): Initiative Transparente Zivilgesellschaft und Praxisleitfaden (v65) Nachgezogen auf Wunsch. Die freiwillige Selbstverpflichtung ist strukturell dasselbe wie ein Transparenzgesetz - ein fester Katalog, den man abarbeitet, nur eben freiwillig - und damit der passendste Anker fuer gemeinnuetzige Organisationen. Dazu der Praxisleitfaden von Bernhard Krabina (Bertelsmann Stiftung), der ausdruecklich fuer zivilgesellschaftliche Akteure geschrieben ist und nicht fuer Verwaltungen. ZUR QUELLENLAGE - die schwaechste im ganzen Werkzeug: Beide Angaben stammen aus SUCHERGEBNISSEN, nicht aus dem Volltext. Die Netzwerkrichtlinie der Entwicklungsumgebung sperrt sowohl transparente-zivilgesellschaft.de als auch die Bertelsmann-Seiten. Belegt sind fuenf der zehn Punkte (Satzung, Namen der wesentlichen Entscheidungstraeger, Mittelherkunft, Mittelverwendung, Personalstruktur). Daraus folgt die Formulierung: der Eintrag behauptet keine Vollstaendigkeit, sondern nennt die fuenf ausdruecklich als Ausschnitt ("darunter ...") und verweist fuer den Wortlaut auf die Quelle. Drei Tests halten genau diese Zurueckhaltung fest, damit sie beim naechsten Bearbeiten nicht verlorengeht: - der Ausschnitt-Hinweis muss stehen bleiben - der Verweis auf den vollstaendigen Wortlaut muss stehen bleiben - die Zahl der Unterzeichnenden darf nicht auftauchen (sie altert, wie alle Jahreszahlen, die das Werkzeug bewusst nicht fuehrt) Beim Schreiben fiel auf, dass ich die Lizenz des Leitfadens in einer frueheren Auswertung mit "CC BY 4.0" angegeben hatte, obwohl die Suche das nie hergab. Der Eintrag fuehrt deshalb KEINE Lizenzangabe, und ein Test verbietet sie. Die Herkunftszuordnung aus v64 (Name -> Host) ist um beide Eintraege erweitert - die Regel "jede Adresse zeigt auf die herausgebende Stelle selbst" gilt fuer sie genauso. 4 neue Tests (371 gesamt). Drei Mutationen einzeln geprueft, jede macht genau einen Test rot. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_011QxDJcLg9h8zdL9ZpTTty7 --- CLAUDE.md | 11 +++-- README.md | 4 +- datenschutz/index.html | 2 +- index.html | 10 ++-- js/app.js | 13 +++++- tests/governance.spec.js | 54 ++++++++++++++++++++++ tools/generate-wissen.js | 2 +- wissen/glossar/index.html | 2 +- wissen/index.html | 2 +- wissen/kommunale-satzungen/index.html | 2 +- wissen/lizenzen/index.html | 2 +- wissen/pruefwerkzeuge/index.html | 12 ++++- wissen/rechtsgrundlagen-laender/index.html | 2 +- wissen/rechtsgrundlagen/index.html | 2 +- wissen/reifegrad-modelle/index.html | 2 +- 15 files changed, 100 insertions(+), 22 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 46d9461..0a0365e 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -11,7 +11,7 @@ Dieses Dokument beschreibt Architektur, Konventionen und wichtige Implementierun - **Einstiegspunkt:** `index.html` - **Styles:** `css/styles.css` (Layout & Komponenten) + `css/tokens.css` (Design-Tokens) - **Logik:** `js/app.js` (eine einzige Datei) -- **Aktuelle Version:** `v64` (Script-Tag: ` + ``` ### Externe Aufrufe @@ -66,7 +66,7 @@ Die App hat keinen Build-Schritt – getestet wird **die ausgelieferte App**, al ```bash npm install # nur Dev: @playwright/test (exakt gepinnt) npx playwright install chromium # einmalig -npm test # 367 Tests, ~145 s +npm test # 371 Tests, ~145 s npm run test:ui # interaktiver Modus ``` @@ -461,7 +461,9 @@ Dazu drei Einträge in `PRUEF_WERKZEUGE` und einer in `METHOD_MODELS`: | **OParl 1.1** (OKF Deutschland, CC BY 3.0 DE) | Schnittstelle für kommunale Ratsinformationssysteme; relevant, wenn Gremiendaten nachgenutzt oder beschrieben werden | | **DigComp** (EU JRC, CC BY 4.0) | **Ergänzung, kein Ersatz** für Data Orchard: DigComp beschreibt die Kompetenzen einzelner Personen, die Dimension „Können & Kapazität" fragt nach der Organisation. Frei lizenziert, anders als CC BY-NC-SA | -> ⚠️ **Herkunft und Grenze.** Alle Angaben stammen aus dem Recherchebericht des Nutzers. **Nicht** enthalten ist die Initiative Transparente Zivilgesellschaft – sie stammte aus einer eigenen Suche, nicht aus dem Bericht, und der Wortlaut ihrer zehn Punkte ließ sich nicht am Original prüfen. Ebenfalls **nicht** übernommen: die im Bericht erwähnte geplante IFG-Einschränkung. Sie beruht dort ausdrücklich nur auf zivilgesellschaftlichen Quellen, ein amtlicher Entwurf lag nicht vor – ein Werkzeug, das bewusst keine Jahreszahlen führt, darf erst recht keinen Gesetzentwurf behaupten, den es nicht gibt. +> ⚠️ **Herkunft und Grenze.** Die Einträge aus v64 stammen aus dem Recherchebericht des Nutzers. Die **Initiative Transparente Zivilgesellschaft** und der Praxisleitfaden *Offene Daten der Zivilgesellschaft* kamen in v65 dazu und haben die **schwächste Quellenlage im ganzen Werkzeug**: sie stammen aus Suchergebnissen, nicht aus dem Volltext – die Netzwerkrichtlinie sperrt beide Seiten. Belegt sind fünf der zehn Punkte; der Eintrag kennzeichnet sie deshalb ausdrücklich als Ausschnitt („darunter …") und verweist für den Wortlaut auf die Quelle. Drei Tests halten das fest, damit niemand die Teilliste später zur Vollständigen erklärt. Für den Leitfaden steht **keine Lizenzangabe** – sie war aus den Suchergebnissen nicht belegt. +> +> **Nicht** übernommen: die im Bericht erwähnte geplante IFG-Einschränkung. Sie beruht dort ausdrücklich nur auf zivilgesellschaftlichen Quellen, ein amtlicher Entwurf lag nicht vor – ein Werkzeug, das bewusst keine Jahreszahlen führt, darf erst recht keinen Gesetzentwurf behaupten, den es nicht gibt. ⚠️ **Regel für `PRUEF_WERKZEUGE`:** jede Adresse zeigt auf die Stelle, die das Werkzeug bzw. den Normtext **selbst** herausgibt – nie auf eine Sekundärquelle. Der Test führt dafür seit v64 eine Zuordnung Name → Host statt einer Host-Liste: ein neuer Eintrag erzwingt eine bewusste Entscheidung. @@ -674,6 +676,7 @@ Nach Änderungen an `app.js` `?v=N` im Script-Tag **und** die `v{N}` im Footer e | v16 | Daten-Kompass (Herzstück) – eigene View + Hero-Haupt-CTA (Topbar-„Loslegen" zeigt ebenfalls darauf): ausführliche Open-Data-Reifegrad-Checkliste nach ODRA / EU Open Data Maturity / 5-Sterne / DCAT-AP.de / DSGVO·FAIR (7 Dimensionen, Quellenangaben), Status je Item mit Score & Ampel, Vorbelegung aus dem App-Stand, adaptive Sprünge in die passenden Bausteine, Persistenz (`datenlotse_kompass`) und PDF-Export; leeres „Loslegen"-Platzhalter-Modal entfernt | | v17 | Weiterer Ausbau (1/4) – Inventar Suche, Filter & Sortierung: `renderInventory()` in `renderInventory()` + `renderInventoryBody()` aufgeteilt; `.inv-controls` (Volltextsuche + Schutzbedarf-/Clearing-Ampel-Filter + Sortierung Titel/Vollständigkeit) über `invFilter`-State und `filteredInventory()`; der echte `idx` wird durch den Filter mitgeführt, sodass Editieren über gefilterten Teilmengen weiterhin den richtigen Datensatz trifft; Live-Meta „X von Y" + Empty-State | | v18 | Weiterer Ausbau (2/4) – Pseudonymisierung erweitert: drei neue Muster (Sozialversicherungsnummer, Steuer-ID *kontextgetriggert*, Kfz-Kennzeichen), Aktenzeichen um Geschäftszeichen/„Gz." und buchstabenhaltige Kerne erweitert, zusätzliche Geburtsdatum-Trigger („Geburtsdatum"/„Geburtstag"); Mapping-Export als CSV (`buildPseudoMappingCSV` + Button im Mapping-Kopf); Demo-Text und Grenzen-Liste aktualisiert; verifiziert auf Determinismus, Platzhalter-Konsistenz und Null-Falschtreffer auf neutralem Verwaltungstext | +| v65 | **Die Initiative Transparente Zivilgesellschaft – mit sichtbar gemachter Quellenlage.** Nachgezogen auf Wunsch: die freiwillige Selbstverpflichtung ist strukturell dasselbe wie ein Transparenzgesetz – ein fester Katalog, den man abarbeitet, nur eben freiwillig – und damit der passendste Anker für gemeinnützige Organisationen. Dazu der Praxisleitfaden von Bernhard Krabina (Bertelsmann Stiftung), der ausdrücklich für zivilgesellschaftliche Akteure geschrieben ist. **Beide haben die schwächste Quellenlage im ganzen Werkzeug:** die Angaben stammen aus Suchergebnissen, nicht aus dem Volltext, weil die Netzwerkrichtlinie beide Seiten sperrt. Belegt sind fünf der zehn Punkte. Der Eintrag behauptet deshalb keine Vollständigkeit, sondern nennt sie als Ausschnitt und verweist für den Wortlaut auf die Quelle – und **drei Tests halten genau diese Zurückhaltung fest**, damit sie beim nächsten Bearbeiten nicht verlorengeht. Beim Schreiben fiel auf, dass ich die Lizenz des Leitfadens in einer früheren Auswertung mit „CC BY 4.0" angegeben hatte, obwohl die Suche das nie hergab; der Eintrag führt deshalb keine Lizenzangabe, und ein Test verbietet sie. | | v64 | **Der zivilgesellschaftliche Anknüpfungspunkt – aus den Quellen, die wirklich vorlagen.** Die auffälligste Lücke war keine fehlende Liste, sondern eine fehlende Leserichtung: die 16 Landesgesetze standen nur als Pflicht der informationspflichtigen Stelle da. Für einen Verein sind dieselben Gesetze das Werkzeug, um an Daten zu kommen – der Lead benennt jetzt beide Richtungen und verweist auf FragDenStaat. Dazu drei Werkzeuge aus dem Bericht: der **Musterdatenkatalog** als Antwort auf „was veröffentlichen andere?", **ARX** als das, was DatenLotse bewusst nicht tut (generalisieren und unterdrücken statt nur messen), und **OParl 1.1** für Ratsinformationen. **DigComp** kommt als frei lizenzierte Ergänzung zu Data Orchard dazu – ausdrücklich nicht als Ersatz, denn es beschreibt einzelne Personen, während die Dimension nach der Organisation fragt. Nicht übernommen: die geplante IFG-Einschränkung (im Bericht selbst nur advocacy-belegt, kein amtlicher Entwurf) und die Initiative Transparente Zivilgesellschaft (stammte aus einer eigenen Suche, nicht aus dem Bericht). Beim Einfügen fiel auf, dass der Bestandstest für die Werkzeugliste eine **Host-Liste** kodierte; die eigentliche Regel ist „jede Adresse zeigt auf die herausgebende Stelle selbst" – der Test führt jetzt eine Zuordnung Name → Host, sodass ein neuer Eintrag eine Entscheidung erzwingt. 6 neue Tests. Ein Mutationslauf lief zunächst wirkungslos durch, weil das deutsche Schlusszeichen den Python-String beendete, ein zweiter blieb grün, weil mein Test auf „ergänzt" prüfte – das steht auch im mutierten Text. Erst die Prüfung auf „statt sie zu ersetzen" machte ihn rot. | | v63 | **Die Vollständigkeits-Zahl war zu freundlich.** `completeness()` zählte gefüllte Pflichtfelder – ein Datensatz mit allen Pflichtangaben stand auf 100 %, auch ohne Schlagwörter, ohne Zeitraum und nur als PDF. Genau dagegen richtet sich der Leitgedanke der Metadata Quality Assurance von data.europa.eu. Die Zahl folgt jetzt deren Schema: fünf FAIR-Dimensionen, 405 Punkte, 18 Einzelprüfungen. **Ersatz statt drittes Maß** – der Funktionsname bleibt, damit Badge, Durchschnitt, Sortierung, Dashboard und Bericht weiter an genau einer graduellen Zahl hängen. Ein frischer Import fällt damit von ~83 % auf ~46 %; das ist der Zweck. Sauber getrennt ist, was übernommen wurde: die **Dimensionsgewichte** stammen aus der Methodik, die **Zuordnung der Einzelprüfungen** ist eigene Zutat – ein Test pinnt die Gewichte wörtlich und prüft, dass jede Dimension ihr Maximum ausschöpft. Ausdrücklich benannt ist auch, was der Wert **nicht** ist: die MQA ruft URLs ab, DatenLotse macht keine Netzaufrufe und prüft nur Vorhandensein und Wohlgeformtheit. Der stärkste Test geht die 18 Prüfungen einzeln durch und misst, ob jede ihre vollen Punkte ausmacht – eine wirkungslose Prüfung fällt sofort auf. Beim Bauen zeigte sich nebenbei, dass `empty()` zweimal wortgleich als lokale Hilfe existierte; jetzt einmal modulweit. 8 neue Tests, drei bestehende auf die neue Semantik umgeschrieben statt gelockert. Ein erster Mutationsversuch war zu schwach gewählt und lief grün durch – erst die schärfere Fassung (Positivliste akzeptiert alles) machte ihn rot. | | v62 | **Rechtslage nachgezogen – mit offengelegter Herkunft.** `LEGAL_BASIS` kannte weder den **Data Act** noch den **Data Governance Act**, obwohl beide inzwischen anwendbar sind, und der Eintrag zu § 12a EGovG stand noch auf dem Stand vor dem OZG-Änderungsgesetz (Ausweitung auf die „Behörden des Bundes", Open-Data-Koordinatoren, Berichtspflicht). Der interessanteste Zugewinn ist **DGG Kapitel II**: das Statistische Bundesamt ist dort zentrale Informationsstelle für die Weiterverwendung geschützter Verwaltungsdaten und unterstützt ausdrücklich bei Anonymisierung und Pseudonymisierung – das ist der amtliche Anknüpfungspunkt zu Modul 3a und 3b. Beim Data Act war die Formulierung heikel: Kapitel V verpflichtet nur bei **außergewöhnlicher Notwendigkeit**, und ein Eintrag, der das verschweigt, weckt die Erwartung eines allgemeinen Datenzugangs; ein Test hält den Vorbehalt fest. **Zur Herkunft:** die Angaben stammen aus einem Recherchebericht des Nutzers, nicht aus eigener Prüfung an der amtlichen Quelle – die Netzwerkrichtlinie sperrt EUR-Lex und gesetze-im-internet.de. Verlinkt wurde deshalb nur, was sich aus dem dokumentierten CELEX-Schema sicher bilden lässt; DADG und DGG stehen im Text, aber ohne Link, damit keine geratene Fundstelle als amtliche Quelle erscheint. Dazu: die Prüfwerkzeuge nannten die **DCAT-AP.de-Spezifikation 2.0**, aktuell ist 3.0 – das Konventionenhandbuch bleibt dagegen ausdrücklich bei 2.0. 6 neue Tests, drei Mutationen geprüft. | diff --git a/README.md b/README.md index 56e7616..a00a4cf 100644 --- a/README.md +++ b/README.md @@ -116,7 +116,7 @@ Die App selbst bleibt abhängigkeitsfrei; für die Tests wird einmalig Playwrigh ```bash npm install # nur Dev: @playwright/test npx playwright install chromium -npm test # 367 Tests, ~145 s +npm test # 371 Tests, ~145 s npm run test:ui # interaktiver Modus ``` @@ -306,7 +306,7 @@ datenlotse/ │ ├── sample-landkreis.csv # Beispiel: fiktive Kreisverwaltung (12 Datensätze) │ ├── sample-landesbehoerde.csv # Beispiel: fiktive Landesebene (12 Datensätze) │ └── template.csv # Leere Vorlage zum eigenen Befüllen -├── tests/ # Playwright-End-to-End-Tests (367 Tests) +├── tests/ # Playwright-End-to-End-Tests (371 Tests) │ ├── helpers.js # openApp/loadSample/Download-Helfer │ ├── smoke.spec.js # Views, Routing, Dashboard, HTML-Validität │ ├── import.spec.js # CSV-Parser, Ableitung, Formel-Injection diff --git a/datenschutz/index.html b/datenschutz/index.html index 7131936..907927b 100644 --- a/datenschutz/index.html +++ b/datenschutz/index.html @@ -42,7 +42,7 @@ } - + diff --git a/index.html b/index.html index bebcdb5..03da27f 100644 --- a/index.html +++ b/index.html @@ -125,10 +125,10 @@ - + - - + + @@ -893,7 +893,7 @@

Umsetzung besprechen

Brands-Familie und hätte dafür 116 KB Schrift nachgeladen. --> - v64 + v65 @@ -1109,7 +1109,7 @@

Lizenz-Wegweiser

- +