Skip to content

Commit f02ac1e

Browse files
chore: reconcile skills + add scenario-traces and casus leak-guard
Voegt de uiteengelopen user-level en engine-repo skill-kopieën samen tot één canonieke set. Engine-versies waren inhoudelijk vooruit (Step 0 drift-check, source-refs integriteitsscan, striktere private-repo-guard); de scenario-traces- kruisverwijzingen die alleen user-level bestonden zijn erin geport. - regelrecht-scenario-traces toegevoegd als nieuwe (dossier-agnostische) skill - script/check-skills-no-casus.sh + pre-commit hook 'skills-no-casus' die casus-specifieke inhoud (HHNK/waterschap-codes/corpus-repo-namen) blokkeert zodat trajectinformatie niet in de publieke skills lekt Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent e1ad53f commit f02ac1e

16 files changed

Lines changed: 639 additions & 1 deletion

File tree

.claude/skills/regelrecht-audit-products/templates/testcase-scenarios.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,12 @@ de engine? En hoe rekenen jullie eigenlijk?"*
88
> casussen — **nooit echte persoonsgegevens**. De BDD-versie kan in een
99
> `features/`-feature-file staan.
1010
11+
> **Methode**: bouw de scenario's met `regelrecht-scenario-traces` — geef elke casus een
12+
> naam (persona op casus-assen, niet een losse leaf-bundel) zodat experts 'm herkennen, en
13+
> kies personas die samen verschillende keten-paden raken. Bij verschil met de praktijk
14+
> wijzen de keten-checkpoints aan wélke schakel afwijkt, niet alleen dát de uitkomst
15+
> verschilt.
16+
1117
---
1218

1319
## 1. {Scenario-titel — kort beoordelings-pad}

.claude/skills/regelrecht-dossier/SKILL.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ eigenlijke werk gebeurt in de twee skills waarnaar het routeert.
1515
bevindingen.
1616
- **`regelrecht-audit-products`** — de menselijke validatielaag (live): valideert met
1717
domein-experts. Levert consensus + correctiepunten + testcases.
18+
- **`regelrecht-scenario-traces`** — gedeelde techniek-laag (geen aparte fase): maakt
19+
casuïstiek vindbaar (persona's/assen) en norm-ketens leesbaar/geassert (keten-checkpoints
20+
+ golden-traces). Wordt door beide werk-skills gebruikt bij het schrijven van scenario's
21+
en het reviewen van traces.
1822

1923
De volledige flow, het gate-criterium en de handoff-lus staan in `references/routing.md`
2024
(de canonieke bron; beide werk-skills verwijzen hierheen). Voor het inwerken van nieuwe

