refactor(procest): translate the last two schema slugs, and fix the tool that missed them - #856
Merged
Merged
Conversation
`bezwaar` -> `objectionProceeding`, `tussenrapportage` -> `interimReport`.
56 substitutions across 30 files, plus both /components/schemas/ map keys.
WHY objectionProceeding. procest declares BOTH `bezwaar` and `objection`,
and they are two entities with ZERO shared properties: `objection` is the
SUBMISSION (contestedDecision, grounds, requestedRelief, receivedDate,
isTimely) and `bezwaar` is the Awb PROCEEDING around it (case, a ref to
that objection, status, awbReference, receiptDate, adjournedOn,
suspensionStart). An earlier attempt renamed the first onto the second and
produced a DUPLICATE JSON KEY -- legal, parses, and every parser keeps only
the last, silently dropping one schema's lifecycle and calculations.
Both are in RenameDutchSchemaSlugs::SLUG_MAP, which is not optional:
OpenRegister's ImportHandler matches by SLUG, so a renamed slug without the
migration makes the import CREATE A SECOND SCHEMA and strands every stored
object behind one nothing reads.
TWO TOOL DEFECTS FIXED, both of which this batch reproduced:
* rename-slugs.js handled `$ref` only in its PATH form. A $ref may name
its target by BARE schema key, and procest#849 shipped five dangling
ones that had to be repaired by hand. I fixed the instances then and
NOT the tool, so it happened again here -- 3 more. Fixed at the source.
* its EXCLUDE named only its own step, so the slug pass walked into
RenameDutchValueDecisions.php -- a DIFFERENT migration's map -- and
turned `'tussenrapportage' => 'interimReport'` into
`'interimReport' => 'interimReport'`. That migration's own identity test
caught it. Now matched by prefix AND by content (any file declaring a
VALUE_MAP / COLUMN_MAP / SLUG_MAP), with every skip logged.
Verified: 0 dangling $refs across 29 register files, no duplicate JSON
keys, PHPUnit failing set IDENTICAL to development (0 introduced).
rubenvdlinde
requested review from
SudoThijn,
WilcoLouwerse,
bbrands02,
remko48 and
rjzondervan
as code owners
August 16, 2026 00:26
added 2 commits
August 16, 2026 02:37
`searchableSchemas.spec.js` keys expectedTemplates/expectedRoutes by schema slug, as bare identifiers the slug pass cannot reach. The manifest's deepLink now says `objectionProceeding` while the spec still asked for `bezwaar`. The URL values are unchanged on purpose: `/bezwaren/:id` is a published ROUTE, it resolves at request time, and breaking one fails silently. Only the keys are slugs. vitest 349/349.
Contributor
Quality Report — ConductionNL/procest @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ❌ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| check-manifest | ✅ | ||||
| check-vue3-compile | ✅ | ||||
| test-l10n | ✅ | ||||
| format | ❌ | ||||
| composer | ✅ | ✅ 104/104 | |||
| npm | ✅ | ✅ 535/535 | |||
| app:check-code | ⏭️ | ||||
| info.xml | ✅ | ||||
| REUSE | ❌ | ||||
| PHPUnit | ❌ | ||||
| Newman | ⏭️ | ||||
| Playwright | ❌ | ||||
| Hydra gates | ❌ |
Quality workflow — 2026-08-16 00:52 UTC
Download the full PDF report from the workflow artifacts.
Contributor
Quality Report — ConductionNL/procest @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| check-manifest | ✅ | ||||
| check-vue3-compile | ✅ | ||||
| test-l10n | ✅ | ||||
| format | ✅ | ||||
| composer | ✅ | ✅ 104/104 | |||
| npm | ✅ | ✅ 535/535 | |||
| app:check-code | ⏭️ | ||||
| info.xml | ✅ | ||||
| REUSE | ❌ | ||||
| PHPUnit | ✅ | ||||
| Newman | ⏭️ | ||||
| Playwright | ✅ | ||||
| Hydra gates | ❌ |
Quality workflow — 2026-08-16 01:47 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.
bezwaar→objectionProceeding,tussenrapportage→interimReport. 56 substitutions across 30 files, plus both/components/schemas/map keys.Why
objectionProceedingand notobjectionprocest declares both
bezwaarandobjection, and they are two entities with zero shared properties:objectioncontestedDecision,grounds,requestedRelief,receivedDate,isTimelybezwaarcase, a ref to that objection,status,awbReference,receiptDate,adjournedOn,suspensionStartAn earlier attempt renamed the first onto the second and produced a duplicate JSON key — legal, parses fine, and every parser keeps only the last, silently dropping one schema's lifecycle and calculations.
Both slugs are in
RenameDutchSchemaSlugs::SLUG_MAP, which is not optional: OpenRegister's ImportHandler matches by slug, so a renamed slug without the migration makes the import create a second schema and strands every stored object behind one nothing reads.Two tool defects, fixed at the source
This batch reproduced both, which is why they are fixed here rather than worked around:
rename-slugs.jshandled$refonly in its PATH form. A$refmay name its target by bare schema key ("$ref": "catalogus"). procest#849 shipped five dangling ones that I repaired by hand — and I fixed the instances then and not the tool, so it happened again here (3 more). A dangling$refis valid JSON, passes every linter, breaks no test; the relation just stops resolving and the picker comes up empty.Its
EXCLUDEnamed only its own step, so the slug pass walked intoRenameDutchValueDecisions.php— a different migration's map — and turned'tussenrapportage' => 'interimReport'into'interimReport' => 'interimReport'. An identity entry migrates nothing and reports success. That migration's own identity test caught it. Now matched by prefix and by content (any file declaring aVALUE_MAP/COLUMN_MAP/SLUG_MAP), with every skip logged — a silent skip and a file with nothing to change look identical.+0 schema map keyswhere the apply did+2. The apply is correct; the counter is not.Verification
$refs across 29 register files (156 schema keys)object_pairs_hook