Repository navigation
refactor(dossiq): the subsidie case type ships as an on-request package - #3768
Merged
Merged
Conversation
The bezwaar and beroep case types ship as lib/Settings/packages/bezwaar-beroep/ (install: on-request), written by the package installer. The setup action `seed` installs it; installed or already current records setup_seed_done, a refusal or failed write answers 422 with the installer's message. Converted once, offline, by scripts/packages/seed-to-package.py: status names resolved into fixed UUIDs, a `*` source status (honoured by no reader) expanded into one transition per open status, flows published. The nine fields the flows guard on are declared as property definitions, so every guarded transition can be taken; the guard sweep and the payload sweep now walk every package. Deleted: SeedDataService, SeedSummary, SeedBezwaarBeroepData, SeedBezwaarBeroepCommand (occ dossiq:bezwaar:seed), SeedBezwaarWorkflowDefinition, bezwaar_seed_data.json and their unit tests. Newman collection and Playwright journey added (decision 185).
…-bezwaar-beroep # Conflicts: # tests/Unit/Architecture/catch-return-null.allowlist.json
…, R1)
The three deprecated bvw bundles ship as lib/Settings/packages/besluitvorming,
install on-request (decision 190), converted once with fixed ids and
published flows. A generic package API (GET /api/packages, POST
/api/packages/{id}/install) replaces the besluitvorming activate route and
serves every on-request package. Instances where the old seeder ran get
their case types adopted by identifier, not duplicated.
Deleted: BesluitvormingTemplateService, Besluitvorming/TemplateBundleSeeder,
Besluitvorming/WorkflowReferenceResolver, SeedBesluitvormingTemplates,
BesluitvormingController and route, the bvw-*.json bundles and their unit
tests. Newman collection and Playwright journey added; package-to-newman.py
writes a package's read-back collection.
…ckage-besluitvorming
…e flows are swept
…ckage-besluitvorming
lib/Settings/packages/subsidie/ holds the generic subsidie case type (category Subsidies), 5 statuses, 3 roles and a published flow, converted by scripts/packages/seed-to-package.py from the parked entry in the old bezwaar seed. It declares the property definition beschiktBedrag, which the beschikking transition's requiredField guard names. Adds the Newman read-back collection, the Playwright journey tests/e2e/packages/subsidie.spec.ts and openspec change subsidie-package (REQ-SUB-011). MigrateSubsidieRegelingToCaseType stays until its one-release window ends.
…ists; the VTH seeders are deleted (unverified)
… Newman (unverified)
…leted (unverified)
…ckage-bezwaar-beroep # Conflicts: # appinfo/info.xml # lib/Repair/SeedBezwaarWorkflowDefinition.php # tests/Unit/Architecture/catch-return-null.allowlist.json
…ckage-besluitvorming # Conflicts: # tests/Unit/Architecture/catch-return-null.allowlist.json
…ckage-vth # Conflicts: # appinfo/info.xml # tests/Unit/Repair/Vth/VthCaseTypeChildSeederTest.php
Contributor
Quality Report — ConductionNL/dossiq @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ❌ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| check-manifest | ✅ | ||||
| check-vue3-compile | ✅ | ||||
| test-l10n | ✅ | ||||
| format | ❌ | ||||
| check-schema-l10n | ✅ | ||||
| check-l10n-js | ✅ | ||||
| check-debt-ratchet | ❌ | ||||
| check-types-e2e | ✅ | ||||
| composer | ✅ | ✅ 109/109 | |||
| npm | ✅ | ✅ 659/659 | |||
| app:check-code | ⏭️ | ||||
| info.xml | ✅ | ||||
| REUSE | ❌ | ||||
| lockfile sync | ✅ | ||||
| PHPUnit | 🚨 NO VERDICT — enabled but never ran | ||||
| Newman | ⏭️ | ||||
| Playwright | ⏭️ deferred: E2E runs locally and on the promotion path only. This pull request targets development, so the suite is asked once per promotion into beta and main rather than once per push per open pull request. Run it locally with npx playwright test, or from the Actions tab on a branch with no open pull request into development. |
||||
| Hydra gates | ⏭️ |
Quality workflow — 2026-10-12 07:52 UTC
Download the full PDF report from the workflow artifacts.
…ision 208) The drafts in lib/Settings/vth-templates/ become draft flows of the vth package, and the directory goes. No case follows a draft until an administrator publishes it. The workflow backfill no longer counts a draft as a flow a case type has, so a case type that ships only a draft keeps its basis flow. Unverified: the Settings, Repair and Architecture suites are queued.
…s as OpenRegister answers them CI's packages job: OpenRegister answers the JSON text of a flow's transitions as a list, and the collection parsed it as text. It takes either now. The journey imports its type on its own line and is formatted, which eslint and prettier asked for.
…ckage-besluitvorming
…its type on its own line
…pe on its own line
…ckage-besluitvorming Development renamed the mandaat guard on the old mandaatbesluit template; the template stays deleted and the package flow carries the new guard (delegatedAuthorityGuard with actField mandaatCategorie). catch-return-null ceiling 261.
…ckage-subsidie # Conflicts: # appinfo/info.xml # appinfo/routes.php
Contributor
Quality Report — ConductionNL/dossiq @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| check-manifest | ✅ | ||||
| check-vue3-compile | ✅ | ||||
| test-l10n | ✅ | ||||
| format | ❌ | ||||
| check-schema-l10n | ✅ | ||||
| check-l10n-js | ✅ | ||||
| check-debt-ratchet | ❌ | ||||
| check-types-e2e | ✅ | ||||
| composer | ✅ | ✅ 109/109 | |||
| npm | ✅ | ✅ 659/659 | |||
| app:check-code | ⏭️ | ||||
| info.xml | ✅ | ||||
| REUSE | ❌ | ||||
| lockfile sync | ✅ | ||||
| PHPUnit | 🚨 NO VERDICT — enabled but never ran | ||||
| Newman | ⏭️ | ||||
| Playwright | ⏭️ deferred: E2E runs locally and on the promotion path only. This pull request targets development, so the suite is asked once per promotion into beta and main rather than once per push per open pull request. Run it locally with npx playwright test, or from the Actions tab on a branch with no open pull request into development. |
||||
| Hydra gates | ⏭️ |
Quality workflow — 2026-10-12 10:39 UTC
Download the full PDF report from the workflow artifacts.
…ckage-besluitvorming
…ow moves by; the read-back reads the version record The shipped case flow moves a case by status role (intake, in-progress, closed). The Bezwaar and Beroep statuses had none, in the package and in the register fragment that seeds Bezwaar, so the flow would stop at its first step on a case of either type. Both now name the three. On a clean instance the register seeds the Bezwaar case type before the package installs, so the package finds it present and writes no ledger row for it. The collection now reads the package's version record, and the ledger row of the Beroep case type, which the package does write.
…ckage-besluitvorming
# Conflicts: # .debt-baseline.json
Contributor
Quality Report — ConductionNL/dossiq @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| check-manifest | ✅ | ||||
| check-vue3-compile | ✅ | ||||
| test-l10n | ✅ | ||||
| format | ✅ | ||||
| check-schema-l10n | ✅ | ||||
| check-l10n-js | ✅ | ||||
| check-debt-ratchet | ❌ | ||||
| check-types-e2e | ✅ | ||||
| composer | ✅ | ✅ 109/109 | |||
| npm | ✅ | ✅ 659/659 | |||
| app:check-code | ⏭️ | ||||
| info.xml | ✅ | ||||
| REUSE | ❌ | ||||
| lockfile sync | ✅ | ||||
| PHPUnit | 🚨 NO VERDICT — enabled but never ran | ||||
| Newman | ⏭️ | ||||
| Playwright | ⏭️ deferred: E2E runs locally and on the promotion path only. This pull request targets development, so the suite is asked once per promotion into beta and main rather than once per push per open pull request. Run it locally with npx playwright test, or from the Actions tab on a branch with no open pull request into development. |
||||
| Hydra gates | ⏭️ |
Quality workflow — 2026-10-12 14:02 UTC
Download the full PDF report from the workflow artifacts.
This was referenced Oct 12, 2026
Merged
rubenvdlinde
marked this pull request as ready for review
October 12, 2026 14:08
rubenvdlinde
requested review from
Rem-Dam,
SudoThijn,
WilcoLouwerse,
bbrands02,
remko48 and
rjzondervan
as code owners
October 12, 2026 14:08
This was referenced Oct 12, 2026
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.
Status, 12 October
The top of a stack of three: #3669, #3725, #3768. It also holds #3791 (vth), because the stack and #3791 delete seeders that the same sweep tests name. Merging this head lands the stack. Land #3791 first or in the same train.
WorkflowGuardConformanceTestkeeps the package filters and the draft flow sweep and no longer readsvth-templates/; the deadline coverage sweep reads the packages a fresh install installs, not the three installed on request.composer check:strictran once on 85347cf: lint, phpcs, phpmd, psalm and phpstan passed, PHPUnit had one failure, from this stack (the statuses without a role). After the fix the full PHPUnit suite ran again on efbd267: 8,304 tests, exit 0. After that: the tightened debt baseline, the merge of refactor(vth): the VTH procedure is a case definition package, and its seeders are deleted #3791's prettier fix, nothing in PHP..procedure-code-baseline.jsonis 187 on this head (206, less 8 for the stack, less 11 for refactor(vth): the VTH procedure is a case definition package, and its seeders are deleted #3791)..debt-baseline.json:phpmd.suppressWarnings187,phpunit.skips5,psalm.inlineSuppressions258.check:debt-ratchetoneslint.inlineDisables(15 against a baseline of 14, the same on development) and the Quality Report that sums the jobs.Where a line below disagrees with this section, this section is the current one.
What
The generic subsidie case type becomes the case definition package
subsidie, markedinstall: on-request(hydra ADR-118, decision 185). This is refactor lane R1. It is stacked on #3725 (besluitvorming), which is stacked on #3669 and #3654: merge those first. The journey needs #3725's package API.lib/Settings/packages/subsidie/holds the case type (category "Subsidies"), 5 statuses, 3 roles and one published flow, all with fixed ids.scripts/packages/seed-to-package.pyconverted it once from the parked_caseTypes_disabledentry in the old bezwaar seed, read from Case definition package installer: install procedures from lib/Settings/packages (C19) #3654's head with--git-ref. Bezwaar and beroep become a case definition package (ADR-118, R1) #3669 deleted that seed, so until now no instance could install this case type.requiredFieldguard onbeschiktBedrag, so the package declares it as a property definition (number, at least 0).Repair/MigrateSubsidieRegelingToCaseType. It moves instance data (subsidieRegeling rows into case types), not shipped configuration, and stays until its one-release window ends (coordinator decision). The per-scheme demo case types inregister.d/50-subsidie.jsonare untouched.tests/integration/packages/subsidie.postman_collection.json(9 reads, written byscripts/packages/package-to-newman.py) and a Playwright journeytests/e2e/packages/subsidie.spec.ts.subsidie-package(REQ-SUB-011 added to subsidieverlening-keten).Verified locally
tests/Unit/Settings(299, including the package category, guard and payload sweeps): exit 0.beschiktBedragremoved,WorkflowGuardConformanceTest::testEveryRequiredFieldGuardNamesAFieldACaseCanAnswerfails namingpackage:subsidie/flows/subsidie.json/transitions/1/guards/0: beschiktBedrag(r1-logs/r5-sub-guard-red.log). So the sweep does see this package.PackageValidator.composer check:strictwas not run: this PR changes no PHP, only package JSON, a TypeScript journey, a Postman collection and OpenSpec files. CI runs eslint on the journey.