Repository navigation
fix(register): drop null JSON-Schema keywords so the E2E seed can create elements - #1295
WilcoLouwerse wants to merge 3 commits into
Conversation
… the schemas
423 schema properties in softwarecatalogus_register.json carried null
validation keywords (minimum, maximum, multipleOf, minItems, maxItems,
minLength, maxLength). OpenRegister's validator (opis/json-schema) rejects a
null where it wants a number ("minimum must contain a valid number"), so a
schema with hardValidation, such as element, refused every object and the
E2E "Seed test data" step failed with HTTP 403.
The keys are removed (a null keyword never constrained anything), the ten
affected schemas get a patch version bump, the register goes to 2.5.8 with a
changelog entry, and RegisterNullKeywordsTest guards the register file and
its register.d fragments against the keys coming back.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The integration test README still said Guzzle 7.8+, but composer.json require-dev has guzzlehttp/guzzle ^8.2 since the dependabot bump. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Quality Report — ConductionNL/stackiq @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| check-manifest | ✅ | ||||
| check-vue-demi | ✅ | ||||
| test-l10n | ✅ | ||||
| format | ✅ | ||||
| check-schema-l10n | ✅ | ||||
| check-l10n-js | ✅ | ||||
| composer | ✅ | ✅ 133/133 | |||
| npm | ✅ | ✅ 807/807 | |||
| app:check-code | ⏭️ | ||||
| info.xml | ✅ | ||||
| REUSE | ❌ | ||||
| lockfile sync | ✅ | ||||
| PHPUnit | ❌ 1221/1224 · 20 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-13 17:27 UTC
Download the full PDF report from the workflow artifacts.
…effective version The base bumps of catalogService, organization, usage and module went above their register.d fragments, which broke three tests that pin the merged usage (1.5.6) and module (0.3.8) versions. The loader keeps the highest version per schema, so the bump belongs in the fragment that carries it: publication-field-rules.json (catalogService 0.2.3, organization 0.5.4) and topdesk-cmdb-import.json (usage 1.5.7, module 0.3.9). The base keeps its own +1 bumps; the 2.5.8 changelog entry and the three pins follow. Closes the review finding "PHPUnit red: base bumps exceed pinned fragment versions" on #1295. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Quality Report — ConductionNL/stackiq @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| check-manifest | ✅ | ||||
| check-vue-demi | ✅ | ||||
| test-l10n | ✅ | ||||
| format | ✅ | ||||
| check-schema-l10n | ✅ | ||||
| check-l10n-js | ✅ | ||||
| composer | ✅ | ✅ 133/133 | |||
| npm | ✅ | ✅ 807/807 | |||
| app:check-code | ⏭️ | ||||
| info.xml | ✅ | ||||
| REUSE | ❌ | ||||
| lockfile sync | ✅ | ||||
| PHPUnit | ✅ 1224/1224 · 20 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-13 19:10 UTC
Download the full PDF report from the workflow artifacts.
WilcoLouwerse
left a comment
There was a problem hiding this comment.
Verdict: APPROVE (Standard) — self-review posted as COMMENT (GitHub blocks self-APPROVE)
The null JSON-Schema keywords are gone, and the PHPUnit blocker this review found, caused by this PR's own version bumps, was fixed before posting. CI is green on 23c2003. Whether the E2E seed now passes is shown by a dispatched run of code-quality.yml on this branch (run 38451969024), because the E2E job is skipped on pull requests.
✅ Fixed before posting (2)
- PHPUnit red: the base bumps went above the pinned fragment versions —
tests/Unit/Settings/TopdeskCmdbFragmentTest.php:68. Fixed in23c2003: the bumps sit in the fragments that hold the effective version, and the three pins follow. - The PR body said this PR's CI proves the seed — corrected: the E2E job does not run on
pull_request, and the body now links the dispatched run.
✅ Verified clean
- Every removed key was
nulland a validation keyword. Per schema, the old file minus those keys equals the new file apart fromversion. - No
nullvalidation keyword is left in the register or anyregister.dfragment. - The effective versions of catalogService, organization, usage and module are each one above
development(0.2.3, 0.5.4, 1.5.7, 0.3.9), so existing installs re-import them. OpenRegister'sschemaContentDiffersalso counts a removednullkey as a change. - The guard test
RegisterNullKeywordsTestfails on the old register and lists the paths.
Gates: CI quality / Hydra Gates ✅, PHPUnit (PHP 8.3, NC stable35, pgsql) ✅, Quality Report ✅ on 23c2003.
Before the next round: fix rules on (fix-induced 1 + missed-sibling 0 ≥ new 1).
Summary
The nightly
qualityrun has been red since at least 2026-10-10, and so is the release PR #1269 (development → beta). The E2E job stops at Seed test data:That message comes from opis/json-schema's keyword parser.
lib/Settings/softwarecatalogus_register.jsondeclared 423 schema-property validation keywords asnull(minimum,maximum,multipleOf,minItems,maxItems,minLength,maxLength) across ten schemas. Theelementschema runs withhardValidation, so no element object could be created.Changes
fix(register): removes every null validation keyword. The parsed result equals the old file minus exactly those keys.register.dfragment (keepHighestSchemaVersions()keeps the highest one, and an equal version is skipped on upgrade), so those bumps are carried inpublication-field-rules.json(catalogService 0.2.3, organization 0.5.4) andtopdesk-cmdb-import.json(usage 1.5.7, module 0.3.9); the tests that pin those merged versions follow.tests/Unit/Settings/RegisterNullKeywordsTest.php, which fails when any schema in the register or its fragments carries a null validation keyword again.docs(tests):tests/Integration/README.mdnames Guzzle 8.2+, matchingcomposer.jsonafter chore(deps-dev): bump guzzlehttp/guzzle from 7.15.2 to 8.2.0 #1035. This was a review finding on Release: merge development into beta #1269.Verification
vendor/bin/phpunit tests/Unit/Settings/RegisterNullKeywordsTest.phppasses, and fails on the old register file, listing the offending paths.pull_request(it is skipped there and runs nightly or onworkflow_dispatch), so the seed is checked by a dispatched run ofcode-quality.ymlon this branch: https://github.com/ConductionNL/stackiq/actions/runs/38451969024🤖 Generated with Claude Code