Repository navigation
refactor(mandates): one transition guard asks decidiq for delegated authority - #3642
Merged
Merged
Conversation
…uthority DelegatedAuthorityGuard (type delegatedAuthorityGuard) asks decidiq's DelegatedAuthorityCheck whether the acting person holds the authority for the act the guard names. The legacy type mandaatGuard stays answered by the same guard, reading the act from mandaatCategorie, so stored workflow definitions keep working. Every uncertain answer refuses. Deleted: MandaatGuard, MandaatValidationService, MandaatController, the mandaat-check route (no frontend caller), the mandaatregister_endpoint and mandaatregister_token config keys, and their unit tests. Refactor lane R9, capability C17 (decisions 182, 184, 185).
rubenvdlinde
requested review from
Rem-Dam,
SudoThijn,
WilcoLouwerse,
bbrands02,
remko48 and
rjzondervan
as code owners
October 10, 2026 18:18
This was referenced Oct 10, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refactor lane R9, capability C17 (decisions 182, 184, 185; hydra ADR-118). Builds on question Q6's recommended option: decidiq owns the mandate registry, dossiq keeps one generic transition guard that asks.
Pair: ConductionNL/decidiq#1696 (
DelegatedAuthorityCheck). Land decidiq#1696 first. Without it, the guard refuses with "register absent". It never passes silently.What changes
Service/Transitions/DelegatedAuthorityGuard, guard typedelegatedAuthorityGuard. It asks decidiq'sDelegatedAuthorityCheckthroughFleetAppId, so an instance running decidiq under its old id is still asked. Config:actoractField, optionalactorField(defaultsignatory, then the current user) andamountField(euro cents, ADR-031).GuardRegistrykeeps answering the legacy typemandaatGuardwith the same guard andactField: mandaatCategorie. Workflow definitions stored on live instances keep working.bvw-mandaatbesluitdeclares{ "type": "delegatedAuthorityGuard", "actField": "mandaatCategorie" }.Transitions/MandaatGuard,MandaatValidationService(external mandaatregister over HTTP),MandaatControllerand its routeGET /api/besluitvorming/cases/{id}/mandaat-check(no frontend caller), the config keysmandaatregister_endpointandmandaatregister_token, and their two unit test files.mandaatHandmatigBevestigdpass is gone. No schema declares that field and no screen sets it (question Q8).delegated-authority-guard(status-transition-engine ADDED, REQ-BVW-007 MODIFIED).Not in this PR
MandaatCheckService,MandaatEscalatieService,MandaatGebruikService,MandaatImportService,Mandaat/*,MandaatMatrixController,MandaatRegistryController, the settings tabs,61-mandaat-matrix.json) moves in pair 2. It waits for fix(mandate): conflict-of-interest service no longer carries a dead manual-override path #3300, which editsConflictOfInterestService, a dependency ofMandaatCheckService.Beschikking/MandaatVerifiersits insideBeschikkingService, which lane R5 owns until its waits land. It moves onto this guard in coordination with R5.Verified
tests/Unit/Service/Transitions/(includes the newDelegatedAuthorityGuardTest, 5 tests against a neutral fixture case type): 168 tests, exit 0.tests/Unit/Lifecycle58 tests,tests/Unit/Settings298 tests (WorkflowGuardConformance reads the changed template),tests/Unit/Architecture96 tests,tests/Unit/Service/Settings18 tests,tests/Unit/AppInfo78 tests,RefusalCarriesAStatusTest12 tests: all exit 0.GuardRegistrythrough the slot: exit 0.Inherited: none touched.
Still owed (live instance): a Mandaatbesluit case with and without a decidiq toedeling for its
mandaatCategorie, advancing Vergadering to Besluit genomen.