Skip to content

Anker-protocol

Het anker-protocol stelt: élke schema-claim — élke schema-naam, élke gesloten-vocab-rij — moet wijzen naar een corpus-geverifieerd wet-artikel. Geen "ik denk dat dit X betekent". Geen "in de praktijk noemen we dit Y". Anker-of-niet-bestaan.

Twee anker-bronnen

source_kindAnker-shapeVerifieert tegenWettelijke basis
bwb_artikel(bwb_id, article_number, toestand_date)wet.artikelenBWBR-corpus (= directe wetgeving)
stop_paragraaf(stop_versie, stop_module, stop_section)wet.stop_paragrafenSTOP-standaard, krachtens RSPO art. 2 aangewezen

STOP-anker-bron is toegevoegd via ADR-0036, omdat sommige kernconcepten (rectificatie, renovatie, mutatie) wettelijk wel binden maar niet in een BWBR-artikel staan. Krachtens-de-wet-aangewezen normen zijn evengoed legitiem als wet-artikelen zelf.

De registry-tabel

sql
catalogus.legal_anchors (
  id              UUID PRIMARY KEY,
  anker_key       TEXT NOT NULL UNIQUE,
  source_kind     TEXT NOT NULL CHECK (source_kind IN ('bwb_artikel','stop_paragraaf')),
  bwb_id          TEXT,   -- voor source_kind='bwb_artikel'
  article_number  TEXT,   -- idem
  stop_versie     TEXT,   -- voor source_kind='stop_paragraaf'
  stop_module     TEXT,   -- idem
  stop_section    TEXT,   -- idem
  corpus_hash     TEXT NOT NULL,
  verified_at     TIMESTAMPTZ NOT NULL,
  verified_by     TEXT NOT NULL
)

De corpus_hash is SHA256 over de gehoste wet-tekst op moment van verificatie. Drift-detectie:

  • Bij elke validator-run wordt elke legal_anchors-rij gecontroleerd tegen de actuele tekst in wet.artikelen / wet.stop_paragrafen.
  • Als de huidige hash anders is dan corpus_hash, faalt de validator. Een PR die de catalogus uitbreidt zonder de ankers te hercertificeren wordt geblokkeerd.

De validator

scripts/validate-schema-anchors.ts walkt:

  1. Alle catalogus-tabellen waarvan rijen anker hebben (catalogus.expression_aarden, catalogus.publicatie_handeling_soorten, etc.).
  2. Per anker-key: lookup in catalogus.legal_anchors.
  3. Verifieer dat het anker bestaat, de bron-tekst nog matcht (corpus_hash), en de catalogus-rij correct verwijst.

Faalt op:

  • Missing legal_anchors-rij voor een catalogus-rij-anker
  • Hash-drift (corpus is veranderd)
  • Missing verified_at (anker is nooit gevalideerd)
  • bwb_id / article_number resolveert niet naar een rij in wet.artikelen

In CI: als deze validator faalt, gaat de PR niet door.

Wat dit waarborgt

Het schema kan niet langzaam afdrijven van de wettelijke werkelijkheid. Elke uitbreiding moet zich verantwoorden. Een schema-claim als "deze catalogus-rij staat voor het concept X uit artikel Y" is toetsbaar — niet alleen wat we ervan geloven, maar wat de corpus-evidence schraagt.

Wanneer een TBD-anker?

Sommige wetten zitten (nog) niet in corpus — Bro, Woo. Catalogus-rijen die op deze wetten ankeren krijgen een source_ref = 'TBD-<wet-aanduiding>' met expliciete vermelding van welke ingest nog moet komen. De validator markeert TBD-ankers als "to be resolved" maar laat de PR door. Bij ingest van de ontbrekende wet worden de TBD-ankers verbonden.

Zie corpus-gaps.

Onderliggende ADRs

  • ADR-0033 — Schema noun-families + legal-anchor registry (het protocol)
  • ADR-0036 — STOP-standaard als anker-bron krachtens RSPO (uitbreiding met STOP-paragrafen)

Intern handboek — niet voor externe publicatie