.claude/skills/regelrecht-dossier/references/routing.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,3 +85,9 @@ wat eigenlijk onze modelleerfout is. Voor kennis-ontginning is een ruw corpus pr
8585
| Untranslatables | factual vs judgment geclassificeerd | judgment-set = beslispunten |
8686
| Scenario's | `engine-tests` (regressie) | `testcase-scenarios` (expert-validatie) |
8787
| Verslag/rapport | `eindrapport` (per cyclus) | `verslag-intern`/`-extern` (per sessie) |
88+
89+
Beide scenario-bruggen zijn gebouwd met de techniek-skill **`regelrecht-scenario-traces`**
90+
(casus vindbaar via persona's/assen; keten leesbaar/geassert via keten-checkpoints +
91+
golden-traces). Het is geen vierde laag in de flow maar een gedeelde methode die desk
92+
(`engine-tests`, de features-vs-YAML meta-check) en workshop (`testcase-scenarios`) allebei
93+
gebruiken.
Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
---
2+
name: regelrecht-scenario-traces
3+
description: Maakt regelrecht-scenario's vindbaar en hun norm-ketens leesbaar/geassert. Aan de invoerkant — vertaal een platte lijst leaf-parameters naar benoemde casus-assen + een herbruikbare persona-bibliotheek, met een reverse-lookup casus-matrix. Aan de uitvoerkant — maak de norm-keten zichtbaar via keten-checkpoints (assert elke knoop op het kritieke pad, niet alleen de endpoint) en golden-trace-snapshots + branch-coverage. Gebruik dit bij het schrijven of opschonen van scenario-/feature-files, het terugvinden of ontwerpen van een specifieke casus in een grote variabelenlijst, het reviewen van engine-traces, of het regressie-bestendig maken van cross-law-ketens zodat een ketenfout niet stil achter een correcte endpoint verdwijnt. Dossier-agnostisch; de regelrecht-methode is de vaste taal. Haakt aan op regelrecht-stelselanalyse (engine-tests / meta-check) en regelrecht-audit-products (testcase-scenario's).
4+
allowed-tools: Read, Write, Edit, Grep, Glob, Bash, AskUserQuestion, Agent
5+
---
6+
7+
# Regelrecht scenario's & traces — casus vindbaar, keten leesbaar
8+
9+
Een dossier-agnostische techniek-skill die beide werk-skills delen:
10+
`regelrecht-audit-products` schrijft scenario's (de casus-kant),
11+
`regelrecht-stelselanalyse` reviewt traces (de keten-kant). Deze skill levert de
12+
*methode* om scenario's zó te modelleren dat (A) de casuïstiek terugvindbaar is en
13+
(B) de juridische logica-keten zichtbaar én geassert is.
14+
15+
Geen casus-inhoud in de skill; concrete persona's, assen en norm-namen komen uit het
16+
corpus tijdens toepassing.
17+
18+
## Het probleem dat deze skill oplost
19+
20+
Een scenario dat alleen een handvol leaf-parameters flipt en de **endpoint** assert,
21+
verbergt twee dingen tegelijk:
22+
23+
- **A — casus onvindbaar.** De casus ("welke persoon is dit?") bestaat alleen in je
24+
hoofd, in de scenario-titel en in comments. Met tientallen platte booleans moet je de
25+
mapping *persona → leafs* elke keer handmatig reverse-engineeren. Twee scenario's met
26+
identieke invoer maar een ander bedóeld onderscheid zien er identiek uit.
27+
- **B — keten onzichtbaar.** De engine berekent een keten van tussen-normen tussen de
28+
leafs en de endpoint. Alleen de endpoint asserten betekent: een *foute keten* die op
29+
jouw gesamplede casus toevallig dezelfde endpoint geeft, slipt er geluidloos door. En
30+
lezend is de juridische structuur niet uit het scenario te halen.
31+
32+
## Kernprincipe: de ontbrekende middenlaag
33+
34+
Tussen *menselijke casus* en *engine-output* zit een middenlaag die first-class,
35+
vindbaar én geassert moet zijn:
36+
37+
```
38+
menselijke casus ENGINE uitkomst
39+
"wie is deze persoon?" ─► leaf-feiten ─► keten ─► endpoint
40+
│ │ │ │
41+
[A] benoemde persona ───────────┘ │ │
42+
op casus-assen │ │
43+
[B] benoemde norm-keten ┘
44+
(keten-checkpoints + golden trace)
45+
```
46+
47+
- **Invoerkant (A):** geef de casus een naam en plaats hem op een paar **casus-assen**;
48+
bundel de leaf-deltas in een herbruikbare **persona**. → `references/casus-assen.md`,
49+
`references/persona-bibliotheek.md`.
50+
- **Uitvoerkant (B):** bepaal het **kritieke pad** door de YAML-DAG en assert *elke knoop*
51+
erop; leg de volledige trace vast als **golden snapshot** met branch-coverage. →
52+
`references/keten-checkpoints.md`, `references/golden-traces.md`.
53+
54+
## De vier mechanismen
55+
56+
| # | Mechanisme | Lost op | Reference / template |
57+
|---|---|---|---|
58+
| 1 | **Assen-groepering** — platte leaf-lijst → casus-assen (dimensie-reductie) | A | `references/casus-assen.md` |
59+
| 2 | **Persona-bibliotheek** — benoemde, herbruikbare leaf-bundel op de assen; twin-persona's (één-as-verschil) | A | `references/persona-bibliotheek.md` · `templates/persona-bibliotheek.md` · `templates/casus-matrix.md` |
60+
| 3 | **Keten-checkpoints** — assert elke knoop op het kritieke pad, niet alleen de endpoint | B | `references/keten-checkpoints.md` · `templates/keten-kaart.md` |
61+
| 4 | **Golden traces** — volledige trace snapshotten + diffen + branch-coverage | B | `references/golden-traces.md` · `templates/golden-trace-review.md` |
62+
63+
Schaal naar de vraag: een snelle opschoning gebruikt 1+3; een regressie-bestendige
64+
cross-law-keten gebruikt alle vier.
65+
66+
## Werkstroom
67+
68+
1. **Vind de assen.** Reduceer de platte leaf-lijst tot een handvol onafhankelijke
69+
casus-assen (zie `references/casus-assen.md`). Groepeer de baseline-parameters per as
70+
— alleen al volgorde + kopjes maken de lijst scanbaar.
71+
72+
2. **Bouw de persona-bibliotheek + casus-matrix.** Druk elke casus uit als benoemde
73+
bundel leaf-deltas op de assen (`templates/persona-bibliotheek.md`). Leg de
74+
reverse-lookup vast: persona ↔ scenario ↔ keten-pad ↔ uitkomst
75+
(`templates/casus-matrix.md`). Voeg twin-persona's toe waar een onderscheid anders
76+
onzichtbaar blijft.
77+
78+
3. **Bepaal het kritieke pad & leg keten-checkpoints vast.** Leid uit de YAML de DAG van
79+
tussen-normen naar de endpoint af (`templates/keten-kaart.md`). Laat elk scenario
80+
*elke knoop op zijn pad* asserten, niet alleen de endpoint
81+
(`references/keten-checkpoints.md`).
82+
83+
4. **Snapshot golden traces + branch-coverage.** Leg de volledige engine-trace per
84+
scenario vast en diff bij wijziging; rapporteer welke takken nog ongetest zijn
85+
(`references/golden-traces.md`, `templates/golden-trace-review.md`).
86+
87+
5. **Voer de meta-check uit.** Maken de scenario's en de YAML dezelfde fout? Dan
88+
valideert de suite de YAML, niet de wet. Keten-checkpoints + golden-traces zijn het
89+
concrete wapen hiertegen — zie de hook naar `regelrecht-stelselanalyse`.
90+
91+
6. **Schrijf naar het corpus/dossier, niet in de skill.** Persona's, matrices en
92+
trace-snapshots horen bij het corpus (bijv. `scenarios/`, `features/`, `docs/`).
93+
Wijzig nooit de skill-bestanden met casus-inhoud. Commit/push alleen op verzoek.
94+
95+
## Bestanden in deze skill
96+
97+
**references/**
98+
- `casus-assen.md` — van een platte leaf-lijst naar onafhankelijke casus-assen
99+
(dimensie-reductie); hoe je assen herkent en de baseline groepeert.
100+
- `persona-bibliotheek.md` — persona = benoemde leaf-bundel op de assen; expressievormen
101+
(Scenario Outline / custom `Given persona`-step / fixtures); twin-persona's.
102+
- `keten-checkpoints.md` — kritiek pad uit de YAML-DAG; de conventie "assert elke knoop";
103+
sensitiviteits-/twin-scenario's; band met de features-vs-YAML meta-check.
104+
- `golden-traces.md` — volledige trace vastleggen, diffen, branch-coverage; wanneer wel/niet.
105+
106+
**templates/**
107+
- `persona-bibliotheek.md` — persona | assen-coördinaat | leaf-deltas | keten-checkpoints | endpoint.
108+
- `casus-matrix.md` — reverse-lookup index: persona ↔ scenario ↔ keten-pad ↔ uitkomst.
109+
- `keten-kaart.md` — per endpoint de knoop-DAG met coverage-markering per schakel.
110+
- `golden-trace-review.md` — trace-snapshot-review + branch-coverage-rapport.
111+
112+
## Routing & handoff
113+
114+
Dit is een techniek-laag die beide werk-skills bedienen. Twijfel je waar te beginnen →
115+
`regelrecht-dossier`. Bij het ontwerpen van expert-testcases gebruikt
116+
`regelrecht-audit-products/templates/testcase-scenarios` deze persona-methode; bij
117+
regressie/validatie voert `regelrecht-stelselanalyse` (engine-tests + de
118+
features-vs-YAML meta-check) de keten-checkpoints + golden-traces uit.
119+
120+
## Belangrijke regels
121+
122+
- **Dossier-agnostisch blijven.** Geen vaste wet-namen, norm-namen, bedragen of
123+
casus-voorbeelden in de skill-bestanden. In *output* (corpus/features) mag casus-inhoud
124+
uiteraard wel.
125+
- **Assert de keten, niet alleen de endpoint.** Een groene endpoint met een ongeteste
126+
keten bewijst niets over de tussenstappen.
127+
- **Persona is de bron, scenario is de afgeleide.** Eén persona-definitie, hergebruikt
128+
over scenario's — niet dezelfde leaf-bundel telkens opnieuw met de hand.
129+
- **Twin-scenario's voor elk onderscheid dat het model niet vanzelf ziet.** Eén-as-verschil
130+
maakt de keten falsifieerbaar.
131+
- **Stille truncatie loggen.** Cap je coverage (top-N personas, niet alle takken) → meld
132+
expliciet wat je overslaat.
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
# Casus-assen — van platte leaf-lijst naar dimensies
2+
3+
Een endpoint met veel leaf-parameters geeft een baseline van tientallen platte booleans
4+
(meestal allemaal op de neutrale waarde) waarin elk scenario er een paar flipt. Die
5+
lijst is niet scanbaar: je vindt een casus niet terug, en je ziet niet welke combinaties
6+
betekenisvol zijn. De oplossing is **dimensie-reductie**: groepeer de leafs tot een
7+
handvol onafhankelijke *casus-assen*.
8+
9+
## Waarom assen werken
10+
11+
De meeste leafs zijn niet vrij-combineerbaar. Ze clusteren rond een paar onderliggende
12+
vragen over de persoon/situatie, en binnen een cluster zijn waarden vaak wederzijds
13+
uitsluitend of alleen samen relevant. Een casus is dan een **coördinaat** op enkele
14+
assen in plaats van een speld in een hooiberg van losse vlaggen.
15+
16+
## Een as herkennen
17+
18+
Een as is een groep leafs die samen één onderliggende vraag beantwoorden. Heuristieken:
19+
20+
- **Gedeeld onderwerp** — leafs die over hetzelfde gaan (status, relatie, plaats, een
21+
registratie, een tijdvak) horen op één as.
22+
- **Wederzijdse uitsluiting** — als hoogstens één van een groep tegelijk waar kan zijn,
23+
is die groep waarschijnlijk één as met meerdere waarden.
24+
- **Gezamenlijke relevantie** — leafs die alleen iets doen in elkaars aanwezigheid
25+
(A telt alleen mee als B) horen bij elkaar.
26+
- **Voedt dezelfde tussen-norm** — leafs die in de YAML naar dezelfde tussen-knoop leiden
27+
(zie `keten-checkpoints.md`) vormen een natuurlijke as.
28+
29+
Mik op een **klein** aantal assen (richtlijn: een handvol). Te veel assen = je hebt de
30+
platte lijst alleen hernoemd; te weinig = je verliest betekenisvol onderscheid.
31+
32+
## Twee soorten assen
33+
34+
- **Categorische as** — één-uit-N waarden (een statussoort, een relatietype). Modelleer
35+
als één keuze, niet als N losse booleans waarvan er meerdere tegelijk waar kunnen
36+
staan (dat zou onmogelijke casussen toelaten).
37+
- **Onafhankelijke vlag** — een echt losstaand ja/nee dat met alles combineert. Houd
38+
deze apart; dwing ze niet in een as.
39+
40+
## De baseline groeperen (de goedkoopste winst)
41+
42+
Nog vóór je persona's bouwt: herorden de baseline-parameterlijst per as, met een kopje
43+
per as. Dezelfde 60 booleans worden dan 6 leesbare groepen. Dit is puur volgorde +
44+
commentaar — geen gedragswijziging — en maakt de lijst meteen scanbaar.
45+
46+
```
47+
# === AS: <onderwerp 1> ===
48+
<leaf_a> | <neutrale waarde>
49+
<leaf_b> | <neutrale waarde>
50+
51+
# === AS: <onderwerp 2> ===
52+
...
53+
54+
# === Losse vlaggen ===
55+
...
56+
```
57+
58+
## Onmogelijke-combinatie-bewaking
59+
60+
Door assen expliciet te maken zie je welke combinaties juridisch onmogelijk zijn (twee
61+
elkaar uitsluitende waarden op één categorische as). Markeer die als verboden — een
62+
scenario dat ze toch zet, test een casus die niet bestaat. Dit is ook input voor de
63+
twin-persona's in `persona-bibliotheek.md`: een twin verschilt op precies één as-waarde.
64+
65+
## Resultaat
66+
67+
De assen zijn de coördinaten-taal voor de rest van de skill: persona's worden benoemde
68+
punten in de assen-ruimte (`persona-bibliotheek.md`), en de casus-matrix indexeert op
69+
assen (`templates/casus-matrix.md`). Leg de assen-definitie vast bij het corpus, niet in
70+
de skill.
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# Golden traces — de volledige keten vastleggen tegen regressie
2+
3+
Keten-checkpoints (`keten-checkpoints.md`) asserten de knopen die je *bewust* hebt
4+
gekozen. Een **golden trace** legt de *volledige* engine-trace per scenario vast — alle
5+
tussen-knopen + welke tak vuurde — als snapshot. Een wijziging die de endpoint én je
6+
checkpoints ongemoeid laat maar elders in de keten iets verschuift, wordt dan een
7+
trace-diff. Dit is de sterkste verdediging tegen stille ketenfouten.
8+
9+
## Wat je vastlegt
10+
11+
Per scenario een genormaliseerd trace-snapshot: de geëvalueerde knopen, hun waarden, en
12+
welke tak/conditie waar werd. Normaliseer wat ruis is (volgorde, timestamps, interne
13+
ids) zodat de diff alleen betekenisvolle veranderingen toont. Sla de snapshots bij het
14+
corpus op (bijv. naast de scenario's), niet in de skill.
15+
16+
## De workflow
17+
18+
1. **Genereer** de trace via de runner/engine voor elk scenario.
19+
2. **Normaliseer** tot een stabiele, diff-bare vorm.
20+
3. **Review & commit** de snapshot als "golden" zodra je 'm hebt geverifieerd tegen de
21+
verwachte keten (niet blind: een golden trace is pas goud na menselijke/expert-check).
22+
4. **Diff** bij elke YAML-/feature-wijziging. Een onverwachte diff = mogelijk een
23+
ketenfout; een verwachte diff = bewust herijken (update de golden + leg uit waarom).
24+
25+
> Een golden trace die je nooit tegen de wettekst hebt geverifieerd, bevriest alleen je
26+
> huidige interpretatie. Verifieer vóór je 'm tot goud verklaart — anders is het
27+
> regressie-bescherming van een mogelijk foute keten (zie de meta-check in
28+
> `keten-checkpoints.md`).
29+
30+
## Branch-coverage over de wet-logica
31+
32+
De trace vertelt ook welke **takken** je scenario's raken. Voor elke conditie/operatie in
33+
de YAML: wordt zowel de waar- als de onwaar-kant ergens geraakt? Een nooit-geraakte tak
34+
is een plek waar een ketenfout zich ongezien kan verstoppen.
35+
36+
- Inventariseer de takken per endpoint (uit de keten-kaart).
37+
- Markeer per tak: geraakt-waar / geraakt-onwaar / ongetest.
38+
- Ongeteste takken → nieuwe persona's of twin-scenario's om ze te dekken.
39+
- Rapporteer de dekking in `templates/golden-trace-review.md`.
40+
41+
## Wanneer wel, wanneer niet
42+
43+
- **Wel**: cross-law-ketens, endpoints met veel takken, alles wat je regressie-bestendig
44+
wilt houden over cycli heen.
45+
- **Lichter**: een kleine, stabiele keten heeft vaak genoeg aan keten-checkpoints alleen.
46+
Golden traces kosten onderhoud (elke bewuste wijziging vraagt een herijking) — zet ze
47+
in waar de regressie-winst dat waard is.
48+
49+
## No silent caps
50+
51+
Snapshot je maar een deel van de scenario's of dek je niet alle takken → log dat
52+
expliciet in het review-rapport. Stille truncatie leest als "alles gedekt" terwijl dat
53+
niet zo is.
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# Keten-checkpoints — assert elke knoop, niet alleen de endpoint
2+
3+
De engine berekent tussen de leaf-feiten en de endpoint een **keten** van tussen-normen.
4+
Wie alleen de endpoint assert, test de keten niet: een foute keten die op de gesamplede
5+
casus toevallig dezelfde endpoint oplevert, slipt er geluidloos door. Keten-checkpoints
6+
maken elke knoop op het kritieke pad expliciet uitgesproken.
7+
8+
## Het kritieke pad afleiden uit de YAML
9+
10+
1. Begin bij de endpoint-output van het scenario.
11+
2. Volg in de YAML de bindingen terug: elke `output`/tussen-norm hangt af van andere
12+
outputs, van leaf-parameters, en (bij cross-law) van outputs van andere wetten via
13+
`source`. Dit vormt een gerichte acyclische graaf (DAG).
14+
3. Voor een gegeven persona is het **kritieke pad** de subset knopen die de uitkomst
15+
daadwerkelijk bepalen — inclusief de knopen die een uitsluiting *neutraliseren* of een
16+
tak *afsluiten* (een tegen-uitsluiting die "uit" staat is net zo bepalend als één die
17+
"aan" staat).
18+
4. Leg de DAG + per-persona-pad vast in `templates/keten-kaart.md`.
19+
20+
## De conventie
21+
22+
Elk scenario assert **elke knoop op zijn kritieke pad**, niet alleen de endpoint. Dus
23+
naast de eind-output ook de relevante tussen-normen: de hoofdgrond die geldt, elke
24+
uitsluiting die wel/niet van toepassing is, en elke tegen-uitsluiting die wel/niet
25+
neutraliseert. Een lezer ziet dan de juridische structuur in het scenario zelf; een
26+
ketenfout flipt een checkpoint, ook als de endpoint toevallig gelijk blijft.
27+
28+
Houd het **kritiek**: assert de knopen die de uitkomst dragen, niet elke berekende
29+
waarde. Te veel checkpoints maken het scenario bros en onleesbaar; te weinig laten gaten.
30+
De keten-kaart helpt kiezen: assert de knopen waar paden splitsen of samenkomen.
31+
32+
## Cross-law-ketens
33+
34+
Bij een keten over meerdere wetten: assert minstens de **scharnierpunten** — de output
35+
van elke wet die de volgende wet ingaat. Een cross-law-binding die alleen in de endpoint
36+
zichtbaar wordt, verbergt waar in de keten het misgaat. (Forwarding van leaf-feiten over
37+
meerdere hops is een bekende valkuil: elke hop moet zijn eigen inputs doorkrijgen — een
38+
checkpoint per scharnier maakt een gebroken hop direct zichtbaar.)
39+
40+
## Sensitiviteits-/twin-scenario's
41+
42+
Een checkpoint bewijst dat een knoop *een* waarde heeft; een **sensitiviteitstest**
43+
bewijst dat de knoop op het *juiste* leaf reageert. Bouw scenario-paren die op precies
44+
één as-waarde verschillen (zie de twin-persona's in `persona-bibliotheek.md`), gekozen
45+
zó dat het verschil door één ketenschakel loopt:
46+
47+
- Als de schakel correct is, flipt exact het verwachte checkpoint (en alleen dat).
48+
- Als de schakel fout is (verkeerde EN/OF, gemiste voorwaarde, verkeerde forwarding),
49+
flipt het verkeerde of geen checkpoint.
50+
51+
Dekt zo de scharnier-logica af: conjuncties (beide voorwaarden nodig), disjuncties (één
52+
voldoende), en neutralisaties (de tegen-uitsluiting doet wat hij hoort).
53+
54+
## Band met de features-vs-YAML meta-check
55+
56+
`regelrecht-stelselanalyse` waarschuwt: *als de scenario's en de YAML uit dezelfde
57+
(mogelijk foute) interpretatie komen, bewijzen groene tests geen juridische
58+
correctheid.* Keten-checkpoints alleen lossen dat niet op — ze komen nog steeds uit jouw
59+
interpretatie. Wat ze wél doen: ze maken de interpretatie **expliciet en
60+
controleerbaar** per knoop, zodat een externe verificatie (wettekst, nota van
61+
toelichting, expert) elke schakel los kan toetsen in plaats van alleen de endpoint. Leg
62+
de verwachte checkpoint-waarden naast de wettekst, niet alleen naast de YAML.
63+
64+
## Resultaat
65+
66+
Per endpoint een keten-kaart met geannoteerde knopen, en scenario's die hun pad-knopen
67+
asserten + twin-paren voor de scharnieren. Dit is de leesbare, falsifieerbare uitvoerkant
68+
die golden traces (`golden-traces.md`) vervolgens dichttimmeren tegen regressie.

0 commit comments

Comments
 (0)