Repository navigation
train: land 6 ready PRs (12 Oct, e) - #3855
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
The settings-only package dso-intake (install auto) points dso_vergunningaanvraag_schema at integriq's dso_verzoek schema, named by register and slug and resolved at install. An administrator's value, an empty one included, is kept. Without integriq or its schema the install is refused and retried on the next upgrade. Deletes Repair/DefaultDsoIntakeSchema, its two info.xml steps and its unit test. DsoIntakeCheck gets its own KEY constant. Adds a Newman collection, the Playwright journey tests/e2e/packages/dso-intake.spec.ts and openspec change dso-intake-package.
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)
…es, within the complexity limits
…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-dso # Conflicts: # appinfo/info.xml
…ckage-vth # Conflicts: # appinfo/info.xml # tests/Unit/Repair/Vth/VthCaseTypeChildSeederTest.php
…staller-seed-other-register # Conflicts: # appinfo/info.xml
…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.
…al properties (REQ-CT-56) A seed file's match is one property name or a list of them. A row is adopted when it is equal on every property named. A flag and a number are compared by meaning. Matching on a flag alone adopts the row that has the flag set, whatever it is called, so an instance that replaced a shipped default gets no second one (decision 204).
…vention (decision 204) lhs-matrix holds the default matrix, recognised by being active, and the 16 grid cells, recognised by row and column. lhs-intervention writes the table dossiq.lhs-intervention into OpenRegister's decision-tables register. SeedLhsMatrix and SeedVthMatrixCells go; the actor type repair stays. Unverified beyond the installer tests: the suites are queued.
# Conflicts: # .debt-baseline.json
…integriq, dossiq's BRP client goes (ADR-118, decision 220) ConflictOfInterestService asks PersonRelationReader, which reaches integriq's BrpRelationReader by class name at runtime. Integriq absent, too old or not allowed to ask for relations is reported as relationCheck not-available; a read that is allowed and gets no answer blocks. The four BRP client classes, BrpRegistrar, the contract fixture and their tests are deleted, and the BRP card names the setting on integriq's source.
# Conflicts: # .debt-baseline.json # .procedure-code-baseline.json # appinfo/info.xml
# Conflicts: # .debt-baseline.json
# Conflicts: # .debt-baseline.json
# Conflicts: # tests/Unit/Architecture/catch-return-null.allowlist.json
…p-through-integriq # Conflicts: # tests/Unit/Architecture/catch-return-null.allowlist.json
# Conflicts: # tests/Unit/Architecture/catch-return-null.allowlist.json
… skips foreign-register seeds and judges lhsMatrix
rubenvdlinde
requested review from
Rem-Dam,
SudoThijn,
WilcoLouwerse,
bbrands02,
remko48 and
rjzondervan
as code owners
October 12, 2026 17:08
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 | ✅ 8586/8586 · 3 skipped | ||||
| 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 17:19 UTC
Download the full PDF report from the workflow artifacts.
…lint after prettier)
…gate 25 matched it through the deleted VTH template tests)
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 | ✅ 8588/8588 · 3 skipped | ||||
| 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 19:02 UTC
Download the full PDF report from the workflow artifacts.
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.
Merge train 5 for dossiq: the R1 case definition packages, the L11 decomposition stack and R2's BRP-through-integriq. Built per the merge-train method: one branch from development (831ca55, train 4),
git merge --no-ffof each PR's real head, shared files resolved once.Included heads
refactor/r1-package-lhsa2d3a9e (holds feat(packages): a seed file can write its rows into another app's register #3792): LHS matrix and intervention table as packages,SeedLhsMatrixandSeedVthMatrixCellsdeletedrefactor/r1-package-vth535c90d: VTH procedure as a package, VTH seeders andvth-templates/deletedrefactor/r1-package-dso51b9c63: DSO intake default as a package. Was a draft only for one CI job; "Install packages on a clean instance" is green on this head (gh pr checks 3767)refactor/r1-package-subsidie81fff3e (holds Bezwaar and beroep become a case definition package (ADR-118, R1) #3669, Besluitvorming becomes an on-request case definition package (ADR-118, R1) #3725, refactor(vth): the VTH procedure is a case definition package, and its seeders are deleted #3791): subsidie, bezwaar-beroep and besluitvorming packagesbuild/dq-l11-24f1e9d32 (holds refactor(queue): scoring and case facts leave WorkQueueService #3832 to refactor(zgw): the DRC object link rules and relation lookups leave ZgwDrcRulesService #3835): method decomposition of WorkQueueService and the ZGW rulesrefactor/r2-brp-through-integriqfe0fa58 (merged twice, it moved once during the build)Excluded
Conflict notes
appinfo/info.xml: every deleted seed repair step stays deleted (SeedLhsMatrix, SeedVthMatrixCells, VthSeedDataRepairStep, SeedVthWorkflowTemplates, SeedBezwaarBeroepData, SeedBezwaarWorkflowDefinition, SeedBesluitvormingTemplates, and the SeedBezwaarBeroepCommand). Train 4'sMoveDecisionTablesToOpenRegisterandDrainIntakeObjectsCommandstay..procedure-code-baseline.json: measured withcheck_procedure_code.py . --ref HEAD: 185 (was 206), written as 185; gate exits 0..debt-baseline.json: min of each side, then tightened withnode scripts/debt-ratchet.js: phpmd 182, phpunit.skips 5, psalm.inlineSuppressions 253. Nothing raised.ServiceCatchReturnsNullTestasserts it).info.version0.20.40 to 0.20.41 (register.d/84 gained status roles); digests regenerated once.LhsLookupAnswersTheGridTestandLhsInterventionTableMatchesGridTestboth green.day-count.allowlist.jsonentry follows the code toQueue/UrgencyScorer.php;SeedPayloadSchemaConformanceTest::testPackageSeedRowsOnlyWriteDeclaredPropertiesskips seeds that name another app's register (an object) and judgeslhs_matrix_schemathrough a newlhsMatricescollection.PackageInstallerTestgets one@usesline (PackageSeedRules) that the pcov run flagged as risky.TaskDetailView.vueand its spec, which development landed unformatted (refactor(tasks): TaskCaseCard becomes CnFactsWidget with resolve #3840); the format check failed on development.Verified (exit codes; re-run in full on dcf33a5 after a machine restart)
--no-coverage: 8,589 tests, exit 0pcov.directory=/app/lib, writable mount,--fail-on-risky): exit 0, no risky tests--maxWorkers=2: exit 0.npm run lint0,format0,check:schema-l10n0,test:l10n0,check:l10n-js0node scripts/debt-ratchet.js: 1, only the inheritedeslint.inlineDisables15 against 14 (no disable added by the train)_rbac: falseoutside tests: three sites, all moved verbatim by refactor(zgw): cross-register sync and the document link routes leave BrcController #3833/refactor(zgw): store lookups and result shapes leave ZgwRulesBase #3834 from existing code (twodeleteObjectinZgw/BrcCrossRegisterSync, onesearchObjectsPaginatedread inZgw/ZgwRuleLookups). No new one.Admin and rollout steps named by the included PRs
integriq-has-no-relation-read, nothing breaks); then removeintegration.brp.mode,integration.brp.baseUrlandintegration.brp.apiKeywithocc config:app:delete dossiq <key>.Update after the first CI read (head dcf33a5)
Vue Quality (eslint)failed withvue/new-line-between-multi-line-propertyatTaskDetailView.vue:433. Development's copy of the file is clean; my own prettier commit removed a blank line. Fixed in dcf33a5;npm run lint0 andnpm run format0.--no-coverage8,589 tests 0; vitest 0; npm lint, format, check:schema-l10n, test:l10n, check:l10n-js 0; gate 119 185 of 185, exit 0. The pcov run (exit 0, no risky) was on the commit before the one-line style change.check:debt-ratchetfails on one counter only: inheritedeslint.inlineDisables15 against 14. Every other counter equals its baseline.package#indexandpackage#installroutes (/api/packages,/api/packages/{id}/install) that Besluitvorming becomes an on-request case definition package (ADR-118, R1) #3725 adds; Hydra Gates were skipped on the package PRs' own runs, so it never ran there. Left for a contract test follow-up.Gate 25, corrected (head f8c78db)
The first note above was wrong. Gate 25 does not flag the package routes (
#[AuthorizedAdminSetting]is not a public endpoint to the gate). CI ran it full-scope and it flaggedemailTemplate#listTemplates(GET /api/casetypes/{caseTypeId}/email-templates,#[NoAdminRequired]), an old endpoint the train does not touch. It was "covered" only because the wordlistTemplatesappears inVTHTemplateControllerTestandVTHTemplateServiceTest, which #3791 deletes. Fixed with two real contract tests inEmailTemplateControllerContractTest: anonymous caller gets 401 and the service is never read; a signed-in caller gets 200 withresultsfor the route's case type. Gate 25 locally: PASS, 498 endpoints covered full-scope, and PASS on the diff.tests/Unit/Controller: 1,313 tests, exit 0.Gate 101 (1 schema without valid demo data) is the demo object of
stoppingRule(targetRecall: 0.0against a schema minimum of 0.5, indossiq_mock_register.json). The train does not touch it; it fires because the train bumps the register version and the gate judges every schema of a touched descriptor. Same on development once its register is touched. Left alone.