How cross-cutting laws like the Awb apply to decisions automatically, without being called explicitly.
Some laws apply to every government decision without being called explicitly. The General Administrative Law Act (Algemene wet bestuursrecht, Awb) is the main example: whenever any government body issues a formal decision (beschikking), Awb rules about reasoning requirements, objection periods, and notification deadlines kick in automatically.
The law that triggers these rules does not know about the Awb. The Awb does not know about that specific law. They are decoupled by design.
An article can declare a hooks block. This tells the engine: “fire this article whenever the conditions in applies_to match.”
When the Zorgtoeslagwet calculates a healthcare allowance and produces a beschikking, this Awb hook fires and adds bezwaartermijn_weken: 6 to the result. The Zorgtoeslagwet does not mention the Awb or objection periods.
Hooks can fire at two moments during article execution:
pre_actions - after open term resolution, before the article’s own logic runs. Used for prerequisites like the Awb reasoning requirement (3:46): the decision must include a motivation.post_actions - after the article’s logic completes. Used for consequences like the objection period (6:7) and notification deadlines (6:8).produces annotationFor hooks to fire, the target article must declare what kind of legal product it produces:
The engine builds a hook index at load time. When it encounters an article with a produces annotation, it checks the index for matching hooks and fires them.
Awb hooks compose into a chain:
motivering_vereist: truebezwaartermijn_weken: 6bezwaartermijn_startdatum and bezwaartermijn_einddatum based on the notification date and the 6-week period from Awb 6:7Sometimes a specific law overrides a general Awb rule. The Aliens Act (Vreemdelingenwet) article 69 says: “in afwijking van artikel 6:7 Awb bedraagt de termijn vier weken” (“departing from Awb article 6:7, the period is four weeks”).
This is modeled with overrides:
The Awb does not know it is being overridden. The Vreemdelingenwet unilaterally replaces the value. This only applies when the Vreemdelingenwet is part of the execution chain (a Participatiewet case is not affected by this override).
IoC (open_terms + implements) | Overrides | |
|---|---|---|
| General law | Knows it delegates, declares open_terms | Does not know, declares nothing |
| Specific law | Declares implements | Declares overrides |
| Legal text | ”Gelet op artikel…" | "In afwijking van artikel…” |
| Relationship | Bilateral (both sides participate) | Unilateral (only the overrider declares) |
A beschikking is not an instant event. It moves through stages over time: application, review, decision, notification, objection. Hooks bind to specific stages via applies_to.stage.
The Awb defines a procedure lifecycle:
| Stage | Description | Example hook |
|---|---|---|
| AANVRAAG | Application filed | |
| BEHANDELING | Under review | |
| BESLUIT | Decision taken | Awb 3:46 (reasoning), 6:7 (objection period) |
| BEKENDMAKING | Decision communicated | Awb 6:8 (deadline calculation) |
| BEZWAAR | Objection period |
The engine yields between stages, returning accumulated outputs and indicating what inputs are needed for the next stage. The engine itself stays stateless; the procedure state is managed externally.
An exploration by Bureau Architectuur of the Dutch Ministry of the Interior into the possibilities of transparent, executable legislation.
Bureau Architectuur
Ministry of the Interior and Kingdom Relations