Bestimmung 06 · Live ab 2026-05-21
Integrity / Provenienz
Bei jedem Publish des Korpus berechnen wir eine Merkle-Wurzel über alle Entscheide. Die Wurzel wird im öffentlichen Repository committet und (sobald aktiviert) via OpenTimestamps auf der Bitcoin-Blockchain verankert. Damit ist jeder einzelne Entscheid kryptografisch nachprüfbar — auch dann, wenn opencaselaw.ch dereinst nicht mehr existieren sollte.
Aktuelle Wurzel
Letzte Publish-Periode
— wird beim Aufruf geladen —
latest.json (Manifest) · latest.root (nur Hex) · latest.root.ots (OpenTimestamps-Anker)
Was die Wurzel verspricht
Für jeden einzelnen Entscheid wird ein Blattwert nach dem folgenden Schema gebildet und SHA-256-gehasht:
decision_id cli:ch ECLI content_hash (SHA-256 über regeste || full_text) decision_date
Die Blätter werden in alphabetischer Reihenfolge nach decision_id in einen RFC-6962-Merkle-Baum eingelesen (gleiche Konvention wie Certificate Transparency). Die Wurzel ist 32 Bytes (64 Hex-Zeichen) und commitet sich zu jedem einzelnen Entscheid mit dieser decision_id, diesem content_hash, diesen Identifikatoren, an diesem Datum.
Ein Verifizierer kann mit der Wurzel + einem Inklusions-Beweispfad (log₂ N Geschwister-Hashes, ~20 für 972k Entscheide) kryptografisch beweisen, dass ein bestimmter Entscheid Teil des Korpus war — ohne opencaselaw.ch zu vertrauen.
Verifikationspfad
decision_id, content_hash, cli:ch, ECLI, decision_date.decision_id\ncli:ch\nECLI\ncontent_hash\ndecision_dateSHA-256(0x00 || leaf_bytes)SHA-256(0x01 || left || right).docs/integrity/<datum>.root im Git-Repository..ots-Proof gegen die Bitcoin-Blockchain — damit gilt die Wurzel als zu einem bestimmten Zeitpunkt existiert.Roadmap
- Live: tägliche Merkle-Wurzel + Manifest publiziert als
docs/integrity/<YYYY-MM-DD>.{root,json}. - Live: OpenTimestamps-Anker via
ots stamp. Die.root.ots-Datei wird täglich neben dem Root abgelegt und kann nach ~1 Bitcoin-Block (1–6 Std.) zu einem voll Bitcoin-verankerten Beweis aufgewertet werden (ots upgrade). - Live: API-Endpunkt
GET /api/integrity/<decision_id>liefert den RFC-6962 Inklusions-Beweispfad einer Entscheidung gegen die aktuellste Wurzel. Lazy-geladene Sub-Tree-Memoisierung (~3 s First-Call, danach <1 ms pro Beweis). - Optional: Cross-Anchoring zu weiteren Zeitstempel-Diensten (Sigsum, RFC 3161 TSA) für Defense-in-Depth.
Das ist Teil der Open Law Standards (Bestimmung 06 · Provenienz).
Referenz-Implementierung
- integrity.py — pure-function Merkle-Bibliothek (RFC 6962). Public-domain.
- build_integrity_root.py — täglich aus der FTS5-Datenbank gebaut, integrierbar in jede Publish-Pipeline.