Pipeline-code, tooling, documentatie
Find a file
Coornhert 6a5bdf3f08 feat: indexers productieklaar voor volledige 40k-regelingen run
Kwaliteits- en betrouwbaarheidsverbeteringen zodat een full re-index
van alle Nederlandse regelingen veilig en observeerbaar draait.

- Deterministische Qdrant point_id via SHA-256 → idempotente re-runs
  zonder duplicaten, resumable bij gedeeltelijke fout
- Chunking voor lange artikelen (>1800 chars) met 200-char overlap op
  paragraaf-grenzen (hard-split fallback), voorkomt informatieverlies
  voor lange wetsartikelen
- Retry + exponential backoff op Mistral en Meilisearch (4 pogingen,
  respecteert Retry-After header, netwerkfouten apart van HTTP-fouten)
- Mistral batch_size 10 → 32 (~3x minder API-calls voor ~400k chunks)
- Meilisearch buffered uploads (5000 docs/batch over regelingen heen)
- Progress logging met rate/ETA in beide indexers (elke 100 regelingen)
  + --limit flag voor test-runs op subset
- Nieuwe CLI: `wetgit reindex --target all|meili|qdrant [--limit N]`
2026-04-21 21:13:31 +02:00
ansible chore(ansible): Meilisearch/Qdrant stack, web vhost, module-paden 2026-04-21 20:58:38 +02:00
PRD docs: PRD v1.0 + CLAUDE.md projectinstructies 2026-04-21 20:58:45 +02:00
src/wetgit feat: indexers productieklaar voor volledige 40k-regelingen run 2026-04-21 21:13:31 +02:00
tests feat: project scaffold + BWB XML parser 2026-03-29 21:24:32 +02:00
.env.example feat: project scaffold + BWB XML parser 2026-03-29 21:24:32 +02:00
.gitignore docs: README herschrijven, data/ toevoegen aan gitignore 2026-03-30 06:40:06 +02:00
CLAUDE.md docs: PRD v1.0 + CLAUDE.md projectinstructies 2026-04-21 20:58:45 +02:00
flake.lock feat: project scaffold + BWB XML parser 2026-03-29 21:24:32 +02:00
flake.nix feat: MVP webinterface 2026-03-30 10:48:36 +02:00
LICENSE Initial commit 2026-03-29 08:15:21 +02:00
pyproject.toml feat: Fase 2/3 features — hybrid search, feed, domeinen, referenties 2026-04-21 20:58:27 +02:00
README.md docs: README herschrijven, data/ toevoegen aan gitignore 2026-03-30 06:40:06 +02:00

WetGit

Nederlandse wetgeving als code. Elke wet een Markdown-bestand. Elke wijziging een Git-commit.

In de geest van Dirk Volkertzoon Coornhert (1522-1590) — humanist, graveur en voorvechter van een transparant rechtssysteem.

Wat is WetGit?

WetGit zet de volledige Nederlandse wetgeving om naar version-controlled, machine-readable Markdown-bestanden in Git-repositories. Browse de wet, git log de historie, git diff elke wijziging — zie precies wat er veranderde, wanneer, en waarom.

Repositories

Repository Inhoud Status
wetgit/meta Pipeline, tooling, documentatie Actief
wetgit/rijk Rijksregelgeving — 40.566 regelingen Actief

Quick start

# Clone de rijksregelgeving
git clone https://git.wetgit.nl/wetgit/rijk.git

# Wat zegt artikel 1 van de Grondwet?
cat rijk/wet/grondwet/BWBR0001840/README.md

# Zoek in alle wetgeving
grep -r "persoonsgegevens" rijk/wet/ --include="*.md" -l

Pipeline

De conversie-pipeline draait in Python en verwerkt BWB XML naar Markdown:

# Parse alle wetten
python -m wetgit.pipeline.runner --output ./output --type wet

# Of een specifiek type
python -m wetgit.pipeline.runner --output ./output --type AMvB --limit 100

Architectuur

SRU zoekservice ──→ BWB XML repository ──→ Parser ──→ Markdown + YAML
(catalogus)         (download)              (lxml)    (git commit)

Technische stack

Component Technologie
XML parsing lxml + XPath
Git operaties pygit2
API (planned) FastAPI
Zoeken (planned) Meilisearch
Hosting Self-hosted Forgejo
Infra Ansible + Hetzner

Databronnen

Bron Omvang Licentie
BWB (Basiswettenbestand) 40.566 regelingen CC0 (publiek domein)
CVDR (decentrale regelgeving) Gepland Publiek domein
EUR-Lex (EU-regelgeving) Gepland Vrij herbruikbaar

Development

# Nix devshell (bevat alle dependencies)
nix develop

# Tests draaien
PYTHONPATH=src python -m pytest tests/ -v

# Linting
ruff check src/
black --check src/

Disclaimer

WetGit is geen officiele bron van wetgeving. Raadpleeg altijd wetten.overheid.nl voor de authentieke tekst. AI-gegenereerde samenvattingen zijn geen juridisch advies. Gebruik op eigen risico.

Licentie

  • Wetteksten (data): CC0 1.0 (publiek domein)
  • AI-samenvattingen: CC-BY 4.0
  • Tooling & pipeline: MIT

Contact