Mandate Matrix (mandaat-matrix)
Admin guide: see
docs/user/mandate-matrix-admin.mdfor the Dutch-language administrator runbook.
Automates the Dutch mandaatregeling (Awb art. 10:3): replaces static Word/Excel mandate tables with a relational, auditable matrix that authorises decisions, escalates ceiling breaches, and supports waarnemer (acting) assignments.
Specs
- Chain
mandaat-matrix-01-schema-foundation...mandaat-matrix-09-tests-and-docs. openspec/changes/mandaat-matrix-01-schema-foundation/specs/mandaat-matrix/spec.md
Features
Schema foundation (V1, member 01)
- Six OpenRegister schemas:
MandateringsBesluit,Mandaat,OrganisatieRol,MedewerkerRolToewijzing,MandaatGebruik,MandaatEscalatie. - Idempotent seed of 7 organisatierollen, 5 toewijzingen (incl. one waarnemer), 2 mandateringsbesluiten, 4 mandaten.
Authorization engine (V1, member 02)
MandaatCheckService::evaluate(zaak, handeling, bedrag)returnsauthorized | niet_bevoegd | plafond_overschreden | subdelegatie_niet_toegestaan.- Every authorised exercise produces an immutable
MandaatGebruiksnapshot.
Escalation engine (V1, member 03)
- Plafond breaches and disallowed subdelegations create
MandaatEscalatierecords routed up theOrganisatieRolhierarchy. - Approval logs back to
MandaatGebruik.
Decidesk import (V1, member 04)
DecideskImportServicefetches a mandateringsbesluit + attachment, parses the Excel/CSV mandate table with PhpSpreadsheet, validates referenced roles, and produces a NEW/CHANGED/REMOVED diff against the prior version.- DIV admin approves the diff to finalise the new besluit.
Case + decision integration (V1, member 05)
- Decision endpoints consult
MandaatCheckServicebefore persisting. - Unauthorized actions are blocked and surfaced in the user UI with a link to the escalation flow.
Temporal + conflict resolution (V1, member 06)
- Effective-dating queries (
asOf(date)) for roles, assignments and besluiten. - Waarnemer overlap detection: rejects double active assignments for the same role.
Admin UI (V1, member 07)
- Rolboomweergave, toewijzingen-tabel, import-wizard met diff-viewer, audit-log.
User UI (V1, member 08)
- Escalation inbox, "my mandates" view, decision-banner indicating which mandate authorises an action.
Tests & docs (V1, member 09)
- Unit tests covering all check outcomes, integration tests for escalation/waarnemer/personnel-change, file-level and method-level
@spectags, admin documentation.
Entities
MandateringsBesluitMandaatOrganisatieRolMedewerkerRolToewijzingMandaatGebruik(write-once audit)MandaatEscalatie
See ADR-000 for field definitions.